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
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user