add replaygain preamp

git-svn-id: https://svn.musicpd.org/mpd/trunk@1873 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
Warren Dukes 2004-07-17 14:54:22 +00:00
parent 3edf331543
commit efda73c74d
3 changed files with 28 additions and 3 deletions

View File

@ -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) {
"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] = {

View File

@ -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"

View File

@ -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,6 +45,26 @@ 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() {
@ -54,6 +76,7 @@ float computeReplayGainScale(float gain, float peak){
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) {