📄 basestream.cpp
字号:
// BaseStream.cpp: implementation of the CBaseStream class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "BaseStream.h"
#include "MultiSock_s.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBaseStream::CBaseStream()
{m_zStreamStatus=S_S_Idle;
m_hBeginPlay=m_hPausePlay=m_hStopPlay=m_hTerminateThread=m_hThread=NULL;
m_fStreamBitrate=0;
// TRACE("Create Base Stream\n");
}
CBaseStream::~CBaseStream()
{
Close();
}
DWORD CBaseStream::StreamThread()
{ return BS_OK;
}
int CBaseStream::Create(SOCKADDR_IN myAddr, SOCKADDR_IN multiAddr)
{ //TRACE("Create base Thread\n");
int nRet=m_MultiSock.Startup(myAddr,multiAddr);
if(nRet==INVALID_SOCKET)
{
return BS_FAIL;
}
m_hTerminateThread = CreateEvent(NULL,TRUE,FALSE,NULL);
m_hBeginPlay = CreateEvent(NULL,TRUE,FALSE,NULL);
m_hPausePlay = CreateEvent(NULL,TRUE,FALSE,NULL);
m_hStopPlay = CreateEvent(NULL,TRUE,FALSE,NULL);
m_hThread = CreateThread(NULL,0,InitialThread,this,0,&m_dwThreadId);
m_zStreamStatus=S_S_Inited;
return BS_OK;
}
void CBaseStream::Start()
{
if(m_zStreamStatus==S_S_Running) return ;
SetEvent(m_hBeginPlay);
}
void CBaseStream::Pause()
{
if(m_zStreamStatus!=S_S_Running) return ;
SetEvent(m_hPausePlay);
}
void CBaseStream::Stop()
{
if(m_zStreamStatus!=S_S_Running) return ;
SetEvent(m_hStopPlay);
}
void CBaseStream::Close()
{
if(m_zStreamStatus==S_S_Idle||m_zStreamStatus==S_S_Closed)
return;
SetEvent(m_hTerminateThread);
if (WaitForSingleObject(m_hThread,100)!=WAIT_OBJECT_0){
TerminateThread(m_hThread,CLOSETHREADCODE);
}
CloseHandle_(m_hTerminateThread);
CloseHandle_(m_hBeginPlay);
CloseHandle_(m_hPausePlay);
CloseHandle_(m_hStopPlay);
m_MultiSock.Close();
m_zStreamStatus=S_S_Closed;
}
Stream_Status CBaseStream::GetStreamStatus()
{
return m_zStreamStatus;
}
float CBaseStream::GetStreamBitrate()
{
return m_fStreamBitrate;
}
int CBaseStream::SendData(LPVOID lpBuf, int iSize)
{
return m_MultiSock.SendData(lpBuf,iSize);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -