add flush mode

This commit is contained in:
nareix 2016-05-19 17:12:02 +08:00
parent 86e17d8e71
commit d6862125f7

View File

@ -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
if len(sample) != expectedSize {
err = fmt.Errorf("len(sample) should be %d", expectedSize)
return
}
frame := self.ff.frame frame := self.ff.frame
frame.nb_samples = C.int(nbSamples) if flush {
for i := 0; i < self.ChannelCount; i++ { frame = nil
frame.data[i] = (*C.uint8_t)(unsafe.Pointer(&sample[i*nbSamples*self.sampleSize])) } else {
frame.linesize[i] = C.int(nbSamples*self.sampleSize) if len(sample) != expectedSize {
err = fmt.Errorf("len(sample) should be %d", expectedSize)
return
}
frame.nb_samples = C.int(nbSamples)
for i := 0; i < self.ChannelCount; i++ {
frame.data[i] = (*C.uint8_t)(unsafe.Pointer(&sample[i*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)