Transmit absolute time

Pietro Bonfa' pietro_bonfa at
Sat Oct 24 07:07:51 PDT 2015

On 10/24/2015 01:08 PM, Sebastian Dröge wrote:
> On Sa, 2015-10-24 at 12:52 +0200, Pietro Bonfa' wrote:
>> On 10/23/2015 09:38 AM, Sebastian Dröge wrote:
>>> That the base time is not known when the first buffer happens in
>>> the
>>> source is indeed a problem. How are you generating buffers and
>>> when?
>> Yes, the buffers are generated by appsrc. They are generated when the
>> callback function connected to the "need-data" signal is called so I
>> assumed that checking the state of the pipeline was not needed.
>> I will check that in the real implementation running_time + base_time
>> gives exactly the time when the buffer is captured and report back.
> Are you timestamping the buffers outside appsrc yourself, or using the
> do-timestamp=true property?

I'm using this DIY approach (reporting relevant code from the attachment
of the previous email also available here

static uint frame_count = 0;
ctx->timestamp = gst_util_uint64_scale_int (1, GST_SECOND, 2) * frame_count;

// simulate wait for camera to produce frame
struct timespec a;
while (ctx->timestamp > (gst_clock_get_time (global_clock)-ctx->begin))
  nanosleep(&a, NULL);

GST_BUFFER_PTS (buffer) = ctx->timestamp;

However let me mention that this is just some (bad) code I wrapped from
various examples in order to learn something about timestamping. I don't
really care if the code is wrong. I care to know that my conclusion from
the previous post were wrong as you told me!

>> Finally, just to keep you posted, I implemented metadata in the
>> GstElement that parses the RTP extension and then I discovered that
>> metadata are generally not copied through the pipeline (damn!).
> If you're using 1.6, generic metadata will be copied over. If an
> element doesn't you found a bug :)

Is there a special definition for generic metadata?

I found that identity, queue and tee copy my metadata while rtph264depay

> Which tags did you use to register your metadata?

Initially I just used some dummy values like

static const gchar *tags[] = { "id", "val", NULL };

(full code

then, after I saw your email, I changed those values to something else like:

static const gchar *tags[] = { "atime", "buf", NULL };
static const gchar *tags[] = { "memory", "colorspace", "size", NULL };
// from gstvideometa

but this didn't change anything and honestly I do not understand why
these tags are important (nothing about it in the docs, I thought they
were just meant to be used by the user with gst_meta_api_type_get_tags.

Many thanks,

> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at

More information about the gstreamer-devel mailing list