Выбор формата потока
Устройства захвата видео могут записывать видео в различных форматах. Структура KSDATARANGE используется для передачи сведений о ширине, высоте, гранулярности, обрезке и частоте кадров для определенного цветового пространства. Структуры KS_DATARANGE_VIDEO и KS_DATARANGE_VIDEO2 являются расширениями структуры KSDATARANGE и должны использоваться для описания форматов захвата видео. Используйте KS_DATARANGE_VIDEO для описания только видеокадров. Используйте KS_DATARANGE_VIDEO2 для описания полей видео и видеокадров с параметрами bob или плетения или без нее.
Процесс выбора формата потока называется выполнением пересечения данных. Интерфейс класса Stream отправляет запрос SRB_GET_DATA_INTERSECTION в мини-хранилище класса Stream для выполнения пересечения данных. Мини-диск отвечает за определение допустимости запрошенного диапазона данных, а затем за выбор определенного формата потока из предоставленного диапазона данных, обычно используя KS_DATAFORMAT_VIDEOINFOHEADER или KS_DATAFORMAT_VIDEOINFOHEADER2 структуры.
Наконец, мини-диск должен задать определенные элементы результирующего формата, как показано ниже:
.
.
.
// 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);
.
.