Selección de un formato de secuencia

Los dispositivos de captura de vídeo pueden capturar vídeo en varios formatos diferentes. La estructura KSDATARANGE se usa para transmitir información sobre el ancho, la altura, la granularidad, el recorte y las velocidades de fotogramas de un espacio de color determinado. Las estructuras KS_DATARANGE_VIDEO y KS_DATARANGE_VIDEO2 son extensiones de la estructura KSDATARANGE y deben usarse para describir formatos de captura de vídeo. Use KS_DATARANGE_VIDEO para describir solo fotogramas de vídeo. Use KS_DATARANGE_VIDEO2 para describir los campos de vídeo y los fotogramas de vídeo, con o sin bob o sin configuración de weave.

El proceso de selección de un formato de secuencia se denomina realización de una intersección de datos. La interfaz de clase Stream envía una solicitud de SRB_GET_DATA_INTERSECTION a un minidriver de clase Stream para realizar una intersección de datos. El minidriver es responsable de determinar la validez del intervalo de datos solicitado y, a continuación, seleccionar un formato de secuencia determinado del intervalo de datos proporcionado, normalmente usando estructuras KS_DATAFORMAT_VIDEOINFOHEADER o KS_DATAFORMAT_VIDEOINFOHEADER2 .

Por último, el minidriver debe establecer determinados miembros del formato resultante, como se muestra a continuación:

.
.
.
// Calculate biSizeImage for this request, and put the result in both
// the biSizeImage field of the bmiHeader AND in the SampleSize field
// of the DataFormat.
//
// Note that for compressed sizes, this calculation will probably not
// be just width * height * bitdepth
 
DataFormatVideoInfoHeaderOut->VideoInfoHeader.bmiHeader.biSizeImage =
DataFormatVideoInfoHeaderOut->DataFormat.SampleSize = 
KS_DIBSIZE(DataFormatVideoInfoHeaderOut->VideoInfoHeader.bmiHeader);
.
.