From 6359385df5c61848c8b11d5ef73bb3ac23e2d96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 19 Jun 2019 15:43:42 +0300 Subject: [PATCH] avvidenc: Correctly signal interlaced input to ffmpeg when the input caps are interlaced Regression from 1e4529ced2dadbfed4ac10d639a45dbcb0660129 --- ext/libav/gstavvidenc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index ab44e9d88f..4dbeea9e6b 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -254,6 +254,10 @@ gst_ffmpegvidenc_set_format (GstVideoEncoder * encoder, /* additional avcodec settings */ gst_ffmpeg_cfg_fill_context (G_OBJECT (ffmpegenc), ffmpegenc->context); + if (GST_VIDEO_INFO_IS_INTERLACED (&state->info)) + ffmpegenc->context->flags |= + AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME; + /* and last but not least the pass; CBR, 2-pass, etc */ ffmpegenc->context->flags |= ffmpegenc->pass; switch (ffmpegenc->pass) { @@ -554,8 +558,7 @@ gst_ffmpegvidenc_send_frame (GstFFMpegVidEnc * ffmpegenc, gst_ffmpegvidenc_add_cc (frame->input_buffer, picture); - if (ffmpegenc->context->flags & (AV_CODEC_FLAG_INTERLACED_DCT | - AV_CODEC_FLAG_INTERLACED_ME)) { + if (GST_VIDEO_INFO_IS_INTERLACED (&ffmpegenc->input_state->info)) { picture->interlaced_frame = TRUE; /* if this is not the case, a filter element should be used to swap fields */ picture->top_field_first =