home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 November
/
Chip_2002-11_cd1.bin
/
zkuste
/
vbasic
/
Data
/
Utils
/
WME71SDK.exe
/
RCDATA
/
CABINET
/
common.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
2001-03-02
|
7KB
|
248 lines
#include "stdafx.h"
#include "common.h"
using namespace std;
map<short,CString> g_mapShortToString;
map<WMENC_ENCODER_STATE,CString> g_mapRunState;
map<WMENC_ARCHIVE_STATE,CString> g_archMap;
map<WMENC_INDEXER_STATE,CString> g_mapIndexerState;
map<WMENC_ARCHIVE_OPERATION,CString> g_mapIndexerOp;
map<WMENC_SOURCE_TYPE ,CString> g_mapSourceType;
map<WMENC_PLUGIN_TYPE ,CString> g_mapPluginType;
map<WMENC_ARCHIVE_OPERATION ,CString> g_mapArchOp;
map<WMENC_SOURCE_STATE ,CString> g_mapSrcState;
map<long,CString> g_mapEventIDToDisplayString;
map<WMENC_BROADCAST_PROTOCOL ,CString> g_mapBrProtocol;
void InitMaps()
{
g_mapShortToString[VARIANT_TRUE] = _T("VARIANT_TRUE");
g_mapShortToString[VARIANT_FALSE] = _T("VARIANT_FALSE");
g_mapRunState[WMENC_ENCODER_STARTING] = _T("WMENC_ENCODER_STARTING");
g_mapRunState[WMENC_ENCODER_RUNNING ] = _T("WMENC_ENCODER_RUNNING ");
g_mapRunState[WMENC_ENCODER_PAUSED ] = _T("WMENC_ENCODER_PAUSED ");
g_mapRunState[WMENC_ENCODER_STOPPING ] = _T("WMENC_ENCODER_STOPPING ");
g_mapRunState[WMENC_ENCODER_STOPPED ] = _T("WMENC_ENCODER_STOPPED ");
g_archMap[WMENC_ARCHIVE_RUNNING] = _T("WMENC_ARCHIVE_RUNNING");
g_archMap[WMENC_ARCHIVE_PAUSED ] = _T("WMENC_ARCHIVE_PAUSED");
g_archMap[WMENC_ARCHIVE_STOPPED ] = _T("WMENC_ARCHIVE_STOPPED");
g_mapIndexerState[WMENC_INDEXER_RUNNING] = _T("WMENC_INDEXER_RUNNING");
g_mapIndexerState[WMENC_INDEXER_STOPPED] = _T("WMENC_INDEXER_STOPPED");
g_mapIndexerOp[WMENC_ARCHIVE_START] = _T("WMENC_ARCHIVE_START");
g_mapIndexerOp[WMENC_ARCHIVE_STOP] = _T("WMENC_ARCHIVE_STOP");
g_mapIndexerOp[WMENC_ARCHIVE_PAUSE] = _T("WMENC_ARCHIVE_PAUSE");
g_mapSourceType[WMENC_AUDIO] = _T("WMENC_AUDIO");
g_mapSourceType[WMENC_VIDEO] = _T("WMENC_VIDEO");
g_mapSourceType[WMENC_SCRIPT] = _T("WMENC_SCRIPT");
g_mapSourceType[(WMENC_SOURCE_TYPE)(WMENC_AUDIO |WMENC_VIDEO)] = _T("WMENC_AUDIO |WMENC_VIDEO");
g_mapSourceType[(WMENC_SOURCE_TYPE)(WMENC_AUDIO |WMENC_SCRIPT)] = _T("WMENC_AUDIO |WMENC_SCRIPT");
g_mapSourceType[(WMENC_SOURCE_TYPE)(WMENC_AUDIO |WMENC_VIDEO | WMENC_SCRIPT)] = _T("WMENC_AUDIO |WMENC_VIDEO | WMENC_SCRIPT");
g_mapPluginType[WMENC_PLUGIN_SOURCE ] = _T("WMENC_PLUGIN_SOURCE ");
g_mapPluginType[WMENC_PLUGIN_TRANSFORM ] = _T("WMENC_PLUGIN_TRANSFORM ");
g_mapArchOp[WMENC_ARCHIVE_START] = _T("WMENC_ARCHIVE_START");
g_mapArchOp[WMENC_ARCHIVE_STOP] = _T("WMENC_ARCHIVE_STOP");
g_mapArchOp[WMENC_ARCHIVE_PAUSE] = _T("WMENC_ARCHIVE_PAUSE");
CString str = _T("ARCHIVESTATECHANGE");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_ARCHIVESTATECHANGE] = str;
str.Empty();
str = _T("CLIENTCONNECT");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_CLIENTCONNECT] = str;
str.Empty();
str = _T("STATECHANGE");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_STATECHANGE] = str;
str.Empty();
str = _T("CLIENTDISCONNECT");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_CLIENTDISCONNECT] = str;
str.Empty();
str = _T("CONFIGCHANGE");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_CONFIGCHANGE] = str;
str.Empty();
str = _T("ENCODEREVENT_ERROR");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_ERROR] = str;
str.Empty();
str = _T("INDEXERSTATECHANGE");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_INDEXERSTATECHANGE] = str;
str.Empty();
str = _T("SRCSTATECHANGE");
g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_SRCSTATECHANGE] = str;
str.Empty();
g_mapSrcState[WMENC_SOURCE_START ] = _T("WMENC_SOURCE_START ");
g_mapSrcState[WMENC_SOURCE_STOP ] = _T("WMENC_SOURCE_STOP ");
g_mapSrcState[WMENC_SOURCE_PREPARE ] = _T("WMENC_SOURCE_PREPARE ");
g_mapSrcState[WMENC_SOURCE_UNPREPARE ] = _T("WMENC_SOURCE_UNPREPARE ");
g_mapBrProtocol[WMENC_PROTOCOL_HTTP] = _T("WMENC_PROTOCOL_HTTP ");
}
CSyncObject::CSyncObject(LPCTSTR pstrName)
{
m_hObject = NULL;
#ifdef _DEBUG
#endif
}
CSyncObject::~CSyncObject()
{
if (m_hObject != NULL)
{
::CloseHandle(m_hObject);
m_hObject = NULL;
}
}
BOOL CSyncObject::Lock(DWORD dwTimeout)
{
if (::WaitForSingleObject(m_hObject, dwTimeout) == WAIT_OBJECT_0)
return TRUE;
else
return FALSE;
}
BOOL CEvent::Unlock()
{
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CSingleLock
CSingleLock::CSingleLock(CSyncObject* pObject, BOOL bInitialLock)
{
_ASSERT(pObject != NULL);
m_pObject = pObject;
m_hObject = pObject->m_hObject;
m_bAcquired = FALSE;
if (bInitialLock)
Lock();
}
BOOL CSingleLock::Lock(DWORD dwTimeOut /* = INFINITE */)
{
_ASSERT(m_pObject != NULL || m_hObject != NULL);
_ASSERT(!m_bAcquired);
m_bAcquired = m_pObject->Lock(dwTimeOut);
return m_bAcquired;
}
BOOL CSingleLock::Unlock()
{
_ASSERT(m_pObject != NULL);
if (m_bAcquired)
m_bAcquired = !m_pObject->Unlock();
// successfully unlocking means it isn't acquired
return !m_bAcquired;
}
BOOL CSingleLock::Unlock(LONG lCount, LPLONG lpPrevCount /* = NULL */)
{
_ASSERT(m_pObject != NULL);
if (m_bAcquired)
m_bAcquired = !m_pObject->Unlock(lCount, lpPrevCount);
// successfully unlocking means it isn't acquired
return !m_bAcquired;
}
_ATL_FUNC_INFO CEncoderEventSink::StateChangeInfo =
{ CC_STDCALL, VT_EMPTY, 1, {VT_I4} };
_ATL_FUNC_INFO CEncoderEventSink::ErrorInfo =
{ CC_STDCALL, VT_EMPTY, 1, {VT_I4} };
_ATL_FUNC_INFO CEncoderEventSink::ArchiveStateChangeInfo =
{ CC_STDCALL, VT_EMPTY, 2, {VT_I4,VT_I4} };
_ATL_FUNC_INFO CEncoderEventSink::ConfigChangeInfo =
{ CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
_ATL_FUNC_INFO CEncoderEventSink::ClientConnectInfo =
{ CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
_ATL_FUNC_INFO CEncoderEventSink::ClientDisconnectInfo =
{ CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
_ATL_FUNC_INFO CEncoderEventSink::SourceStateChangeInfo =
{ CC_STDCALL, VT_EMPTY, 4, {VT_I4,VT_I4, VT_I2,VT_BSTR} };
_ATL_FUNC_INFO CEncoderEventSink::IndexerStateChangeInfo =
{ CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
// we check for system errors first, and if not found go for Nemesis errors
CString _cdecl GetErrorFromHR(HRESULT hr)
{
CString strRet;
LPVOID lpbuf;
if(::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, hr,
MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
(LPTSTR) &lpbuf, 0, NULL)
)
{
strRet = (LPTSTR)lpbuf;
::LocalFree(lpbuf);
}
else
{
HINSTANCE hEncoderLibrary;
hEncoderLibrary = ::LoadLibrary(_T("WmEncEnu.DLL"));
if (FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE,
hEncoderLibrary, hr,
MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
(LPTSTR) &lpbuf, 0, NULL)
)
{
strRet = (LPTSTR)lpbuf;
::LocalFree(lpbuf);
}
}
return strRet;
}
CString _cdecl GetError()
{
CComPtr<IErrorInfo> pEI;
HRESULT hr = NOERROR;
CString strRet;
hr = GetErrorInfo(NULL,&pEI);
if(SUCCEEDED(hr) && pEI)
{
CComBSTR bstrDesc;
hr = pEI->GetDescription(&bstrDesc);
if(SUCCEEDED(hr))
{
USES_CONVERSION;
strRet = W2T(bstrDesc);
}
}
return strRet;
}