summaryrefslogtreecommitdiff
path: root/lib/rbcodec/metadata/replaygain.c
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2022-03-13 10:55:47 -0400
committerWilliam Wilgus <wilgus.william@gmail.com>2022-03-13 10:55:47 -0400
commit77e4dd81f5abedda802b8b6e895849995907b484 (patch)
tree750656ede0dac091aa1512ccd81660ec40ddbb58 /lib/rbcodec/metadata/replaygain.c
parenteb86ee296a40249c33d1969087f98108735beaa9 (diff)
downloadrockbox-77e4dd81f5abedda802b8b6e895849995907b484.tar.gz
rockbox-77e4dd81f5abedda802b8b6e895849995907b484.zip
option_string clean-up and consolidate with metadata_common
Change-Id: I2649f6af37bd871fb8f181ae2f716ff0bcf1f65c
Diffstat (limited to 'lib/rbcodec/metadata/replaygain.c')
-rw-r--r--lib/rbcodec/metadata/replaygain.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/lib/rbcodec/metadata/replaygain.c b/lib/rbcodec/metadata/replaygain.c
index 7aa77cfedd..eb98bbc342 100644
--- a/lib/rbcodec/metadata/replaygain.c
+++ b/lib/rbcodec/metadata/replaygain.c
@@ -32,6 +32,7 @@
32#include "debug.h" 32#include "debug.h"
33#include "replaygain.h" 33#include "replaygain.h"
34#include "fixedpoint.h" 34#include "fixedpoint.h"
35#include "metadata_common.h"
35 36
36#define FP_BITS (12) 37#define FP_BITS (12)
37#define FP_ONE (1 << FP_BITS) 38#define FP_ONE (1 << FP_BITS)
@@ -167,29 +168,29 @@ long get_replaygain_int(long int_gain)
167void parse_replaygain(const char* key, const char* value, 168void parse_replaygain(const char* key, const char* value,
168 struct mp3entry* entry) 169 struct mp3entry* entry)
169{ 170{
170 if (((strcasecmp(key, "replaygain_track_gain") == 0) || 171 static const char *rg_options[] = {"replaygain_track_gain", "rg_radio",
171 (strcasecmp(key, "rg_radio") == 0)) && 172 "replaygain_album_gain", "rg_audiophile",
172 !entry->track_gain) 173 "replaygain_track_peak", "rg_peak",
173 { 174 "replaygain_album_peak", NULL};
175
176 int rg_op = string_option(key, rg_options, true);
177
178 if ((rg_op == 0 || rg_op == 1) && !entry->track_gain)
179 { /*replaygain_track_gain||rg_radio*/
174 entry->track_level = get_replaygain(value); 180 entry->track_level = get_replaygain(value);
175 entry->track_gain = convert_gain(entry->track_level); 181 entry->track_gain = convert_gain(entry->track_level);
176 } 182 }
177 else if (((strcasecmp(key, "replaygain_album_gain") == 0) || 183 else if ((rg_op == 2 || rg_op == 3) && !entry->album_gain)
178 (strcasecmp(key, "rg_audiophile") == 0)) && 184 { /*replaygain_album_gain||rg_audiophile*/
179 !entry->album_gain)
180 {
181 entry->album_level = get_replaygain(value); 185 entry->album_level = get_replaygain(value);
182 entry->album_gain = convert_gain(entry->album_level); 186 entry->album_gain = convert_gain(entry->album_level);
183 } 187 }
184 else if (((strcasecmp(key, "replaygain_track_peak") == 0) || 188 else if ((rg_op == 4 || rg_op == 5) && !entry->track_peak)
185 (strcasecmp(key, "rg_peak") == 0)) && 189 { /*replaygain_track_peak||rg_peak*/
186 !entry->track_peak)
187 {
188 entry->track_peak = get_replaypeak(value); 190 entry->track_peak = get_replaypeak(value);
189 } 191 }
190 else if ((strcasecmp(key, "replaygain_album_peak") == 0) && 192 else if ((rg_op == 6) && !entry->album_peak)
191 !entry->album_peak) 193 { /*replaygain_album_peak*/
192 {
193 entry->album_peak = get_replaypeak(value); 194 entry->album_peak = get_replaypeak(value);
194 } 195 }
195} 196}