summaryrefslogtreecommitdiffstats
path: root/audio/filter/af_karaoke.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/filter/af_karaoke.c')
-rw-r--r--audio/filter/af_karaoke.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/audio/filter/af_karaoke.c b/audio/filter/af_karaoke.c
index 3187a41f2f..f69b936811 100644
--- a/audio/filter/af_karaoke.c
+++ b/audio/filter/af_karaoke.c
@@ -41,10 +41,15 @@ static int control(struct af_instance* af, int cmd, void* arg)
return AF_UNKNOWN;
}
-// Filter data through filter
-static int play(struct af_instance* af, struct mp_audio* data, int flags)
+static int filter_frame(struct af_instance *af, struct mp_audio *c)
{
- struct mp_audio* c = data; // Current working data
+ if (!c)
+ return 0;
+ if (af_make_writeable(af, c) < 0) {
+ talloc_free(c);
+ return 0;
+ }
+
float* a = c->planes[0]; // Audio data
int nch = c->nch; // Number of channels
int len = c->samples*nch; // Number of samples in current audio block
@@ -62,13 +67,14 @@ static int play(struct af_instance* af, struct mp_audio* data, int flags)
a[i+1]=a[i];
}
+ af_add_output_frame(af, c);
return 0;
}
// Allocate memory and set function pointers
static int af_open(struct af_instance* af){
af->control = control;
- af->filter = play;
+ af->filter_frame = filter_frame;
return AF_OK;
}