From 1fde40732eb7b5c79c2e10e41f72692d986781bb Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 13 Jan 2015 20:16:02 +0100 Subject: audio/filters: use refcounted frames for some simple filters These are read-only, and very trivial to convert. --- audio/filter/af_dummy.c | 5 +++-- audio/filter/af_export.c | 7 +++++-- audio/filter/af_forcespeed.c | 8 +++++--- audio/filter/af_format.c | 8 +++++--- 4 files changed, 18 insertions(+), 10 deletions(-) (limited to 'audio/filter') diff --git a/audio/filter/af_dummy.c b/audio/filter/af_dummy.c index 61f2207d84..3d3ec27654 100644 --- a/audio/filter/af_dummy.c +++ b/audio/filter/af_dummy.c @@ -41,15 +41,16 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -static int filter(struct af_instance* af, struct mp_audio* data, int flags) +static int filter(struct af_instance* af, struct mp_audio* data) { + af_add_output_frame(af, data); return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; - af->filter=filter; + af->filter_frame=filter; return AF_OK; } diff --git a/audio/filter/af_export.c b/audio/filter/af_export.c index 8e54fec5f5..fb5503f0af 100644 --- a/audio/filter/af_export.c +++ b/audio/filter/af_export.c @@ -162,8 +162,10 @@ static void uninit( struct af_instance* af ) af audio filter instance data audio data */ -static int filter( struct af_instance* af, struct mp_audio* data, int flags) +static int filter(struct af_instance *af, struct mp_audio *data) { + if (!data) + return 0; struct mp_audio* c = data; // Current working data af_export_t* s = af->priv; // Setup for this instance int16_t* a = c->planes[0]; // Incomming sound @@ -199,6 +201,7 @@ static int filter( struct af_instance* af, struct mp_audio* data, int flags) &(s->count), sizeof(s->count)); } + af_add_output_frame(af, data); return 0; } @@ -210,7 +213,7 @@ static int af_open( struct af_instance* af ) { af->control = control; af->uninit = uninit; - af->filter = filter; + af->filter_frame = filter; af_export_t *priv = af->priv; if (!priv->filename || !priv->filename[0]) { diff --git a/audio/filter/af_forcespeed.c b/audio/filter/af_forcespeed.c index d2d2f9abb7..3f2ca831c9 100644 --- a/audio/filter/af_forcespeed.c +++ b/audio/filter/af_forcespeed.c @@ -44,9 +44,11 @@ static int control(struct af_instance *af, int cmd, void *arg) return AF_UNKNOWN; } -static int filter(struct af_instance *af, struct mp_audio *data, int flags) +static int filter(struct af_instance *af, struct mp_audio *data) { - mp_audio_copy_config(data, af->data); + if (data) + mp_audio_copy_config(data, af->data); + af_add_output_frame(af, data); return 0; } @@ -54,7 +56,7 @@ static int af_open(struct af_instance *af) { struct priv *priv = af->priv; af->control = control; - af->filter = filter; + af->filter_frame = filter; priv->speed = 1.0; return AF_OK; } diff --git a/audio/filter/af_format.c b/audio/filter/af_format.c index 14b0d34d42..c0fe354a39 100644 --- a/audio/filter/af_format.c +++ b/audio/filter/af_format.c @@ -95,16 +95,18 @@ static int control(struct af_instance *af, int cmd, void *arg) return AF_UNKNOWN; } -static int filter(struct af_instance *af, struct mp_audio *data, int flags) +static int filter(struct af_instance *af, struct mp_audio *data) { - mp_audio_copy_config(data, af->data); + if (data) + mp_audio_copy_config(data, af->data); + af_add_output_frame(af, data); return 0; } static int af_open(struct af_instance *af) { af->control = control; - af->filter = filter; + af->filter_frame = filter; force_in_params(af, af->data); force_out_params(af, af->data); -- cgit v1.2.3