aboutsummaryrefslogtreecommitdiffstats
path: root/src/replayGain.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/replayGain.c')
-rw-r--r--src/replayGain.c130
1 files changed, 68 insertions, 62 deletions
diff --git a/src/replayGain.c b/src/replayGain.c
index 296b321cd..5c0664563 100644
--- a/src/replayGain.c
+++ b/src/replayGain.c
@@ -25,68 +25,71 @@
#include <string.h>
#include <math.h>
#include <stdlib.h>
-
+
/* Added 4/14/2004 by AliasMrJones */
static int replayGainState = REPLAYGAIN_OFF;
static float replayGainPreamp = 1.0;
-void initReplayGainState(void) {
- ConfigParam * param = getConfigParam(CONF_REPLAYGAIN);
+void initReplayGainState(void)
+{
+ ConfigParam *param = getConfigParam(CONF_REPLAYGAIN);
- if(!param) return;
+ if (!param)
+ return;
- if(strcmp(param->value, "track") == 0) {
+ if (strcmp(param->value, "track") == 0) {
replayGainState = REPLAYGAIN_TRACK;
- }
- else if(strcmp(param->value, "album") == 0) {
+ } else if (strcmp(param->value, "album") == 0) {
replayGainState = REPLAYGAIN_ALBUM;
- }
- else {
+ } else {
ERROR("replaygain value \"%s\" at line %i is invalid\n",
- param->value, param->line);
+ param->value, param->line);
exit(EXIT_FAILURE);
}
param = getConfigParam(CONF_REPLAYGAIN_PREAMP);
- if(param) {
- char * test;
+ if (param) {
+ char *test;
float f = strtod(param->value, &test);
- if(*test != '\0') {
+ if (*test != '\0') {
ERROR("Replaygain preamp \"%s\" is not a number at "
- "line %i\n", param->value, param->line);
+ "line %i\n", param->value, param->line);
exit(EXIT_FAILURE);
}
- if(f < -15 || f > 15) {
+ if (f < -15 || f > 15) {
ERROR("Replaygain preamp \"%s\" is not between -15 and"
- "15 at line %i\n",
- param->value, param->line);
+ "15 at line %i\n", param->value, param->line);
exit(EXIT_FAILURE);
}
- replayGainPreamp = pow(10, f/20.0);
+ replayGainPreamp = pow(10, f / 20.0);
}
}
-static float computeReplayGainScale(float gain, float peak) {
+static 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 (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) {
scale = 1.0 / peak;
}
- return(scale);
+ return (scale);
}
-ReplayGainInfo * newReplayGainInfo(void) {
- ReplayGainInfo * ret = malloc(sizeof(ReplayGainInfo));
+ReplayGainInfo *newReplayGainInfo(void)
+{
+ ReplayGainInfo *ret = malloc(sizeof(ReplayGainInfo));
ret->albumGain = 0.0;
ret->albumPeak = 0.0;
@@ -100,62 +103,65 @@ ReplayGainInfo * newReplayGainInfo(void) {
return ret;
}
-void freeReplayGainInfo(ReplayGainInfo * info) {
+void freeReplayGainInfo(ReplayGainInfo * info)
+{
free(info);
}
-void doReplayGain(ReplayGainInfo * info, char * buffer, int bufferSize,
- AudioFormat * format)
+void doReplayGain(ReplayGainInfo * info, char *buffer, int bufferSize,
+ AudioFormat * format)
{
- mpd_sint16 * buffer16;
- mpd_sint8 * buffer8;
+ mpd_sint16 *buffer16;
+ mpd_sint8 *buffer8;
mpd_sint32 temp32;
float scale;
- if(replayGainState == REPLAYGAIN_OFF || !info) return;
+ if (replayGainState == REPLAYGAIN_OFF || !info)
+ return;
- if(info->scale < 0) {
- switch(replayGainState) {
+ if (info->scale < 0) {
+ switch (replayGainState) {
case REPLAYGAIN_TRACK:
info->scale = computeReplayGainScale(info->trackGain,
- info->trackPeak);
+ info->trackPeak);
break;
default:
info->scale = computeReplayGainScale(info->albumGain,
- info->albumPeak);
+ info->albumPeak);
break;
}
}
- if(info->scale <= 1.01 && info->scale >= 0.99) return;
+ if (info->scale <= 1.01 && info->scale >= 0.99)
+ return;
- buffer16 = (mpd_sint16 *)buffer;
- buffer8 = (mpd_sint8 *)buffer;
+ buffer16 = (mpd_sint16 *) buffer;
+ buffer8 = (mpd_sint8 *) buffer;
scale = info->scale;
- switch(format->bits) {
- case 16:
- while(bufferSize > 0){
- temp32 = *buffer16;
- temp32 *= scale;
- *buffer16 = temp32>32767 ? 32767 :
- (temp32<-32768 ? -32768 : temp32);
- buffer16++;
- bufferSize-=2;
- }
- break;
- case 8:
- while(bufferSize>0){
- temp32 = *buffer8;
- temp32 *= scale;
- *buffer8 = temp32>127 ? 127 :
- (temp32<-128 ? -128 : temp32);
- buffer8++;
- bufferSize--;
- }
- break;
- default:
- ERROR("%i bits not supported by doReplaygain!\n", format->bits);
+ switch (format->bits) {
+ case 16:
+ while (bufferSize > 0) {
+ temp32 = *buffer16;
+ temp32 *= scale;
+ *buffer16 = temp32 > 32767 ? 32767 :
+ (temp32 < -32768 ? -32768 : temp32);
+ buffer16++;
+ bufferSize -= 2;
+ }
+ break;
+ case 8:
+ while (bufferSize > 0) {
+ temp32 = *buffer8;
+ temp32 *= scale;
+ *buffer8 = temp32 > 127 ? 127 :
+ (temp32 < -128 ? -128 : temp32);
+ buffer8++;
+ bufferSize--;
+ }
+ break;
+ default:
+ ERROR("%i bits not supported by doReplaygain!\n", format->bits);
}
}