Formati di dati KS e intervalli di dati
I pin KS specificano formati di dati e intervalli usando le strutture KSDATAFORMAT e KSDATARANGE . Un formato di dati specifica un singolo attributo di un flusso di dati, ad esempio una dimensione di campionamento audio di 16 bit. Un intervallo di dati specifica più formati, ad esempio un intervallo di campionamento audio di 16-24 bit.
Un minidriver include una matrice di strutture KSDATARANGE in ogni struttura KSPIN_DESCRIPTOR fornita. I formati forniti da Microsoft vengono enumerati in ksmedia.h.
Una struttura KSDATARANGE ha gli stessi membri di una struttura KSDATAFORMAT; Tuttavia, il minidriver può specificare valori jolly per il formato principale, il sottoformato e i membri dell'identificatore di KSDATARANGE.
I minidriver usano versioni estese di queste strutture per definire valori specifici dei supporti. Per informazioni su come funziona nell'acquisizione audio e video, vedere: Formati di dati audio e intervalli di dati eselezione di un formato di flusso.
I client usano le proprietà seguenti per eseguire query sul supporto del formato dati dei pin creata da una determinata pin factory nel filtro:
KSPROPERTY_PIN_DATARANGES. Il filtro KS segnala tutti gli intervalli di dati supportati dai pin generati dalla pin factory. Ciò include ogni formato di dati che il pin può mai supportare.
KSPROPERTY_PIN_CONSTRAINEDDATARANGES. Il filtro KS segnala tutti gli intervalli di dati supportati dai pin generati dalla pin factory, in base allo stato del driver interno corrente.
KSPROPERTY_PIN_PROPOSEDATAFORMAT. I client possono usare questa proprietà per eseguire una query se le aggiunte create dall'istanza della pin factory supportano un formato di dati specifico.
KSPROPERTY_PIN_DATAINTERSECTION. I client possono usare questa proprietà per offrire un intervallo di formati di dati.
Dopo aver creato un'istanza di un pin, un client in modalità utente può determinare il formato dati corrente o richiedere una modifica del formato dati tramite KSPROPSETID_Connection richieste di proprietà. Ad esempio, il client usa KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT per determinare se un pin supporta un determinato formato di dati. Il client usa KSPROPERTY_CONNECTION_DATAFORMAT per modificare il formato dei dati.
I minidriver e i client KS possono negoziare in modo dinamico i formati di dati. Quando il formato dati di un flusso viene modificato, il minidriver specifica il flag di KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY nel membro OptionsFlags di un KSSTREAM_HEADER. Il minidriver passa il nuovo formato dati, descritto in una struttura KSDATAFORMAT , nel buffer di dati corrispondente.