aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-12-08 17:03:15 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-12-08 17:03:15 +0000
commit555799db5158a448ca172eea39f43bf3c4fbf0ba (patch)
treee1ad367274590f540daed8fbd0011fe97a133dbd
parent97b3803b57fac2d3a2d1a926fe2af1177b739ce6 (diff)
downloadqmmp-555799db5158a448ca172eea39f43bf3c4fbf0ba.tar.gz
qmmp-555799db5158a448ca172eea39f43bf3c4fbf0ba.tar.bz2
qmmp-555799db5158a448ca172eea39f43bf3c4fbf0ba.zip
fixed adts parser
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6901 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Input/aac/aacfile.cpp23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/plugins/Input/aac/aacfile.cpp b/src/plugins/Input/aac/aacfile.cpp
index b9a537031..b452403b3 100644
--- a/src/plugins/Input/aac/aacfile.cpp
+++ b/src/plugins/Input/aac/aacfile.cpp
@@ -90,26 +90,23 @@ AACFile::AACFile(QIODevice *input, bool metaData, bool adts)
unsigned int frame_length = ((((unsigned int)buf[adts_offset+3] & 0x3)) << 11)
| (((unsigned int)buf[adts_offset+4]) << 3) | ((unsigned int)buf[adts_offset+5] >> 5);
- if(frame_length == 0)
- break;
-
- if(adts_offset + frame_length > buf_at - 6)
- break;
+ if(frame_length == 0 || (adts_offset + frame_length > buf_at - 6))
+ {
+ adts_offset++;
+ continue;
+ }
//check second sync word
if (((uchar)buf[adts_offset + frame_length] == 0xFF) &&
(((uchar)buf[adts_offset + frame_length + 1] & 0xF6) == 0xF0))
{
qDebug("AACFile: ADTS header found");
+ if (!input->isSequential() && adts)
+ parseADTS();
+ m_isValid = true;
+ m_offset += adts_offset;
+ return;
}
- else
- break;
-
- if (!input->isSequential() && adts)
- parseADTS();
- m_isValid = true;
- m_offset += adts_offset;
- return;
}
adts_offset++;
}