[MPlayer-cvslog] CVS: main/libaf af_karaoke.c, NONE, 1.1 Makefile, 1.30, 1.31 af.c, 1.54, 1.55

Reynaldo H. Verdejo CVS syncmail at mplayerhq.hu
Sat May 13 10:46:33 CEST 2006


CVS change done by Reynaldo H. Verdejo CVS

Update of /cvsroot/mplayer/main/libaf
In directory mail:/var2/tmp/cvs-serv18775/libaf

Modified Files:
	Makefile af.c 
Added Files:
	af_karaoke.c 
Log Message:
New karaoke af

--- NEW FILE ---
/*
    (c)2006 MPlayer / Reynaldo H. Verdejo Pinochet 
	Based on code by Alex Beregszaszi for his 'center' filter
	
    License: GPL
    
    Simple voice removal filter
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

#include "af.h"

// Data for specific instances of this filter

// Initialization and runtime control
static int control(struct af_instance_s* af, int cmd, void* arg)
{
	switch(cmd){
		case AF_CONTROL_REINIT:
		af->data->rate	= ((af_data_t*)arg)->rate;
		af->data->nch	= ((af_data_t*)arg)->nch;
		af->data->format= AF_FORMAT_FLOAT_NE;
		af->data->bps	= 4;
		return af_test_output(af,(af_data_t*)arg);
	}
	return AF_UNKNOWN;
}

// Deallocate memory 
static void uninit(struct af_instance_s* af)
{
	if(af->data)
		free(af->data);
}

// Filter data through filter
static af_data_t* play(struct af_instance_s* af, af_data_t* data)
{
	af_data_t*	c	= data;		 // Current working data
	float*		a	= c->audio;	 // Audio data
	int			len	= c->len/4;	 // Number of samples in current audio block 
	int			nch	= c->nch;	 // Number of channels
	register int  i;

	/*	  
		FIXME1 add a low band pass filter to avoid supressing 
		centered bass/drums
		FIXME2 better calculated* atenuation factor
	*/
	
	for(i=0;i<len;i+=nch)
	{
		a[i] = (a[i] - a[i+1]) * 0.7;
		a[i+1]=a[i];
	}
	
	return c;
}

// Allocate memory and set function pointers
static int open(af_instance_t* af){
	af->control	= control;
	af->uninit	= uninit;
	af->play	= play;
	af->mul.n	= 1;
	af->mul.d	= 1;
	af->data	= calloc(1,sizeof(af_data_t));

	if(af->data == NULL)
		return AF_ERROR;
	
	return AF_OK;
}

// Description of this filter
af_info_t af_info_karaoke = {
	"Simple karaoke/voice-removal audio filter",
	"karaoke",
	"Reynaldo H. Verdejo Pinochet",
	"",
	AF_FLAGS_NOT_REENTRANT,
	open
};

Index: Makefile
===================================================================
RCS file: /cvsroot/mplayer/main/libaf/Makefile,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- Makefile	13 Apr 2006 10:36:17 -0000	1.30
+++ Makefile	13 May 2006 08:46:31 -0000	1.31
@@ -14,6 +14,7 @@
      af_format.c \
      af_gate.c \
      af_hrtf.c \
+     af_karaoke.c \
      af_pan.c \
      af_resample.c \
      af_sinesupress.c \

Index: af.c
===================================================================
RCS file: /cvsroot/mplayer/main/libaf/af.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- af.c	24 Apr 2006 07:20:33 -0000	1.54
+++ af.c	13 May 2006 08:46:31 -0000	1.55
@@ -30,6 +30,7 @@
 extern af_info_t af_info_ladspa;
 extern af_info_t af_info_center;
 extern af_info_t af_info_sinesupress;
+extern af_info_t af_info_karaoke;
 
 static af_info_t* filter_list[]={ 
    &af_info_dummy,
@@ -59,6 +60,7 @@
 #endif
    &af_info_center,
    &af_info_sinesupress,
+   &af_info_karaoke,
    NULL 
 };
 




More information about the MPlayer-cvslog mailing list