From e321ae77747d56a7c6d28795073d97640579776d Mon Sep 17 00:00:00 2001 From: Scott Wheeler Date: Wed, 20 Jul 2005 22:23:34 +0000 Subject: [PATCH] Fix from Felix Berger to get RVA2 frames a little closer to working. The more complicated fix for #107025 will follow shortly. BUG:95545 git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@437091 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- mpeg/id3v2/frames/relativevolumeframe.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mpeg/id3v2/frames/relativevolumeframe.cpp b/mpeg/id3v2/frames/relativevolumeframe.cpp index 171ba91d..3042a2da 100644 --- a/mpeg/id3v2/frames/relativevolumeframe.cpp +++ b/mpeg/id3v2/frames/relativevolumeframe.cpp @@ -19,6 +19,8 @@ * USA * ***************************************************************************/ +#include + #include "relativevolumeframe.h" using namespace TagLib; @@ -101,9 +103,17 @@ void RelativeVolumeFrame::setPeakVolume(const PeakVolume &peak) void RelativeVolumeFrame::parseFields(const ByteVector &data) { + if(data.size() < 6) { + debug("A relative volume frame must contain at least 6 bytes."); + return; + } + int pos = data.find(textDelimiter(String::Latin1)); d->identification = String(data.mid(0, pos), String::Latin1); + d->channelType = ChannelType(data[pos]); + pos += 1; + d->volumeAdjustment = data.mid(pos, 2).toShort(); pos += 2; @@ -119,6 +129,7 @@ ByteVector RelativeVolumeFrame::renderFields() const data.append(d->identification.data(String::Latin1)); data.append(textDelimiter(String::Latin1)); + data.append(char(d->channelType)); data.append(ByteVector::fromShort(d->volumeAdjustment)); data.append(char(d->peakVolume.bitsRepresentingPeak)); data.append(d->peakVolume.peakVolume);