summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--audio/decode/dec_audio.c17
-rw-r--r--audio/filter/af.c22
-rw-r--r--audio/filter/af.h10
-rw-r--r--audio/filter/af_bs2b.c74
-rw-r--r--audio/filter/af_center.c6
-rw-r--r--audio/filter/af_channels.c6
-rw-r--r--audio/filter/af_convert24.c6
-rw-r--r--audio/filter/af_convertsignendian.c6
-rw-r--r--audio/filter/af_delay.c6
-rw-r--r--audio/filter/af_drc.c7
-rw-r--r--audio/filter/af_dummy.c9
-rw-r--r--audio/filter/af_equalizer.c6
-rw-r--r--audio/filter/af_export.c7
-rw-r--r--audio/filter/af_extrastereo.c18
-rw-r--r--audio/filter/af_format.c6
-rw-r--r--audio/filter/af_hrtf.c6
-rw-r--r--audio/filter/af_karaoke.c6
-rw-r--r--audio/filter/af_ladspa.c10
-rw-r--r--audio/filter/af_lavcac3enc.c10
-rw-r--r--audio/filter/af_lavfi.c10
-rw-r--r--audio/filter/af_lavrresample.c8
-rw-r--r--audio/filter/af_pan.c6
-rw-r--r--audio/filter/af_scaletempo.c8
-rw-r--r--audio/filter/af_sinesuppress.c10
-rw-r--r--audio/filter/af_sub.c6
-rw-r--r--audio/filter/af_surround.c6
-rw-r--r--audio/filter/af_sweep.c6
-rw-r--r--audio/filter/af_volume.c6
28 files changed, 152 insertions, 152 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);
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);