diff options
Diffstat (limited to 'audio/decode')
-rw-r--r-- | audio/decode/dec_audio.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/audio/decode/dec_audio.c b/audio/decode/dec_audio.c index 8cd7783069..b004664474 100644 --- a/audio/decode/dec_audio.c +++ b/audio/decode/dec_audio.c @@ -270,16 +270,15 @@ static int filter_n_bytes(struct dec_audio *da, struct mp_audio_buffer *outbuf, } // Filter - struct mp_audio filter_input; - mp_audio_buffer_peek(da->decode_buffer, &filter_input); - filter_input.rate = da->afilter->input.rate; // due to playback speed change - len = MPMIN(filter_input.samples, len); - filter_input.samples = len; - - struct mp_audio *filter_output = af_play(da->afilter, &filter_input); - if (!filter_output) + struct mp_audio filter_data; + mp_audio_buffer_peek(da->decode_buffer, &filter_data); + filter_data.rate = da->afilter->input.rate; // due to playback speed change + len = MPMIN(filter_data.samples, len); + filter_data.samples = len; + + if (af_filter(da->afilter, &filter_data, 0) < 0) return -1; - mp_audio_buffer_append(outbuf, filter_output); + mp_audio_buffer_append(outbuf, &filter_data); // remove processed data from decoder buffer: mp_audio_buffer_skip(da->decode_buffer, len); |