add flush mode
This commit is contained in:
parent
86e17d8e71
commit
d6862125f7
6
audio.go
6
audio.go
@ -67,18 +67,22 @@ func (self *AudioEncoder) Encode(sample []byte, flush bool) (gotPkt bool, pkt []
|
|||||||
nbSamples := 1024
|
nbSamples := 1024
|
||||||
expectedSize := nbSamples*self.sampleSize*self.ChannelCount
|
expectedSize := nbSamples*self.sampleSize*self.ChannelCount
|
||||||
|
|
||||||
|
frame := self.ff.frame
|
||||||
|
if flush {
|
||||||
|
frame = nil
|
||||||
|
} else {
|
||||||
if len(sample) != expectedSize {
|
if len(sample) != expectedSize {
|
||||||
err = fmt.Errorf("len(sample) should be %d", expectedSize)
|
err = fmt.Errorf("len(sample) should be %d", expectedSize)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
frame := self.ff.frame
|
|
||||||
frame.nb_samples = C.int(nbSamples)
|
frame.nb_samples = C.int(nbSamples)
|
||||||
for i := 0; i < self.ChannelCount; i++ {
|
for i := 0; i < self.ChannelCount; i++ {
|
||||||
frame.data[i] = (*C.uint8_t)(unsafe.Pointer(&sample[i*nbSamples*self.sampleSize]))
|
frame.data[i] = (*C.uint8_t)(unsafe.Pointer(&sample[i*nbSamples*self.sampleSize]))
|
||||||
frame.linesize[i] = C.int(nbSamples*self.sampleSize)
|
frame.linesize[i] = C.int(nbSamples*self.sampleSize)
|
||||||
}
|
}
|
||||||
frame.extended_data = &frame.data[0]
|
frame.extended_data = &frame.data[0]
|
||||||
|
}
|
||||||
|
|
||||||
cpkt := C.AVPacket{}
|
cpkt := C.AVPacket{}
|
||||||
cgotpkt := C.int(0)
|
cgotpkt := C.int(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user