Merge pull request #1426 from adamcik/fix/1404-duplicate-seeks
audio: Prevent double seeks in appsrc (fixes: #1404)
This commit is contained in:
commit
79cdc16d64
@ -156,6 +156,10 @@ Audio
|
|||||||
argument is no longer in use and will be removed in the future. As far as we
|
argument is no longer in use and will be removed in the future. As far as we
|
||||||
know, this is only used by Mopidy-Spotify.
|
know, this is only used by Mopidy-Spotify.
|
||||||
|
|
||||||
|
- Duplicate seek events getting to AppSrc based backends is now fixed. This
|
||||||
|
should prevent seeking in Mopidy-Spotify from glitching.
|
||||||
|
(Fixes: :issue:`1404`)
|
||||||
|
|
||||||
Gapless
|
Gapless
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|||||||
@ -385,6 +385,7 @@ class Audio(pykka.ThreadingActor):
|
|||||||
|
|
||||||
self._playbin = None
|
self._playbin = None
|
||||||
self._outputs = None
|
self._outputs = None
|
||||||
|
self._queue = None
|
||||||
self._about_to_finish_callback = None
|
self._about_to_finish_callback = None
|
||||||
|
|
||||||
self._handler = _Handler(self)
|
self._handler = _Handler(self)
|
||||||
@ -481,6 +482,7 @@ class Audio(pykka.ThreadingActor):
|
|||||||
audio_sink.add_pad(ghost_pad)
|
audio_sink.add_pad(ghost_pad)
|
||||||
|
|
||||||
self._playbin.set_property('audio-sink', audio_sink)
|
self._playbin.set_property('audio-sink', audio_sink)
|
||||||
|
self._queue = queue
|
||||||
|
|
||||||
def _teardown_mixer(self):
|
def _teardown_mixer(self):
|
||||||
if self.mixer:
|
if self.mixer:
|
||||||
@ -628,7 +630,12 @@ class Audio(pykka.ThreadingActor):
|
|||||||
# TODO: double check seek flags in use.
|
# TODO: double check seek flags in use.
|
||||||
gst_position = utils.millisecond_to_clocktime(position)
|
gst_position = utils.millisecond_to_clocktime(position)
|
||||||
gst_logger.debug('Sending flushing seek: position=%r', gst_position)
|
gst_logger.debug('Sending flushing seek: position=%r', gst_position)
|
||||||
result = self._playbin.seek_simple(
|
# Send seek event to the queue not the playbin. The default behavior
|
||||||
|
# for bins is to forward this event to all sinks. Which results in
|
||||||
|
# duplicate seek events making it to appsrc. Since elements are not
|
||||||
|
# allowed to act on the seek event, only modify it, this should be safe
|
||||||
|
# to do.
|
||||||
|
result = self._queue.seek_simple(
|
||||||
Gst.Format.TIME, Gst.SeekFlags.FLUSH, gst_position)
|
Gst.Format.TIME, Gst.SeekFlags.FLUSH, gst_position)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user