Selezione di un formato di flusso

I dispositivi di acquisizione video possono acquisire video in diversi formati. La struttura KSDATARANGE viene usata per trasmettere informazioni sulla larghezza, l'altezza, la granularità, il ritaglio e la frequenza dei fotogrammi per uno spazio di colore specifico. Le strutture KS_DATARANGE_VIDEO e KS_DATARANGE_VIDEO2 sono estensioni della struttura KSDATARANGE e devono essere usate per descrivere i formati di acquisizione video. Usare KS_DATARANGE_VIDEO solo per descrivere i fotogrammi video. Usare KS_DATARANGE_VIDEO2 per descrivere i campi video e i fotogrammi video, con o senza impostazioni bob o weave.

Il processo di selezione di un formato di flusso viene chiamato esecuzione di un'intersezione dei dati. L'interfaccia della classe Stream invia una richiesta di SRB_GET_DATA_INTERSECTION a un minidriver di classe Stream per eseguire un'intersezione dei dati. Il minidriver è responsabile della determinazione della validità dell'intervallo di dati richiesto e quindi della selezione di un determinato formato di flusso dall'intervallo di dati fornito, in genere usando KS_DATAFORMAT_VIDEOINFOHEADER o KS_DATAFORMAT_VIDEOINFOHEADER2 strutture.

Infine, il minidriver deve impostare determinati membri del formato risultante, come illustrato di seguito:

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