[Bug 796818] deinterlace: Timecode pass-through

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Jul 16 16:46:10 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=796818

Sebastian Dröge (slomo) <slomo at coaxion.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #373066|none                        |needs-work
             status|                            |

--- Comment #6 from Sebastian Dröge (slomo) <slomo at coaxion.net> ---
Review of attachment 373066:
 --> (https://bugzilla.gnome.org/review?bug=796818&attachment=373066)

::: gst/deinterlace/gstdeinterlace.c
@@ +1127,3 @@
+    self->field_history[i].tc = self->field_history[i - fields_to_push].tc;
+    self->field_history[i].has_tc =
+        self->field_history[i - fields_to_push].has_tc;

The old timecodes have to be cleared here

@@ +1165,3 @@
     GST_DEBUG_OBJECT (self, "Two fields");
     self->field_history[1].frame = field1;
     self->field_history[1].flags = field1_flags;

You probably also want to add the timecode here

@@ +1171,3 @@
+
+    if (meta) {
+      self->field_history[0].tc = meta->tc;

And here need to take ownership of the data inside the timecode, or it might go
away together with the buffer

@@ +1768,3 @@
+          &self->field_history[index].tc);
+    } else {
+      GstVideoTimeCodeMeta *meta = gst_buffer_get_video_time_code_meta (buf);

This part is unneeded if you put the timecode into index 0 and index 1 above
where things are put into the field history

@@ +1777,3 @@
+      if (meta) {
+        meta->tc.config.fps_n = 2 * meta->tc.config.fps_n;
+        meta->tc.frames = 2 * meta->tc.frames;

These calculations are probably wrong for telecine but I don't know how they
should be. They are probably also wrong if fields like ONEFIELD and RFF are in
the stream (duplicated timecodes and timecode gaps will happen then).

And I believe also without the field=all mode, ONEFIELD/RFF could cause
non-contiguous timecodes here

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list