How to manage my customize clock (GstAudioClock) after seek/flush?
Halley Zhao
aihua.halley.zhao at gmail.com
Thu Jun 6 00:33:34 UTC 2019
my question are:
1. if it is by-design that gst_clock_get_time() reports monotonically
increasing time; why video frames are blocked by basesink after seek
backwards?
2. how should I 'reset' GstClock/GstAudioClock after flush/seek, I found
gst_audio_reset() doesn't work as expected.
Halley Zhao <aihua.halley.zhao at gmail.com> 于2019年6月5日周三 下午1:49写道:
> Hi expert:
> I have a short gst pipeline (appsrc-->videodecode-->videosink), and want
> to control the playback pace by an external clock. in my simple example, I
> created a customized GstAudioClock basing on system time. it works for
> normal playback.
> GstAudioClock *myGstClock = GST_AUDIO_CLOCK(gst_audio_clock_new("MyClock",
> (GstAudioClockGetTimeFunc)getMyClockTime, NULL/* user data */,
> NULL/*GDestroyNotify destroy_notify*/));
> getMyClockTime() reports played time comparable with video frame
> timestamp. code piece see below.
>
> but, I met issue after seek.
> after seek, I simply update g_anchorTime to the seek_time (0 in my
> sample code); thus getMyClockTime always returns currTime comparable with
> timestamp of video frame.
> however video frames are dropped before seek_time. because
> gst_clock_get_time() always returns monotonically increasing time(not
> currTime as I expect).
> I tried to call gst_audio_clock_reset(myGstClock, 0), it doesn't help.
>
> static uint64_t g_anchorTime = -1;
> int64_t getTimeNs()
> {
> struct timespec t;
> clock_gettime(CLOCK_MONOTONIC, &t);
> int64_t currTime = t.tv_sec;
> currTime = currTime * 1000*1000*1000LL + t.tv_nsec;
>
> return currTime;
> }
> GstClockTime getMyClockTime(GstClock * clock, gpointer user_data)
> {
> static int dbgCount = 0;
>
> int64_t currTime = getTimeNs();
> currTime = currTime-g_anchorTime;
> DEBUG("dbgCount: %d, %" PRId64 ", %.3f", dbgCount++, currTime,
> currTime/1000/1000/1000.0);
>
> return currTime;
> }
>
> complete sample code see attachment seek.c
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190606/91bf6838/attachment.html>
More information about the gstreamer-devel
mailing list