From 5ed27c12cc05b483aab710c89cc379b3b61c3947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 19 Jun 2019 13:31:39 +0300 Subject: [PATCH] zbar: Include running-time, stream-time and duration in the messages The timestamp/PTS alone is meaningless without the segment and usually applications care about the running-time or stream-time. This also keeps the messages in sync with the spectrum and level elements. --- ext/zbar/gstzbar.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ext/zbar/gstzbar.c b/ext/zbar/gstzbar.c index 18149eb5ee..6591d1968d 100644 --- a/ext/zbar/gstzbar.c +++ b/ext/zbar/gstzbar.c @@ -291,12 +291,27 @@ gst_zbar_transform_frame_ip (GstVideoFilter * vfilter, GstVideoFrame * frame) GstStructure *s; GstSample *sample; GstCaps *sample_caps; + GstClockTime timestamp, running_time, stream_time, duration; + + timestamp = GST_BUFFER_TIMESTAMP (frame->buffer); + duration = GST_BUFFER_DURATION (frame->buffer); + running_time = + gst_segment_to_running_time (&GST_BASE_TRANSFORM (zbar)->segment, + GST_FORMAT_TIME, timestamp); + stream_time = + gst_segment_to_stream_time (&GST_BASE_TRANSFORM (zbar)->segment, + GST_FORMAT_TIME, timestamp); s = gst_structure_new ("barcode", - "timestamp", G_TYPE_UINT64, GST_BUFFER_TIMESTAMP (frame->buffer), + "timestamp", G_TYPE_UINT64, timestamp, + "stream-time", G_TYPE_UINT64, stream_time, + "running-time", G_TYPE_UINT64, running_time, "type", G_TYPE_STRING, zbar_get_symbol_name (typ), "symbol", G_TYPE_STRING, data, "quality", G_TYPE_INT, quality, NULL); + if (GST_CLOCK_TIME_IS_VALID (duration)) + gst_structure_set (s, "duration", G_TYPE_UINT64, duration, NULL); + if (zbar->attach_frame) { /* create a sample from image */ sample_caps = gst_video_info_to_caps (&frame->info);