summaryrefslogtreecommitdiff
path: root/gst/audiobuffersplit/gstaudiobuffersplit.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-12-23 13:27:42 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-12-23 13:27:42 +0200
commit5cff156f2c44d323655455444ec266941dd98c2a (patch)
tree8971e7f8ad6ca38926486168992e85138ed9d500 /gst/audiobuffersplit/gstaudiobuffersplit.c
parent4523cff1472bedeb3221a470c3f76fb7c24a6f7e (diff)
downloadgstreamer-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.
Diffstat (limited to 'gst/audiobuffersplit/gstaudiobuffersplit.c')
-rw-r--r--gst/audiobuffersplit/gstaudiobuffersplit.c4
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