summaryrefslogtreecommitdiff
path: root/ext/x264/gstx264enc.c
diff options
context:
space:
mode:
authorVivia Nikolaidou <vivia@ahiru.eu>2016-11-28 15:14:18 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-11-28 15:22:44 +0200
commitf7d82312bba13806f32d8de56a3d66575bfb08c7 (patch)
treea4a319a1592e2efe030e4ae3e346d1182fd9a851 /ext/x264/gstx264enc.c
parent8b8419cefbccf37bfc6d99feeca208130378eb62 (diff)
x264enc: Auto-detect interlace mode from caps
If the caps are interlaced, interlacing is always enabled on the encoder. If the interlace-mode field is missing or if it's progressive, the encoder uses the "interlaced" property. https://bugzilla.gnome.org/show_bug.cgi?id=775228
Diffstat (limited to 'ext/x264/gstx264enc.c')
-rw-r--r--ext/x264/gstx264enc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c
index 5208ba20..5f91b242 100644
--- a/ext/x264/gstx264enc.c
+++ b/ext/x264/gstx264enc.c
@@ -2264,6 +2264,12 @@ gst_x264_enc_set_format (GstVideoEncoder * video_enc,
gst_caps_unref (template_caps);
+ if (GST_VIDEO_INFO_IS_INTERLACED (&state->info))
+ g_string_append_printf (encoder->option_string, ":interlaced=%d", TRUE);
+ else
+ g_string_append_printf (encoder->option_string, ":interlaced=%d",
+ encoder->interlaced);
+
if (!gst_x264_enc_init_encoder (encoder))
return FALSE;
@@ -2709,8 +2715,6 @@ gst_x264_enc_set_property (GObject * object, guint prop_id,
break;
case ARG_INTERLACED:
encoder->interlaced = g_value_get_boolean (value);
- g_string_append_printf (encoder->option_string, ":interlaced=%d",
- encoder->interlaced);
break;
case ARG_FRAME_PACKING:
encoder->frame_packing = g_value_get_enum (value);