mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
71 lines
2 KiB
C++
71 lines
2 KiB
C++
/***************************************************************************\
|
|
*
|
|
* MPEG Layer3-Audio Decoder
|
|
* © 1997-2006 by Fraunhofer IIS
|
|
* All Rights Reserved
|
|
*
|
|
* filename: mpegbitstream.h
|
|
* project : MPEG Decoder
|
|
* author : Martin Sieler
|
|
* date : 1997-12-05
|
|
* contents/description: MPEG bitstream - HEADER
|
|
*
|
|
*
|
|
\***************************************************************************/
|
|
|
|
/*
|
|
* $Date: 2010/11/17 20:46:04 $
|
|
* $Id: mpegbitstream.h,v 1.1 2010/11/17 20:46:04 audiodsp Exp $
|
|
*/
|
|
|
|
#ifndef __MPEGBITSTREAM_H__
|
|
#define __MPEGBITSTREAM_H__
|
|
|
|
/* ------------------------ includes --------------------------------------*/
|
|
|
|
#include "bitstream.h"
|
|
#include "mpegheader.h"
|
|
#include "mp3sscdef.h"
|
|
|
|
/*-------------------------- defines --------------------------------------*/
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
//
|
|
// MPEG bitstream class.
|
|
//
|
|
// This object is derived from CBitStream. In addition to CBitStream
|
|
// this object is able to sync to the next ISO/MPEG header position.
|
|
//
|
|
|
|
class CMpegBitStream : public CBitStream
|
|
{
|
|
public:
|
|
CMpegBitStream(int cbSize);
|
|
CMpegBitStream(unsigned char *pBuf, int cbSize, bool fDataValid = false);
|
|
virtual ~CMpegBitStream();
|
|
|
|
virtual void Reset();
|
|
|
|
SSC DoSync();
|
|
int GetSyncPosition() const { return m_SyncPosition; }
|
|
const CMpegHeader *GetHdr() const { return &m_Hdr; }
|
|
|
|
protected:
|
|
|
|
private:
|
|
|
|
SSC DoSyncInitial();
|
|
SSC DoSyncContinue();
|
|
|
|
enum { FRAMES_TO_CHECK = 10 };
|
|
|
|
CMpegHeader m_Hdr; // mpeg header
|
|
unsigned long m_FirstHdr; // "relevant" bits of first good header
|
|
unsigned long m_nFramesToCheck; // # frames to be checked for next mpeg header
|
|
int m_SyncPosition; // offset of first sync in bits
|
|
SSC m_SyncState; // last sync state
|
|
};
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
#endif
|