Commit efda73c7 authored by Warren Dukes's avatar Warren Dukes

add replaygain preamp

git-svn-id: https://svn.musicpd.org/mpd/trunk@1873 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent 3edf3315
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#define CONF_COMMENT '#' #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_PATHS 6
#define CONF_NUMBER_OF_REQUIRED 5 #define CONF_NUMBER_OF_REQUIRED 5
#define CONF_NUMBER_OF_ALLOW_CATS 1 #define CONF_NUMBER_OF_ALLOW_CATS 1
...@@ -129,7 +129,8 @@ char ** readConf(char * file) { ...@@ -129,7 +129,8 @@ char ** readConf(char * file) {
"http_proxy_host", "http_proxy_host",
"http_proxy_port", "http_proxy_port",
"http_proxy_user", "http_proxy_user",
"http_proxy_password" "http_proxy_password",
"replaygain_preamp"
}; };
int conf_absolutePaths[CONF_NUMBER_OF_PATHS] = { int conf_absolutePaths[CONF_NUMBER_OF_PATHS] = {
......
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#define CONF_HTTP_PROXY_PORT 30 #define CONF_HTTP_PROXY_PORT 30
#define CONF_HTTP_PROXY_USER 31 #define CONF_HTTP_PROXY_USER 31
#define CONF_HTTP_PROXY_PASSWORD 32 #define CONF_HTTP_PROXY_PASSWORD 32
#define CONF_REPLAYGAIN_PREAMP 33
#define CONF_CAT_CHAR "\n" #define CONF_CAT_CHAR "\n"
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
/* Added 4/14/2004 by AliasMrJones */ /* Added 4/14/2004 by AliasMrJones */
static int replayGainState = REPLAYGAIN_OFF; static int replayGainState = REPLAYGAIN_OFF;
static float replayGainPreamp = 1.0;
void initReplayGainState() { void initReplayGainState() {
if(!getConf()[CONF_REPLAYGAIN]) return; if(!getConf()[CONF_REPLAYGAIN]) return;
...@@ -43,17 +45,38 @@ void initReplayGainState() { ...@@ -43,17 +45,38 @@ void initReplayGainState() {
getConf()[CONF_REPLAYGAIN]); getConf()[CONF_REPLAYGAIN]);
exit(EXIT_FAILURE); 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() { int getReplayGainState() {
return replayGainState; return replayGainState;
} }
float computeReplayGainScale(float gain, float peak){ float computeReplayGainScale(float gain, float peak) {
float scale; float scale;
if(gain == 0.0) return(1); if(gain == 0.0) return(1);
scale = pow(10.0, gain/20.0); scale = pow(10.0, gain/20.0);
scale*= replayGainPreamp;
if(scale > 15.0) scale = 15.0; if(scale > 15.0) scale = 15.0;
if (scale * peak > 1.0) { if (scale * peak > 1.0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment