diff options
author | Daniel Faust <hessijames@gmail.com> | 2011-07-07 17:57:22 +0200 |
---|---|---|
committer | Daniel Faust <hessijames@gmail.com> | 2011-07-07 17:57:22 +0200 |
commit | 0ea8e44df79892ccdf27ce1d82c92dff3c678efa (patch) | |
tree | f5dfdf09b3de8a3b984c2516d583e541d9887743 | |
parent | 27332c35ac52295281a4ddcfac48360480750b6e (diff) |
String to number conversion moved to new function - long readNumber(ByteVector vector)
-rw-r--r-- | taglib/mpeg/mpegfile.cpp | 102 | ||||
-rw-r--r-- | taglib/mpeg/mpegfile.h | 5 |
2 files changed, 59 insertions, 48 deletions
diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp index 3bba91da..985370c9 100644 --- a/taglib/mpeg/mpegfile.cpp +++ b/taglib/mpeg/mpegfile.cpp @@ -607,54 +607,8 @@ void MPEG::File::findLyrics3v2() seek(offset, End); ByteVector sizeVector = readBlock(6); - long size = 15; - int exp = 1; - int value = 0; - for(int i=sizeVector.size(); i>0; i--) { - switch(sizeVector.at(i-1)) { - case '1': { - value = 1; - break; - } - case '2': { - value = 2; - break; - } - case '3': { - value = 3; - break; - } - case '4': { - value = 4; - break; - } - case '5': { - value = 5; - break; - } - case '6': { - value = 6; - break; - } - case '7': { - value = 7; - break; - } - case '8': { - value = 8; - break; - } - case '9': { - value = 9; - break; - } - default: - value = 0; - } - size += value * exp; - exp *= 10; - } - d->lyrics3v2Size = size; + d->lyrics3v2Size = 15 + readNumber(sizeVector); + return; } } @@ -690,6 +644,58 @@ void MPEG::File::findAPE() d->APEFooterLocation = -1; } +long MPEG::File::readNumber(ByteVector vector) +{ + long number = 0; + int exp = 1; + int value = 0; + for(int i=vector.size(); i>0; i--) { + switch(vector.at(i-1)) { + case '1': { + value = 1; + break; + } + case '2': { + value = 2; + break; + } + case '3': { + value = 3; + break; + } + case '4': { + value = 4; + break; + } + case '5': { + value = 5; + break; + } + case '6': { + value = 6; + break; + } + case '7': { + value = 7; + break; + } + case '8': { + value = 8; + break; + } + case '9': { + value = 9; + break; + } + default: + value = 0; + } + number += value * exp; + exp *= 10; + } + return number; +} + bool MPEG::File::secondSynchByte(char byte) { if(uchar(byte) == 0xff) diff --git a/taglib/mpeg/mpegfile.h b/taglib/mpeg/mpegfile.h index d621a470..270cd7ae 100644 --- a/taglib/mpeg/mpegfile.h +++ b/taglib/mpeg/mpegfile.h @@ -291,6 +291,11 @@ namespace TagLib { void findAPE(); /*! + * Extracts a number from a ByteVector + */ + long readNumber(ByteVector vector); + + /*! * MPEG frames can be recognized by the bit pattern 11111111 111, so the * first byte is easy to check for, however checking to see if the second byte * starts with \e 111 is a bit more tricky, hence this member function. |