avaudenc: avoid using wrong number of samples
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 30 Apr 2014 14:30:45 +0000 (15:30 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 6 Jun 2014 11:29:54 +0000 (12:29 +0100)
If audio_in is NULL, we'll send a NULL frame to libav, to flush
the codec. In that case, we won't know how many samples the codec
will have used, so we use -1 (for don't know) when letting the
base class know about the buffer.

Coverity 1195177

ext/libav/gstavaudenc.c

index fcb176d..a9aa88a 100644 (file)
@@ -553,7 +553,7 @@ gst_ffmpegaudenc_encode_audio (GstFFMpegAudEnc * ffmpegaudenc,
         pkt, gst_ffmpegaudenc_free_avpacket);
 
     codec = ffmpegaudenc->context->codec;
-    if ((codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)) {
+    if ((codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE) || !audio_in) {
       ret = gst_audio_encoder_finish_frame (enc, outbuf, -1);
     } else {
       ret = gst_audio_encoder_finish_frame (enc, outbuf, frame.nb_samples);