summaryrefslogtreecommitdiff
path: root/gst/audiobuffersplit
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-05-25 15:36:38 +0300
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-05-25 12:41:32 +0000
commitbd67ef18e9ae3b122e491d28b396a62fa75565fd (patch)
tree272da79feb8d54a433a7b1df64c71542bb99aacd /gst/audiobuffersplit
parent3efc8f5de9e9ac8e385b77067912f25c74fb3de6 (diff)
downloadgstreamer-plugins-bad-bd67ef18e9ae3b122e491d28b396a62fa75565fd.tar.gz
audiobuffersplit: Unset DISCONT flag if not discontinuous
And also set/unset the RESYNC flag accordingly. It can happen that the flag is preserved by GstAdapter from the input buffer. For example if a big input buffer is split into many small ones, each of the small ones would have the flag set. All other buffer flags seem safe to keep here if they were set, including the GAP flag. Also ensure that the buffer is actually writable before changing any flags or metadata on it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1298>
Diffstat (limited to 'gst/audiobuffersplit')
-rw-r--r--gst/audiobuffersplit/gstaudiobuffersplit.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gst/audiobuffersplit/gstaudiobuffersplit.c b/gst/audiobuffersplit/gstaudiobuffersplit.c
index bd66e9e1f..7d2738add 100644
--- a/gst/audiobuffersplit/gstaudiobuffersplit.c
+++ b/gst/audiobuffersplit/gstaudiobuffersplit.c
@@ -379,10 +379,15 @@ gst_audio_buffer_split_output (GstAudioBufferSplit * self, gboolean force,
size = MIN (size, avail);
buffer = gst_adapter_take_buffer (self->adapter, size);
+ buffer = gst_buffer_make_writable (buffer);
/* After a reset we have to set the discont flag */
if (self->current_offset == 0)
- GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+ GST_BUFFER_FLAG_SET (buffer,
+ GST_BUFFER_FLAG_DISCONT | GST_BUFFER_FLAG_RESYNC);
+ else
+ GST_BUFFER_FLAG_UNSET (buffer,
+ GST_BUFFER_FLAG_DISCONT | GST_BUFFER_FLAG_RESYNC);
resync_time_diff =
gst_util_uint64_scale (self->current_offset, GST_SECOND, rate);