home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / mac / SiteBldr / AMOVIE / SDK / _SETUP / COMMON.Z / decoder.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-29  |  2.6 KB  |  106 lines

  1. //==========================================================================;
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  4. //  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  5. //  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  6. //  PURPOSE.
  7. //
  8. //  Copyright (c) 1992 - 1996  Microsoft Corporation.  All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11. //
  12. /******************************Module*Header*******************************\
  13. * Module Name: Decoder.h
  14. *
  15. *
  16. \**************************************************************************/
  17.  
  18. #ifndef _INC_DECODER_H
  19. #define _INC_DECODER_H
  20.  
  21.  
  22. // -------------------------------------------------------------------------
  23. // Forward declaration to resolve circular reference.
  24. // -------------------------------------------------------------------------
  25. //
  26. class CMpegAudioCodec;
  27.  
  28.  
  29. // -------------------------------------------------------------------------
  30. // Audio decoder class
  31. //
  32. // This class encapsulates a low-level mpeg video decoder.
  33. // -------------------------------------------------------------------------
  34. //
  35.  
  36. // Decode control option
  37. enum {
  38.     DECODE_MONO       = 0x00000001L,
  39.     DECODE_STEREO     = 0x00000002L,
  40.     DECODE_QUARTER    = 0x00000800L,
  41.     DECODE_HALF       = 0x00001000L,
  42.     DECODE_FULL       = 0x00002000L,
  43.     DECODE_HALF_HIQ   = 0x00004000L,
  44.     DECODE_HALF_FULLQ = 0x00008000L,
  45.     DECODE_16BIT      = 0x00010000L,
  46.     DECODE_8BIT       = 0x00020000L,
  47.     DECODE_QSOUND     = 0x00040000L,
  48.     DECODE_QUART_INT  = 0x00080000L
  49. };
  50.  
  51.  
  52.  
  53. // Function Return Values
  54. enum {
  55.     DECODE_SUCCESS    = 0x0000L,
  56.     DECODE_ERR_MEMORY = 0x0001L,
  57.     DECODE_ERR_DATA   = 0x0002L,
  58.     DECODE_ERR_PARAM  = 0x0004L,
  59.     DECODE_ERR_QUARTZ = 0x0008L     // error from Quartz callback
  60. };
  61.  
  62. struct AudioCtrl {
  63.  
  64.     //
  65.     // Output Frame Buffer
  66.     //
  67.     DWORD   dwOutBuffUsed;
  68.     DWORD   dwOutBuffSize;
  69.     DWORD   dwMpegError;
  70.  
  71.     //
  72.     // Frame decoder control
  73.     //
  74.     DWORD   dwCtrl;
  75.  
  76.  
  77.     //
  78.     // Input buffer fields
  79.     //
  80.     DWORD   dwNumFrames;
  81.     LPBYTE  pCmprRead;
  82.     LPBYTE  pCmprWrite;
  83.     LPBYTE  pOutBuffer;
  84. };
  85.  
  86.  
  87. class CAudioDecoder
  88.     : public CCritSec {
  89.  
  90. private:
  91.     //
  92.     // Back pointer to the object that created us.
  93.     //
  94.     CMpegAudioCodec *m_pCodec;
  95.     AudioCtrl       *m_pCtrl;
  96.  
  97.     BOOL    SkipFrame();
  98.  
  99. public:
  100.     CAudioDecoder(CMpegAudioCodec *pMpegCodec);
  101.  
  102.     DWORD   ResetAudio();
  103.     DWORD   DecodeAudioFrame(AudioCtrl *pCtrl);
  104. };
  105. #endif
  106.