28.11.2012 Views

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 ...

SHOW MORE
SHOW LESS

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 />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!