summaryrefslogtreecommitdiffstats
path: root/audio/decode
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-12-05 00:01:46 +0100
committerwm4 <wm4@nowhere>2013-12-05 00:01:46 +0100
commited024aadb6e7be6c3d910045a64db53a6c95e98f (patch)
treef26724d268e13ee8ec8f327ea829b65ccd6fab19 /audio/decode
parent2bcfb49a390a928c535cba7cab2b4136f27fceca (diff)
downloadmpv-ed024aadb6e7be6c3d910045a64db53a6c95e98f.tar.bz2
mpv-ed024aadb6e7be6c3d910045a64db53a6c95e98f.tar.xz
audio/filter: change filter callback signature
The new signature is actually closer to how it actually works, and someone who is not familiar to the API and how it works might make fewer fatal mistakes with the new signature than the old one. Pretty weird. Do this to sneak in a flags parameter, which will later be used to flush remaining data of at least vf_lavfi.
Diffstat (limited to 'audio/decode')
-rw-r--r--audio/decode/dec_audio.c17
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);