forked from len0rd/rockbox
Re-enable parsing replaygain from ID3v2.4 TXXX fields since that's the default for foobar2000 0.9, however, give the RVA2 field priority
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10277 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
aaee4fb4a0
commit
b50e8935e1
2 changed files with 15 additions and 14 deletions
|
@ -322,9 +322,9 @@ static int parseuser( struct mp3entry* entry, char* tag, int bufferpos )
|
||||||
int desc_len = strlen(tag);
|
int desc_len = strlen(tag);
|
||||||
int value_len = 0;
|
int value_len = 0;
|
||||||
|
|
||||||
/* Only parse TXXX replaygain tags if tag version < 2.4 */
|
/* Note: for ID3v2.4, parse_replaygain will not overwrite replaygain
|
||||||
if (entry->id3version < ID3_VER_2_4 &&
|
values already parsed from RVA2 tags */
|
||||||
(tag - entry->id3v2buf + desc_len + 2) < bufferpos) {
|
if ((tag - entry->id3v2buf + desc_len + 2) < bufferpos) {
|
||||||
/* At least part of the value was read, so we can safely try to
|
/* At least part of the value was read, so we can safely try to
|
||||||
* parse it
|
* parse it
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -358,24 +358,25 @@ long parse_replaygain(const char* key, const char* value,
|
||||||
{
|
{
|
||||||
char **p = NULL;
|
char **p = NULL;
|
||||||
|
|
||||||
if ((strcasecmp(key, "replaygain_track_gain") == 0)
|
if (((strcasecmp(key, "replaygain_track_gain") == 0)
|
||||||
|| ((strcasecmp(key, "rg_radio") == 0) && !entry->track_gain))
|
|| (strcasecmp(key, "rg_radio") == 0)) && !entry->track_gain)
|
||||||
{
|
{
|
||||||
entry->track_gain = get_replaygain(value);
|
entry->track_gain = get_replaygain(value);
|
||||||
p = &(entry->track_gain_string);
|
p = &(entry->track_gain_string);
|
||||||
}
|
}
|
||||||
else if ((strcasecmp(key, "replaygain_album_gain") == 0)
|
else if (((strcasecmp(key, "replaygain_album_gain") == 0)
|
||||||
|| ((strcasecmp(key, "rg_audiophile") == 0) && !entry->album_gain))
|
|| (strcasecmp(key, "rg_audiophile") == 0)) && !entry->album_gain)
|
||||||
{
|
{
|
||||||
entry->album_gain = get_replaygain(value);
|
entry->album_gain = get_replaygain(value);
|
||||||
p = &(entry->album_gain_string);
|
p = &(entry->album_gain_string);
|
||||||
}
|
}
|
||||||
else if ((strcasecmp(key, "replaygain_track_peak") == 0)
|
else if (((strcasecmp(key, "replaygain_track_peak") == 0)
|
||||||
|| ((strcasecmp(key, "rg_peak") == 0) && !entry->track_peak))
|
|| (strcasecmp(key, "rg_peak") == 0)) && !entry->track_peak)
|
||||||
{
|
{
|
||||||
entry->track_peak = get_replaypeak(value);
|
entry->track_peak = get_replaypeak(value);
|
||||||
}
|
}
|
||||||
else if (strcasecmp(key, "replaygain_album_peak") == 0)
|
else if ((strcasecmp(key, "replaygain_album_peak") == 0)
|
||||||
|
&& !entry->album_peak)
|
||||||
{
|
{
|
||||||
entry->album_peak = get_replaypeak(value);
|
entry->album_peak = get_replaypeak(value);
|
||||||
}
|
}
|
||||||
|
@ -455,14 +456,14 @@ static long get_rva_values(const char *frame, long *gain, long *peak,
|
||||||
long parse_replaygain_rva(const char* key, const char* value,
|
long parse_replaygain_rva(const char* key, const char* value,
|
||||||
struct mp3entry* entry, char* buffer, int length)
|
struct mp3entry* entry, char* buffer, int length)
|
||||||
{
|
{
|
||||||
if ((strcasecmp(key, "track") == 0) && *value == MASTER_CHANNEL
|
/* Values will be overwritten if they already exist. This gives priority to
|
||||||
&& !entry->track_gain && !entry->track_peak)
|
replaygain in RVA2 fields over TXXX fields for ID3v2.4. */
|
||||||
|
if ((strcasecmp(key, "track") == 0) && *value == MASTER_CHANNEL)
|
||||||
{
|
{
|
||||||
return get_rva_values(value + 1, &(entry->track_gain), &(entry->track_peak),
|
return get_rva_values(value + 1, &(entry->track_gain), &(entry->track_peak),
|
||||||
&(entry->track_gain_string), buffer, length);
|
&(entry->track_gain_string), buffer, length);
|
||||||
}
|
}
|
||||||
else if ((strcasecmp(key, "album") == 0) && *value == MASTER_CHANNEL
|
else if ((strcasecmp(key, "album") == 0) && *value == MASTER_CHANNEL)
|
||||||
&& !entry->album_gain && !entry->album_peak)
|
|
||||||
{
|
{
|
||||||
return get_rva_values(value + 1, &(entry->album_gain), &(entry->album_peak),
|
return get_rva_values(value + 1, &(entry->album_gain), &(entry->album_peak),
|
||||||
&(entry->album_gain_string), buffer, length);
|
&(entry->album_gain_string), buffer, length);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue