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:
Mark Arigo 2006-07-21 20:15:01 +00:00
parent aaee4fb4a0
commit b50e8935e1
2 changed files with 15 additions and 14 deletions

View File

@ -322,9 +322,9 @@ static int parseuser( struct mp3entry* entry, char* tag, int bufferpos )
int desc_len = strlen(tag);
int value_len = 0;
/* Only parse TXXX replaygain tags if tag version < 2.4 */
if (entry->id3version < ID3_VER_2_4 &&
(tag - entry->id3v2buf + desc_len + 2) < bufferpos) {
/* Note: for ID3v2.4, parse_replaygain will not overwrite replaygain
values already parsed from RVA2 tags */
if ((tag - entry->id3v2buf + desc_len + 2) < bufferpos) {
/* At least part of the value was read, so we can safely try to
* parse it
*/

View File

@ -358,24 +358,25 @@ long parse_replaygain(const char* key, const char* value,
{
char **p = NULL;
if ((strcasecmp(key, "replaygain_track_gain") == 0)
|| ((strcasecmp(key, "rg_radio") == 0) && !entry->track_gain))
if (((strcasecmp(key, "replaygain_track_gain") == 0)
|| (strcasecmp(key, "rg_radio") == 0)) && !entry->track_gain)
{
entry->track_gain = get_replaygain(value);
p = &(entry->track_gain_string);
}
else if ((strcasecmp(key, "replaygain_album_gain") == 0)
|| ((strcasecmp(key, "rg_audiophile") == 0) && !entry->album_gain))
else if (((strcasecmp(key, "replaygain_album_gain") == 0)
|| (strcasecmp(key, "rg_audiophile") == 0)) && !entry->album_gain)
{
entry->album_gain = get_replaygain(value);
p = &(entry->album_gain_string);
}
else if ((strcasecmp(key, "replaygain_track_peak") == 0)
|| ((strcasecmp(key, "rg_peak") == 0) && !entry->track_peak))
else if (((strcasecmp(key, "replaygain_track_peak") == 0)
|| (strcasecmp(key, "rg_peak") == 0)) && !entry->track_peak)
{
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);
}
@ -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,
struct mp3entry* entry, char* buffer, int length)
{
if ((strcasecmp(key, "track") == 0) && *value == MASTER_CHANNEL
&& !entry->track_gain && !entry->track_peak)
/* Values will be overwritten if they already exist. This gives priority to
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),
&(entry->track_gain_string), buffer, length);
}
else if ((strcasecmp(key, "album") == 0) && *value == MASTER_CHANNEL
&& !entry->album_gain && !entry->album_peak)
else if ((strcasecmp(key, "album") == 0) && *value == MASTER_CHANNEL)
{
return get_rva_values(value + 1, &(entry->album_gain), &(entry->album_peak),
&(entry->album_gain_string), buffer, length);