AudioRenderer.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef AUDIO_RENDERER_H
  6. #define AUDIO_RENDERER_H
  7. #include "MediaClasses.h"
  8. #include "DebugFile.h"
  9. /*
  10.  * 包括直接音频
  11.  */
  12. #include <math.h>
  13. #include <dsound.h>
  14. /*
  15.  * Audio Renderer Class
  16.  *
  17.  *  ——某一刻只有一个可用
  18.  *
  19.  */
  20. class MediaAudioRenderer : public MediaItemAudioRenderer {
  21. public:
  22. LPDIRECTSOUND       lpDirectSound;
  23. LPDIRECTSOUNDBUFFER lpBuffer;
  24. WAVEFORMATEX       *ourFormat;
  25.     DWORD               dwBufferSize;     
  26.     DWORD               dwNextWriteOffset; 
  27.     DWORD               dwProgress;
  28. DWORD               dwLastPlayPos;
  29. unsigned long       dwPlayed;
  30. HANDLE              audioThread;
  31. UINT                uTimerID;
  32. LONG                lInTimer;
  33. DWORD               id;
  34. MediaAudioCallback  callback;
  35. void               *lpData;
  36. int                 paused;
  37. /*
  38.  * 方法
  39.  *
  40.  */
  41. MediaAudioRenderer();
  42. ~MediaAudioRenderer();
  43. /*
  44.  * 媒体项方法
  45.  */
  46. media_type_t  GetType();
  47. char         *GetName();
  48. MP_RESULT     Connect(MediaItem *item);
  49. MP_RESULT     ReleaseConnections();
  50. DWORD         GetCaps();
  51. MP_RESULT     Configure(HINSTANCE hInstance, HWND hwnd);
  52. /*
  53.  * 音频补偿方法
  54.  */
  55. MP_RESULT     Open(HWND hwnd, WAVEFORMATEX *inFormat);
  56. MP_RESULT     SetCallback(void *lpData, MediaAudioCallback callback);
  57. MP_RESULT     SetVolume(unsigned int volume);
  58. unsigned long GetAudioTime();
  59. MP_RESULT     Bufferize();
  60. MP_RESULT     Start();
  61. MP_RESULT     Pause();
  62. MP_RESULT     Stop();
  63. MP_RESULT     Close();
  64. };
  65. #endif