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_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] = {

View File

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

View File

@ -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,17 +45,38 @@ 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() {
return replayGainState;
}
float computeReplayGainScale(float gain, float peak){
float computeReplayGainScale(float gain, float peak) {
float scale;
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) {