📄 mediaplayer.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 + -