Intersecciones de intervalos de datos en AVStream

Un formato de datos es un único conjunto de parámetros que describen algún aspecto de una conexión. Por ejemplo, un formato de datos de audio podría especificar un determinado formato de audio en muestras X por segundo e Y bits por muestra.

Un intervalo de datos especifica una secuencia de parámetros válidos. Por ejemplo, un intervalo de datos de audio podría especificar un determinado formato de audio en muestras A-B por segundo y bits C-D por ejemplo.

El minidriver proporciona una lista de intervalos de datos que admite para un pin específico en el miembro DataRanges de la estructura de KSPIN_DESCRIPTOR correspondiente.

En AVStream, los minidrivers pueden proporcionar sus propios controladores de intersección de intervalo de datos proporcionando un puntero a una rutina de devolución de llamada proporcionada por minidriver en el miembro IntersectHandler de un KSPIN_DESCRIPTOR_EX. Para permitir que AVStream intersece los intervalos, establezca este miembro en NULL. Consulte AVStrMiniIntersectHandlerEx para obtener información sobre cómo definir la rutina de devolución de llamada.

Si un minidriver proporciona un controlador intersect, cuando es necesario realizar una intersección, el minidriver recibe dos intervalos de datos que coinciden con el tipo principal, el subformato y el especificador. Además, los atributos necesarios de los intervalos de datos coinciden.

Si los intervalos se intersecan y se proporciona suficiente espacio de búfer en el parámetro Data de la rutina de devolución de llamada AVStrMiniIntersectHandlerEx , la rutina de intersección elige un formato en la intersección y lo devuelve al autor de la llamada en el búfer al que apunta Data.

Si los dos intervalos de datos no se intersecan, el controlador devuelve STATUS_NO_MATCH.

Si el minidriver ha especificado un envío AVStrMiniPinSetDataFormat , AVStream llama a este envío para informar al minidriver de que AVStream está estableciendo un formato específico en el pin. Proporcione un puntero a la rutina de devolución de llamada AVStrMiniPinSetDataFormat en el miembro SetDataFormat de la estructura KSPIN_DISPATCH . (Los minidrivers que son clientes de la clase de secuencia reciben SRB_SET_DATA_FORMAT en lugar de AVStrMiniPinSetDataFormat).

El minidriver puede rechazar un formato propuesto devolviendo STATUS_NO_MATCH de AVStrMiniPinSetDataFormat.

Además de la llamada inicial a AVStrMiniPinSetDataFormat antes de crear el pin, el minidriver podría recibir una segunda llamada AVStrMiniPinSetDataFormat justo antes de que el pin pase al estado RUN. Si el cliente de clase AVStream o stream es un minidriver de captura de vídeo y recibe dicha notificación, este envío contiene los parámetros de superficie reales. Si es posible, el minidriver no debe producir un error en este segundo cambio de formato. No suponga que se producirá una segunda llamada de envío.

El minidriver debe capturar datos en cualquier formato contenido en el último envío avStrMiniPinSetDataFormat correcto.