From f7b15fad2036f61ecb919dfd69e3455c4d501ad5 Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Mon, 6 Feb 2017 10:35:49 +0900 Subject: Remove some redundant code. --- taglib/mpeg/mpegfile.cpp | 16 ++++------------ taglib/tagutils.cpp | 6 +++++- taglib/tagutils.h | 3 ++- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp index 74f304f8..adfcaac3 100644 --- a/taglib/mpeg/mpegfile.cpp +++ b/taglib/mpeg/mpegfile.cpp @@ -105,23 +105,15 @@ bool MPEG::File::isValidStream(IOStream *stream) // MPEG frame headers are really confusing with irrelevant binary data. // So we check if a frame header is really valid. - const long originalPosition = stream->tell(); - - long bufferOffset = 0; - - stream->seek(0); - const ByteVector data = stream->readBlock(ID3v2::Header::size()); - if(data.startsWith(ID3v2::Header::fileIdentifier())) - bufferOffset = ID3v2::Header(data).completeTagSize(); - - stream->seek(bufferOffset); - const ByteVector buffer = stream->readBlock(bufferSize()); + long headerOffset; + const ByteVector buffer = Utils::readHeader(stream, bufferSize(), true, &headerOffset); + const long originalPosition = stream->tell(); AdapterFile file(stream); for(unsigned int i = 0; i < buffer.size() - 1; ++i) { if(isFrameSync(buffer, i)) { - const Header header(&file, bufferOffset + i, true); + const Header header(&file, headerOffset + i, true); if(header.isValid()) { stream->seek(originalPosition); return true; diff --git a/taglib/tagutils.cpp b/taglib/tagutils.cpp index e27fd8bd..d6d92406 100644 --- a/taglib/tagutils.cpp +++ b/taglib/tagutils.cpp @@ -78,7 +78,8 @@ long Utils::findAPE(File *file, long id3v1Location) return -1; } -ByteVector TagLib::Utils::readHeader(IOStream *stream, unsigned int length, bool skipID3v2) +ByteVector TagLib::Utils::readHeader(IOStream *stream, unsigned int length, + bool skipID3v2, long *headerOffset) { if(!stream || !stream->isOpen()) return ByteVector(); @@ -97,5 +98,8 @@ ByteVector TagLib::Utils::readHeader(IOStream *stream, unsigned int length, bool const ByteVector header = stream->readBlock(length); stream->seek(originalPosition); + if(headerOffset) + *headerOffset = bufferOffset; + return header; } diff --git a/taglib/tagutils.h b/taglib/tagutils.h index 4014c673..4488a32b 100644 --- a/taglib/tagutils.h +++ b/taglib/tagutils.h @@ -45,7 +45,8 @@ namespace TagLib { long findAPE(File *file, long id3v1Location); - ByteVector readHeader(IOStream *stream, unsigned int length, bool skipID3v2); + ByteVector readHeader(IOStream *stream, unsigned int length, bool skipID3v2, + long *headerOffset = 0); } } -- cgit v1.2.3