Dealing with jittery clock
Tvrtko Ursulin
tvrtko.ursulin at onelan.com
Mon Oct 3 08:14:18 PDT 2011
Hi all,
I am looking for strategies for dealing with a jittery clock provider,
and by dealing with, I mean preserving both AV sync and smooth video.
Use case in question is V4L2 streaming, in essence really only
gst-launch-0.10 v4l2src ! video/x-raw-yuv,... ! queue ! xvimagesink alsasrc ! alsasink.
Problem is that the audio coming from the capture card, on
delivery of which I understand pipeline clock is based, is
somewhat jittery (please see log at the bottom). Result of that
is that video frame rendering follows this jittery clock resulting
in a similarly jittery video (but in AV sync).
Is there something I can tweak in GStreamer so that the combined
pipeline is buffered somehow to help it weather these spikes, or
my only option is looking at the capture card driver and seeing
if I can make it provide a better quality clock?
Theoretically, I could also run with sync=false on the alsasink, but
that results in a AV sync offset. Which seems fixed so perhaps
a workaround could be if one stream could be moved statically
in time compared to another, but I haven't found a way to do that?
Many thanks,
Tvrtko Ursulin
0:00:02.974574279 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.004143369 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.034039056 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.035897855 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 1,
jitter 0:00:00.001833334
0:00:03.108461897 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.039833333
0:00:03.138143501 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166667
0:00:03.167963506 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166667
0:00:03.208121558 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166667
0:00:03.209750033 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 1,
jitter 0:00:00.001250000
0:00:03.274575484 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.041000000
0:00:03.304146984 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.334430862 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.337237149 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 1,
jitter 0:00:00.000041667
0:00:03.374141625 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.031208333
0:00:03.434986959 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.040416666
0:00:03.474301635 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.503894654 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.542994459 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.009166666
0:00:03.569089728 1869 0x9ba4718 DEBUG basesink gstbasesink.c:2566:gst_base_sink_do_sync:<xvimagesink0> clock returned 0,
jitter -0:00:00.007958333
More information about the gstreamer-devel
mailing list