Partilhar via


Para usar o controle de faixa dinâmica

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize o Source Reader e o Sink Writer em vez do Windows Media Format 11 SDK, sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O alcance dinâmico de um conteúdo de áudio é basicamente a diferença entre o volume mais baixo e o volume máximo. Se o intervalo dinâmico do conteúdo for muito alto, os usuários podem se encontrar ajustando o volume repetidamente durante a reprodução. Por exemplo, os filmes têm frequentemente um elevado alcance dinâmico. Muitas vezes, quando o volume é ajustado para que o diálogo possa ser entendido durante cenas silenciosas, outras partes do filme com música ou efeitos sonoros são mais altas do que o desejado.

Os codecs Windows Media Audio 9 Professional e Windows Media Audio 9 Lossless suportam uma funcionalidade denominada controlo de alcance dinâmico. No momento da codificação, o codec calcula os valores de pico e amplitude média no conteúdo, e o objeto gravador armazena esses valores nos metadados do fluxo quando a codificação é concluída. Opcionalmente, um aplicativo também pode escrever valores de "destino" como metadados que os aplicativos do player e o decodificador podem usar como dicas ao reproduzir o arquivo. No momento da reprodução, um aplicativo pode especificar o nível de controle de faixa dinâmica a ser aplicado ao fluxo de áudio.

O Windows Media Player implementa o controlo de alcance dinâmico como a funcionalidade Modo Silencioso.

Quando usar o controle de faixa dinâmica

O controlo dinâmico da gama pode alterar o som do conteúdo. Por esse motivo, você não deve configurar seu aplicativo para usar o controle de faixa dinâmica automaticamente. Em vez disso, forneça aos usuários a capacidade de ativar ou desativar o controle de alcance dinâmico conforme necessário.

Usando o controlo de faixa dinâmica

No momento da reprodução, o controle de faixa dinâmica é ativado usando a configuração de saída g_wszDynamicRangeControl. Use IWMReaderAdvanced2::SetOutputSetting para definir a configuração. Um valor zero (o padrão) indica que o intervalo dinâmico não deve ser alterado. Um valor de 1 ou 2 sinaliza o codec para executar o controle de faixa dinâmica, onde 1 é um nível moderado de compressão de faixa dinâmica, e 2 é um alto nível de compressão de faixa dinâmica.

No momento da codificação ou da reprodução, é possível fornecer os valores PCM de destino para os níveis de pico e médio do codec ao definir, respetivamente, os atributos WM/WMADRCPeakTarget e WM/WMADRCAverageTarget. Esses valores são armazenados como atributos de metadados e devem ser acessados usando os métodos da interfaceIWMHeaderInfo3. Quando você codifica um fluxo de áudio usando o codec profissional ou sem perdas, os atributos WM/WMADRCPeakReference e WM/WMADRCAverageReference são definidos automaticamente para os níveis de pico e médio do conteúdo original. Os valores de destino são definidos para os mesmos valores que as referências por padrão.

O decodificador, no tempo de reprodução, calcula o intervalo dinâmico com base no nível selecionado de controlo de intervalo dinâmico e nos valores de destino (se alguns forem especificados). Os intervalos possíveis são mostrados na tabela a seguir.

Configurações Gama de áudio entregue
g_wszDynamicRangeControl = 0 (Quaisquer valores de destino) O mesmo alcance que o conteúdo original.
g_wszDynamicRangeControl = 1 (Valores-alvo iguais aos valores de referência) O nível médio é mantido e os picos são limitados à média de +12 dB.
g_wszDynamicRangeControl = 2 (Valores-alvo iguais aos valores de referência) O nível médio é mantido e os picos são limitados à média de +6 dB.
g_wszDynamicRangeControl = 1 (Valores-alvo especificados) Nível médio fixado para o valor-alvo médio e picos confinados ao valor-alvo máximo.
g_wszDynamicRangeControl = 2 (Valores-alvo especificados) Nível médio fixado para o valor-alvo médio e picos limitados à mediana dos valores-alvo médios e dos picos-alvo.

 

Observe que o controle de intervalo dinâmico é um recurso apenas de decodificação e existe apenas como metadados no próprio arquivo. Essas configurações não têm efeito sobre o conteúdo armazenado no arquivo, a menos que você instrua especificamente o decodificador a usá-las. O SDK do Windows Media Format não fornece métodos para modificar o intervalo dinâmico dos dados de áudio no momento da codificação.

Tópicos Avançados