diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-12-23 13:27:42 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-12-23 13:27:42 +0200 |
commit | 5cff156f2c44d323655455444ec266941dd98c2a (patch) | |
tree | 8971e7f8ad6ca38926486168992e85138ed9d500 | |
parent | 4523cff1472bedeb3221a470c3f76fb7c24a6f7e (diff) | |
download | gstreamer-plugins-bad-5cff156f2c44d323655455444ec266941dd98c2a.tar.gz |
audiobuffersplit: Don't try to output anything if samples_per_buffer == 0
This happens if we had no CAPS event yet but e.g. got an EOS event. We
would then try to output a 0-sized buffer, but getting that from the
adapter will give an assertion, return NULL and then crash.
-rw-r--r-- | gst/audiobuffersplit/gstaudiobuffersplit.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gst/audiobuffersplit/gstaudiobuffersplit.c b/gst/audiobuffersplit/gstaudiobuffersplit.c index c6c7c9c29..3b3526734 100644 --- a/gst/audiobuffersplit/gstaudiobuffersplit.c +++ b/gst/audiobuffersplit/gstaudiobuffersplit.c @@ -220,6 +220,7 @@ gst_audio_buffer_split_change_state (GstElement * element, self->resync_time = GST_CLOCK_TIME_NONE; self->current_offset = -1; self->accumulated_error = 0; + self->samples_per_buffer = 0; break; default: break; @@ -252,6 +253,9 @@ gst_audio_buffer_split_output (GstAudioBufferSplit * self, gboolean force) rate = GST_AUDIO_INFO_RATE (&self->info); bpf = GST_AUDIO_INFO_BPF (&self->info); + if (self->samples_per_buffer == 0) + return GST_FLOW_NOT_NEGOTIATED; + size = self->samples_per_buffer * bpf; /* If we accumulated enough error for one sample, include one |