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

📄 mediaplayer.h

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

#pragma once

#include "Thread.h"
#include "Monitor.h"
#include "SyncFifo.h"
#include "VideoDecoderTask.h"
#include "AudioDecoderTask.h"
#include "AudioRender.h"
#include "VideoRender.h"
#include "AviReader.h"

class CMediaPlayer : public Thread, public Monitor, public IMediaPlayer
{
public:
	CMediaPlayer(TWriteFrameCB cb, HWND hDrawWnd);
	virtual ~CMediaPlayer();
//Operators:
public:
	BOOL	Init(char *lpAviFileName);
	BOOL	UnInit();
	
	BOOL	Play();
	BOOL	Pause();
	BOOL	Stop();
	BOOL	Seek(int nTime);

	BOOL	SetVolume(int nVol);
	
	//functions get useful informations for AVPlayer
	PlayState	GetState(){return m_PlayState;}
	DWORD	GetCurPlayTime(){return m_pVideoRender->GetCurPlayTime();};
	DWORD	GetTotalPlayTime();
	void	GetAviHeader(AVIHDR *lpAviHdr);
	static void	GetFileInfo(char *lpAviFileName, AVIHDR *lpAviHdr);

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

	void	SetState(PlayState nState){m_PlayState = nState;}

	BOOL	IsBuffering(UINT &nPercent);
	void	PlayMonitor();
	BOOL	BufferMonitor();
	BOOL	SyncCtrol();

	BOOL	EmptyStream();

	int		OnReadFrame(BYTE **lpData, DWORD &nTime);
	int		OnReadAudio(BYTE **lpData, DWORD &nTime);

	void	OnPaint(){m_pVideoRender->OnPaint();}

//Attributes:
public:

private:
	TWriteFrameCB	m_pCBFunc;

	CAviReader			*m_pAviReader;
	CAudioDecoderTask	*m_pAudDecTask;
	CAudioRender		*m_pAudioRender;

	CVideoDecoderTask	*m_pVidDecTask;
	CVideoRender		*m_pVideoRender;
	
	//video and audio stream syncfifos
	CSyncFifo			*m_pVideoStream;
	CSyncFifo			*m_pAudioStream;

	HANDLE				m_hStop;
	HWND				m_hWnd;
	UINT				m_nCount;
	
	PlayState			m_PlayState;
	BOOL				m_bStreaming;
	BOOL				m_bEndStream;
	LONG				m_nStartTime;

	char				m_szAviFileName[255];
};

⌨️ 快捷键说明

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