Partager via


Filtre système AEC

Le filtre système AEC (Aec.sys) implémente les algorithmes d’annulation d’écho acoustique (AEC) et de suppression de bruit (NS) dans les logiciels. Ce filtre est un composant de système d’exploitation standard dans Windows XP et versions ultérieures. Pour plus d’informations sur la façon dont les applications DirectSoundCapture activent l’utilisation du filtre système AEC, consultez la documentation du Kit de développement logiciel (SDK) Microsoft Windows.

Contraintes imposées par le filtre système AEC

Un graphique de filtre audio qui incorpore un effet de capture implémenté dans le filtre système AEC est soumis aux restrictions suivantes :

  • Le filtre système AEC ne peut se connecter qu’aux broches qui gèrent les formats de données PCM.

  • La profondeur du bit doit être de 16 bits pour le flux de capture et 8 ou 16 bits pour le flux de rendu.

  • Le filtre système AEC effectue tout le traitement interne à 16 kHz. Les flux d'entrée et de sortie sont convertis en fonction du taux de source selon les besoins.

  • Dans Windows XP SP1, Windows Server 2003 et versions ultérieures, les broches de capture et de rendu du filtre système AEC (voir la figure suivante) doivent avoir le même taux d’échantillonnage, mais les taux d’échantillonnage aux broches de capture et de rendu peuvent être sélectionnés indépendamment des autres broches. Le taux d’échantillonnage à la broche de capture peut être (par ordre de préférence) 16 kHz, 48 kHz, 44,1 kHz ou 8 kHz. (L’ordre de préférence est basé sur le temps de traitement et la qualité audio.) Le taux d’échantillonnage à la broche de rendu peut être (par ordre de préférence) 16 kHz, 48 kHz ou 44,1 kHz. Notez que la broche de sortie ne prend pas en charge un taux d’échantillonnage de 8 kHz.

Diagramme illustrant les broches et connexions d’un filtre système AEC.

  • Les nœuds AEC et NS (voir figure dans Exposing Hardware-Accelerated Capture Effects) peuvent gérer uniquement les flux monophoniques. Si le flux de capture est multicanal (par exemple, stéréo à deux canaux), tous les canaux autres que le premier sont ignorés (et supprimés). Seuls les flux monophoniques peuvent être traités par le module de rendu.

  • Dans Windows XP SP1, Windows Server 2003 et versions ultérieures, cette limitation n’existe pas. Le filtre système AEC gère correctement les incompatibilités entre les horloges pour les flux de capture et de rendu, et des appareils distincts peuvent être utilisés pour la capture et le rendu.

  • Lorsque le filtre système AEC est utilisé, le pilote système SysAudio désactive l’accélération matérielle pour le mélange, la conversion de taux d’échantillonnage, la spatialisation 3D, et ainsi de suite. Tout le mixage des flux est effectué dans l'émulation logicielle par le pilote système KMixer. Cette restriction est nécessaire pour s’assurer que tout l’audio lu par l’appareil de rendu peut être annulé hors du flux de capture par le filtre système AEC.

  • Tout traitement de signal effectué avant le nœud AEC ou NS côté capture du graphique ou après le nœud AEC ou NS côté rendu doit être invariant de temps linéaire. L’exécution d’un traitement non linéaire ou variable du signal dans l'un ou l'autre de ces emplacements empêche l’AEC d’annuler l’écho dans le signal de capture.

  • Le filtrage AEC annule uniquement les échos provenant des canaux filtrés par AEC sur votre ordinateur. L’audio qui est sorti par des canaux ne passant pas par l'AEC n’est pas annulé d’écho. Les échos dans un canal audio non-AEC sont fonctionnellement équivalents aux échos dans l’audio qui est lu sur une radio dans le bureau à côté de votre ordinateur. AEC n’a aucun effet sur (et aucun moyen d’annuler) les échos provenant d’une radio ou d’un canal non-AEC.

Les exigences précédentes s’appliquent à tous les graphiques de filtre audio en streaming du noyau qui incorporent des effets de capture implémentés dans Aec.sys. Ces restrictions reflètent les hypothèses fondamentales dans la conception et l’implémentation du filtre système AEC. Les contraintes sur les formats de flux peuvent changer dans les futures versions de Windows.

Toute conception de produit qui utilise le filtre système AEC doit prendre en compte les contraintes précédentes. Les questions et réponses suivantes montrent comment ces contraintes peuvent affecter le comportement de filtrage AEC :

Q : J’ai créé une mémoire tampon DirectSound pour le rendu stéréo, mais les deux canaux sonnent de la même façon quand j’utilise AEC. Pourquoi ?

R : AEC fonctionne uniquement sur les flux mono, donc KMixer mélange le flux stéréo à mono pour répondre à cette contrainte.

Q : Pourquoi mon audio en 44 kHz et 16 bits paraît être de 16 kHz quand j’utilise l’AEC ?

R : Étant donné que le filtre système AEC effectue tout le traitement interne à 16 kHz.

