Freigeben über


Auswählen eines Streamformats

Videoaufzeichnungsgeräte können Videos in verschiedenen Formaten aufnehmen. Die KSDATARANGE-Struktur wird verwendet, um Informationen zu Breite, Höhe, Granularität, Zuschneiden und Bildraten für einen bestimmten Farbraum zu übermitteln. Die Strukturen KS_DATARANGE_VIDEO und KS_DATARANGE_VIDEO2 sind Erweiterungen der KSDATARANGE-Struktur und sollten zum Beschreiben von Videoaufnahmeformaten verwendet werden. Verwenden Sie KS_DATARANGE_VIDEO, um nur Videoframes zu beschreiben. Verwenden Sie KS_DATARANGE_VIDEO2, um Videofelder und Videoframes mit oder ohne Bob- oder Webeinstellungen zu beschreiben.

Der Prozess der Auswahl eines Datenstromformats wird als Ausführen einer Datenschnittmenge bezeichnet. Die Stream-Klassenschnittstelle sendet eine SRB_GET_DATA_INTERSECTION Anforderung an einen Stream-Klassenminidriver, um eine Datenüberschneidung durchzuführen. Der Minidriver bestimmt die Gültigkeit des angeforderten Datenbereichs und wählt dann ein bestimmtes Datenstromformat aus dem angegebenen Datenbereich aus, wobei normalerweise KS_DATAFORMAT_VIDEOINFOHEADER - oder KS_DATAFORMAT_VIDEOINFOHEADER2-Strukturen verwendet werden.

Schließlich muss der Minidriver bestimmte Elemente des resultierenden Formats wie unten gezeigt festlegen:

.
.
.
// 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);
.
.