Procesamiento digital de video en tiempo real y - Maestría en ...
Procesamiento digital de video en tiempo real y - Maestría en ...
Procesamiento digital de video en tiempo real y - Maestría en ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Procesami<strong>en</strong>to</strong> <strong>digital</strong> <strong>de</strong> vi<strong>de</strong>o <strong>en</strong> <strong>tiempo</strong> <strong>real</strong> y “vi<strong>de</strong>o wall” con la PC 121<br />
#<strong>en</strong>dif<br />
}<br />
RemoveGraphFromRot(g_dwGraphRegister);<br />
// Actualiza las interfaces DirectShow<br />
SAFE_RELEASE(pMC);<br />
SAFE_RELEASE(pME);<br />
SAFE_RELEASE(pVW);<br />
SAFE_RELEASE(pGB);<br />
SAFE_RELEASE(pBuil<strong>de</strong>r);<br />
// Función que cierra las interfaces <strong>de</strong> DirectShow<br />
void CloseInterfaces(void)<br />
{<br />
HRESULT hr;<br />
// Recuperacion <strong>de</strong> <strong>de</strong>rechos <strong>de</strong> propietario <strong>de</strong>spues <strong>de</strong> ocultar la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o<br />
if(pVW)<br />
{<br />
hr = pVW->put_Visible(OAFALSE);<br />
hr = pVW->put_Owner(NULL);<br />
}<br />
#if<strong>de</strong>f REGISTER_FILTERGRAPH<br />
if (g_dwGraphRegister)<br />
{<br />
RemoveGraphFromRot(g_dwGraphRegister);<br />
g_dwGraphRegister = 0;<br />
}<br />
#<strong>en</strong>dif<br />
}<br />
SAFE_RELEASE(pME);<br />
SAFE_RELEASE(pMS);<br />
SAFE_RELEASE(pMC);<br />
SAFE_RELEASE(pBA);<br />
SAFE_RELEASE(pBV);<br />
SAFE_RELEASE(pVW);<br />
SAFE_RELEASE(pGB);<br />
#if<strong>de</strong>f REGISTER_FILTERGRAPH<br />
// Función que aña<strong>de</strong> el grafico <strong>de</strong> filtros<br />
HRESULT AddGraphToRot(IUnknown *pUnkGraph, DWORD *pdwRegister)<br />
{<br />
IMoniker * pMoniker;<br />
IRunningObjectTable *pROT;<br />
if (FAILED(GetRunningObjectTable(0, &pROT))) {<br />
return E_FAIL;<br />
}<br />
WCHAR wsz[128];<br />
wsprintfW(wsz, L"FilterGraph %08x pid %08x", (DWORD_PTR)pUnkGraph,<br />
GetCurr<strong>en</strong>tProcessId());<br />
HRESULT hr = CreateItemMoniker(L"!", wsz, &pMoniker);<br />
if (SUCCEEDED(hr)) {<br />
hr = pROT->Register(0, pUnkGraph, pMoniker, pdwRegister);<br />
pMoniker->Release();<br />
}<br />
pROT->Release();<br />
return hr;<br />
}<br />
// Quita el grafico <strong>de</strong> filtros<br />
void RemoveGraphFromRot(DWORD pdwRegister)<br />
{<br />
IRunningObjectTable *pROT;<br />
if (SUCCEEDED(GetRunningObjectTable(0, &pROT))) {<br />
pROT->Revoke(pdwRegister);<br />
pROT->Release();<br />
}<br />
}