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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

}<br />

}<br />

// Undo change of message drain<br />

LIF(pVW->put_MessageDrain((OAHWND) hDrain));<br />

// Reinicializar v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o<br />

LIF(pVW->SetWindowForeground(-1));<br />

// Reclamar la at<strong>en</strong>ción <strong>de</strong>l teclado<br />

UpdateWindow(ghApp);<br />

SetForegroundWindow(ghApp);<br />

SetFocus(ghApp);<br />

return hr;<br />

// Manejador <strong>de</strong> ev<strong>en</strong>tos <strong>en</strong> el Gráfico <strong>de</strong> filtros<br />

HRESULT HandleGraphEv<strong>en</strong>t(void)<br />

{<br />

LONG evCo<strong>de</strong>, evParam1, evParam2;<br />

HRESULT hr=S_OK;<br />

while(SUCCEEDED(pME->GetEv<strong>en</strong>t(&evCo<strong>de</strong>, &evParam1, &evParam2, 0)))<br />

{<br />

// Recorrido atraves <strong>de</strong> los ev<strong>en</strong>tos<br />

hr = pME->FreeEv<strong>en</strong>tParams(evCo<strong>de</strong>, evParam1, evParam2);<br />

implem<strong>en</strong>tar<br />

rrecorrer<br />

}<br />

}<br />

if(EC_COMPLETE == evCo<strong>de</strong>)<br />

{<br />

LONGLONG pos=0;<br />

}<br />

// Reinicializa al primer frame <strong>de</strong>l vi<strong>de</strong>o clip<br />

hr = pMS->SetPositions(&pos, AM_SEEKING_AbsolutePositioning ,<br />

NULL, AM_SEEKING_NoPositioning);<br />

if (FAILED(hr))<br />

{<br />

// Algunos filtros personalizados pue<strong>de</strong>n no<br />

}<br />

return hr;<br />

// interfaces <strong>de</strong> a<strong>de</strong>lantar/atrasar.Para permitir<br />

// hacia el inicio. En este caso, solo <strong>de</strong>t<strong>en</strong>er<br />

// y reiniciar para el mismo efecto. Esto no <strong>de</strong>beria<br />

//ser necesario <strong>en</strong> muchos casos.<br />

if (FAILED(hr = pMC->Stop()))<br />

{<br />

Msg(TEXT("!Fallo(0x%08lx) para <strong>de</strong>t<strong>en</strong>er el clip multimedia!\r\n"), hr);<br />

break;<br />

}<br />

if (FAILED(hr = pMC->Run()))<br />

{<br />

Msg(TEXT("Falló(0x%08lx) para reiniciar el clip multimedia!\r\n"), hr);<br />

break;<br />

}<br />

// Gestor <strong>de</strong> m<strong>en</strong>sajes <strong>de</strong> Windows<br />

LRESULT CALLBACK WndMainProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)<br />

{<br />

switch(message)<br />

{<br />

// Reajusta el tamaño <strong>de</strong> vi<strong>de</strong>o cuando la v<strong>en</strong>tana cambia<br />

case WM_MOVE:<br />

case WM_SIZE:<br />

if ((hWnd == ghApp) && (!g_bAudioOnly))<br />

MoveVi<strong>de</strong>oWindow();<br />

break;

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

Saved successfully!

Ooh no, something went wrong!