How to synchronize buffer timestamp across two gstreamer pipeline(appsink,appsrc, rtspserver)

Jake Zhang zjpseudo at gmail.com
Thu Jun 16 21:05:22 UTC 2016


Greetings,

I have been working on this for a while but still have no luck to get this
working. My pipeline can be simplified as below:

pipeline1:
v4l2src -> tee -> x264enc -> appsink1
             ->  appsink2

RTSP server pipeline2:
appsrc -> omxh264enc -> rtph264pay

Pipeline 1 have other processing unit and I will need pull buffers from
appsink2 and push those buffers into appsrc of RTSP server.
My RTSP server part of implementation is very similar to test-appsrc.c of
gst-rtsp-server 1.6.4.

The buffer I got from appsink already has their own PTS and to get RTSP
pipeline2 running, I have to re-stamp the buffer PTS the exactly same way
as test-appsrc.c (set ctx->timestamp=0 and increment based of buffer
duration) otherwise, the RTSP server will not get running.

I have went through the gstreamer manual and I have some basic
understanding about running time/ base time and stream time
I have tried below things:
1. set the basetime of pipeline2 to be the same as pipeline1
2. set the start time of pipeline2 to be GST_CLOCK_TIME_NONE
3. make sure the two pipeline is using the same clock.
4. I have checked the segment event on the appsrc of pipeline2 and the
value is as below, and I have tried generate a new segment to appsrc sink
pad but I have a hard time know how to set the right base and start value.
//appsrc0:src segment: rate 1 format 3, start: 0:00:00.000000000, stop:
99:99:99.999999999, time: 0:00:00.000000000 base: 0:00:00.000000000

Why I have to re-stamp the PTS of the buffer?
pipeline2 running time = clocktime - basetime of pipeline1, so pipeline2
should be able to process buffers with original PTS, right?

How I can  retain the original buffer PTS in pipeline2? I guess segment
event is the right direction to go, but like I said I have not figure out
how to play with segment to let pipeline2 happy with original PTS.

Thanks in advance for any comments here.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160616/0c776101/attachment.html>


More information about the gstreamer-devel mailing list