Partager via


Formats de données KS et plages de données

Les broches KS spécifient des formats de données et des plages à l’aide des structures KSDATAFORMAT et KSDATARANGE . Un format de données spécifie un attribut unique d’un flux de données, par exemple une taille d’échantillonnage audio de 16 bits. Une plage de données spécifie plusieurs formats, par exemple une plage d’échantillonnage audio de 16 à 24 bits.

Un minidriver inclut un tableau de structures KSDATARANGE dans chaque structure KSPIN_DESCRIPTOR qu’il fournit. Les formats fournis par Microsoft sont énumérés dans ksmedia.h.

Une structure KSDATARANGE a les mêmes membres qu’une structure KSDATAFORMAT ; Toutefois, le minidriver peut spécifier des valeurs génériques pour les principaux membres du format, du sous-format et du spécificateur de KSDATARANGE.

Les mini-lecteurs utilisent des versions étendues de ces structures pour définir des valeurs spécifiques au média. Pour en savoir plus sur le fonctionnement de la capture audio et vidéo, consultez Formats de données audio et plages de données et Sélection d’un format de flux.

Les clients utilisent les propriétés suivantes pour interroger la prise en charge du format de données des broches instanciées par une fabrique d’épingles donnée sur le filtre :

  • KSPROPERTY_PIN_DATARANGES. Le filtre KS signale toutes les plages de données prises en charge par les broches instanciées par la fabrique de broches. Cela inclut tous les formats de données que l’épingle peut prendre en charge.

  • KSPROPERTY_PIN_CONSTRAINEDDATARANGES. Le filtre KS signale toutes les plages de données prises en charge par les broches instanciées par la fabrique de broches, compte tenu de l’état actuel du pilote interne.

  • KSPROPERTY_PIN_PROPOSEDATAFORMAT. Les clients peuvent utiliser cette propriété pour interroger si les broches instanciées par la fabrique d’épingles prennent en charge un format de données spécifique.

  • KSPROPERTY_PIN_DATAINTERSECTION. Les clients peuvent utiliser cette propriété pour proposer une gamme de formats de données.

Une fois qu’une broche est instanciée, un client en mode utilisateur peut déterminer le format de données actuel ou demander un changement de format de données via KSPROPSETID_Connection demandes de propriété. Par exemple, le client utilise KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT pour déterminer si une broche prend en charge un format de données donné. Le client utilise KSPROPERTY_CONNECTION_DATAFORMAT pour modifier le format des données.

Les minidrivers et les clients KS peuvent négocier dynamiquement des formats de données. Lorsque le format de données d’un flux change, le minidriver spécifie l’indicateur KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY dans le membre OptionsFlags d’un KSSTREAM_HEADER. Le minidriver transmet le nouveau format de données lui-même, décrit dans une structure KSDATAFORMAT , dans la mémoire tampon de données correspondante.