Partager via


Formats et plages de données KS

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 le format principal, le sous-format et les membres du spécificateur KSDATARANGE.

Les minidrivers utilisent des versions étendues de ces structures pour définir des valeurs spécifiques aux médias. Pour en savoir plus sur le fonctionnement de cette fonctionnalité dans 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 des formats de données des broches instanciées par une fabrique de broches donnée au niveau du filtre.

  • KSPROPERTY_PIN_DATARANGES. Le filtre KS signale toutes les plages de données prises en charge par les broches instanciées par l'usine de broches. Cela inclut tous les formats de données que la broche peut toujours 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, en fonction de l’état actuel du pilote interne.

  • KSPROPERTY_PIN_PROPOSEDATAFORMAT. Les clients peuvent utiliser cette propriété pour vérifier si les broches créées par le générateur de broches prennent en charge un format de données spécifique.

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

Une fois qu’une broche est instanciée, un client en mode utilisateur peut déterminer le format des données actuel ou demander une modification du format via des requêtes de propriétés KSPROPSETID_Connection. Par exemple, le client utilise KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT pour déterminer si une broche supporte 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 les 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.