aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Dieter <jdieter@lesbg.com>2012-04-23 21:59:20 +0200
committerMax Kellermann <max@duempel.org>2012-04-23 23:29:56 +0200
commit57d89131e93eb7d062523dff63247e605ae4894b (patch)
treeb8ed51d2b1f4fb00e2dc976097ce9e11dfb6e3a1
parent7c6d1896a46ef139a76751cf0edc6576dd7c44e5 (diff)
downloadmpd-57d89131e93eb7d062523dff63247e605ae4894b.tar.gz
mpd-57d89131e93eb7d062523dff63247e605ae4894b.tar.xz
mpd-57d89131e93eb7d062523dff63247e605ae4894b.zip
tag_rva2: parse multiple ID3 "RVA2" tags
-rw-r--r--src/tag_rva2.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/tag_rva2.c b/src/tag_rva2.c
index 776146fc5..9250311b9 100644
--- a/src/tag_rva2.c
+++ b/src/tag_rva2.c
@@ -135,6 +135,16 @@ rva2_apply_frame(struct replay_gain_info *replay_gain_info,
bool
tag_rva2_parse(struct id3_tag *tag, struct replay_gain_info *replay_gain_info)
{
- struct id3_frame const *frame = id3_tag_findframe(tag, "RVA2", 0);
- return frame != NULL && rva2_apply_frame(replay_gain_info, frame);
+ bool found = false;
+
+ /* Loop through all RVA2 frames as some programs (e.g. mp3gain) store
+ track and album gain in separate tags */
+ const struct id3_frame *frame;
+ for (unsigned i = 0;
+ (frame = id3_tag_findframe(tag, "RVA2", i)) != NULL;
+ ++i)
+ if (rva2_apply_frame(replay_gain_info, frame))
+ found = true;
+
+ return found;
}