AudioDecoderACM.h
上传用户:hxb_1234
上传日期:2010-03-30
资源大小:8328k
文件大小:2k
源码类别:

VC书籍

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef AUDIO_DECODER_ACM_H
  6. #define AUDIO_DECODER_ACM_H
  7. #include "MediaClasses.h"
  8. #include "RingBuffer.h"
  9. /*
  10.  * ACM封装器类
  11.  *
  12.  */
  13. #include <mmsystem.h>
  14. #include <memory.h>
  15. #include <stdlib.h>
  16. #include <stdio.h>
  17. #include <mmreg.h>
  18. #include <msacm.h>
  19. class MediaAudioDecoderACM : public MediaItemAudioDecoder {
  20. private:
  21. MediaItemDecaps *decaps;
  22. HACMSTREAM       hacm;
  23. ACMSTREAMHEADER  acmHeader;
  24. DWORD            acm;
  25. DWORD            acmLeft;
  26. DWORD            acmInLeft;
  27. DWORD  outputSize;
  28. DWORD            inputSize;
  29. WAVEFORMATEX    *oFormat;
  30. char            *in_buffer;
  31. char            *out_buffer;
  32. MediaRingBuffer *ring;
  33. public:
  34. MediaAudioDecoderACM();
  35. ~MediaAudioDecoderACM();
  36. /*
  37.  * 媒体项函数(MediaItem Funcs)
  38.  */
  39. media_type_t  GetType();
  40. char         *GetName();
  41. MP_RESULT     Connect(MediaItem *item);
  42. MP_RESULT     ReleaseConnections();
  43. DWORD         GetCaps();
  44. MP_RESULT     Configure(HINSTANCE hInstance, HWND hwnd);
  45. /*
  46.  * 声音解码器
  47.  */
  48. WAVEFORMATEX *GetAudioFormat();
  49. MP_RESULT     EmptyAudioBuffer();
  50. unsigned int  Decompress(void *buffer, unsigned int size);
  51. };
  52. #endif