From 50d50f47fbb849a3ee7caf69c89218ccff140a04 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Fri, 14 Jun 2019 16:27:37 +0530 Subject: [PATCH] omxvideo: check difference between frame and requested ts This has proven to be very useful when debugging to detect bugs where we match the wrong gst frame with an output OMX buffer. --- omx/gstomxvideo.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/omx/gstomxvideo.c b/omx/gstomxvideo.c index 9b57b559ae..627d708ba0 100644 --- a/omx/gstomxvideo.c +++ b/omx/gstomxvideo.c @@ -213,9 +213,20 @@ gst_omx_video_find_nearest_frame (GstElement * element, GstOMXBuffer * buf, } } - if (best) + if (best) { gst_video_codec_frame_ref (best); + /* OMX timestamps are in microseconds while gst ones are in nanoseconds. + * So if the difference between them is higher than 1 microsecond we likely + * picked the wrong frame. */ + if (best_diff >= GST_USECOND) + GST_WARNING_OBJECT (element, + "Difference between ts (%" GST_TIME_FORMAT ") and frame %u (%" + GST_TIME_FORMAT ") seems too high (%" GST_TIME_FORMAT ")", + GST_TIME_ARGS (timestamp), best->system_frame_number, + GST_TIME_ARGS (best->pts), GST_TIME_ARGS (best_diff)); + } + g_list_foreach (frames, (GFunc) gst_video_codec_frame_unref, NULL); g_list_free (frames);