From 151cd32a10ee3636fd65a6e1f361849c06ecb732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 28 Apr 2016 18:43:37 +0300 Subject: [PATCH] avaudenc: Set all required fields in the AVFrame Various functions in libavcodec need them, like the format, sample rate, etc. and just having them in the context is not enough. This fixes draining for codecs like MP2 that require a fixed frame size and require libav to pad the last frame if required. --- ext/libav/gstavaudenc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c index 93eecf5b57..b895a9dd46 100644 --- a/ext/libav/gstavaudenc.c +++ b/ext/libav/gstavaudenc.c @@ -475,6 +475,10 @@ gst_ffmpegaudenc_encode_audio (GstFFMpegAudEnc * ffmpegaudenc, info = gst_audio_encoder_get_audio_info (enc); planar = av_sample_fmt_is_planar (ffmpegaudenc->context->sample_fmt); + frame->format = ffmpegaudenc->context->sample_fmt; + frame->sample_rate = ffmpegaudenc->context->sample_rate; + frame->channels = ffmpegaudenc->context->channels; + frame->channel_layout = ffmpegaudenc->context->channel_layout; if (planar && info->channels > 1) { gint channels;