<div dir="ltr">Hello GStreamer-devel,<br><br>I am trying to write a GStreamer element, embedfoo, which embeds data<br>in received GStreamer video frame buffers using the function<br>gst_buffer_add_meta. The data added to the buffer is retrieved from a<br>database using the frame index of the GstBuffer.<br><br>I am using the value of GST_BUFFER_PTS and the framerate to obtain the<br>frame index of the received GstBuffers. The issue I am having is that<br>the value of the PTS timestamps in the received GstBuffer objects<br>differs according to the source.<br><br>For example, if I output the value of GST_BUFFER_PTS for the first<br>buffer received in the following pipelines I get differing results:<br><br>Pipeline 1:<br>  videotestsrc ! video/x-raw,framerate=15/1 ! embedfoo location=database.txt ! x265enc ! mpegtsmux ! filesink location=test.ts<br><br>Pipeline 1 First PTS value:<br>  0<br><br>Pipeline 2:<br>  filesrc location=test.ts ! decodebin ! embedfoo location=database.txt ! videoconvert ! ximagesink<br><br>Pipeline 2 First PTS value:<br>  125000000<br><br>The embedfoo element is implemented as a subclass of GstBaseTransform<br>and I am using GStreamer 1.14.5 as provided by Ubuntu 18.04.<br><br>I have tried using the methods gst_segment_position_from* and<br>gst_segment_to_stream_time using the segment member of<br>GstBaseTransform, but I am unable to correctly calculate the frame<br>index of a buffer from the PTS timestamp.<br><br>Any pointers would be awesome.<br><br>Thanks,<br>Mark<br></div>