⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 videorender.h

📁 播放被H264_AAC所压缩的avi文件的播放器。
💻 H
字号:
// DDSurface.h: interface for the CVideoRender class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DDSURFACE_H__E187AA95_6361_47D2_BEDD_D051996A4E9B__INCLUDED_)
#define AFX_DDSURFACE_H__E187AA95_6361_47D2_BEDD_D051996A4E9B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <ddraw.h>
#include "common.h"
#include "Thread.h"
#include "SyncFifo.h"

#define RECTWIDTH(lpRect)     ((lpRect)->right - (lpRect)->left)
#define RECTHEIGHT(lpRect)    ((lpRect)->bottom - (lpRect)->top)

class CVideoRender : public Thread
{
public:
	CVideoRender();
	virtual ~CVideoRender();

//Operaters:
public:
	int CreateVideoRender(HWND hWnd, TWriteFrameCB cb, double dFps, int nWidth, int nHeight);
	int DestroyVideoRender();

	BOOL Play();
	BOOL Stop();

	void SetSpeed();

	void OnPaint();

	void SetCurPlayTime(DWORD nCurPlayTime){m_bSyncCtrl = TRUE, m_nCurPlayTime = nCurPlayTime;}
	DWORD GetCurPlayTime(){return m_nLastFrameTime;}

private:	
	static UINT	WINAPI ThreadEntry(void *lpParam);

	int InitDirectDraw(HWND hWnd, int nWidth, int nHeight);
	void DestroyDDraw();
	
	void RunVideoRender();
	BOOL Draw(HWND hWnd);
	void Restore();

	HRESULT Blt(LPRECT pDestRect, LPRECT pSrcRect, CONST VOID *lpBits, CONST BITMAPINFO *lpBitsInfo);
	
//Attributes:
public:
	CSyncFifo *	m_pVideoStream;
	HWND		m_hWnd;

private:
	HANDLE	m_hStop;
	HANDLE	m_hPause;
	HANDLE	m_hWait;
	
	TWriteFrameCB m_pWriteFrameCB;

	ThreadState m_nState;
	BYTE	*m_pBackFrame;

	LPDIRECTDRAW7			m_pDD;			// DirectDraw object
	LPDIRECTDRAWSURFACE7	m_pDDSPrimary;	// DirectDraw frontbuffer surface
	LPDIRECTDRAWSURFACE7	m_pDrawSurface;	// DirectDraw backbuffer surface
	LPDIRECTDRAWPALETTE		m_pDDPalette;
	LPDIRECTDRAWCLIPPER		m_pClipper;
	BITMAPINFO				m_BitmapInfo;
	DDSURFACEDESC2			m_DDSD;

	RECT	m_ClipRect;
	double	m_dFps;
	DWORD	m_nDisplayTime;
	DWORD	m_nCurPlayTime;
	BOOL	m_bSyncCtrl;
	int		m_nSpeed;

	DWORD	m_nLastFrameTime;
	int		m_nDeltaTime;
	DWORD	m_nWidth;
	DWORD	m_nHeight;
	DWORD	m_BPP;

	HHOOK	m_hhkLowLevelKybd;
};

#endif // !defined(AFX_DDSURFACE_H__E187AA95_6361_47D2_BEDD_D051996A4E9B__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -