Avi.h
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:2k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #ifndef _CAvi_H_
  2. #define _CAvi_H_
  3. #define RELEASE( x ) if( x != NULL ) { x->Release(); x = NULL; }
  4. #define FREE(p) if( p ) { free(p); p=NULL; }
  5. class CAvi
  6. {
  7. public:
  8. CAvi(void);
  9. ~CAvi(void);
  10. BOOL Create(const char* Filename, BOOL bLoop = FALSE, BOOL bPlayBack = TRUE);
  11. void Start(void);
  12. void Stop(void);
  13. void NextFrame(void);
  14. void ReadFrame(LONG Frame);
  15. BOOL GetSound(VOID);
  16. HRESULT DrawBuffer(void);
  17. void InitAvi(LPDIRECTSOUND lpDS);
  18. void ReleaseAvi( void );
  19. __inline void SetDestRect(RECT rcDst)
  20. {
  21. m_DstRect = rcDst;
  22. }
  23. __inline void SetStopFrame(INT nFrame)
  24. {
  25. m_nStopFrame = nFrame;
  26. }
  27. virtual BOOL ReadDatas(INT nLoopTime);
  28. virtual BOOL Draw(INT nLoopTime);
  29. virtual HRESULT DrawFast(INT nLoopTime, int X, int Y);
  30. public:
  31. BOOL m_bPlaying;
  32. BOOL m_bLoop;
  33. BOOL m_bPlayDirection;
  34. LONG m_Index;
  35. LONG m_nFrames;
  36. DWORD m_Fps;
  37. int m_TimerID;
  38. int m_TimeTick;
  39. DDSURFACEDESC2 m_DDSD;
  40. LPDIRECTDRAWSURFACE7 m_lpDDS;
  41. RECT m_SrcRect;
  42. RECT m_DstRect;
  43. PAVIFILE m_AviFile;
  44. CRITICAL_SECTION m_AccessBuffer;
  45. PAVISTREAM m_AviStream;
  46. AVISTREAMINFO m_StreamInfo;
  47. LPBYTE m_Input;
  48. LPBYTE m_Output;
  49. HIC m_Decompressor;
  50. LONG m_Length;
  51. LONG m_LinePitch;
  52. LPBITMAPINFOHEADER m_InputFormat;
  53. LPBITMAPV4HEADER m_TargetFormat;
  54. PAVISTREAM m_AviSound;
  55. AVISTREAMINFO m_SoundInfo;
  56. WAVEFORMATEX* m_SoundFormat;
  57. LPDIRECTSOUNDBUFFER m_SoundBuffer;
  58. DWORD m_LoadPos;
  59. DWORD m_LoadSize;
  60. int m_SoundFramesAhead;
  61. private:
  62. LPDIRECTSOUND m_lpDS;
  63. BOOL m_bIsPlaying;
  64. INT m_nStopFrame;
  65. };
  66. #endif _CAvi_H_