home *** CD-ROM | disk | FTP | other *** search
- //==========================================================================;
- //
- // 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 - 1996 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
-