一、控制播放
1.1 暫停/播放/停止
VC++ Code:
////////////////////////////////////////////////////////////////////////////////
//Funtion:Play or change the play speed to normal;
///////////////////////////////////////////////////////////////////////////////
void CPlayerDlg::OnPlay()
{
// TODO: Add your control notification handler code here
Play();
}
void CPlayerDlg::Play()
{
m_nSpeed=0;
OnThrow0();
//#ifdef _TEST_CALLBACK
if(m_bConvert)
Hik_PlayM4_SetDecCallBack(PORT,DecCBFun);
else
m_pMainMenu->EnableMenuItem(ID_FILE_CLOSE, FALSE);
//#endif
if(m_bPlaying)
{
Hik_PlayM4_Play(PORT,GetDlgItem(IDC_SHOW)->m_hWnd);
}
else
{
if(m_bStreamType)
{
::SetFilePointer(m_hStreamFile,m_nHeadSize,0,FILE_BEGIN);
Hik_PlayM4_ResetSourceBuffer(PORT);
SetEvent(m_hEventInput);
}
m_bPlaying = Hik_PlayM4_Play(PORT,GetDlgItem(IDC_SHOW)->m_hWnd);
m_bSound=Hik_PlayM4_PlaySound(PORT);
if(m_bPlaying)
SetTimer(PLAY_TIMER,500,NULL);
}
if(m_bPlaying)
SetPlayState();
else
{
CString csError;
csError.Format("Play the file faild.(%d)",Hik_PlayM4_GetLastError(PORT));
AfxMessageBox(csError);
}
}
//////////////////////////////////////////////////////////////////////////////
//Funtion:pause.
//////////////////////////////////////////////////////////////////////////////
void CPlayerDlg::OnPause()
{
// TODO: Add your control notification handler code here
if(m_bPlaying)
{
m_bPause=!m_bPause;
Pause(m_bPause);
}
}
void CPlayerDlg::Pause(BOOL bPause)
{
if(m_bPaused == bPause)
return;
m_bPaused=bPause;
Hik_PlayM4_Pause(PORT,bPause);
TRACE("PAUSE %d\n",m_bPaused);
}
/////////////////////////////////////////////////////////////////////////////
//Function: Stop
/////////////////////////////////////////////////////////////////////////////
void CPlayerDlg::OnStop()
{
// TODO: Add your control notification handler code here
if(m_bPlaying)
{
Stop();
}
if(m_bConvert)
{
if(outFile!=NULL)
closeWriffFiles();
if(yuvBuf!=NULL)
{
free(yuvBuf);
yuvBuf=NULL;
}
m_bConvert=0;
//
}
}
void CPlayerDlg::Stop()
{
CButton *pButton;
if(!m_bPlaying)
return;
KillTimer(PLAY_TIMER);
if(Hik_PlayM4_StopSound())
{
m_bSound=FALSE;
pButton = (CButton *)GetDlgItem(IDC_SOUND);
pButton->SetIcon(m_hSoundStopIcon);
}
//continue before stop.Add by lgl at 9-19;
m_bPause=FALSE;
//stop
m_bPlaying = !Hik_PlayM4_Stop(PORT);
if(!m_bPlaying)
{
SetStopState();
if(m_bStreamType)
ResetEvent(m_hEventInput);
}
}