# HG changeset patch # User arpi # Date 1023409832 0 # Node ID 76baa05a63abf26848270c55e149aeee03e99883 # Parent d14ae909f8555b33697b4cb5a09b22f31269c8a9 disables those plugins that can't handle the audio format. it also fixes a bug(and i'm pretty sure this _is_ a bug) where, when playing multiple files, after the first file only the first audio plugin is used. patch by Christian Ohm diff -r d14ae909f855 -r 76baa05a63ab libao2/ao_plugin.c --- a/libao2/ao_plugin.c Thu Jun 06 22:58:18 2002 +0000 +++ b/libao2/ao_plugin.c Fri Jun 07 00:30:32 2002 +0000 @@ -116,13 +116,21 @@ // open & setup audio device and plugins // return: 1=success 0=fail static int init(int rate,int channels,int format,int flags){ + int use_plugin[NPL]; + int x,npl,unused=0; int ok=1; + char *config; // Create list of plugins from cfg option int i=0; if(ao_plugin_cfg.plugin_list){ - if(!add_plugin(i,ao_plugin_cfg.plugin_list)) + config = malloc(strlen(ao_plugin_cfg.plugin_list)); + if(!config) return 0; + if(!strcpy(config, ao_plugin_cfg.plugin_list) || !add_plugin(i,config)){ + free(config); return 0; + } + free(config); } /* Set input parameters and itterate through plugins each plugin @@ -139,11 +147,21 @@ ao_plugin_data.sz_fix=0; ao_plugin_data.delay_mult=1; ao_plugin_data.delay_fix=0; - i=0; - while(plugin(i)&&ok) - ok=plugin(i++)->init(); - - if(!ok) return 0; + + for(i=0;iinit(); + if(!use_plugin[i]) plugin(i)->uninit(); + } + npl=i; + for(i=0;i