From d2e65754b35474aff4e9bb2bcd309bfc6ea37857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 29 Sep 2016 15:18:46 +0300 Subject: [PATCH] avcodecmap: Configure field order in the context if we can https://bugzilla.gnome.org/show_bug.cgi?id=771376 --- ext/libav/gstavcodecmap.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c index f1587c5900..9b27044c2b 100644 --- a/ext/libav/gstavcodecmap.c +++ b/ext/libav/gstavcodecmap.c @@ -2426,6 +2426,7 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps, const GValue *par = NULL; const gchar *fmt; GstVideoFormat format = GST_VIDEO_FORMAT_UNKNOWN; + const gchar *s; GST_DEBUG ("converting caps %" GST_PTR_FORMAT, caps); g_return_if_fail (gst_caps_get_size (caps) == 1); @@ -2541,6 +2542,22 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps, default: break; } + + s = gst_structure_get_string (structure, "interlaced-mode"); + if (s) { + if (strcmp (s, "progressive") == 0) { + context->field_order = AV_FIELD_PROGRESSIVE; + } else if (strcmp (s, "interleaved") == 0) { + s = gst_structure_get_string (structure, "field-order"); + if (s) { + if (strcmp (s, "top-field-first") == 0) { + context->field_order = AV_FIELD_TT; + } else if (strcmp (s, "bottom-field-first") == 0) { + context->field_order = AV_FIELD_TB; + } + } + } + } } typedef struct