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 79<br />
Figura 5.24 Gráfico con el filtro <strong>de</strong> efectos incorporado<br />
5.7.2 Ajuste <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o<br />
Cuando se pres<strong>en</strong>ta un archivo <strong>de</strong> vi<strong>de</strong>o, el grafico <strong>de</strong> filtros cont<strong>en</strong>drá un filtro<br />
vi<strong>de</strong>o r<strong>en</strong><strong>de</strong>rer. El vi<strong>de</strong>o r<strong>en</strong><strong>de</strong>rer toma datos <strong>de</strong> vi<strong>de</strong>o sin comprimir como <strong>en</strong>trada y<br />
pres<strong>en</strong>ta estos hacia la pantalla <strong>de</strong>ntro <strong>de</strong> una v<strong>en</strong>tana. La v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o playback es una<br />
v<strong>en</strong>tana totalm<strong>en</strong>te in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>te con sus propios bor<strong>de</strong>s y barra <strong>de</strong> titulo. Pero si se<br />
requiere que aparezca <strong>en</strong> una v<strong>en</strong>tana creada por nuestra aplicación, se <strong>de</strong>be hacer que la<br />
v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o sea una hija <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> la aplicación. Esto se logra ajustando las<br />
propieda<strong>de</strong>s <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o para especificar el propietario, el estilo, y posición <strong>de</strong> la<br />
v<strong>en</strong>tana, mediante la interfaz IVi<strong>de</strong>oWindow.<br />
Para pegar la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o <strong>en</strong> la <strong>de</strong> la aplicación <strong>en</strong>tonces se llama al método<br />
IVi<strong>de</strong>oWindow::put_Owner y se le pasa un handle a la v<strong>en</strong>tana propietaria. Este método<br />
toma una variable <strong>de</strong>l tipo OAHWND.<br />
IVi<strong>de</strong>oWindow *pVW = NULL;<br />
pGB->QueryInterface(IID_IVi<strong>de</strong>oWindow, (void **)&pVW);<br />
JIF(pVW->put_Owner((OAHWND)ghApp));<br />
Se cambia el estilo <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o a una v<strong>en</strong>tana hija. Esto mediante el<br />
método IVi<strong>de</strong>oWindow::put_WindowStyle pasándole una combinación <strong>de</strong> ban<strong>de</strong>ras. La<br />
ban<strong>de</strong>ra WS_CHILD indica que la v<strong>en</strong>tana es una v<strong>en</strong>tana hija; la v<strong>en</strong>tana<br />
WS_CLIPSIBLINGS previ<strong>en</strong>e a la v<strong>en</strong>tana <strong>de</strong> dibujar <strong>de</strong>ntro <strong>de</strong>l área cli<strong>en</strong>te <strong>de</strong> otra<br />
v<strong>en</strong>tana hija.<br />
pVW->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);<br />
Se ajusta la posición <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o mediante una llamada al método<br />
IVi<strong>de</strong>oWindow::SetWindowPosition. Este método toma las coor<strong>de</strong>nadas <strong>de</strong>l dispositivo<br />
especificando la esquina superior izquierda, ancho y alto <strong>de</strong> la v<strong>en</strong>tana.<br />
RECT rect;<br />
GetCli<strong>en</strong>tRect(ghApp, &rect);<br />
pVW->SetWindowPosition(rect.left, rect.top, rect.right, rect.bottom);<br />
Antes <strong>de</strong> que la aplicación salga, es importante que se ajuste la visibilidad <strong>de</strong> la<br />
v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o a false. De otro modo, un reman<strong>en</strong>te <strong>de</strong> imag<strong>en</strong> <strong>de</strong> vi<strong>de</strong>o quedaría <strong>en</strong> la<br />
pantalla y el usuario no podría quitarlo. Después se restaura el valor <strong>de</strong> owner a NULL; <strong>de</strong><br />
otro modo los m<strong>en</strong>sajes serán <strong>en</strong>viados a la v<strong>en</strong>tana equivocada causando errores.