avvidenc: Correctly signal interlaced input to ffmpeg when the input caps are interlaced
authorSebastian Dröge <sebastian@centricular.com>
Wed, 19 Jun 2019 12:43:42 +0000 (15:43 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 19 Jun 2019 12:43:42 +0000 (15:43 +0300)
Regression from 1e4529ced2dadbfed4ac10d639a45dbcb0660129

ext/libav/gstavvidenc.c

index ab44e9d..4dbeea9 100644 (file)
@@ -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 =