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

3.8.4 Notificación <strong>de</strong> ev<strong>en</strong>tos <strong>en</strong> DirectShow<br />

Un filtro notifica al Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros acerca <strong>de</strong> un ev<strong>en</strong>to mediante el<br />

<strong>en</strong>vío <strong>de</strong> una notificación <strong>de</strong> ev<strong>en</strong>to. El ev<strong>en</strong>to pue<strong>de</strong> ser algunas veces previsto, tal como el<br />

fin <strong>de</strong> un flujo, o este podría repres<strong>en</strong>tar un error, tal como una falla al pres<strong>en</strong>tar un flujo. El<br />

Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros maneja algunos ev<strong>en</strong>tos <strong>de</strong> los filtros y <strong>de</strong>ja otros ev<strong>en</strong>tos<br />

para que los maneje la aplicación. Si el Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros no maneja el<br />

ev<strong>en</strong>to <strong>de</strong>l filtro, este coloca la notificación <strong>de</strong>l ev<strong>en</strong>to <strong>en</strong> una cola. El Gráfico <strong>de</strong> filtros<br />

pue<strong>de</strong> también <strong>en</strong>colar sus propias notificaciones <strong>de</strong> ev<strong>en</strong>tos para la aplicación.<br />

Una aplicación obti<strong>en</strong>e ev<strong>en</strong>tos <strong>de</strong> la cola y respon<strong>de</strong> a ellos basado <strong>en</strong> el tipo <strong>de</strong><br />

ev<strong>en</strong>to. La notificación <strong>de</strong> ev<strong>en</strong>tos <strong>en</strong> DirectShow es similar al esquema <strong>de</strong> <strong>en</strong>colado <strong>de</strong><br />

m<strong>en</strong>sajes <strong>de</strong> Windows. Una aplicación pue<strong>de</strong> también cancelar el comportami<strong>en</strong>to por<br />

<strong>de</strong>fault <strong>de</strong>l Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros para un tipo <strong>de</strong> ev<strong>en</strong>to dado. El Manejador <strong>de</strong>l<br />

gráfico <strong>de</strong> filtros <strong>en</strong>tonces mete estos ev<strong>en</strong>tos directam<strong>en</strong>te <strong>en</strong> la cola para que la aplicación<br />

las maneje.<br />

Este mecanismo permite:<br />

• Al Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros comunicarse con la aplicación.<br />

• A los filtros comunicarse con la aplicación y con el Manejador <strong>de</strong>l Gráfico <strong>de</strong><br />

filtros.<br />

• A la aplicación <strong>de</strong>terminar su grado <strong>de</strong> involucrami<strong>en</strong>to <strong>en</strong> el manejo <strong>de</strong> ev<strong>en</strong>tos.<br />

3.8.4.1 Capturando Ev<strong>en</strong>tos<br />

El Manejador <strong>de</strong>l gráfico <strong>de</strong> filtros expone tres interfaces que soportan la<br />

notificación <strong>de</strong> ev<strong>en</strong>tos.<br />

IMediaEv<strong>en</strong>tSink conti<strong>en</strong>e los métodos para que los filtros <strong>en</strong>ví<strong>en</strong> ev<strong>en</strong>tos.<br />

IMediaEv<strong>en</strong>t conti<strong>en</strong>e métodos para que las aplicaciones captur<strong>en</strong> ev<strong>en</strong>tos.<br />

IMediaEv<strong>en</strong>tEx hereda <strong>de</strong>s<strong>de</strong> y exti<strong>en</strong><strong>de</strong> la interfaz IMediaEv<strong>en</strong>t.<br />

Los filtros <strong>en</strong>vían notificaciones <strong>de</strong> ev<strong>en</strong>tos mediante la llamada al método<br />

IMediaEv<strong>en</strong>tSink::Notify <strong>en</strong> el Manejador <strong>de</strong>l Gráfico <strong>de</strong> filtros, y dos parámetros<br />

DWORD que dan información adicional. Dep<strong>en</strong>di<strong>en</strong>do <strong>de</strong>l código <strong>de</strong>l ev<strong>en</strong>to, los<br />

parámetros pue<strong>de</strong>n cont<strong>en</strong>er apuntadores, regresar códigos, <strong>tiempo</strong>s <strong>de</strong> refer<strong>en</strong>cia, u otra<br />

información.<br />

Para obt<strong>en</strong>er un ev<strong>en</strong>to <strong>de</strong> una cola la aplicación llama al método<br />

IMediaEv<strong>en</strong>t::GetEv<strong>en</strong>t <strong>en</strong> el Manejador <strong>de</strong>l Gráfico <strong>de</strong> filtros. Este método se bloquea<br />

hasta que regrese un ev<strong>en</strong>to o hasta que pase un lapso <strong>de</strong> <strong>tiempo</strong> especificado. Asumi<strong>en</strong>do<br />

que hay un ev<strong>en</strong>to <strong>en</strong>colado, el método regresa con el código <strong>de</strong>l ev<strong>en</strong>to y los dos<br />

parámetros <strong>de</strong>l ev<strong>en</strong>to. Después <strong>de</strong> llamar a GetEv<strong>en</strong>t, una aplicación <strong>de</strong>be siempre llamar<br />

al método IMediaEv<strong>en</strong>t::FreeEv<strong>en</strong>tParams para actualizar cualquier recurso asociado

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

Saved successfully!

Ooh no, something went wrong!