Decodificador do AAC
O decodificador AAC do Microsoft Media Foundation é uma Transformação do Media Foundation que decodifica os seguintes perfis AAC (Advanced Audio Coding) e HE-AAC (High Efficiency AAC):
- Perfil de Baixa Complexidade (LC) do AAC MPEG-2 (multicanal).
- MPEG-4 HE-AAC v1 (multicanal) com núcleo AAC-LC.
- MPEG-4 HE-AAC v2 (estéreo) com núcleo AAC-LC.
O decodificador do AAC dá suporte a fluxos brutos do AAC sem cabeçalhos e AAC em um ADTS (fluxo de transporte de dados de áudio).
A partir do Windows 8, o decodificador do AAC também dá suporte à decodificação de fluxos de transporte de áudio MPEG-4 com uma LATM (camada multiplex) e loas (camada de sincronização). Ele também pode converter um fluxo LATM/LOAS em ADTS.
Identificador de classe
O CLSID (identificador de classe) do codificador AAC é CLSID_CMSAACDecMFT, definido no arquivo de cabeçalho wmcodecdsp.h.
Tipos de mídia
O decodificador AAC dá suporte aos seguintes tipos de mídia.
Tipos de entrada
O decodificador AAC dá suporte aos seguintes subtipos de áudio:
Subtype | Descrição | Cabeçalho |
---|---|---|
MFAudioFormat_AAC | AAC bruto ou ADTS AAC. Para esse subtipo, o tipo de mídia fornece a taxa de amostragem e o número de canais antes da aplicação de ferramentas de SBR (replicação de banda espectral) e PS (estéreo paramétrico), se presente. O efeito da ferramenta SBR é dobrar a taxa de amostragem decodificada em relação à taxa de amostragem principal do AAC-LC. O efeito da ferramenta PS é decodificar estéreo de um fluxo AAC-LC principal de canal mono. Esse subtipo é equivalente a MEDIASUBTYPE_MPEG_HEAAC, definido em wmcodecdsp.h. Consulte GUIDs de subtipo de áudio. A origem do arquivo MPEG-4 e o analisador do ADTS geram esse subtipo. |
mfapi.h |
MEDIASUBTYPE_RAW_AAC1 | AAC bruto. Esse subtipo é usado para o AAC contido em um arquivo AVI com a marca de formato de áudio igual a WAVE_FORMAT_RAW_AAC1 (0x00FF). Para esse subtipo, o tipo de mídia fornece a taxa de exemplo e o número de canais depois que as ferramentas SBR e PS são aplicadas, se estiverem presentes. |
wmcodecdsp.h |
Para configurar o decodificador AAC, defina os atributos a seguir no tipo de mídia de entrada.
Atributo | Descrição | Comentários |
---|---|---|
MF_MT_MAJOR_TYPE | Tipo principal. | Deve ser MFMediaType_Audio. |
MF_MT_SUBTYPE | Subtipo de áudio. | Consulte a descrição anterior para obter detalhes. |
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION | Perfil e nível de áudio. |
Opcional. Aplica-se somente a MFAudioFormat_AAC. O valor desse atributo é o campo audioProfileLevelIndication , conforme definido por ISO/IEC 14496-3. Se desconhecido, defina como zero ou 0xFE ("nenhum perfil de áudio especificado"). |
MF_MT_AAC_PAYLOAD_TYPE | Tipo de conteúdo. |
Aplica-se somente a MFAudioFormat_AAC. O decodificador dá suporte aos seguintes tipos de conteúdo:
|
MF_MT_AUDIO_BITS_PER_SAMPLE | Profundidade de bit desejada do áudio PCM decodificado. | |
MF_MT_AUDIO_CHANNEL_MASK | Especifica a atribuição de canais de áudio para posições de locutor. | Opcional. Para obter mais informações, consulte Restrições de formato. |
MF_MT_AUDIO_NUM_CHANNELS | Número de canais, incluindo o canal LFE (baixa frequência), se presente. |
A interpretação desse valor depende do subtipo de mídia, conforme descrito anteriormente. |
MF_MT_AUDIO_SAMPLES_PER_SECOND | Taxa de amostragem, em amostras por segundo. |
A interpretação desse valor depende do subtipo de mídia, conforme descrito anteriormente. |
MF_MT_USER_DATA | Informações de formato adicionais. | O valor desse atributo depende do subtipo.
O valor de audioObjectType conforme definido em AudioSpecificConfig() deve ser 2, indicando AAC-LC. O valor de extensionAudioObjectType deve ser 5 para SBR ou 29 para PS. |
Tipos de saída
O decodificador dá suporte aos seguintes tipos de saída:
Subtype | Descrição |
---|---|
MFAudioFormat_Float | Áudio de ponto flutuante IEEE. |
MFAudioFormat_PCM | Áudio PCM de 16 bits. |
MFAudioFormat_AAC | Requer o Windows 8. Esse tipo de saída pode ser usado para converter um fluxo AAC no formato LOAS/LATM no formato ADTS. Para converter um fluxo LOAS/LATM em um fluxo do ADTS, defina o tipo de entrada como MFAudioFormat_AAC com o tipo de conteúdo 3 (LOAS). Em seguida, defina o tipo de saída como MFAudioFormat_AAC com o tipo de conteúdo 1 (ADTS). O decodificador reformatará o conainter sem decodificar o bitstream. Nota: O decodificador não registra MFAudioFormat_AAC como um tipo de saída. No entanto, se o aplicativo definir o tipo de entrada conforme descrito, o método IMFTransform::GetOutputAvailableType retornará MFAudioFormat_AAC na lista de tipos de saída disponíveis. |
Se o fluxo de entrada contiver mais de dois canais, o decodificador do AAC fornecerá duas opções para o formato de saída:
- A mesma configuração de canal que o tipo de entrada.
- Dobra estéreo para baixo.
Restrições de formato
A taxa de amostragem de áudio decodificada deve ser uma das seguintes, após a aplicação do SBR (se presente):
- 8 kHz
- 11,025 kHz
- 12 kHz
- 16 kHz
- 22,05 kHz
- 24 kHz
- 32 kHz
- 44,1 kHz
- 48 kHz
Não há suporte para taxas de amostragem acima de 48 kHz.
O decodificador dá suporte a até 6 canais de áudio. Para cada configuração de alto-falante, o decodificador espera que os elementos sintacticos do AAC apareçam em uma determinada ordem. A tabela a seguir lista as configurações de alto-falante com suporte. A terceira coluna da tabela lista os elementos sintacticos esperados e sua ordem, usando a seguinte notação:
- <SCE1>: o single_channel_element (SCE) associado ao alto-falante do centro frontal.
- <SCE2>: o SCE associado ao alto-falante do back-center.
- <CPE1>: O CPE (channel_pair_element) associado aos alto-falantes frontais.
- <CPE2>: O CPE associado aos alto-falantes traseiros (ou laterais)
- <LFE>: O lfe_channel_element (LFE).
Para obter mais informações sobre esses elementos sintacticos, consulte ISO/IEC 13818-7.
Configuração | Máscara de Canal | Elementos sintacticos do AAC |
---|---|---|
Mono | SPEAKER_FRONT_CENTER | <SCE1> |
Estéreo ou mono duplo | | SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHT | <CPE1> |
2/1 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_BACK_CENTER | <CPE1><SCE1> |
2/2 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT | <CPE1><CPE2> |
3/0 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER | <SCE1><CPE1> |
3/1 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTERSPEAKER_BACK_CENTER | <SCE1><CPE1><SCE2> |
3/2 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT | <SCE1><CPE1><CPE2> |
3/2 + LFE | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT | <SCE1><CPE1><CPE2><LFE> |
Para o AAC bruto, cada exemplo de entrada deve conter exatamente um quadro compactado do AAC completo.
Para o ADTS, cada exemplo de entrada pode conter vários quadros de áudio, bem como quadros parciais, ou seja, quadros podem abranger limites de exemplo. Cada cabeçalho do ADTS deve ser seguido por um quadro do AAC.
O decodificador do AAC não dá suporte a nenhum dos seguintes:
- Perfil principal, Sample-Rate perfil srs (escalonável) ou perfil ltp (previsão de longo prazo).
- ADIF (formato de intercâmbio de dados de áudio).
- Fluxos de transporte LATM/LAOS.
- Elementos de canal de acoplamento (CCEs). O decodificador ignorará quadros de áudio com CCEs.
- AAC-LC com um tamanho de quadro de 960 amostras. Há suporte apenas para quadros de 1.024 exemplos.
Transformar atributos
O decodificador AAC implementa o método IMFTransform::GetAttributes . Os aplicativos podem usar esse método para obter ou definir os atributos a seguir.
Atributo | Descrição |
---|---|
CODECAPI_AVDecAudioDualMono | Especifica se o áudio de dois canais é codificado como estéreo ou mono duplo. Trate como somente leitura. |
CODECAPI_AVDecAudioDualMonoReproMode | Especifica como o decodificador reproduz áudio mono duplo. O valor padrão é eAVDecAudioDualMonoReproMode_LEFT_MONO: Saída Ch1 para os alto-falantes esquerdo e direito. Os aplicativos podem definir essa propriedade para alterar o comportamento padrão. |
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE | O decodificador do AAC não lida com alterações de formato dinâmico e deve ser liberado ou esvaziado antes que um novo tipo de mídia de entrada seja definido. Trate esse atributo como somente leitura. Nota: O decodificador AAC relata incorretamente um valor TRUE para esse atributo. No Windows 7, o decodificador relata incorretamente um valor TRUE para esse atributo. No Windows 8, o decodificador relata FALSE, que é o valor correto |
Tipos de mídia de exemplo
Aqui está um exemplo do tipo de mídia de entrada necessário para um fluxo AAC-LC de 6 canais e 48 kHz, usando uma carga bruta do AAC:
Atributo | Valor |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_AAC |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48000 |
MF_MT_AUDIO_NUM_CHANNELS | 6 |
MF_MT_AAC_PAYLOAD_TYPE | 0 |
MF_MT_USER_DATA | {0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb0} |
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION | 0x2a (opcional) |
Os primeiros 12 bytes de MF_MT_USER_DATA correspondem aos seguintes membros da estrutura HEAACWAVEINFO :
- wPayloadType = 0 (AAC bruto)
- wAudioProfileLevelIndication = 0x2a (Perfil do AAC, Nível 4)
- wStructType = 0
Os dois últimos bytes de MF_MT_USER_DATA contêm o valor de AudioSpecificConfig(), conforme definido por MPEG-4.
- AudioSpecificConfig.audioObjectType = 2 (AAC LC) (5 bits)
- AudioSpecificConfig.samplingFrequencyIndex = 3 (4 bits)
- AudioSpecificConfig.channelConfiguration = 6 (4 bits)
- GASpecificConfig.frameLengthFlag = 0 (1 bit)
- GASpecificConfig.dependsOnCoreCoder = 0 (1 bit)
- GASpecificConfig.extensionFlag = 0 (1 bit)
Dado esse tipo de entrada, use o seguinte tipo de mídia de saída para obter áudio PCM de ponto flutuante de 6 canais e 32 bits do decodificador:
Atributo | Valor |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_Float |
MF_MT_AUDIO_BITS_PER_SAMPLE | 32 |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48000 |
MF_MT_AUDIO_NUM_CHANNELS | 6 |
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | 1152000 (opcional) |
MF_MT_AUDIO_BLOCK_ALIGNMENT | 24 (opcional) |
MF_MT_AUDIO_CHANNEL_MASK | 0x3f (opcional) |
Se o Suplemento de Atualização de Plataforma para Windows Vista estiver instalado, o decodificador de áudio AAC estará disponível no Windows Vista, mas só poderá ser acessado no Windows Vista usando o Leitor de Origem.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
DLL |
|