DSP do Repositório de Áudio
O Resampler de Áudio executa uma ou ambas as ações a seguir em um fluxo de áudio.
- Altere a taxa de amostragem.
- Altere o número de canais.
CLSID
CLSID_CResamplerMediaObject
Interfaces
Formatos
Ponto flutuante PCM ou IEEE
O tipo de mídia deve especificar um pcm descompactado ou um formato de áudio de ponto flutuante.
- Para a interface IMFTransform , inicialize o tipo de mídia, conforme descrito em Tipos de mídia de áudio descompactados.
- Para a interface IMediaObject , o tipo de mídia deve ser um tipo FORMAT_WaveFormatEx . Para obter mais informações, consulte DMO_MEDIA_TYPE.
Propriedades
Atributos necessários.
O resampler requer que os seguintes atributos sejam definidos nele:
Mapeamento de Canal Personalizado
O resampler de áudio mapeia os canais de áudio de entrada para os canais de áudio de saída, com base nas seguintes informações:
- O número de canais. Isso é fornecido no atributo MF_MT_AUDIO_NUM_CHANNELS do tipo de mídia ou no membro nChannels da estrutura WAVEFORMATEX .
- A máscara de canal, que atribui canais à posição do locutor. A máscara de canal é fornecida no atributo MF_MT_AUDIO_CHANNEL_MASK do tipo de mídia ou no membro dwChannelMask da estrutura WAVEFORMATEXTENSIBLE .
- Uma matriz de pesos de mapeamento.
A matriz contém uma série de pesos, de modo que cada canal de saída é uma média ponderada dos canais de entrada.
Você pode especificar uma matriz personalizada para mapeamento de canal chamando IWMResamplerProps::SetUserChannelMtx ou definindo a propriedade MFPKEY_WMRESAMP_CHANNELMTX . Se uma matriz personalizada não for fornecida, o Repositório de Áudio usará um conjunto de matrizes padrão.
Mapeamento de Canal Padrão
Se você não especificar uma matriz personalizada, o DSP do Repositório de Áudio usará valores padrão para mapeamento de canal.
Nas tabelas a seguir, os canais são abreviados:
- L: Esquerda
- R: à direita
- C: Centro
- LFE: Efeitos de baixa frequência
- BL: Voltar para a Esquerda
- BR: Voltar à Direita
- SL: Surround Left
- SR: Surround Right
A tabela a seguir mostra os coeficientes padrão para mapear seis canais (máscara 0x3F) para dois canais.
L | R | C | LFE | BL | BR | |
---|---|---|---|---|---|---|
L | 0.314 | 0 | 0,222 | 0.031 | 0,268 | 0.164 |
R | 0 | 0.314 | 0,222 | 0.031 | 0.164 | 0,268 |
A tabela a seguir mostra os coeficientes padrão para mapear seis canais (máscara 0x60F) para dois canais.
L | R | C | LFE | SL | SR | |
---|---|---|---|---|---|---|
L | 0.320 | 0 | 0.226 | 0.032 | 0.292 | 0.130 |
R | 0 | 0.320 | 0.226 | 0.032 | 0.130 | 0.292 |
A tabela a seguir mostra os coeficientes padrão para mapear 6 canais (máscara 0x3F ou 0x60F) para um canal.
L | R | C | LFE | BL(SL) | BR(SR) | |
---|---|---|---|---|---|---|
C | 0.192 | 0.192 | 0.192 | 0.038 | 0.192 | 0.192 |
A tabela a seguir mostra os coeficientes padrão para mapear 8 canais (máscara 0x63F) para dois canais.
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0,222 | 0 | 0.157 | 0.022 | 0,189 | 0.116 | 0.203 | 0.090 |
R | 0 | 0,222 | 0.157 | 0.022 | 0.116 | 0,189 | 0.090 | 0.203 |
A tabela a seguir mostra os coeficientes padrão para mapear 8 canais (máscara 0x63F) para um canal.
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
C | 0.139 | 0.139 | 0.139 | 0.028 | 0.139 | 0.139 | 0.139 | 0.139 |
A tabela a seguir mostra os coeficientes padrão para mapear 8 canais (máscara 0x63F) para 6 canais (máscara 0x3F).
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.518 | 0 | 0 | 0 | 0 | 0 | 0,189 | 0 |
R | 0 | 0.518 | 0 | 0 | 0 | 0 | 0 | 0,189 |
C | 0 | 0 | 0.518 | 0 | 0 | 0 | 0 | 0 |
LFE | 0 | 0 | 0 | 0.518 | 0 | 0 | 0 | 0 |
BL | 0 | 0 | 0 | 0 | 0.518 | 0 | 0.482 | 0 |
BR | 0 | 0 | 0 | 0 | 0 | 0.518 | 0 | 0.482 |
A tabela a seguir mostra os coeficientes padrão para mapear 8 canais (máscara 0x63F) para 6 canais (máscara 0x60F).
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.447 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
R | 0 | 0.447 | 0 | 0 | 0 | 0 | 0 | 0 |
C | 0 | 0 | 0.447 | 0 | 0 | 0 | 0 | 0 |
LFE | 0 | 0 | 0 | 0.447 | 0 | 0 | 0 | 0 |
SL | 0 | 0 | 0 | 0 | 0.429 | 0.124 | 0.447 | 0 |
SR | 0 | 0 | 0 | 0 | 0.124 | 0.429 | 0 | 0.447 |
Para entender como interpretar as tabelas de coeficientes, considere a primeira tabela, que mapeia 6 canais para 2. A primeira linha da tabela (0.314, 0, 0.222, 0.031, 0.268, 0.164) é um vetor de pesos que especifica o quanto cada canal de entrada contribui para o canal esquerdo da saída. A segunda linha da tabela (0, 0,314, 0,222, 0,031, 0,164, 0,268) é um vetor de pesos que especifica o quanto cada canal de entrada contribui para o canal direito da saída.
As fórmulas a seguir mostram como os canais de saída são calculados.
L_out = L*0.314 + C*0.222 + LFE*0.031 + BL*0.268 + BR*0.164
R_out = R*0.314 + C*0.222 + LFE*0.031 + BL*0.164 + BR*0.268
Observação
Se você usar o DSP do Repositório de Áudio para aumentar o número de canais, os canais adicionados receberão valores de 0.
Qualidade da Saída
Você pode especificar a qualidade de saída do DSP do Repositório de Áudio chamando IWMResamplerProps::SetHalfFilterLength ou definindo a propriedade MFPKEY_WMRESAMP_FILTERQUALITY . Se você não especificar a qualidade de saída, o DSP do Repositório de Áudio usará um valor de qualidade padrão de 30.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2008 [somente aplicativos da área de trabalho] |
Cabeçalho |
|
DLL |
|