diff options
Diffstat (limited to 'audio/filter')
-rw-r--r-- | audio/filter/af.c | 22 | ||||
-rw-r--r-- | audio/filter/af.h | 10 | ||||
-rw-r--r-- | audio/filter/af_bs2b.c | 74 | ||||
-rw-r--r-- | audio/filter/af_center.c | 6 | ||||
-rw-r--r-- | audio/filter/af_channels.c | 6 | ||||
-rw-r--r-- | audio/filter/af_convert24.c | 6 | ||||
-rw-r--r-- | audio/filter/af_convertsignendian.c | 6 | ||||
-rw-r--r-- | audio/filter/af_delay.c | 6 | ||||
-rw-r--r-- | audio/filter/af_drc.c | 7 | ||||
-rw-r--r-- | audio/filter/af_dummy.c | 9 | ||||
-rw-r--r-- | audio/filter/af_equalizer.c | 6 | ||||
-rw-r--r-- | audio/filter/af_export.c | 7 | ||||
-rw-r--r-- | audio/filter/af_extrastereo.c | 18 | ||||
-rw-r--r-- | audio/filter/af_format.c | 6 | ||||
-rw-r--r-- | audio/filter/af_hrtf.c | 6 | ||||
-rw-r--r-- | audio/filter/af_karaoke.c | 6 | ||||
-rw-r--r-- | audio/filter/af_ladspa.c | 10 | ||||
-rw-r--r-- | audio/filter/af_lavcac3enc.c | 10 | ||||
-rw-r--r-- | audio/filter/af_lavfi.c | 10 | ||||
-rw-r--r-- | audio/filter/af_lavrresample.c | 8 | ||||
-rw-r--r-- | audio/filter/af_pan.c | 6 | ||||
-rw-r--r-- | audio/filter/af_scaletempo.c | 8 | ||||
-rw-r--r-- | audio/filter/af_sinesuppress.c | 10 | ||||
-rw-r--r-- | audio/filter/af_sub.c | 6 | ||||
-rw-r--r-- | audio/filter/af_surround.c | 6 | ||||
-rw-r--r-- | audio/filter/af_sweep.c | 6 | ||||
-rw-r--r-- | audio/filter/af_volume.c | 6 |
27 files changed, 144 insertions, 143 deletions
diff --git a/audio/filter/af.c b/audio/filter/af.c index d7a0086d5b..f37081c75a 100644 --- a/audio/filter/af.c +++ b/audio/filter/af.c @@ -165,9 +165,9 @@ static int output_control(struct af_instance* af, int cmd, void* arg) return AF_UNKNOWN; } -static struct mp_audio *dummy_play(struct af_instance* af, struct mp_audio* data) +static int dummy_filter(struct af_instance* af, struct mp_audio* data, int f) { - return data; + return 0; } /* Function for creating a new filter of type name.The name may @@ -592,7 +592,7 @@ struct af_stream *af_new(struct MPOpts *opts) *s->first = (struct af_instance) { .info = &in, .control = input_control, - .play = dummy_play, + .filter = dummy_filter, .priv = s, .data = &s->input, .mul = 1.0, @@ -602,7 +602,7 @@ struct af_stream *af_new(struct MPOpts *opts) *s->last = (struct af_instance) { .info = &out, .control = output_control, - .play = dummy_play, + .filter = dummy_filter, .priv = s, .data = &s->filter_output, .mul = 1.0, @@ -687,20 +687,22 @@ struct af_instance *af_add(struct af_stream *s, char *name, char **args) } /* Filter data chunk through the filters in the list. - * Warning: input (audio data and struct fields) will be overwritten. */ -struct mp_audio *af_play(struct af_stream *s, struct mp_audio *data) + * On success, *data is set to the filtered data/format. + * Warning: input audio data will be overwritten. + */ +int af_filter(struct af_stream *s, struct mp_audio *data, int flags) { struct af_instance *af = s->first; assert(mp_audio_config_equals(af->data, data)); // Iterate through all filters while (af) { - data = af->play(af, data); - if (!data) - return NULL; + int r = af->filter(af, data, flags); + if (r < 0) + return r; assert(mp_audio_config_equals(af->data, data)); af = af->next; } - return data; + return 0; } // Calculate average ratio of filter output samples to input samples. diff --git a/audio/filter/af.h b/audio/filter/af.h index 2d29d3f3ae..fb7f2b3b1d 100644 --- a/audio/filter/af.h +++ b/audio/filter/af.h @@ -40,6 +40,9 @@ struct af_instance; #define AF_FLAGS_REENTRANT 0x00000000 #define AF_FLAGS_NOT_REENTRANT 0x00000001 +// Flags for af->filter() +#define AF_FILTER_FLAG_EOF 1 + /* Audio filter information not specific for current instance, but for a specific filter */ struct af_info { @@ -58,7 +61,10 @@ struct af_instance { const struct af_info *info; int (*control)(struct af_instance *af, int cmd, void *arg); void (*uninit)(struct af_instance *af); - struct mp_audio * (*play)(struct af_instance *af, struct mp_audio *data); + /* flags is a bit mask of AF_FILTER_FLAG_* values + * returns 0 on success, negative value on error + */ + int (*filter)(struct af_instance *af, struct mp_audio *data, int flags); void *priv; struct mp_audio *data; // configuration and buffer for outgoing data stream struct af_instance *next; @@ -121,7 +127,7 @@ void af_destroy(struct af_stream *s); int af_init(struct af_stream *s); void af_uninit(struct af_stream *s); struct af_instance *af_add(struct af_stream *s, char *name, char **args); -struct mp_audio *af_play(struct af_stream *s, struct mp_audio *data); +int af_filter(struct af_stream *s, struct mp_audio *data, int flags); 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); diff --git a/audio/filter/af_bs2b.c b/audio/filter/af_bs2b.c index c4f826e856..aaada29a74 100644 --- a/audio/filter/af_bs2b.c +++ b/audio/filter/af_bs2b.c @@ -37,33 +37,33 @@ struct af_bs2b { t_bs2bdp filter; ///< instance of a library filter }; -#define PLAY(name, type) \ -static struct mp_audio *play_##name(struct af_instance *af, struct mp_audio *data) \ +#define FILTER(name, type) \ +static int filter_##name(struct af_instance *af, struct mp_audio *data, int f) \ { \ /* filter is called for all pairs of samples available in the buffer */ \ bs2b_cross_feed_##name(((struct af_bs2b*)(af->priv))->filter, \ (type*)(data->planes[0]), data->samples); \ \ - return data; \ + return 0; \ } -PLAY(f, float) -PLAY(fbe, float) -PLAY(fle, float) -PLAY(s32be, int32_t) -PLAY(u32be, uint32_t) -PLAY(s32le, int32_t) -PLAY(u32le, uint32_t) -PLAY(s24be, bs2b_int24_t) -PLAY(u24be, bs2b_uint24_t) -PLAY(s24le, bs2b_int24_t) -PLAY(u24le, bs2b_uint24_t) -PLAY(s16be, int16_t) -PLAY(u16be, uint16_t) -PLAY(s16le, int16_t) -PLAY(u16le, uint16_t) -PLAY(s8, int8_t) -PLAY(u8, uint8_t) +FILTER(f, float) +FILTER(fbe, float) +FILTER(fle, float) +FILTER(s32be, int32_t) +FILTER(u32be, uint32_t) +FILTER(s32le, int32_t) +FILTER(u32le, uint32_t) +FILTER(s24be, bs2b_int24_t) +FILTER(u24be, bs2b_uint24_t) +FILTER(s24le, bs2b_int24_t) +FILTER(u24le, bs2b_uint24_t) +FILTER(s16be, int16_t) +FILTER(u16be, uint16_t) +FILTER(s16le, int16_t) +FILTER(u16le, uint16_t) +FILTER(s8, int8_t) +FILTER(u8, uint8_t) /// Initialization and runtime control @@ -86,55 +86,55 @@ static int control(struct af_instance *af, int cmd, void *arg) and assign corresponding handlers */ switch (format) { case AF_FORMAT_FLOAT_BE: - af->play = play_fbe; + af->filter = filter_fbe; break; case AF_FORMAT_FLOAT_LE: - af->play = play_fle; + af->filter = filter_fle; break; case AF_FORMAT_S32_BE: - af->play = play_s32be; + af->filter = filter_s32be; break; case AF_FORMAT_U32_BE: - af->play = play_u32be; + af->filter = filter_u32be; break; case AF_FORMAT_S32_LE: - af->play = play_s32le; + af->filter = filter_s32le; break; case AF_FORMAT_U32_LE: - af->play = play_u32le; + af->filter = filter_u32le; break; case AF_FORMAT_S24_BE: - af->play = play_s24be; + af->filter = filter_s24be; break; case AF_FORMAT_U24_BE: - af->play = play_u24be; + af->filter = filter_u24be; break; case AF_FORMAT_S24_LE: - af->play = play_s24le; + af->filter = filter_s24le; break; case AF_FORMAT_U24_LE: - af->play = play_u24le; + af->filter = filter_u24le; break; case AF_FORMAT_S16_BE: - af->play = play_s16be; + af->filter = filter_s16be; break; case AF_FORMAT_U16_BE: - af->play = play_u16be; + af->filter = filter_u16be; break; case AF_FORMAT_S16_LE: - af->play = play_s16le; + af->filter = filter_s16le; break; case AF_FORMAT_U16_LE: - af->play = play_u16le; + af->filter = filter_u16le; break; case AF_FORMAT_S8: - af->play = play_s8; + af->filter = filter_s8; break; case AF_FORMAT_U8: - af->play = play_u8; + af->filter = filter_u8; break; default: - af->play = play_f; + af->filter = filter_f; mp_audio_set_format(af->data, AF_FORMAT_FLOAT); break; } diff --git a/audio/filter/af_center.c b/audio/filter/af_center.c index 65c1526dd3..d1095e611c 100644 --- a/audio/filter/af_center.c +++ b/audio/filter/af_center.c @@ -59,7 +59,7 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -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 mp_audio* c = data; // Current working data af_center_t* s = af->priv; // Setup for this instance @@ -75,13 +75,13 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) a[i+ch] = (a[i]/2) + (a[i+1]/2); } - return c; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; - af->play=play; + af->filter=filter; return AF_OK; } diff --git a/audio/filter/af_channels.c b/audio/filter/af_channels.c index 3277dff7a6..8edaa4285a 100644 --- a/audio/filter/af_channels.c +++ b/audio/filter/af_channels.c @@ -180,7 +180,7 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -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 mp_audio* c = data; // Current working data struct mp_audio* l = af->data; // Local data @@ -201,13 +201,13 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) c->planes[0] = l->planes[0]; mp_audio_set_channels(c, &l->channels); - return c; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; - af->play=play; + af->filter=filter; af_channels_t *s = af->priv; // If router scan commandline for routing pairs diff --git a/audio/filter/af_convert24.c b/audio/filter/af_convert24.c index ddd30875cc..6990fbd421 100644 --- a/audio/filter/af_convert24.c +++ b/audio/filter/af_convert24.c @@ -70,7 +70,7 @@ static int control(struct af_instance *af, int cmd, void *arg) #define SHIFT(x) (((x)+1)*8) #endif -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) { mp_audio_realloc_min(af->data, data->samples); @@ -98,13 +98,13 @@ static struct mp_audio *play(struct af_instance *af, struct mp_audio *data) } data->planes[0] = out->planes[0]; - return data; + return 0; } static int af_open(struct af_instance *af) { af->control = control; - af->play = play; + af->filter = filter; return AF_OK; } diff --git a/audio/filter/af_convertsignendian.c b/audio/filter/af_convertsignendian.c index 7ab99c9c74..7bfaf0f978 100644 --- a/audio/filter/af_convertsignendian.c +++ b/audio/filter/af_convertsignendian.c @@ -99,7 +99,7 @@ static void si2us(void *data, int len, int bps, bool le) } while (i += bps); } -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) { int infmt = data->format; int outfmt = af->data->format; @@ -113,13 +113,13 @@ static struct mp_audio *play(struct af_instance *af, struct mp_audio *data) (outfmt & AF_FORMAT_END_MASK) == AF_FORMAT_LE); mp_audio_set_format(data, outfmt); - return data; + return 0; } static int af_open(struct af_instance *af) { af->control = control; - af->play = play; + af->filter = filter; return AF_OK; } diff --git a/audio/filter/af_delay.c b/audio/filter/af_delay.c index 6dac83a74f..b2c03697fd 100644 --- a/audio/filter/af_delay.c +++ b/audio/filter/af_delay.c @@ -97,7 +97,7 @@ static void uninit(struct af_instance* af) } // Filter data through filter -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 mp_audio* c = data; // Current working data af_delay_t* s = af->priv; // Setup for this instance @@ -152,14 +152,14 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) } } s->ri = ri; - return c; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; af->uninit=uninit; - af->play=play; + af->filter=filter; af_delay_t *s = af->priv; int n = 1; int i = 0; diff --git a/audio/filter/af_drc.c b/audio/filter/af_drc.c index 103080c1a1..0edb99f469 100644 --- a/audio/filter/af_drc.c +++ b/audio/filter/af_drc.c @@ -272,8 +272,7 @@ static void method2_float(af_drc_t *s, struct mp_audio *c) s->idx = (s->idx + 1) % NSAMPLES; } -// Filter data through filter -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) { af_drc_t *s = af->priv; @@ -291,14 +290,14 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) else method1_float(s, data); } - return data; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ int i = 0; af->control=control; - af->play=play; + af->filter=filter; af_drc_t *priv = af->priv; priv->mul = MUL_INIT; diff --git a/audio/filter/af_dummy.c b/audio/filter/af_dummy.c index d1cb054413..d024d0343f 100644 --- a/audio/filter/af_dummy.c +++ b/audio/filter/af_dummy.c @@ -41,18 +41,15 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -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) { - // Do something necessary to get rid of annoying warning during compile - if(!af) - mp_msg(MSGT_AFILTER, MSGL_ERR, "EEEK: Argument af == NULL in af_dummy.c play()."); - return data; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; - af->play=play; + af->filter=filter; return AF_OK; } diff --git a/audio/filter/af_equalizer.c b/audio/filter/af_equalizer.c index c62adf92be..c14fc8451d 100644 --- a/audio/filter/af_equalizer.c +++ b/audio/filter/af_equalizer.c @@ -142,7 +142,7 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -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 mp_audio* c = data; // Current working data af_equalizer_t* s = (af_equalizer_t*)af->priv; // Setup @@ -177,13 +177,13 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) out+=nch; } } - return c; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; - af->play=play; + af->filter=filter; af_equalizer_t *priv = af->priv; for(int i=0;i<AF_NCH;i++){ for(int j=0;j<KM;j++){ diff --git a/audio/filter/af_export.c b/audio/filter/af_export.c index c224d3acd7..d39154755b 100644 --- a/audio/filter/af_export.c +++ b/audio/filter/af_export.c @@ -162,7 +162,7 @@ static void uninit( struct af_instance* af ) af audio filter instance data audio data */ -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 mp_audio* c = data; // Current working data af_export_t* s = af->priv; // Setup for this instance @@ -199,8 +199,7 @@ static struct mp_audio* play( struct af_instance* af, struct mp_audio* data ) &(s->count), sizeof(s->count)); } - // We don't modify data, just export it - return data; + return 0; } /* Allocate memory and set function pointers @@ -211,7 +210,7 @@ static int af_open( struct af_instance* af ) { af->control = control; af->uninit = uninit; - af->play = play; + af->filter = filter; af_export_t *priv = af->priv; if (!priv->filename || !priv->filename[0]) diff --git a/audio/filter/af_extrastereo.c b/audio/filter/af_extrastereo.c index ed05941ece..92cc4dd216 100644 --- a/audio/filter/af_extrastereo.c +++ b/audio/filter/af_extrastereo.c @@ -35,8 +35,8 @@ typedef struct af_extrastereo_s float mul; }af_extrastereo_t; -static struct mp_audio* play_s16(struct af_instance* af, struct mp_audio* data); -static struct mp_audio* play_float(struct af_instance* af, struct mp_audio* data); +static int play_s16(struct af_instance* af, struct mp_audio* data, int f); +static int play_float(struct af_instance* af, struct mp_audio* data, int f); // Initialization and runtime control static int control(struct af_instance* af, int cmd, void* arg) @@ -51,11 +51,11 @@ static int control(struct af_instance* af, int cmd, void* arg) mp_audio_set_num_channels(af->data, 2); if (af->data->format == AF_FORMAT_FLOAT) { - af->play = play_float; + af->filter = play_float; }// else { mp_audio_set_format(af->data, AF_FORMAT_S16); - af->play = play_s16; + af->filter = play_s16; } return af_test_output(af,(struct mp_audio*)arg); @@ -65,7 +65,7 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -static struct mp_audio* play_s16(struct af_instance* af, struct mp_audio* data) +static int play_s16(struct af_instance* af, struct mp_audio* data, int f) { af_extrastereo_t *s = af->priv; register int i = 0; @@ -84,10 +84,10 @@ static struct mp_audio* play_s16(struct af_instance* af, struct mp_audio* data) a[i + 1] = MPCLAMP(r, SHRT_MIN, SHRT_MAX); } - return data; + return 0; } -static struct mp_audio* play_float(struct af_instance* af, struct mp_audio* data) +static int play_float(struct af_instance* af, struct mp_audio* data, int f) { af_extrastereo_t *s = af->priv; register int i = 0; @@ -106,13 +106,13 @@ static struct mp_audio* play_float(struct af_instance* af, struct mp_audio* data a[i + 1] = af_softclip(r); } - return data; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; - af->play=play_s16; + af->filter=play_s16; return AF_OK; } diff --git a/audio/filter/af_format.c b/audio/filter/af_format.c index 5b941951cb..552587b56e 100644 --- a/audio/filter/af_format.c +++ b/audio/filter/af_format.c @@ -96,16 +96,16 @@ 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) { mp_audio_copy_config(data, af->data); - return data; + return 0; } static int af_open(struct af_instance *af) { af->control = control; - af->play = play; + af->filter = filter; force_in_params(af, af->data); force_out_params(af, af->data); diff --git a/audio/filter/af_hrtf.c b/audio/filter/af_hrtf.c index 0092d0dc85..83495f4fcb 100644 --- a/audio/filter/af_hrtf.c +++ b/audio/filter/af_hrtf.c @@ -353,7 +353,7 @@ frequencies). 2. A bass compensation is introduced to ensure that 0-200 Hz are not damped (without any real 3D acoustical image, however). */ -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) { af_hrtf_t *s = af->priv; short *in = data->planes[0]; // Input audio data @@ -538,7 +538,7 @@ static struct mp_audio* play(struct af_instance *af, struct mp_audio *data) data->planes[0] = af->data->planes[0]; mp_audio_set_num_channels(data, 2); - return data; + return 0; } static int allocate(af_hrtf_t *s) @@ -571,7 +571,7 @@ static int af_open(struct af_instance* af) af->control = control; af->uninit = uninit; - af->play = play; + af->filter = filter; s = af->priv; diff --git a/audio/filter/af_karaoke.c b/audio/filter/af_karaoke.c index 07ef0579bc..bddb218dde 100644 --- a/audio/filter/af_karaoke.c +++ b/audio/filter/af_karaoke.c @@ -42,7 +42,7 @@ static int control(struct af_instance* af, int cmd, void* arg) } // Filter data through filter -static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) +static int play(struct af_instance* af, struct mp_audio* data, int flags) { struct mp_audio* c = data; // Current working data float* a = c->planes[0]; // Audio data @@ -62,13 +62,13 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) a[i+1]=a[i]; } - return c; + return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control = control; - af->play = play; + af->filter = play; return AF_OK; } diff --git a/audio/filter/af_ladspa.c b/audio/filter/af_ladspa.c index 1d7f9c9fa5..3a05ced3cd 100644 --- a/audio/filter/af_ladspa.c +++ b/audio/filter/af_ladspa.c @@ -564,7 +564,7 @@ static void uninit(struct af_instance *af) { * \return Either AF_ERROR or AF_OK */ -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) { af_ladspa_t *setup = af->priv; const LADSPA_Descriptor *pdes = setup->plugin_descriptor; float *audio = (float*)data->planes[0]; @@ -574,7 +574,7 @@ static struct mp_audio* play(struct af_instance *af, struct mp_audio *data) { int i, p; if (setup->status !=AF_OK) - return data; + return -1; /* See if it's the first call. If so, setup inbufs/outbufs, instantiate * plugin, connect ports and activate plugin @@ -720,7 +720,7 @@ static struct mp_audio* play(struct af_instance *af, struct mp_audio *data) { /* done */ - return data; + return 0; } /* ------------------------------------------------------------------------- */ @@ -736,12 +736,12 @@ static int af_open(struct af_instance *af) { af->control=control; af->uninit=uninit; - af->play=play; + af->filter=filter; af_ladspa_t *setup = af->priv; setup->status = AF_ERROR; /* will be set to AF_OK if - * all went OK and play() + * all went OK and filter() * should proceed. */ diff --git a/audio/filter/af_lavcac3enc.c b/audio/filter/af_lavcac3enc.c index a441dbe17d..a27418f2f7 100644 --- a/audio/filter/af_lavcac3enc.c +++ b/audio/filter/af_lavcac3enc.c @@ -151,7 +151,7 @@ static void uninit(struct af_instance* af) } // Filter data through filter -static struct mp_audio* play(struct af_instance* af, struct mp_audio* audio) +static int filter(struct af_instance* af, struct mp_audio* audio, int flags) { struct mp_audio *out = af->data; af_ac3enc_t *s = af->priv; @@ -188,7 +188,7 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* audio) AVFrame *frame = avcodec_alloc_frame(); if (!frame) { mp_msg(MSGT_AFILTER, MSGL_FATAL, "[libaf] Could not allocate memory \n"); - return NULL; + return -1; } frame->nb_samples = s->in_samples; frame->format = s->lavc_actx->sample_fmt; @@ -202,7 +202,7 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* audio) ret = avcodec_encode_audio2(s->lavc_actx, &s->pkt, frame, &ok); if (ret < 0 || !ok) { mp_msg(MSGT_AFILTER, MSGL_FATAL, "[lavac3enc] Encode failed.\n"); - return NULL; + return -1; } avcodec_free_frame(&frame); @@ -245,7 +245,7 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* audio) mp_audio_buffer_append(s->pending, audio); *audio = *out; - return audio; + return 0; } static int af_open(struct af_instance* af){ @@ -253,7 +253,7 @@ static int af_open(struct af_instance* af){ af_ac3enc_t *s = af->priv; af->control=control; af->uninit=uninit; - af->play=play; + af->filter=filter; s->lavc_acodec = avcodec_find_encoder_by_name("ac3"); if (!s->lavc_acodec) { 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; diff --git a/audio/filter/af_lavrresample.c b/audio/filter/af_lavrresample.c index 95a5547ab5..7386c27fa6 100644 --- a/audio/filter/af_lavrresample.c +++ b/audio/filter/af_lavrresample.c @@ -331,7 +331,7 |