📄 rbasestream.cpp
字号:
// RBaseStream.cpp: implementation of the CRBaseStream class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "RecvVideoM.h"
#include "RBaseStream.h"
//#include "MyVideoMpublic.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRBaseStream::CRBaseStream()
{
m_hThread=NULL;
m_nActiveXStatus = 0;
}
CRBaseStream::~CRBaseStream()
{
Close();
}
int CRBaseStream::Create(LPCTSTR strAddr, unsigned short uPort)
{
m_bIsInited = FALSE;
//多播地址端口
m_socDest.sin_family=AF_INET;
m_socDest.sin_addr.s_addr=inet_addr((char*)strAddr);
m_socDest.sin_port=htons(uPort);
//本地地址端口
m_socLocal.sin_family=AF_INET;
m_socLocal.sin_addr.s_addr=INADDR_ANY;
// m_socLocal.sin_port=m_socDest.sin_port;
m_socLocal.sin_port=m_socDest.sin_port;
if(m_sSocket.Startup(m_socLocal, m_socDest)<0 )//初始化多播端口
return BS_FAIL;
//初始化成功
m_bIsInited=TRUE;
m_eventRecive=WSACreateEvent();
WSAEventSelect(m_sSocket.GetSocket(),m_eventRecive,FD_READ); //绑定事件m_hTerminateThread = CreateEvent(NULL,TRUE,FALSE,NULL);
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_nActiveXStatus = 1;
return BS_OK;
}
DWORD CRBaseStream::StreamThread()
{
return BS_OK;
}
void CRBaseStream::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_sSocket.Close();
m_zStreamStatus=S_S_Closed;
}
void CRBaseStream::Start()
{
if(m_zStreamStatus==S_S_Running) return ;
SetEvent(m_hBeginPlay);
}
void CRBaseStream::Pause()
{
if(m_zStreamStatus!=S_S_Running) return ;
SetEvent(m_hPausePlay);
}
void CRBaseStream::Stop()
{
if(m_zStreamStatus!=S_S_Running) return ;
SetEvent(m_hStopPlay);
}
Stream_Status CRBaseStream::GetStreamStatus()
{
return m_zStreamStatus;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -