aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Faust <hessijames@gmail.com>2011-07-07 17:57:22 +0200
committerDaniel Faust <hessijames@gmail.com>2011-07-07 17:57:22 +0200
commit0ea8e44df79892ccdf27ce1d82c92dff3c678efa (patch)
treef5dfdf09b3de8a3b984c2516d583e541d9887743
parent27332c35ac52295281a4ddcfac48360480750b6e (diff)
String to number conversion moved to new function - long readNumber(ByteVector vector)
-rw-r--r--taglib/mpeg/mpegfile.cpp102
-rw-r--r--taglib/mpeg/mpegfile.h5
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.