diff options
author | Vivia Nikolaidou <vivia@ahiru.eu> | 2016-11-28 15:14:18 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-11-28 15:22:44 +0200 |
commit | f7d82312bba13806f32d8de56a3d66575bfb08c7 (patch) | |
tree | a4a319a1592e2efe030e4ae3e346d1182fd9a851 /ext/x264/gstx264enc.c | |
parent | 8b8419cefbccf37bfc6d99feeca208130378eb62 (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.c | 8 |
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); |