Avi.h
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:2k
- #ifndef _CAvi_H_
- #define _CAvi_H_
- #define RELEASE( x ) if( x != NULL ) { x->Release(); x = NULL; }
- #define FREE(p) if( p ) { free(p); p=NULL; }
- class CAvi
- {
- public:
- CAvi(void);
- ~CAvi(void);
- BOOL Create(const char* Filename, BOOL bLoop = FALSE, BOOL bPlayBack = TRUE);
- void Start(void);
- void Stop(void);
- void NextFrame(void);
- void ReadFrame(LONG Frame);
- BOOL GetSound(VOID);
- HRESULT DrawBuffer(void);
- void InitAvi(LPDIRECTSOUND lpDS);
- void ReleaseAvi( void );
- __inline void SetDestRect(RECT rcDst)
- {
- m_DstRect = rcDst;
- }
- __inline void SetStopFrame(INT nFrame)
- {
- m_nStopFrame = nFrame;
- }
- virtual BOOL ReadDatas(INT nLoopTime);
- virtual BOOL Draw(INT nLoopTime);
- virtual HRESULT DrawFast(INT nLoopTime, int X, int Y);
- public:
- BOOL m_bPlaying;
- BOOL m_bLoop;
- BOOL m_bPlayDirection;
- LONG m_Index;
- LONG m_nFrames;
- DWORD m_Fps;
- int m_TimerID;
- int m_TimeTick;
- DDSURFACEDESC2 m_DDSD;
- LPDIRECTDRAWSURFACE7 m_lpDDS;
- RECT m_SrcRect;
- RECT m_DstRect;
- PAVIFILE m_AviFile;
- CRITICAL_SECTION m_AccessBuffer;
- PAVISTREAM m_AviStream;
- AVISTREAMINFO m_StreamInfo;
- LPBYTE m_Input;
- LPBYTE m_Output;
- HIC m_Decompressor;
- LONG m_Length;
- LONG m_LinePitch;
- LPBITMAPINFOHEADER m_InputFormat;
- LPBITMAPV4HEADER m_TargetFormat;
- PAVISTREAM m_AviSound;
- AVISTREAMINFO m_SoundInfo;
- WAVEFORMATEX* m_SoundFormat;
- LPDIRECTSOUNDBUFFER m_SoundBuffer;
- DWORD m_LoadPos;
- DWORD m_LoadSize;
- int m_SoundFramesAhead;
- private:
- LPDIRECTSOUND m_lpDS;
- BOOL m_bIsPlaying;
- INT m_nStopFrame;
- };
- #endif _CAvi_H_