Para usar el control de intervalo dinámico
[La característica asociada a esta página, SDK de Windows Media Format 11, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. El lector de origen y el sistema de escritura receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector de origen y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
El intervalo dinámico de un fragmento de contenido de audio es básicamente la diferencia entre el volumen más bajo y el volumen máximo. Si el intervalo dinámico del contenido es demasiado alto, es posible que los usuarios se ajusten repetidamente al volumen durante la reproducción. Por ejemplo, las películas suelen tener un rango dinámico alto. A menudo, cuando el volumen se ajusta para que el cuadro de diálogo se pueda entender durante escenas silenciosas, otras partes de la película con efectos de música o sonido son más fuertes de lo deseado.
Los códecs Windows Media Audio 9 Professional y Windows Media Audio 9 Sin pérdida admiten una característica denominada control de intervalo dinámico. En tiempo de codificación, el códec calcula los valores de amplitud máxima y media en el contenido, y el objeto writer almacena estos valores en los metadatos de la secuencia cuando finaliza la codificación. Opcionalmente, una aplicación también puede escribir valores de "destino" como metadatos que las aplicaciones del reproductor y el descodificador pueden usar como sugerencias al reproducir el archivo. En tiempo de reproducción, una aplicación puede especificar el nivel de control de intervalo dinámico que se va a aplicar a la secuencia de audio.
Reproductor multimedia de Windows implementa el control de intervalo dinámico como la característica Modo silencioso.
Cuándo usar el control de intervalo dinámico
El control de intervalo dinámico puede modificar el sonido del contenido. Por ese motivo, no debe configurar la aplicación para que use el control de intervalo dinámico automáticamente. En su lugar, proporcione a los usuarios la capacidad de activar o desactivar el control de intervalo dinámico según sea necesario.
Uso del control de intervalo dinámico
En el momento de la reproducción, el control de intervalo dinámico se activa mediante la configuración de salida g_wszDynamicRangeControl. Use IWMReaderAdvanced2::SetOutputSetting para configurar la configuración. Un valor de cero (valor predeterminado) indica que el intervalo dinámico no debe modificarse. Un valor de 1 o 2 indica el códec para realizar el control de intervalo dinámico, donde 1 es un nivel moderado de compresión de intervalo dinámico y 2 es un alto nivel de compresión de intervalo dinámico.
En tiempo de codificación o tiempo de reproducción, puede proporcionar los valores pcM de destino del códec para los niveles máximos y promedio estableciendo los atributos WM/WMADRCPeakTarget y WM/WMADRCAverageTarget , respectivamente. Estos valores se almacenan como atributos de metadatos y se debe tener acceso a ellos mediante los métodos de la interfaz IWMHeaderInfo3 . Al codificar una secuencia de audio mediante el códec profesional o sin pérdida, los atributos WM/WMADRCPeakReference y WM/WMADRCAverageReference se establecen automáticamente en los niveles máximo y medio del contenido original. Los valores de destino se establecen en los mismos valores que las referencias de forma predeterminada.
El descodificador en tiempo de reproducción calcula el intervalo dinámico en función del nivel seleccionado del control de intervalo dinámico y los valores de destino (si se especifica alguno). Los intervalos posibles se muestran en la tabla siguiente.
Configuración | Intervalo de audio entregado |
---|---|
g_wszDynamicRangeControl = 0 (cualquier valor de destino) | El mismo intervalo que el contenido original. |
g_wszDynamicRangeControl = 1 (los valores de destino son iguales a los valores de referencia) | El nivel medio se mantiene y los picos se limitan al promedio +12 dB. |
g_wszDynamicRangeControl = 2 (los valores de destino son iguales a los valores de referencia) | El nivel medio se mantiene y los picos se limitan al promedio de +6 dB. |
g_wszDynamicRangeControl = 1 (valores de destino especificados) | Nivel medio establecido en el valor medio de destino y picos confinados en el valor máximo de destino. |
g_wszDynamicRangeControl = 2 (valores de destino especificados) | Nivel medio establecido en el valor medio de destino y picos limitados a la mediana de los valores máximos y promedio de destino. |
Tenga en cuenta que el control de intervalo dinámico es una característica de descodificación solo y solo existe como metadatos en el propio archivo. Esta configuración no tiene ningún efecto en el contenido almacenado en el archivo a menos que indique específicamente al descodificador que los use. El SDK de Windows Media Format no proporciona métodos para modificar el intervalo dinámico de los datos de audio en tiempo de codificación.
Temas relacionados