diff options
author | wm4 <wm4@nowhere> | 2013-12-05 00:01:46 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-12-05 00:01:46 +0100 |
commit | ed024aadb6e7be6c3d910045a64db53a6c95e98f (patch) | |
tree | f26724d268e13ee8ec8f327ea829b65ccd6fab19 /audio/filter/af_lavfi.c | |
parent | 2bcfb49a390a928c535cba7cab2b4136f27fceca (diff) | |
download | mpv-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/filter/af_lavfi.c')
-rw-r--r-- | audio/filter/af_lavfi.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/audio/filter/af_lavfi.c b/audio/filter/af_lavfi.c index 6ef5bf6f80..7f0aad2c36 100644 --- a/audio/filter/af_lavfi.c +++ b/audio/filter/af_lavfi.c @@ -206,7 +206,7 @@ static int control(struct af_instance *af, int cmd, void *arg) return AF_UNKNOWN; } -static struct mp_audio *play(struct af_instance *af, struct mp_audio *data) +static int filter(struct af_instance *af, struct mp_audio *data, int flags) { struct priv *p = af->priv; struct mp_audio *r = af->data; @@ -231,7 +231,7 @@ static struct mp_audio *play(struct af_instance *af, struct mp_audio *data) if (av_buffersrc_add_frame(p->in, frame) < 0) { av_frame_free(&frame); - return NULL; + return -1; } av_frame_free(&frame); @@ -270,7 +270,7 @@ static struct mp_audio *play(struct af_instance *af, struct mp_audio *data) } *data = *r; - return data; + return 0; } static void uninit(struct af_instance *af) @@ -282,9 +282,7 @@ static int af_open(struct af_instance *af) { af->control = control; af->uninit = uninit; - af->play = play; - struct priv *priv = af->priv; - af->data = talloc_zero(priv, struct mp_audio), + af->filter = filter; // Removing this requires fixing AVFrame.data vs. AVFrame.extended_data assert(MP_NUM_CHANNELS <= AV_NUM_DATA_POINTERS); return AF_OK; |