#ifndef APE_APECOMPRESSCORE_H #define APE_APECOMPRESSCORE_H #include "APECompress.h" #include "BitArray.h" class CPrepare; class IPredictorCompress; /************************************************************************************************* CAPECompressCore - manages the core of compression and bitstream output *************************************************************************************************/ class CAPECompressCore { public: CAPECompressCore(CIO * pIO, const WAVEFORMATEX * pwfeInput, int nMaxFrameBlocks, int nCompressionLevel); ~CAPECompressCore(); int EncodeFrame(unsigned char * pInputData, int nInputBytes); CBitArray * GetBitArray() { return m_spBitArray.GetPtr(); } int GetPeakLevel() { return m_nPeakLevel; } private: CSmartPtr m_spBitArray; CSmartPtr m_spPredictorX; CSmartPtr m_spPredictorY; BIT_ARRAY_STATE m_BitArrayStateX; BIT_ARRAY_STATE m_BitArrayStateY; CSmartPtr m_spDataX; CSmartPtr m_spDataY; CSmartPtr m_spTempData; CSmartPtr m_spPrepare; WAVEFORMATEX m_wfeInput; int m_nPeakLevel; int Prepare(unsigned char * pInputData, int nInputBytes, int * pSpecialCodes); }; #endif /* APE_APECOMPRESSCORE_H */