summaryrefslogtreecommitdiffstats
path: root/lib/rbcodec/metadata/replaygain.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/metadata/replaygain.c')
-rw-r--r--lib/rbcodec/metadata/replaygain.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/lib/rbcodec/metadata/replaygain.c b/lib/rbcodec/metadata/replaygain.c
index 7aa77cfedd..d76a1113ea 100644
--- a/lib/rbcodec/metadata/replaygain.c
+++ b/lib/rbcodec/metadata/replaygain.c
@@ -26,12 +26,13 @@
#include <stdlib.h>
#include <inttypes.h>
#include "platform.h"
-#include "strlcpy.h"
+#include "string-extra.h"
#include "strcasecmp.h"
#include "metadata.h"
#include "debug.h"
#include "replaygain.h"
#include "fixedpoint.h"
+#include "metadata_common.h"
#define FP_BITS (12)
#define FP_ONE (1 << FP_BITS)
@@ -167,29 +168,29 @@ long get_replaygain_int(long int_gain)
void parse_replaygain(const char* key, const char* value,
struct mp3entry* entry)
{
- if (((strcasecmp(key, "replaygain_track_gain") == 0) ||
- (strcasecmp(key, "rg_radio") == 0)) &&
- !entry->track_gain)
- {
+ static const char *rg_options[] = {"replaygain_track_gain", "rg_radio",
+ "replaygain_album_gain", "rg_audiophile",
+ "replaygain_track_peak", "rg_peak",
+ "replaygain_album_peak", NULL};
+
+ int rg_op = string_option(key, rg_options, true);
+
+ if ((rg_op == 0 || rg_op == 1) && !entry->track_gain)
+ { /*replaygain_track_gain||rg_radio*/
entry->track_level = get_replaygain(value);
entry->track_gain = convert_gain(entry->track_level);
}
- else if (((strcasecmp(key, "replaygain_album_gain") == 0) ||
- (strcasecmp(key, "rg_audiophile") == 0)) &&
- !entry->album_gain)
- {
+ else if ((rg_op == 2 || rg_op == 3) && !entry->album_gain)
+ { /*replaygain_album_gain||rg_audiophile*/
entry->album_level = get_replaygain(value);
entry->album_gain = convert_gain(entry->album_level);
}
- else if (((strcasecmp(key, "replaygain_track_peak") == 0) ||
- (strcasecmp(key, "rg_peak") == 0)) &&
- !entry->track_peak)
- {
+ else if ((rg_op == 4 || rg_op == 5) && !entry->track_peak)
+ { /*replaygain_track_peak||rg_peak*/
entry->track_peak = get_replaypeak(value);
}
- else if ((strcasecmp(key, "replaygain_album_peak") == 0) &&
- !entry->album_peak)
- {
+ else if ((rg_op == 6) && !entry->album_peak)
+ { /*replaygain_album_peak*/
entry->album_peak = get_replaypeak(value);
}
}