Q : Pourquoi ne puis-je pas obtenir une mémoire tampon DirectSound accélérée par le matériel avec AEC ?

R : Étant donné que SysAudio désactive le mélange à accélération matérielle quand AEC est activé.

Q : Le filtre système AEC fonctionnera-t-il avec mon ancienne carte Sound Blaster 16 ?

R : Oui. Bien que la carte Sound Blaster16 ne puisse pas gérer simultanément les flux de rendu et de capture 16 bits, elle peut gérer simultanément un flux de rendu 8 bits et un flux de capture 16 bits, ce qui est une combinaison que les broches de sortie de rendu et d'entrée de capture du filtre système AEC prennent en charge. De nouvelles cartes audio doivent être conçues pour prendre en charge les profondeurs de bits d’au moins 16 bits pour le rendu et la capture.

Résumé des formats de données pour les broches AEC

Une application DirectSound qui active le filtre système AEC peut configurer ses mémoires tampons DirectSound en choisissant parmi n'importe quel taux d'échantillonnage ou taille d'échantillon pris en charge par KMixer. KMixer convertit les données provenant de la mémoire tampon de rendu de l’application en un format mono 16 bits à 16 kHz avant qu’elles n’entrent dans le filtre du système AEC. De même, KMixer peut convertir les données destinées à la mémoire tampon de capture d’une application DirectSoundCapture en format mono 16 bits de 16 kHz après avoir quitté le filtre système AEC. Toutefois, pour réduire la quantité de traitement effectuée dans le graphique et atteindre la qualité audio la plus élevée, les applications doivent utiliser un format mono 16 bits de 16 kHz pour le rendu et les mémoires tampons de capture.

Si vous souhaitez que votre matériel audio fonctionne avec le filtre système AEC, la broche de rendu matérielle doit prendre en charge au moins l’un des taux d’échantillonnage pris en charge par la broche de rendu AEC, et la broche de capture matérielle doit prendre en charge l’un des taux d’échantillonnage pris en charge par la broche de capture AEC. Pour obtenir les meilleures performances AEC, votre matériel doit prendre en charge un taux d’échantillonnage de 16 kHz en plus des taux plus élevés qu’il prend en charge. En prenant en charge le débit de 16 kHz, le matériel réduit la quantité de traitement que le filtre système AEC doit effectuer en éliminant la nécessité d’effectuer une conversion de taux d’échantillonnage.

La broche d'entrée de rendu du filtre système AEC se connecte à la broche de sortie de KMixer. KMixer effectue la conversion nécessaire de ses flux d’entrée au format requis par la broche d'entrée de rendu. La broche d'entrée de rendu ne prend en charge que deux formats de données :

  • Format PCM mono de 16 kHz avec une taille d’échantillon de 16 bits

  • Format PCM mono de 16 kHz avec une taille d’échantillon de 8 bits

La broche de capture-out ne prend en charge qu’un seul format :

  • Format PCM mono de 16 kHz avec une taille d’échantillon de 16 bits

Si le format de mémoire tampon de l’application DirectSoundCapture est 16 kHz mono 16 bits PCM, la broche de capture AEC peut contourner KMixer et se connecter directement à DSound.DLL (voir la figure précédente). Autrement, la broche de sortie de capture AEC se connecte à KMixer, qui convertit le flux PCM mono 16 bits à partir de la broche dans le format utilisé par le tampon de capture de l'application.

La broche de rendu AEC peut gérer l’un des formats suivants :

  • PCM 16 bits de 16 kHz avec deux canaux (stéréo)

  • PCM 16 kHz 8 bits avec deux canaux

  • PCM 16 bits 48 kHz avec deux canaux

  • PCM 8 bits de 48 kHz avec deux canaux

  • PCM 44,1 kHz 16 bits avec deux canaux

  • PCM 44,1 kHz 8 bits avec deux canaux

La broche de rendu produit un flux stéréo en copiant le canal unique à partir du nœud AEC dans les deux canaux du flux de sortie.

La broche de capture peut traiter l’un des formats suivants :

  • PCM 16 bits de 16 kHz avec n’importe quel nombre de canaux

  • PCM 16 bits de 48 kHz avec n’importe quel nombre de canaux

  • PCM 44,1 kHz 16 bits avec n’importe quel nombre de canaux

  • PCM 16 bits de 8 kHz avec n’importe quel nombre de canaux

La broche de capture utilise uniquement le premier canal et ignore (et jette) les autres.

Toutes les broches du filtre système AEC utilisent les valeurs de paramètre de format de données indiquées dans le tableau suivant.

Membre KSDATARANGE Valeur du paramètre

MajorFormat

KSDATAFORMAT_TYPE_AUDIO

Sous-format

KSDATAFORMAT_SUBTYPE_PCM

Spécificateur

KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

Pour plus d’informations sur les membres MajorFormat, SubFormat et Spécificateur , consultez KSDATARANGE. Pour obtenir un exemple de descripteur de plage de données KSDATARANGE_AUDIO qui utilise ces trois valeurs de paramètre, consultez la plage de données de flux PCM.