cog/Libraries/MAC/Files/Source/MACLib/Old/UnMAC.h

70 lines
2.0 KiB
C++
Executable File

/*****************************************************************************************
UnMAC.h
Copyright (C) 2000-2001 by Matthew T. Ashland All Rights Reserved.
Methods for decompressing or verifying APE files
Notes:
-none
*****************************************************************************************/
#ifndef APE_UNMAC_H
#define APE_UNMAC_H
#include "../BitArray.h"
#include "../UnBitArrayBase.h"
class CAntiPredictor;
class CPrepare;
class CAPEDecompressCore;
class CPredictorBase;
class IPredictorDecompress;
class IAPEDecompress;
/*****************************************************************************************
CUnMAC class... a class that allows decoding on a frame-by-frame basis
*****************************************************************************************/
class CUnMAC
{
public:
// construction/destruction
CUnMAC();
~CUnMAC();
// functions
int Initialize(IAPEDecompress *pAPEDecompress);
int Uninitialize();
int DecompressFrame(unsigned char *pOutputData, int32 FrameIndex, int CPULoadBalancingFactor = 0);
int SeekToFrame(int FrameIndex);
private:
// data members
BOOL m_bInitialized;
int m_LastDecodedFrameIndex;
IAPEDecompress * m_pAPEDecompress;
CPrepare * m_pPrepare;
CAPEDecompressCore * m_pAPEDecompressCore;
// functions
void GenerateDecodedArrays(int nBlocks, int nSpecialCodes, int nFrameIndex, int nCPULoadBalancingFactor);
void GenerateDecodedArray(int *Input_Array, uint32 Number_of_Elements, int Frame_Index, CAntiPredictor *pAntiPredictor, int CPULoadBalancingFactor = 0);
int CreateAntiPredictors(int nCompressionLevel, int nVersion);
int DecompressFrameOld(unsigned char *pOutputData, int32 FrameIndex, int CPULoadBalancingFactor);
uint32 CalculateOldChecksum(int *pDataX, int *pDataY, int nChannels, int nBlocks);
public:
int m_nBlocksProcessed;
unsigned int m_nCRC;
unsigned int m_nStoredCRC;
WAVEFORMATEX m_wfeInput;
};
#endif // #ifndef APE_UNMAC_H