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

La función CoCreateInstance regresa un apuntador a la interfaz IgraphBuil<strong>de</strong>r <strong>de</strong>l<br />

Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros. Utilizamos este apuntador para accesar a las otras dos<br />

interfaces IMediaControl y IMediaEv<strong>en</strong>t:<br />

IMediaControl *pMC = NULL;<br />

IMediaEv<strong>en</strong>tEx *pME = NULL;<br />

pGB->QueryInterface(IID_IMediaControl, (void **)&pMC);<br />

pGB->QueryInterface(IID_IMediaEv<strong>en</strong>tEx, (void **)&pME);<br />

Posteriorm<strong>en</strong>te se coloca el corazón <strong>de</strong>l programa<br />

pGB->R<strong>en</strong><strong>de</strong>rFile(L"C:\\Example.avi", NULL);<br />

pMediaControl->Run();<br />

El método IGraphBuil<strong>de</strong>r::R<strong>en</strong><strong>de</strong>rFile construye un gráfico <strong>de</strong> filtros que<br />

ejecutará el archivo especificado. El prefijo “L” convierte una ca<strong>de</strong>na ASCII a una ca<strong>de</strong>na<br />

Unico<strong>de</strong> .<br />

Después que el Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros ha construido el grafico, este se<br />

<strong>en</strong>cu<strong>en</strong>tra listo para ejecutarse. El método Run lo lleva a cabo, y los datos multimedia<br />

comi<strong>en</strong>zan a circular <strong>en</strong> el grafico <strong>de</strong> filtros.<br />

El gráfico <strong>de</strong> filtros queda configurado <strong>en</strong>tonces como <strong>en</strong> la figura 5.23.<br />

Figura 5.23 Configuración automática <strong>de</strong>l gráfico <strong>de</strong> filtros<br />

En el pres<strong>en</strong>te trabajo se requiere añadir el filtro <strong>de</strong> efectos que construimos por lo<br />

cual se proce<strong>de</strong> a <strong>de</strong>sconectar el filtro r<strong>en</strong><strong>de</strong>rer y <strong>real</strong>izar la conexión <strong>de</strong> nuestro filtro como<br />

sigue:<br />

// Desconectamos los últimos dos filtros <strong>de</strong>l grafico<br />

EnumFilters("MPEG Vi<strong>de</strong>o Deco<strong>de</strong>r", PINDIR_SALIDA); //Busca el salida pin <strong>de</strong>l p<strong>en</strong>ultimo<br />

filtro...<br />

hr = pGB->Disconnect(pOutPin);<br />

EnumFilters("Vi<strong>de</strong>o R<strong>en</strong><strong>de</strong>rer", PINDIR_INPUT); //Busca el <strong>en</strong>tradapin <strong>de</strong>l ultimo filtro...<br />

hr = pGB->Disconnect(pInputPin);<br />

// Añadimos el filtro <strong>de</strong> efectos <strong>en</strong> la imag<strong>en</strong><br />

hr = CoCreateInstance(CLSID_EZrgb24, NULL, CLSCTX_INPROC_SERVER,<br />

IID_IBaseFilter, reinterpret_cast(&pFX));<br />

hr = pGB->AddFilter(pFX, L"Image Effects");<br />

//Conectamos filtro <strong>de</strong> efectos y MPEG vi<strong>de</strong>o <strong>de</strong>co<strong>de</strong>r<br />

EnumFilters("Image Effects", PINDIR_INPUT); // Busca <strong>en</strong>tradapin <strong>de</strong> filtro Efectos<br />

hr = pGB->Connect(pOutPin, pInputPin);<br />

//Raconexion automatica <strong>en</strong>tre Image Effects y vi<strong>de</strong>o r<strong>en</strong><strong>de</strong>r<br />

EnumFilters("Image Effects", PINDIR_SALIDA);<br />

EnumFilters("Vi<strong>de</strong>o R<strong>en</strong><strong>de</strong>rer", PINDIR_INPUT);<br />

hr = pGB->Connect(pOutPin, pInputPin);<br />

El Gráfico <strong>de</strong> filtros resultante <strong>en</strong>tonces se muestra <strong>en</strong> la figura 5.24.

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

Saved successfully!

Ooh no, something went wrong!