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