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 >
C/C++ Source or Header  |  2001-03-02  |  7KB  |  248 lines

  1. #include "stdafx.h"
  2. #include "common.h"
  3. using namespace std;
  4.  
  5. map<short,CString>                    g_mapShortToString;
  6. map<WMENC_ENCODER_STATE,CString>    g_mapRunState;
  7. map<WMENC_ARCHIVE_STATE,CString>    g_archMap;
  8. map<WMENC_INDEXER_STATE,CString>    g_mapIndexerState;
  9. map<WMENC_ARCHIVE_OPERATION,CString> g_mapIndexerOp;
  10. map<WMENC_SOURCE_TYPE ,CString>        g_mapSourceType;
  11. map<WMENC_PLUGIN_TYPE ,CString>        g_mapPluginType;
  12. map<WMENC_ARCHIVE_OPERATION ,CString>        g_mapArchOp;
  13. map<WMENC_SOURCE_STATE ,CString>    g_mapSrcState;
  14.  
  15. map<long,CString>                    g_mapEventIDToDisplayString;
  16. map<WMENC_BROADCAST_PROTOCOL ,CString>    g_mapBrProtocol;
  17.  
  18.  
  19. void InitMaps()
  20. {
  21.     g_mapShortToString[VARIANT_TRUE] = _T("VARIANT_TRUE");
  22.     g_mapShortToString[VARIANT_FALSE] = _T("VARIANT_FALSE");
  23.  
  24.     g_mapRunState[WMENC_ENCODER_STARTING] = _T("WMENC_ENCODER_STARTING");
  25.     g_mapRunState[WMENC_ENCODER_RUNNING ] = _T("WMENC_ENCODER_RUNNING ");
  26.     g_mapRunState[WMENC_ENCODER_PAUSED ] = _T("WMENC_ENCODER_PAUSED ");
  27.     g_mapRunState[WMENC_ENCODER_STOPPING ] = _T("WMENC_ENCODER_STOPPING ");
  28.     g_mapRunState[WMENC_ENCODER_STOPPED  ] = _T("WMENC_ENCODER_STOPPED ");
  29.  
  30.     g_archMap[WMENC_ARCHIVE_RUNNING] = _T("WMENC_ARCHIVE_RUNNING");
  31.     g_archMap[WMENC_ARCHIVE_PAUSED ] = _T("WMENC_ARCHIVE_PAUSED");
  32.     g_archMap[WMENC_ARCHIVE_STOPPED ] = _T("WMENC_ARCHIVE_STOPPED");
  33.  
  34.     g_mapIndexerState[WMENC_INDEXER_RUNNING] = _T("WMENC_INDEXER_RUNNING");
  35.     g_mapIndexerState[WMENC_INDEXER_STOPPED] = _T("WMENC_INDEXER_STOPPED");
  36.  
  37.     g_mapIndexerOp[WMENC_ARCHIVE_START] = _T("WMENC_ARCHIVE_START");
  38.     g_mapIndexerOp[WMENC_ARCHIVE_STOP] = _T("WMENC_ARCHIVE_STOP");
  39.     g_mapIndexerOp[WMENC_ARCHIVE_PAUSE] = _T("WMENC_ARCHIVE_PAUSE");
  40.  
  41.     g_mapSourceType[WMENC_AUDIO] = _T("WMENC_AUDIO");
  42.     g_mapSourceType[WMENC_VIDEO] = _T("WMENC_VIDEO");
  43.     g_mapSourceType[WMENC_SCRIPT] = _T("WMENC_SCRIPT");
  44.     g_mapSourceType[(WMENC_SOURCE_TYPE)(WMENC_AUDIO |WMENC_VIDEO)] = _T("WMENC_AUDIO |WMENC_VIDEO");
  45.     g_mapSourceType[(WMENC_SOURCE_TYPE)(WMENC_AUDIO |WMENC_SCRIPT)] = _T("WMENC_AUDIO |WMENC_SCRIPT");
  46.     g_mapSourceType[(WMENC_SOURCE_TYPE)(WMENC_AUDIO |WMENC_VIDEO | WMENC_SCRIPT)] = _T("WMENC_AUDIO |WMENC_VIDEO | WMENC_SCRIPT");
  47.  
  48.     g_mapPluginType[WMENC_PLUGIN_SOURCE ] = _T("WMENC_PLUGIN_SOURCE ");
  49.     g_mapPluginType[WMENC_PLUGIN_TRANSFORM ] = _T("WMENC_PLUGIN_TRANSFORM ");
  50.  
  51.     g_mapArchOp[WMENC_ARCHIVE_START] = _T("WMENC_ARCHIVE_START");
  52.     g_mapArchOp[WMENC_ARCHIVE_STOP] = _T("WMENC_ARCHIVE_STOP");
  53.     g_mapArchOp[WMENC_ARCHIVE_PAUSE] = _T("WMENC_ARCHIVE_PAUSE");
  54.  
  55.     CString str =  _T("ARCHIVESTATECHANGE");
  56.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_ARCHIVESTATECHANGE] = str;
  57.     str.Empty();
  58.  
  59.     str =  _T("CLIENTCONNECT");
  60.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_CLIENTCONNECT] = str;
  61.     str.Empty();
  62.  
  63.     str =  _T("STATECHANGE");
  64.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_STATECHANGE] = str;
  65.     str.Empty();
  66.  
  67.     str =  _T("CLIENTDISCONNECT");
  68.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_CLIENTDISCONNECT] = str;
  69.     str.Empty();
  70.  
  71.     str =  _T("CONFIGCHANGE");
  72.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_CONFIGCHANGE] = str;
  73.     str.Empty();
  74.  
  75.     str =  _T("ENCODEREVENT_ERROR");
  76.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_ERROR] = str;
  77.     str.Empty();
  78.  
  79.     str =  _T("INDEXERSTATECHANGE");
  80.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_INDEXERSTATECHANGE] = str;
  81.     str.Empty();
  82.  
  83.     str =  _T("SRCSTATECHANGE");
  84.     g_mapEventIDToDisplayString[DISPID_ENCODEREVENT_SRCSTATECHANGE] = str;
  85.     str.Empty();
  86.  
  87.     g_mapSrcState[WMENC_SOURCE_START ] = _T("WMENC_SOURCE_START ");
  88.     g_mapSrcState[WMENC_SOURCE_STOP  ] = _T("WMENC_SOURCE_STOP ");
  89.     g_mapSrcState[WMENC_SOURCE_PREPARE ] = _T("WMENC_SOURCE_PREPARE ");
  90.     g_mapSrcState[WMENC_SOURCE_UNPREPARE ] = _T("WMENC_SOURCE_UNPREPARE ");
  91.  
  92.     g_mapBrProtocol[WMENC_PROTOCOL_HTTP] = _T("WMENC_PROTOCOL_HTTP ");
  93.  
  94. }
  95.  
  96. CSyncObject::CSyncObject(LPCTSTR pstrName)
  97. {
  98.     m_hObject = NULL;
  99.  
  100. #ifdef _DEBUG
  101.     
  102. #endif
  103. }
  104.  
  105. CSyncObject::~CSyncObject()
  106. {
  107.     if (m_hObject != NULL)
  108.     {
  109.         ::CloseHandle(m_hObject);
  110.         m_hObject = NULL;
  111.     }
  112. }
  113.  
  114. BOOL CSyncObject::Lock(DWORD dwTimeout)
  115. {
  116.     if (::WaitForSingleObject(m_hObject, dwTimeout) == WAIT_OBJECT_0)
  117.         return TRUE;
  118.     else
  119.         return FALSE;
  120. }
  121.  
  122.  
  123.  
  124.  
  125.  
  126. BOOL CEvent::Unlock()
  127. {
  128.     return TRUE;
  129. }
  130.  
  131. /////////////////////////////////////////////////////////////////////////////
  132. // CSingleLock
  133.  
  134. CSingleLock::CSingleLock(CSyncObject* pObject, BOOL bInitialLock)
  135. {
  136.     _ASSERT(pObject != NULL);
  137.  
  138.     m_pObject = pObject;
  139.     m_hObject = pObject->m_hObject;
  140.     m_bAcquired = FALSE;
  141.  
  142.     if (bInitialLock)
  143.         Lock();
  144. }
  145.  
  146. BOOL CSingleLock::Lock(DWORD dwTimeOut /* = INFINITE */)
  147. {
  148.     _ASSERT(m_pObject != NULL || m_hObject != NULL);
  149.     _ASSERT(!m_bAcquired);
  150.  
  151.     m_bAcquired = m_pObject->Lock(dwTimeOut);
  152.     return m_bAcquired;
  153. }
  154.  
  155. BOOL CSingleLock::Unlock()
  156. {
  157.     _ASSERT(m_pObject != NULL);
  158.     if (m_bAcquired)
  159.         m_bAcquired = !m_pObject->Unlock();
  160.  
  161.     // successfully unlocking means it isn't acquired
  162.     return !m_bAcquired;
  163. }
  164.  
  165. BOOL CSingleLock::Unlock(LONG lCount, LPLONG lpPrevCount /* = NULL */)
  166. {
  167.     _ASSERT(m_pObject != NULL);
  168.     if (m_bAcquired)
  169.         m_bAcquired = !m_pObject->Unlock(lCount, lpPrevCount);
  170.  
  171.     // successfully unlocking means it isn't acquired
  172.     return !m_bAcquired;
  173. }
  174.  
  175. _ATL_FUNC_INFO CEncoderEventSink::StateChangeInfo = 
  176. { CC_STDCALL, VT_EMPTY, 1, {VT_I4} };
  177. _ATL_FUNC_INFO CEncoderEventSink::ErrorInfo = 
  178. { CC_STDCALL, VT_EMPTY, 1, {VT_I4} };
  179. _ATL_FUNC_INFO CEncoderEventSink::ArchiveStateChangeInfo = 
  180. { CC_STDCALL, VT_EMPTY, 2, {VT_I4,VT_I4} };
  181. _ATL_FUNC_INFO CEncoderEventSink::ConfigChangeInfo = 
  182. { CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
  183. _ATL_FUNC_INFO CEncoderEventSink::ClientConnectInfo = 
  184. { CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
  185. _ATL_FUNC_INFO CEncoderEventSink::ClientDisconnectInfo = 
  186. { CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
  187. _ATL_FUNC_INFO CEncoderEventSink::SourceStateChangeInfo = 
  188. { CC_STDCALL, VT_EMPTY, 4, {VT_I4,VT_I4, VT_I2,VT_BSTR} };
  189. _ATL_FUNC_INFO CEncoderEventSink::IndexerStateChangeInfo = 
  190. { CC_STDCALL, VT_EMPTY, 2, {VT_I4, VT_BSTR} };
  191.  
  192. // we check for system errors first, and if not found go for Nemesis errors
  193. CString _cdecl GetErrorFromHR(HRESULT hr)
  194. {
  195.     CString strRet;
  196.     LPVOID lpbuf;
  197.     if(::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
  198.         NULL,  hr,
  199.         MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
  200.         (LPTSTR) &lpbuf, 0, NULL)
  201.       )
  202.     {
  203.         strRet = (LPTSTR)lpbuf;
  204.         ::LocalFree(lpbuf);
  205.     }
  206.     else
  207.     {
  208.         HINSTANCE hEncoderLibrary;
  209.         hEncoderLibrary = ::LoadLibrary(_T("WmEncEnu.DLL"));
  210.  
  211.         if (FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER  |  FORMAT_MESSAGE_FROM_HMODULE,
  212.             hEncoderLibrary, hr,
  213.             MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
  214.             (LPTSTR) &lpbuf, 0, NULL)
  215.             )
  216.         {
  217.             strRet = (LPTSTR)lpbuf;
  218.             ::LocalFree(lpbuf);
  219.         }
  220.  
  221.     }
  222.  
  223.  
  224.     return strRet;
  225.  
  226. }
  227.  
  228. CString _cdecl GetError()
  229. {
  230.     CComPtr<IErrorInfo> pEI;
  231.     HRESULT hr = NOERROR;
  232.     CString strRet;
  233.     hr = GetErrorInfo(NULL,&pEI);
  234.     if(SUCCEEDED(hr) && pEI)
  235.     {
  236.         CComBSTR bstrDesc;
  237.         hr = pEI->GetDescription(&bstrDesc);
  238.         if(SUCCEEDED(hr))
  239.         {
  240.             USES_CONVERSION;
  241.             strRet = W2T(bstrDesc);
  242.         }
  243.     }
  244.         
  245.     return strRet;
  246. }
  247.  
  248.