From ac361c7692096b2c57ccd62d7cecf676c917123d Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Tue, 22 Dec 2015 11:49:55 +0900 Subject: [PATCH] Unify some duplicate internal functions. --- taglib/mpeg/mpegfile.cpp | 20 +------------ taglib/mpeg/mpegheader.cpp | 12 +++----- taglib/mpeg/mpegutils.h | 59 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 27 deletions(-) create mode 100644 taglib/mpeg/mpegutils.h diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp index 67f0b273..af7253fa 100644 --- a/taglib/mpeg/mpegfile.cpp +++ b/taglib/mpeg/mpegfile.cpp @@ -34,29 +34,11 @@ #include "mpegfile.h" #include "mpegheader.h" +#include "mpegutils.h" #include "tpropertymap.h" using namespace TagLib; -namespace -{ - /*! - * 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 these functions. - */ - - inline bool firstSyncByte(unsigned char byte) - { - return (byte == 0xFF); - } - - inline bool secondSynchByte(unsigned char byte) - { - return ((byte & 0xE0) == 0xE0); - } -} - namespace { enum { ID3v2Index = 0, APEIndex = 1, ID3v1Index = 2 }; diff --git a/taglib/mpeg/mpegheader.cpp b/taglib/mpeg/mpegheader.cpp index 05177f3e..01b37705 100644 --- a/taglib/mpeg/mpegheader.cpp +++ b/taglib/mpeg/mpegheader.cpp @@ -26,9 +26,10 @@ #include #include #include -#include "trefcounter.h" +#include #include "mpegheader.h" +#include "mpegutils.h" using namespace TagLib; @@ -170,13 +171,8 @@ void MPEG::Header::parse(const ByteVector &data) // Check for the MPEG synch bytes. - if(static_cast(data[0]) != 0xFF) { - debug("MPEG::Header::parse() -- First byte did not match MPEG synch."); - return; - } - - if((static_cast(data[1]) & 0xE0) != 0xE0) { - debug("MPEG::Header::parse() -- Second byte did not match MPEG synch."); + if(!firstSyncByte(data[0]) || !secondSynchByte(data[1])) { + debug("MPEG::Header::parse() -- MPEG header did not match MPEG synch."); return; } diff --git a/taglib/mpeg/mpegutils.h b/taglib/mpeg/mpegutils.h new file mode 100644 index 00000000..78cee280 --- /dev/null +++ b/taglib/mpeg/mpegutils.h @@ -0,0 +1,59 @@ +/*************************************************************************** + copyright : (C) 2015 by Tsuda Kageyu + email : tsuda.kageyu@gmail.com + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_MPEGUTILS_H +#define TAGLIB_MPEGUTILS_H + +// THIS FILE IS NOT A PART OF THE TAGLIB API + +#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header + +namespace TagLib +{ + namespace MPEG + { + + /*! + * 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 these functions. + */ + + inline bool firstSyncByte(unsigned char byte) + { + return (byte == 0xFF); + } + + inline bool secondSynchByte(unsigned char byte) + { + return ((byte & 0xE0) == 0xE0); + } + + } +} + +#endif + +#endif