Commit a4c925f6 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵

timecodestamper: Skip over invalid LTC timecodes immediately

parent a1443518
......@@ -1306,6 +1306,16 @@ gst_timecodestamper_transform_ip (GstBaseTransform * vfilter,
g_queue_get_length (&timecodestamper->ltc_current_tcs));
g_free (tc_str);
if (!gst_video_time_code_is_valid (&ltc_tc->timecode)) {
tc_str = gst_video_time_code_to_string (&ltc_tc->timecode);
GST_INFO_OBJECT (timecodestamper, "Invalid LTC timecode %s", tc_str);
g_free (tc_str);
gst_video_time_code_clear (&ltc_tc->timecode);
g_free (ltc_tc);
ltc_tc = NULL;
continue;
}
/* A timecode frame that starts +/- half a frame to the
* video frame is considered belonging to that video frame.
*
......@@ -1319,18 +1329,11 @@ gst_timecodestamper_transform_ip (GstBaseTransform * vfilter,
if (timecodestamper->ltc_auto_resync) {
if (timecodestamper->ltc_internal_tc)
gst_video_time_code_free (timecodestamper->ltc_internal_tc);
if (gst_video_time_code_is_valid (&ltc_tc->timecode)) {
timecodestamper->ltc_internal_tc =
gst_video_time_code_copy (&ltc_tc->timecode);
timecodestamper->ltc_internal_running_time = ltc_tc->running_time;
updated_internal = TRUE;
GST_INFO_OBJECT (timecodestamper, "Resynced internal LTC counter");
} else {
tc_str = gst_video_time_code_to_string (&ltc_tc->timecode);
GST_INFO_OBJECT (timecodestamper, "Invalid LTC timecode %s",
tc_str);
g_free (tc_str);
}
timecodestamper->ltc_internal_tc =
gst_video_time_code_copy (&ltc_tc->timecode);
timecodestamper->ltc_internal_running_time = ltc_tc->running_time;
updated_internal = TRUE;
GST_INFO_OBJECT (timecodestamper, "Resynced internal LTC counter");
}
/* And store it back for the next frame in case it has more or less
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment