summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-12-27 19:34:42 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-12-27 19:34:42 +0000
commit0fdaa5ab30c0da6f9005a72e8e35b2c6cba00a49 (patch)
tree1d308edf5b4ea2f233e8dc4a837dae55774d152a /Gui
parentbd6b315f6b18dbb67ce11a4909bda4ef01d0fedd (diff)
downloadmpv-0fdaa5ab30c0da6f9005a72e8e35b2c6cba00a49.tar.bz2
mpv-0fdaa5ab30c0da6f9005a72e8e35b2c6cba00a49.tar.xz
Do not use audio plugins anymore
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14255 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/interface.c73
-rw-r--r--Gui/interface.h2
2 files changed, 65 insertions, 10 deletions
diff --git a/Gui/interface.c b/Gui/interface.c
index 2c959dc926..7f13a1e93e 100644
--- a/Gui/interface.c
+++ b/Gui/interface.c
@@ -27,9 +27,11 @@
#include "../input/input.h"
#include "../libao2/audio_out.h"
#include "../mixer.h"
-#include "../libao2/audio_plugin.h"
+#include "../libaf/af.h"
#include "../libao2/eq.h"
+extern af_cfg_t af_cfg;
+
#ifdef USE_ICONV
#include <iconv.h>
#endif
@@ -106,6 +108,9 @@ void gset( char ** str,char * what )
else gstrcat( str,what );
}
+/**
+ * \brief this actually creates a new list containing only one element...
+ */
void gaddlist( char *** list,char * entry )
{
int i;
@@ -121,6 +126,32 @@ void gaddlist( char *** list,char * entry )
(*list)[1]=NULL;
}
+/**
+ * \brief this replaces a string starting with search by replace.
+ * If not found, replace is appended.
+ */
+void greplace(char ***list, char *search, char *replace)
+{
+ int i = 0;
+ int len = (search) ? strlen(search) : 0;
+
+ if (*list) {
+ for (i = 0; (*list)[i]; i++) {
+ if (search && (strncmp((*list)[i], search, len) == 0)) {
+ free((*list)[i]);
+ (*list)[i] = gstrdup(replace);
+ return;
+ }
+ }
+ *list = realloc(*list, (i + 2) * sizeof(char *));
+ }
+ else
+ *list = malloc(2 * sizeof(char *));
+
+ (*list)[i] = gstrdup(replace);
+ (*list)[i + 1] = NULL;
+}
+
#ifdef USE_ICONV
char * gconvert_uri_to_filename( char * str )
{
@@ -543,6 +574,9 @@ int guiGetEvent( int type,char * arg )
case guiSetDemuxer:
guiIntfStruct.demuxer=(void *)arg;
break;
+ case guiSetAfilter:
+ guiIntfStruct.afilter=(void *)arg;
+ break;
case guiSetShVideo:
{
if ( !appMPlayer.subWindow.isFullScreen )
@@ -786,12 +820,17 @@ int guiGetEvent( int type,char * arg )
// --- audio opts
// if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; }
- if ( gtkAONorm ) gset( &ao_plugin_cfg.plugin_list,"volnorm" );
- if ( gtkEnableAudioEqualizer ) gset( &ao_plugin_cfg.plugin_list,"eq" );
+ if (gtkAONorm)
+ greplace(&af_cfg.list, "volnorm", "volnorm");
+ if (gtkEnableAudioEqualizer)
+ greplace(&af_cfg.list, "equalizer", "equalizer");
if ( gtkAOExtraStereo )
{
- gset( &ao_plugin_cfg.plugin_list,"extrastereo" );
- ao_plugin_cfg.pl_extrastereo_mul=gtkAOExtraStereoMul;
+ char *name = malloc(12 + 20 + 1);
+ snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul);
+ name[12 + 20] = 0;
+ greplace(&af_cfg.list, "extrastereo", name);
+ free(name);
}
#ifdef USE_OSS_AUDIO
if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"oss",3 ) )
@@ -1078,7 +1117,9 @@ void * gtkSet( int cmd,float fparam, void * vparam )
return NULL;
case gtkSetExtraStereo:
gtkAOExtraStereoMul=fparam;
- audio_plugin_extrastereo.control( AOCONTROL_PLUGIN_ES_SET,(void *)&gtkAOExtraStereoMul );
+ if (guiIntfStruct.afilter)
+ af_control_any_rev(guiIntfStruct.afilter,
+ AF_CONTROL_ES_MUL | AF_CONTROL_SET, &gtkAOExtraStereoMul);
return NULL;
case gtkSetPanscan:
{
@@ -1106,20 +1147,32 @@ void * gtkSet( int cmd,float fparam, void * vparam )
if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"saturation",(int)fparam );
return NULL;
case gtkSetEqualizer:
+ {
+ af_control_ext_t tmp;
if ( eq )
{
gtkEquChannels[eq->channel][eq->band]=eq->gain;
- audio_plugin_eq.control( AOCONTROL_PLUGIN_EQ_SET_GAIN,(void *)eq );
+ tmp.ch = eq->channel;
+ tmp.arg = gtkEquChannels[eq->channel];
+ if (guiIntfStruct.afilter)
+ af_control_any_rev(guiIntfStruct.afilter,
+ AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
}
else
{
- int i,j; equalizer_t tmp; tmp.gain=0.0f;
+ int i;
memset( gtkEquChannels,0,sizeof( gtkEquChannels ) );
+ if (guiIntfStruct.afilter)
for ( i=0;i<6;i++ )
- for ( j=0;j<10;j++ )
- { tmp.channel=i; tmp.band=j; audio_plugin_eq.control( AOCONTROL_PLUGIN_EQ_SET_GAIN,(void *)&tmp ); }
+ {
+ tmp.ch = i;
+ tmp.arg = gtkEquChannels[i];
+ af_control_any_rev(guiIntfStruct.afilter,
+ AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
+ }
}
return NULL;
+ }
}
return NULL;
}
diff --git a/Gui/interface.h b/Gui/interface.h
index 4ef00d4c26..d9410c90cd 100644
--- a/Gui/interface.h
+++ b/Gui/interface.h
@@ -59,6 +59,7 @@ typedef struct
guiUnknownErrorStruct error;
void * sh_video;
+ void * afilter;
void * demuxer;
void * event_struct;
@@ -130,6 +131,7 @@ extern guiInterface_t guiIntfStruct;
#define guiSetFileFormat 14
#define guiSetDemuxer 15
#define guiSetParameters 16
+#define guiSetAfilter 17
#define guiSetStop 0
#define guiSetPlay 1