add replaygain preamp
git-svn-id: https://svn.musicpd.org/mpd/trunk@1873 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
		| @@ -37,7 +37,7 @@ | ||||
|  | ||||
| #define CONF_COMMENT	'#' | ||||
|  | ||||
| #define CONF_NUMBER_OF_PARAMS		33 | ||||
| #define CONF_NUMBER_OF_PARAMS		34 | ||||
| #define CONF_NUMBER_OF_PATHS		6 | ||||
| #define CONF_NUMBER_OF_REQUIRED		5 | ||||
| #define CONF_NUMBER_OF_ALLOW_CATS	1 | ||||
| @@ -129,7 +129,8 @@ char ** readConf(char * file) { | ||||
|                 "http_proxy_host", | ||||
|                 "http_proxy_port", | ||||
| 		"http_proxy_user", | ||||
| 		"http_proxy_password" | ||||
| 		"http_proxy_password", | ||||
| 		"replaygain_preamp" | ||||
| 	}; | ||||
|  | ||||
| 	int conf_absolutePaths[CONF_NUMBER_OF_PATHS] = { | ||||
|   | ||||
| @@ -54,6 +54,7 @@ | ||||
| #define CONF_HTTP_PROXY_PORT                    30 | ||||
| #define CONF_HTTP_PROXY_USER			31 | ||||
| #define CONF_HTTP_PROXY_PASSWORD		32 | ||||
| #define CONF_REPLAYGAIN_PREAMP			33 | ||||
|  | ||||
| #define CONF_CAT_CHAR				"\n" | ||||
|  | ||||
|   | ||||
| @@ -29,6 +29,8 @@ | ||||
| /* Added 4/14/2004 by AliasMrJones */ | ||||
| static int replayGainState = REPLAYGAIN_OFF; | ||||
|  | ||||
| static float replayGainPreamp = 1.0; | ||||
|  | ||||
| void initReplayGainState() { | ||||
| 	if(!getConf()[CONF_REPLAYGAIN]) return; | ||||
|  | ||||
| @@ -43,6 +45,26 @@ void initReplayGainState() { | ||||
| 				getConf()[CONF_REPLAYGAIN]); | ||||
| 		exit(EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	if(getConf()[CONF_REPLAYGAIN_PREAMP]) { | ||||
| 		char * test; | ||||
| 		float f = strtod(getConf()[CONF_REPLAYGAIN_PREAMP], &test); | ||||
|  | ||||
| 		if(*test != '\0') { | ||||
| 			ERROR("Replaygain preamp \"%s\" is not a number\n", | ||||
| 					getConf()[CONF_REPLAYGAIN_PREAMP]); | ||||
| 			exit(EXIT_FAILURE); | ||||
| 		} | ||||
|  | ||||
| 		if(f < -15 || f > 15) { | ||||
| 			ERROR("Replaygain preamp \"%s\" is not between -15 and" | ||||
| 					"15\n",  | ||||
| 					getConf()[CONF_REPLAYGAIN_PREAMP]); | ||||
| 			exit(EXIT_FAILURE); | ||||
| 		} | ||||
|  | ||||
| 		replayGainPreamp = pow(10, f/20.0); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| int getReplayGainState() { | ||||
| @@ -54,6 +76,7 @@ float computeReplayGainScale(float gain, float peak){ | ||||
|  | ||||
| 	if(gain == 0.0) return(1); | ||||
| 	scale = pow(10.0, gain/20.0); | ||||
| 	scale*= replayGainPreamp; | ||||
| 	if(scale > 15.0) scale = 15.0; | ||||
|  | ||||
| 	if (scale * peak > 1.0) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Warren Dukes
					Warren Dukes