diff options
Diffstat (limited to 'audio/filter')
-rw-r--r-- | audio/filter/af.c | 2 | ||||
-rw-r--r-- | audio/filter/af_lavrresample.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/audio/filter/af.c b/audio/filter/af.c index cfe4b401df..edee4bef65 100644 --- a/audio/filter/af.c +++ b/audio/filter/af.c @@ -697,8 +697,6 @@ struct mp_audio *af_play(struct af_stream *s, struct mp_audio *data) struct af_instance *af = s->first; // Iterate through all filters do { - if (data->len <= 0) - break; data = af->play(af, data); af = af->next; } while (af && data); diff --git a/audio/filter/af_lavrresample.c b/audio/filter/af_lavrresample.c index 46428e1f76..860e5a52d3 100644 --- a/audio/filter/af_lavrresample.c +++ b/audio/filter/af_lavrresample.c @@ -324,9 +324,13 @@ static struct mp_audio *play(struct af_instance *af, struct mp_audio *data) reorder_channels(data->audio, s->reorder_in, data->bps, data->nch, in_samples); #endif - out_samples = avresample_convert(s->avrctx, + if (out_samples) { + out_samples = avresample_convert(s->avrctx, (uint8_t **) &out->audio, out_size, out_samples, (uint8_t **) &in->audio, in_size, in_samples); + if (out_samples < 0) + return NULL; // error + } *data = *out; |