diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-01-15 23:30:28 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-01-15 23:30:57 +0100 |
commit | aa3eb10ceea5296f5abe12ca8be35b875f58d0eb (patch) | |
tree | c4dfd7be1663e50e90e11f8812cf7efbedceac3f | |
parent | 078b82d6d1c609257b6528a9c4efb1ed4acd2bb8 (diff) | |
download | gstreamer-plugins-bad-aa3eb10ceea5296f5abe12ca8be35b875f58d0eb.tar.gz |
audiomixer: Fix and simplify overlap calculation
-rw-r--r-- | gst/audiomixer/gstaudiomixer.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gst/audiomixer/gstaudiomixer.c b/gst/audiomixer/gstaudiomixer.c index 2605cc370..592985106 100644 --- a/gst/audiomixer/gstaudiomixer.c +++ b/gst/audiomixer/gstaudiomixer.c @@ -1424,11 +1424,9 @@ gst_audio_mixer_mix_buffer (GstAudioMixer * audiomixer, GstCollectPads * pads, else out_start = 0; - if (audiomixer->offset + audiomixer->blocksize + adata->position / bpf < - adata->output_offset + adata->size / bpf + out_start) + overlap = adata->size / bpf - adata->position / bpf; + if (overlap > audiomixer->blocksize - out_start) overlap = audiomixer->blocksize - out_start; - else - overlap = adata->size / bpf - adata->position / bpf; inbuf = gst_collect_pads_peek (pads, collect_data); g_assert (inbuf != NULL && inbuf == adata->buffer); @@ -1441,6 +1439,8 @@ gst_audio_mixer_mix_buffer (GstAudioMixer * audiomixer, GstCollectPads * pads, adata->output_offset += adata->size / bpf; if (adata->position >= adata->size) { /* Buffer done, drop it */ + adata->position = 0; + adata->size = 0; gst_buffer_replace (&adata->buffer, NULL); gst_buffer_unref (gst_collect_pads_pop (pads, collect_data)); } |