diff options
Diffstat (limited to 'audio/filter/af_rubberband.c')
-rw-r--r-- | audio/filter/af_rubberband.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/audio/filter/af_rubberband.c b/audio/filter/af_rubberband.c index 754fb39c06..27e26c1039 100644 --- a/audio/filter/af_rubberband.c +++ b/audio/filter/af_rubberband.c @@ -126,18 +126,17 @@ static int filter_out(struct af_instance *af) } size_t out_samples = rubberband_available(p->rubber); - if (!out_samples) - return 0; - - struct mp_audio *out = - mp_audio_pool_get(af->out_pool, af->data, out_samples); - if (!out) - return -1; - if (p->pending) - mp_audio_copy_config(out, p->pending); - float **out_data = (void *)&out->planes; - out->samples = rubberband_retrieve(p->rubber, out_data, out->samples); - af_add_output_frame(af, out); + if (out_samples) { + struct mp_audio *out = + mp_audio_pool_get(af->out_pool, af->data, out_samples); + if (!out) + return -1; + if (p->pending) + mp_audio_copy_config(out, p->pending); + float **out_data = (void *)&out->planes; + out->samples = rubberband_retrieve(p->rubber, out_data, out->samples); + af_add_output_frame(af, out); + } int delay = rubberband_get_latency(p->rubber); delay += p->pending ? p->pending->samples : 0; |