//==========================================================================; // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR // PURPOSE. // // Copyright (c) 1992 - 1998 Microsoft Corporation. All Rights Reserved. // //--------------------------------------------------------------------------; // /******************************Module*Header*******************************\ * Module Name: Decoder.h * * \**************************************************************************/ #ifndef _INC_DECODER_H #define _INC_DECODER_H // ------------------------------------------------------------------------- // Forward declaration to resolve circular reference. // ------------------------------------------------------------------------- // class CMpegAudioCodec; // ------------------------------------------------------------------------- // Audio decoder class // // This class encapsulates a low-level mpeg video decoder. // ------------------------------------------------------------------------- // // Decode control option enum { DECODE_MONO = 0x00000001L, DECODE_STEREO = 0x00000002L, DECODE_QUARTER = 0x00000800L, DECODE_HALF = 0x00001000L, DECODE_FULL = 0x00002000L, DECODE_HALF_HIQ = 0x00004000L, DECODE_HALF_FULLQ = 0x00008000L, DECODE_16BIT = 0x00010000L, DECODE_8BIT = 0x00020000L, DECODE_QSOUND = 0x00040000L, DECODE_QUART_INT = 0x00080000L }; // Function Return Values enum { DECODE_SUCCESS = 0x0000L, DECODE_ERR_MEMORY = 0x0001L, DECODE_ERR_DATA = 0x0002L, DECODE_ERR_PARAM = 0x0004L, DECODE_ERR_QUARTZ = 0x0008L // error from Quartz callback }; struct AudioCtrl { // // Output Frame Buffer // DWORD dwOutBuffUsed; DWORD dwOutBuffSize; DWORD dwMpegError; // // Frame decoder control // DWORD dwCtrl; // // Input buffer fields // DWORD dwNumFrames; LPBYTE pCmprRead; LPBYTE pCmprWrite; LPBYTE pOutBuffer; }; class CAudioDecoder : public CCritSec { private: // // Back pointer to the object that created us. // CMpegAudioCodec *m_pCodec; AudioCtrl *m_pCtrl; BOOL SkipFrame(); public: CAudioDecoder(CMpegAudioCodec *pMpegCodec); DWORD ResetAudio(); DWORD DecodeAudioFrame(AudioCtrl *pCtrl); }; #endif