mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
gst-libs/gst/audio/gstbaseaudiosink.c: After an interrupt (PAUSED/flush) assume that the next sample should not be al...
Original commit message from CVS: * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_render): After an interrupt (PAUSED/flush) assume that the next sample should not be aligned to the previous sample. Fixes #417992.
This commit is contained in:
parent
57375cf664
commit
b2fdf703c9
2 changed files with 18 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2007-05-24 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst-libs/gst/audio/gstbaseaudiosink.c:
|
||||||
|
(gst_base_audio_sink_render):
|
||||||
|
After an interrupt (PAUSED/flush) assume that the next sample should not
|
||||||
|
be aligned to the previous sample. Fixes #417992.
|
||||||
|
|
||||||
2007-05-24 Tim-Philipp Müller <tim at centricular dot net>
|
2007-05-24 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* gst-libs/gst/riff/riff-media.c: (gst_riff_create_audio_caps):
|
* gst-libs/gst/riff/riff-media.c: (gst_riff_create_audio_caps):
|
||||||
|
|
|
@ -853,9 +853,9 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||||
gint bps;
|
gint bps;
|
||||||
gint accum;
|
gint accum;
|
||||||
gint out_samples;
|
gint out_samples;
|
||||||
GstClockTime base_time, latency;
|
GstClockTime base_time = -1, latency;
|
||||||
GstClock *clock;
|
GstClock *clock;
|
||||||
gboolean sync, slaved;
|
gboolean sync, slaved, align_next;
|
||||||
|
|
||||||
sink = GST_BASE_AUDIO_SINK (bsink);
|
sink = GST_BASE_AUDIO_SINK (bsink);
|
||||||
|
|
||||||
|
@ -1062,6 +1062,7 @@ no_sync:
|
||||||
|
|
||||||
/* we need to accumulate over different runs for when we get interrupted */
|
/* we need to accumulate over different runs for when we get interrupted */
|
||||||
accum = 0;
|
accum = 0;
|
||||||
|
align_next = TRUE;
|
||||||
do {
|
do {
|
||||||
written =
|
written =
|
||||||
gst_ring_buffer_commit_full (ringbuf, &sample_offset, data, samples,
|
gst_ring_buffer_commit_full (ringbuf, &sample_offset, data, samples,
|
||||||
|
@ -1076,11 +1077,18 @@ no_sync:
|
||||||
if (gst_base_sink_wait_preroll (bsink) != GST_FLOW_OK)
|
if (gst_base_sink_wait_preroll (bsink) != GST_FLOW_OK)
|
||||||
goto stopping;
|
goto stopping;
|
||||||
|
|
||||||
|
/* if we got interrupted, we cannot assume that the next sample should
|
||||||
|
* be aligned to this one */
|
||||||
|
align_next = FALSE;
|
||||||
|
|
||||||
samples -= written;
|
samples -= written;
|
||||||
data += written * bps;
|
data += written * bps;
|
||||||
} while (TRUE);
|
} while (TRUE);
|
||||||
|
|
||||||
sink->next_sample = sample_offset;
|
if (align_next)
|
||||||
|
sink->next_sample = sample_offset;
|
||||||
|
else
|
||||||
|
sink->next_sample = -1;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (sink, "next sample expected at %" G_GUINT64_FORMAT,
|
GST_DEBUG_OBJECT (sink, "next sample expected at %" G_GUINT64_FORMAT,
|
||||||
sink->next_sample);
|
sink->next_sample);
|
||||||
|
|
Loading…
Reference in a new issue