Blame src/equalizer.c

Packit c32a2d
/*
Packit c32a2d
	equalizer: code for loading equalizer settings
Packit c32a2d
Packit c32a2d
	copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
Packit c32a2d
	see COPYING and AUTHORS files in distribution or http://mpg123.org
Packit c32a2d
	initially written by Michael Hipp (exported to this file by Thomas Orgis)
Packit c32a2d
*/
Packit c32a2d
Packit c32a2d
#include "mpg123app.h"
Packit c32a2d
Packit c32a2d
/* Load the settings from the path in the global variable equalfile.
Packit c32a2d
   If there is no file, restore equalizer defaults. 
Packit c32a2d
   If NO_EQUALIZER is defined, it does nothing else that return zero */
Packit c32a2d
int load_equalizer(mpg123_handle *mh)
Packit c32a2d
{
Packit c32a2d
#ifndef NO_EQUALIZER
Packit c32a2d
	if(equalfile != NULL)
Packit c32a2d
	{ /* tst; ThOr: not TRUE or FALSE: allocated or not... */
Packit c32a2d
		FILE *fe;
Packit c32a2d
		int i;
Packit c32a2d
		fe = fopen(equalfile,"r");
Packit c32a2d
		if(fe) {
Packit c32a2d
			char line[256];
Packit c32a2d
			for(i=0;i<32;i++) {
Packit c32a2d
				float e0 = 1.0;
Packit c32a2d
				float e1 = 1.0; /* %f -> float! */
Packit c32a2d
				do /* ignore comments */
Packit c32a2d
				{
Packit c32a2d
					line[0]=0;
Packit c32a2d
					fgets(line,255,fe);
Packit c32a2d
				}
Packit c32a2d
				while(line[0]=='#');
Packit c32a2d
				/* Hm, why not use fscanf? Comments... */
Packit c32a2d
				sscanf(line,"%f %f",&e0,&e1;;
Packit c32a2d
				/* If scanning failed, we have default 1.0 value. */
Packit c32a2d
				mpg123_eq(mh, MPG123_LEFT,  i, e0);
Packit c32a2d
				mpg123_eq(mh, MPG123_RIGHT, i, e1);
Packit c32a2d
			}
Packit c32a2d
			fclose(fe);
Packit c32a2d
		}
Packit c32a2d
		else
Packit c32a2d
		{
Packit c32a2d
			fprintf(stderr,"Can't open equalizer file '%s'\n",equalfile);
Packit c32a2d
			return -1;
Packit c32a2d
		}
Packit c32a2d
	}
Packit c32a2d
	else mpg123_reset_eq(mh);
Packit c32a2d
#endif
Packit c32a2d
	return 0;
Packit c32a2d
}