Unify some duplicate internal functions.

This commit is contained in:
Tsuda Kageyu 2015-12-22 11:49:55 +09:00
parent 5a1f44d166
commit ac361c7692
3 changed files with 64 additions and 27 deletions

View File

@ -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 };

View File

@ -26,9 +26,10 @@
#include <tbytevector.h>
#include <tstring.h>
#include <tdebug.h>
#include "trefcounter.h"
#include <trefcounter.h>
#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<unsigned char>(data[0]) != 0xFF) {
debug("MPEG::Header::parse() -- First byte did not match MPEG synch.");
return;
}
if((static_cast<unsigned char>(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;
}

59
taglib/mpeg/mpegutils.h Normal file
View File

@ -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