Partager via


Pour utiliser le contrôle de plage dynamique

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La plage dynamique d’un élément de contenu audio est essentiellement la différence entre le volume le plus bas et le volume maximal. Si la plage dynamique du contenu est trop élevée, les utilisateurs peuvent se retrouver à ajuster le volume à plusieurs reprises pendant la lecture. Par exemple, les films ont souvent une plage dynamique élevée. Souvent, lorsque le volume est ajusté pour que le dialogue puisse être compris pendant les scènes calmes, d’autres parties du film avec de la musique ou des effets sonores sont plus forts que souhaité.

Les codecs Windows Media Audio 9 Professionnel et Windows Media Audio 9 sans perte prennent en charge une fonctionnalité appelée contrôle de plage dynamique. Au moment de l’encodage, le codec calcule les valeurs d’amplitude maximale et moyenne dans le contenu, et l’objet writer stocke ces valeurs dans les métadonnées du flux lorsque l’encodage est terminé. Si vous le souhaitez, une application peut également écrire des valeurs « cibles » en tant que métadonnées que les applications de lecteur et le décodeur peut utiliser comme indicateurs lors de la lecture du fichier. Au moment de la lecture, une application peut spécifier le niveau de contrôle de plage dynamique à appliquer au flux audio.

Lecteur multimédia Windows implémente le contrôle de plage dynamique en tant que fonctionnalité Mode silencieux.

Quand utiliser le contrôle de plage dynamique

Le contrôle de plage dynamique peut modifier le son du contenu. Pour cette raison, vous ne devez pas configurer votre application pour utiliser automatiquement le contrôle de plage dynamique. Au lieu de cela, fournissez aux utilisateurs la possibilité d’activer ou de désactiver le contrôle de plage dynamique en fonction des besoins.

Utilisation du contrôle de plage dynamique

Au moment de la lecture, le contrôle de plage dynamique est activé à l’aide du paramètre de sortie g_wszDynamicRangeControl. Utilisez IWMReaderAdvanced2::SetOutputSetting pour configurer le paramètre. La valeur zéro (valeur par défaut) indique que la plage dynamique ne doit pas être modifiée. Une valeur 1 ou 2 indique au codec d’effectuer un contrôle de plage dynamique, où 1 est un niveau modéré de compression de plage dynamique et 2 est un niveau élevé de compression de plage dynamique.

Au moment de l’encodage ou de la lecture, vous pouvez donner les valeurs PCM cibles du codec pour les niveaux de pointe et de moyenne en définissant les attributs WM/WMADRCPeakTarget et WM/WMADRCAverageTarget , respectivement. Ces valeurs sont stockées en tant qu’attributs de métadonnées et doivent être accessibles à l’aide des méthodes de l’interface IWMHeaderInfo3 . Lorsque vous encodez un flux audio à l’aide du codec professionnel ou sans perte, les attributs WM/WMADRCPeakReference et WM/WMADRCAverageReference sont automatiquement définis sur les niveaux de pointe et de moyenne du contenu d’origine. Les valeurs cibles sont définies sur les mêmes valeurs que les références par défaut.

Le décodeur au moment de la lecture calcule la plage dynamique en fonction du niveau sélectionné de contrôle de plage dynamique et des valeurs cibles (le cas échéant). Les plages possibles sont indiquées dans le tableau suivant.

Paramètres Plage de l’audio fourni
g_wszDynamicRangeControl = 0 (toutes les valeurs cibles) Même plage que le contenu d’origine.
g_wszDynamicRangeControl = 1 (Valeurs cibles égales aux valeurs de référence) Le niveau moyen est maintenu et les pics sont limités à la moyenne +12 dB.
g_wszDynamicRangeControl = 2 (Valeurs cibles égales aux valeurs de référence) Le niveau moyen est maintenu et les pics sont limités à la moyenne +6 dB.
g_wszDynamicRangeControl = 1 (Valeurs cibles spécifiées) Niveau moyen défini sur la valeur moyenne cible et pics limités à la valeur maximale cible.
g_wszDynamicRangeControl = 2 (Valeurs cibles spécifiées) Niveau moyen défini sur la valeur moyenne cible et pics limités à la médiane de la moyenne cible et des valeurs maximales cibles.

 

Notez que le contrôle de plage dynamique est une fonctionnalité de décodage uniquement et existe uniquement en tant que métadonnées dans le fichier lui-même. Ces paramètres n’ont aucun effet sur le contenu stocké dans le fichier, sauf si vous demandez spécifiquement au décodeur de les utiliser. Le Kit de développement logiciel (SDK) Windows Media Format ne fournit aucune méthode pour modifier la plage dynamique des données audio au moment de l’encodage.

Rubriques avancées