timecodestamper: Don't initialize upstream timecode with zero if none was seen
authorSebastian Dröge <sebastian@centricular.com>
Wed, 23 Oct 2019 11:29:06 +0000 (14:29 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 23 Oct 2019 13:48:26 +0000 (16:48 +0300)
Instead keep it unset and use the internal timecode wherever needed as
fallback.

gst/timecode/gsttimecodestamper.c

index 4d7a607059e41a87b81095cdb17ee9c9f4c0fdec..c8bea0ff337d0c8a7c9f84bd1525c08cdcd6636a 100644 (file)
@@ -907,17 +907,14 @@ gst_timecodestamper_transform_ip (GstBaseTransform * vfilter,
 
     if (timecodestamper->last_tc) {
       gst_video_time_code_increment_frame (timecodestamper->last_tc);
+
+      tc_str = gst_video_time_code_to_string (timecodestamper->last_tc);
+      GST_DEBUG_OBJECT (timecodestamper, "Incremented upstream timecode to %s",
+          tc_str);
+      g_free (tc_str);
     } else {
-      /* We have no last known timecode so initialize with 0 here */
-      timecodestamper->last_tc =
-          gst_video_time_code_new (timecodestamper->vinfo.fps_n,
-          timecodestamper->vinfo.fps_d, dt_frame, tc_flags, 0, 0, 0, 0, 0);
+      GST_DEBUG_OBJECT (timecodestamper, "Never saw an upstream timecode");
     }
-
-    tc_str = gst_video_time_code_to_string (timecodestamper->last_tc);
-    GST_DEBUG_OBJECT (timecodestamper, "Incremented upstream timecode to %s",
-        tc_str);
-    g_free (tc_str);
   }
 
   /* Update RTC-based timecode */
@@ -1164,6 +1161,9 @@ gst_timecodestamper_transform_ip (GstBaseTransform * vfilter,
       break;
     case GST_TIME_CODE_STAMPER_SOURCE_LAST_KNOWN:
       tc = timecodestamper->last_tc;
+      if (!tc)
+        tc = timecodestamper->internal_tc;
+      break;
       break;
     case GST_TIME_CODE_STAMPER_SOURCE_LTC:
 #if HAVE_LTC