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 114<br />
if (g_bAudioOnly)<br />
{<br />
JIF(InitPlayerWindow());<br />
}<br />
else<br />
{<br />
JIF(InitVi<strong>de</strong>oWindow(1, 1));<br />
}<br />
// Aqui vi<strong>en</strong>e lo bu<strong>en</strong>o se vera?!<br />
ShowWindow(ghApp, SW_SHOWNORMAL);<br />
UpdateWindow(ghApp);<br />
SetForegroundWindow(ghApp);<br />
SetFocus(ghApp);<br />
UpdateMainTitle();<br />
#if<strong>de</strong>f REGISTER_FILTERGRAPH<br />
hr = AddGraphToRot(pGB, &g_dwGraphRegister);<br />
if (FAILED(hr))<br />
{<br />
Msg(TEXT("Falló al registrar el grafico <strong>de</strong> filtros con ROT! hr=0x%x"), hr);<br />
g_dwGraphRegister = 0;<br />
}<br />
#<strong>en</strong>dif<br />
}<br />
}<br />
// Corre el grafico <strong>de</strong> filtros que ejecutará el archivo multimedia<br />
JIF(pMC->Run());<br />
g_psCurr<strong>en</strong>t=Running;<br />
SetFocus(ghApp);<br />
return hr;<br />
// Función que inicia la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o con un factor <strong>de</strong>terminado<br />
HRESULT InitVi<strong>de</strong>oWindow(int nMultiplier, int nDivi<strong>de</strong>r)<br />
{<br />
LONG lHeight, lWidth;<br />
HRESULT hr = S_OK;<br />
RECT rect;<br />
if (!pBV)<br />
return S_OK;<br />
// Lee el tamaño <strong>de</strong> vi<strong>de</strong>o actual<br />
JIF(pBV->GetVi<strong>de</strong>oSize(&lWidth, &lHeight));<br />
// Actualiza al tamaño requerido, normal, mitad ...<br />
lWidth = lWidth * nMultiplier / nDivi<strong>de</strong>r;<br />
lHeight = lHeight * nMultiplier / nDivi<strong>de</strong>r;<br />
SetWindowPos(ghApp, NULL, 0, 0, lWidth, lHeight,<br />
SWP_NOMOVE | SWP_NOOWNERZORDER);<br />
int nTitleHeight = GetSystemMetrics(SM_CYCAPTION);<br />
int nBor<strong>de</strong>rWidth = GetSystemMetrics(SM_CXBORDER);<br />
int nBor<strong>de</strong>rHeight = GetSystemMetrics(SM_CYBORDER);<br />
// Actualiza <strong>de</strong>p<strong>en</strong>di<strong>en</strong>do <strong>de</strong>l tamaño <strong>de</strong> la barra <strong>de</strong> titulo y bor<strong>de</strong>s para un<br />
// acoplami<strong>en</strong>to exacto <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o a el area <strong>de</strong>l cli<strong>en</strong>te <strong>en</strong> la v<strong>en</strong>tana<br />
SetWindowPos(ghApp, NULL, 0, 0, lWidth + 2*nBor<strong>de</strong>rWidth,<br />
lHeight + nTitleHeight + 2*nBor<strong>de</strong>rHeight,<br />
SWP_NOMOVE | SWP_NOOWNERZORDER);<br />
GetCli<strong>en</strong>tRect(ghApp, &rect);<br />
JIF(pVW->SetWindowPosition(rect.left, rect.top, rect.right, rect.bottom));<br />
return hr;