diff options
author | wm4 <wm4@nowhere> | 2014-11-10 22:01:23 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-11-10 22:02:05 +0100 |
commit | 5fd8a1e04c725329435e3bead5f11ee3ffb9f1c1 (patch) | |
tree | a3a3ae0ac6ee87449ed780604e55da6dca2f34f2 /audio/filter/af.h | |
parent | 46d6fb9dc1a820b58dd3ffcc155195aea6bb0bd1 (diff) | |
download | mpv-5fd8a1e04c725329435e3bead5f11ee3ffb9f1c1.tar.bz2 mpv-5fd8a1e04c725329435e3bead5f11ee3ffb9f1c1.tar.xz |
audio: make decoders output refcounted frames
This rewrites the audio decode loop to some degree. Audio filters don't
do refcounted frames yet, so af.c contains a hacky "emulation".
Remove some of the weird heuristic-heavy code in dec_audio.c. Instead of
estimating how much audio we need to filter, we always filter full
frames. Maybe this should be adjusted later: in case filtering increases
the volume of the audio data, we should try not to buffer too much
filter output by reducing the input that is fed at once.
For ad_spdif.c and ad_mpg123.c, we don't avoid extra copying yet - it
doesn't seem worth the trouble.
Diffstat (limited to 'audio/filter/af.h')
-rw-r--r-- | audio/filter/af.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/audio/filter/af.h b/audio/filter/af.h index 5c7a6c0e7c..682cdb93e3 100644 --- a/audio/filter/af.h +++ b/audio/filter/af.h @@ -136,7 +136,9 @@ void af_uninit(struct af_stream *s); struct af_instance *af_add(struct af_stream *s, char *name, char **args); int af_remove_by_label(struct af_stream *s, char *label); struct af_instance *af_find_by_label(struct af_stream *s, char *label); -int af_filter(struct af_stream *s, struct mp_audio *data, int flags); +struct mp_audio_buffer; +int af_filter(struct af_stream *s, struct mp_audio *data, + struct mp_audio_buffer *output); struct af_instance *af_control_any_rev(struct af_stream *s, int cmd, void *arg); void af_control_all(struct af_stream *s, int cmd, void *arg); |