From 5ab660c4e25d2389a26e06c7f325f7a6cbb7fa67 Mon Sep 17 00:00:00 2001 From: Vivia Nikolaidou Date: Thu, 9 Nov 2017 11:44:17 +0200 Subject: [PATCH] decklink: Ignore some driver-set timecode flags The "fields" flag is ignored because currently GStreamer doesn't support having only top or only bottom fields inside a frame. The "drop frame" flag is ignored because some occurrences have been spotted where it wasn't set while it should have been. In practice, when we have 29.97 or 59.94 FPS, it's always drop-frame. https://bugzilla.gnome.org/show_bug.cgi?id=790112 --- sys/decklink/gstdecklinkvideosrc.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp index e070e7e..6d6f008 100644 --- a/sys/decklink/gstdecklinkvideosrc.cpp +++ b/sys/decklink/gstdecklinkvideosrc.cpp @@ -738,16 +738,11 @@ gst_decklink_video_src_got_frame (GstElement * element, GST_DEBUG_OBJECT (self, "Got timecode %02d:%02d:%02d:%02d", hours, minutes, seconds, frames); bmode = gst_decklink_get_mode (mode); - if (bmode->interlaced) { + if (bmode->interlaced) flags = (GstVideoTimeCodeFlags) (flags | GST_VIDEO_TIME_CODE_FLAGS_INTERLACED); - if (bflags & bmdTimecodeFieldMark) - field_count = 2; - else - field_count = 1; - } - if (bflags & bmdTimecodeIsDropFrame) + if (bmode->fps_d == 1001 && (bmode->fps_n == 30000 || bmode->fps_n == 60000)) flags = (GstVideoTimeCodeFlags) (flags | GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME); -- 2.7.4