From d6862125f7ec18bacabc124d192dea1d7cc6a654 Mon Sep 17 00:00:00 2001 From: nareix Date: Thu, 19 May 2016 17:12:02 +0800 Subject: [PATCH] add flush mode --- audio.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/audio.go b/audio.go index d0b9b04..6a5f7df 100644 --- a/audio.go +++ b/audio.go @@ -67,18 +67,22 @@ func (self *AudioEncoder) Encode(sample []byte, flush bool) (gotPkt bool, pkt [] nbSamples := 1024 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.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) + if flush { + frame = nil + } else { + 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{} cgotpkt := C.int(0)