[Bug 788362] New: directsoundsrc: provided clock is not monotonic after pause and resume
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Fri Sep 29 21:35:03 UTC 2017
https://bugzilla.gnome.org/show_bug.cgi?id=788362
Bug ID: 788362
Summary: directsoundsrc: provided clock is not monotonic after
pause and resume
Classification: Platform
Product: GStreamer
Version: 1.12.3
OS: Windows
Status: NEW
Severity: normal
Priority: Normal
Component: gst-plugins-good
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: philippe_renon at yahoo.fr
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Video playback with audio jumps forwards visibly when going from pause to
plauing.
This is a log extract of a video playback going from playing to pause and back
to playing.
The shows the out of audiobasesink
gstaudiobasesink.c:545:gst_audio_base_sink_get_time:<directsoundsink0>
The time displayed on the far right is the time that will feed the audio clock
that drives the pipeline.
0:00:02.432044715 processed samples: raw 30240, delay 9600, real 20640, time
0:00:00.430000000
0:00:02.437322934 processed samples: raw 30720, delay 9600, real 21120, time
0:00:00.440000000
Pausing...
0:00:02.437831207 processed samples: raw 30720, delay 9600, real 21120, time
0:00:00.440000000
0:00:02.438205430 processed samples: raw 30720, delay 9600, real 21120, time
0:00:00.440000000
0:00:02.438512938 processed samples: raw 31200, delay 0, real 31200, time
0:00:00.650000000 (1)
Playing...
0:00:05.773609712 processed samples: raw 31200, delay 0, real 31200, time
0:00:00.650000000
0:00:05.774203007 processed samples: raw 33600, delay 2880, real 30720, time
0:00:00.640000000 (2)
0:00:05.774348849 processed samples: raw 40800, delay 9600, real 31200, time
0:00:00.650000000
You can see at (1) that the clock jumps forward by more than 200ms.
At (2) it goes back in time by 10ms.
The audio clock time is computed by GstAudioBaseSink based on where it thinks
it is (number of samples sent to the device)
minus the delay (number of samples not yet played by the device). The delay is
provided by the directsoundsink.
The problem is that when pausing, directsoundsink resets the DirectSoundBuffer
and the delay becomes zero.
This explains the jump forward of the clock. Fixing this is not too complex:
don't reset the DirectSoundBuffer and pause it instead.
But that requires that directsoundsink can distinguish a pause from a stop.
Currently pause and stop are not exposed to audiosink children and are handled
by the same reset vmethod.
A patch to expose the pause and stop vmethod is provided here
https://bugzilla.gnome.org/show_bug.cgi?id=788361
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list