Effets APO déchargés sur le matériel

Dans Windows 10 version 1511 et ultérieures, le déchargement d’objets de traitement audio (APO) est pris en charge. En plus des améliorations possibles des performances, il existe d’importantes économies d’énergie possibles lors de l’utilisation d’API déchargées par le matériel.

Deux types d’API peuvent être chargés pendant la lecture du déchargement matériel.

  1. Effets de flux de déchargement (OSFX)
  2. Effets du mode de déchargement (OMFX)

Vue d’ensemble des effets APO déchargés sur le matériel

Api de traitement audio déchargé par le matériel et d’api de déchargement matériel

Dans Windows 8, le moteur audio a été repensé pour fonctionner avec des flux audio qui ont été déchargés vers un appareil matériel qui est distinct du système audio main de l’ordinateur, mais connecté à celui-ci. C’est ce qu’on appelle le déchargement matériel. Pour plus d’informations, consultez Traitement audio déchargé par le matériel.

La fonctionnalité de déchargement matériel est principalement destinée aux scénarios de faible consommation d’énergie avec des tailles de mémoire tampon plus grandes. Par exemple, pendant la lecture LPA (Low Power Audio) dans les systèmes compatibles, la taille ou la périodicité de la mémoire tampon audio peut être définie sur 1 seconde afin que le processeur ne se réveille pas fréquemment pour traiter les petites mémoires tampons (par exemple, toutes les 10 millisecondes).

L’implémentation d’API matérielles déchargées avec le traitement audio déchargé par le matériel offre la possibilité d’optimiser l’efficacité énergétique.

Le diagramme suivant montre l’architecture des objets de traitement audio. Le côté droit du diagramme montre une application communiquant vers le bas avec les effets OSFX et OMFX déchargés par le matériel.

Diagramme montrant l’architecture du pilote audio avec l’application communiquant avec des effets OSFX et OMFX déchargés, des pilotes et du matériel audio déchargés.

Implémentation des effets APO déchargés du matériel

Une APO déchargée du matériel doit respecter les mêmes exigences de base et les mêmes principes de conception décrits dans Architecture d’objet de traitement audio et implémentation d’objets de traitement audio.

Instructions d’implémentation de format audio prises en charge

Pour les API déchargées par le matériel, vous devez tenir compte des formats audio pris en charge.

Chaque APO implémente la méthode IAudioProcessingObject ::IsInputFormatSupported qui est utilisée lors de la génération de graphiques audio pour déterminer le format audio de sortie et si une conversion de format est nécessaire.

HRESULT IsInputFormatSupported(
  [in, optional]  IAudioMediaType *pOppositeFormat,
  [in, optional]  IAudioMediaType *pRequestedInputFormat,
  [out, optional] IAudioMediaType **ppSupportedInputFormat
);

Le point de terminaison de rendu de déchargement peut prendre en charge divers formats, y compris le format par défaut pris en charge par le rendu du code pin hôte/système. Une apo de déchargement doit prendre en charge tous ces formats afin que les flux de rendu (avec les formats pris en charge) n’aient pas à passer par une conversion de format supplémentaire.

Un SFX de déchargement peut implémenter des conversions de format et accepter un plus large éventail de formats. Par exemple, si offload SFX fournit des virtualisations de casque (c’est-à-dire, convertir l’audio de 5.1 canaux en stéréo), il doit retourner S_OK pour la paire entrée/sortie appropriée dans cette méthode.

Un SFX de déchargement doit passer en revue les formats de broche de déchargement pris en charge et prendre en charge/étendre les fonctionnalités ensemble.

Décharger MFX ne peut pas modifier le format du flux d’entrée, mais il doit tout de même prendre en charge la variété des formats offerts par le point de terminaison de déchargement et éliminer toute conversion de format inutile.

Pendant le rendu dans la broche de déchargement, un seul flux est actif sur cette broche et il n’y a donc aucun mélange de flux. Par conséquent, le traitement de l’audio au niveau du flux et au niveau du mode n’est pas nécessaire. Par conséquent, les effets audio peuvent ne pas avoir besoin d’être activés à la fois comme effet de flux et effet de mode. Les points de terminaison déchargés prennent en charge davantage de flux et, selon l’architecture de traitement d’un système, le traitement du déchargement peut être pris en compte dans SFX/MFX.

Entrées de fichier INF

Implémentez les entrées de fichier INF suivantes pour définir les effets qui seront chargés pendant la lecture du déchargement. La clé de propriété de fichier INF indique au générateur de point de terminaison audio de définir les CLSID pour les API déchargées dans le magasin de propriétés d’effets. Ces informations sont utilisées pour générer le graphique audio qui sera utilisé pour informer les applications de niveau supérieur sur les effets en place.

Clé de propriété GUID
PKEY_FX_Offload_StreamEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},11
PKEY_FX_Offload_ModeEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},12
PKEY_SFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},11
PKEY_MFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},12

Implémentation d’objets de traitement audio
Objets de traitement audio Windows