Compartir a través de


Relojes maestros

Los minicontroladores pueden sincronizar secuencias con los relojes creados por otros minidrivers; varias secuencias se pueden sincronizar con un reloj. Si el pin usa o genera un reloj maestro de este tipo, el minidriver debe admitir KSPROPERTY_STREAM_MASTERCLOCK. Los clientes también pueden usar esta propiedad para establecer el reloj maestro del pin. Los anclajes que realizan operaciones de representación y captura suelen usar un reloj maestro. El minidriver es responsable de liberar referencias de reloj tras la finalización.

La interfaz de un reloj maestro es un objeto de archivo que admite métodos, propiedades y eventos.

Todas las consultas en el objeto de archivo solo están disponibles en PASSIVE_LEVEL. Sin embargo, la consulta de posición del reloj también se admite a través de un puntero de llamada de función directa disponible en DISPATCH_LEVEL, que es válido siempre que el objeto de archivo sea válido. Esta llamada directa debe pasarse al objeto de archivo del reloj como parámetro de contexto.

El identificador de archivo se adquiere a través de una solicitud de creación en una instancia de patilla de filtro, mientras que la creación de patillas se realiza mediante IRP_MJ_CREATE. La solicitud hace que se cree un identificador de archivo, al igual que se crea un identificador de archivo en una patilla, con su propia información de contexto. A continuación, este identificador de archivo se devuelve al autor de la llamada y se puede usar para establecer el reloj maestro para los filtros en modo kernel. En el momento en que se asigna el filtro al reloj maestro del grafo, una instancia de pin puede consultar el objeto de archivo primario para determinar si posee el reloj maestro.

Cuando se asigna un filtro al identificador de archivo a este reloj maestro, se puede usar para consultar las propiedades. Si un reloj maestro se basa en un filtro en modo kernel, debe admitir una interfaz para consultar el identificador de archivo a la parte del modo kernel del reloj maestro. Si no se admite la interfaz, se supone que el reloj está basado en modo de usuario y que los filtros en modo kernel no se pueden sincronizar con él.

El filtro proxy DirectShow que solicita el identificador de reloj maestro lo pasa a su identificador de archivo de filtro en modo kernel subyacente. El filtro en modo kernel hace referencia al objeto de archivo subyacente. Si el filtro ya tenía un reloj maestro, desreferencia el objeto de archivo y usa el nuevo identificador. Para ello, el filtro debe estar en estado Stop.

La hora física del objeto de reloj maestro se basa con frecuencia en hardware. Si un filtro que presenta el reloj maestro no tiene reloj físico, el tiempo de la secuencia progresa según las marcas de tiempo de los datos presentados. En tal situación, las marcas de tiempo pueden detenerse debido a la falta de datos.

El tiempo físico detrás del reloj maestro puede ser remoto, en cuyo caso es responsabilidad del proxy local proporcionar lecturas precisas. Por ejemplo, el proxy tiene la responsabilidad de compensar el retraso en una conexión de 1394 o de promediar el retraso a través de una red. Además, si algún otro filtro de kernel es un proxy para un segundo dispositivo en el mismo bus de 1394, los dos dispositivos pueden negociar un método privado de interacción con el reloj maestro. En tal caso, los dispositivos deben usar interfaces privadas para determinar el tipo de reloj con el fin de comprobar la compatibilidad.