Condividi tramite


Decodificatore AAC

Il decodificatore AAC di Microsoft Media Foundation è una trasformazione di Media Foundation che decodifica i profili AAC (Advanced Audio Coding) e High Efficiency AAC (HE-AAC):

  • Profilo MPEG-2 AAC Low Complexity (LC) (multicanale).
  • MPEG-4 HE-AAC v1 (multicanale) con core AAC-LC.
  • MPEG-4 HE-AAC v2 (stereo) con core AAC-LC.

Il decodificatore AAC supporta entrambi i flussi AAC non elaborati senza intestazioni e AAC in un flusso di trasporto dati audio (ADTS).

A partire da Windows 8, il decodificatore AAC supporta anche la decodifica dei flussi di trasporto audio MPEG-4 con un livello multiplex (LATM) e un livello di sincronizzazione (LOAS). Può anche convertire un flusso LATM/LOAS in ADTS.

Identificatore di classe

L'identificatore di classe (CLSID) del codificatore AAC è CLSID_CMSAACDecMFT, definito nel file di intestazione wmcodecdsp.h.

Tipi di supporti

Il decodificatore AAC supporta i tipi di supporti seguenti.

Tipi di input

Il decodificatore AAC supporta i sottotipi audio seguenti:

Subtype Descrizione Intestazione
MFAudioFormat_AAC AAC non elaborato o AAC ADTS.
Per questo sottotipo, il tipo di supporto fornisce la frequenza di campionamento e il numero di canali prima dell'applicazione di strumenti SBR (Spectral Band Replication) e parametric stereo (PS), se presente. L'effetto dello strumento SBR consiste nel raddoppiare la frequenza di campionamento decodificata rispetto alla frequenza di campionamento AAC-LC core. L'effetto dello strumento PS consiste nel decodificare lo stereo da un flusso AAC-LC core monocanale.
Questo sottotipo equivale a MEDIASUBTYPE_MPEG_HEAAC, definito in wmcodecdsp.h. Vedi GUID sottotipo audio.
L'origine file MPEG-4 e il parser ADTS generano questo sottotipo.
mfapi.h
MEDIASUBTYPE_RAW_AAC1 AAC non elaborato.
Questo sottotipo viene usato per AAC contenuto in un file AVI con il tag di formato audio uguale a WAVE_FORMAT_RAW_AAC1 (0x00FF).
Per questo sottotipo, il tipo di supporto fornisce la frequenza di campionamento e il numero di canali dopo l'applicazione degli strumenti SBR e PS, se presenti.
wmcodecdsp.h

Per configurare il decodificatore AAC, impostare gli attributi seguenti sul tipo di supporto di input.

Attributo Descrizione Osservazioni
MF_MT_MAJOR_TYPE Tipo principale. Deve essere MFMediaType_Audio.
MF_MT_SUBTYPE Sottotipo audio. Per informazioni dettagliate, vedere la descrizione precedente.
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Profilo audio e livello.
Facoltativa. Si applica solo alle MFAudioFormat_AAC.
Il valore di questo attributo è il campo audioProfileLevelIndication , come definito da ISO/IEC 14496-3.
Se sconosciuto, impostare su zero o 0xFE ("nessun profilo audio specificato").
MF_MT_AAC_PAYLOAD_TYPE Tipo di payload.
Si applica solo alle MFAudioFormat_AAC. Il decodificatore supporta i tipi di payload seguenti:
  • 0: AAC non elaborato. Il flusso contiene solo elementi raw_data_block(), come definito da MPEG-2.
  • 1: ADTS. Il flusso contiene un adts_sequence(), come definito da MPEG-2. È consentito un solo raw_data_block() per adts_frame().
  • 3: Flusso di trasporto audio con un livello di sincronizzazione (LOAS) e un livello multiplex (LATM). Dei tre tipi di LOAS, è supportato solo AudioSyncStream . Il livello multiplex è AudioMuxElement, limitato a un programma audio e a un livello.
MF_MT_AAC_PAYLOAD_TYPE è facoltativo. Se questo attributo non viene specificato, viene utilizzato il valore predefinito 0, che specifica che il flusso contiene solo raw_data_block elementi.
MF_MT_AUDIO_BITS_PER_SAMPLE Profondità di bit desiderata dell'audio PCM decodificato.
MF_MT_AUDIO_CHANNEL_MASK Specifica l'assegnazione dei canali audio alle posizioni dell'altoparlante. Facoltativa. Per altre informazioni, vedere Vincoli di formato.
MF_MT_AUDIO_NUM_CHANNELS Numero di canali, incluso il canale LFE (Low Frequency), se presente.
L'interpretazione di questo valore dipende dal sottotipo multimediale, come descritto in precedenza.
MF_MT_AUDIO_SAMPLES_PER_SECOND Frequenza di campionamento, in campioni al secondo.
L'interpretazione di questo valore dipende dal sottotipo multimediale, come descritto in precedenza.
MF_MT_USER_DATA Informazioni aggiuntive sul formato. Il valore di questo attributo dipende dal sottotipo.
  • MFAudioFormat_AAC: contiene la parte della struttura HEAACWAVEINFO visualizzata dopo la struttura WAVEFORMATEX , ovvero dopo il membro wfx . Questo è seguito dai dati AudioSpecificConfig(), come definito da ISO/IEC 14496-3.
  • MEDIASUBTYPE_RAW_AAC1: contiene i dati AudioSpecificConfig(). Questi dati devono essere visualizzati; in caso contrario, il decodificatore rifiuterà il tipo di supporto.
La lunghezza dei dati AudioSpecificConfig() è di 2 byte per AAC-LC o HE-AAC con segnalazione implicita di SBR/PS. È più di 2 byte per HE-AAC con segnalazione esplicita di SBR/PS.
Il valore di audioObjectType definito in AudioSpecificConfig() deve essere 2, che indica AAC-LC. Il valore di extensionAudioObjectType deve essere 5 per SBR o 29 per PS.

Tipi di output

Il decodificatore supporta i tipi di output seguenti:

Subtype Descrizione
MFAudioFormat_Float Audio a virgola mobile IEEE.
MFAudioFormat_PCM Audio PCM a 16 bit.
MFAudioFormat_AAC Richiede Windows 8.
Questo tipo di output può essere usato per convertire un flusso AAC nel formato LOAS/LATM in formato ADTS.
Per convertire un flusso LOAS/LATM in un flusso ADTS, impostare il tipo di input su MFAudioFormat_AAC con il tipo di payload 3 (LOAS). Impostare quindi il tipo di output su MFAudioFormat_AAC con il tipo di payload 1 (ADTS). Il decodificatore riformatta la conainter senza decodificare il bitstream.
Nota: Il decodificatore non registra MFAudioFormat_AAC come tipo di output. Tuttavia, se l'applicazione imposta il tipo di input come descritto, il metodo IMFTransform::GetOutputAvailableType restituisce MFAudioFormat_AAC nell'elenco dei tipi di output disponibili.

Se il flusso di input contiene più di due canali, il decodificatore AAC offre due opzioni per il formato di output:

  • La stessa configurazione del canale del tipo di input.
  • Stereo piegato verso il basso.

Vincoli di formato

La frequenza di campionamento audio decodificato deve essere una delle seguenti, dopo l'applicazione di SBR (se presente):

  • 8 kHz
  • 11,025 kHz
  • 12 kHz
  • 16 kHz
  • 22,05 kHz
  • 24 kHz
  • 32 kHz
  • 44,1 kHz
  • 48 kHz

Le frequenze di campionamento superiori a 48 kHz non sono supportate.

Il decodificatore supporta fino a 6 canali audio. Per ogni configurazione voce, il decodificatore prevede che gli elementi sintattici AAC vengano visualizzati in un determinato ordine. Nella tabella seguente sono elencate le configurazioni del parlante supportate. La terza colonna della tabella elenca gli elementi sintattici previsti e il relativo ordine, utilizzando la notazione seguente:

  • <SCE1>: il single_channel_element (SCE) associato all'altoparlante centrale anteriore.
  • <SCE2>: SCE associato all'altoparlante centrale posteriore.
  • <CPE1>: il channel_pair_element (CPE) associato agli altoparlanti anteriori.
  • <CPE2>: CPE associato agli altoparlanti posteriore (o lato)
  • <LFE>: il lfe_channel_element (LFE).

Per altre informazioni su questi elementi sintattici, vedere ISO/IEC 13818-7.

Configurazione Maschera canale Elementi sintattici AAC
Mono SPEAKER_FRONT_CENTER <SCE1>
Stereo o dual mono | 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>

Per AAC non elaborato, ogni esempio di input deve contenere esattamente un frame compresso AAC completo.

Per ADTS, ogni esempio di input può contenere più fotogrammi audio, nonché fotogrammi parziali, che possono estendersi su limiti di esempio. Ogni intestazione ADTS deve essere seguita da un frame AAC.

Il decodificatore AAC non supporta i seguenti elementi:

  • Profilo principale, profilo Sample-Rate profilo SRS (Scalable) o profilo LTP (Long Term Prediction).
  • Formato interscambio dati audio (ADIF).
  • Flussi di trasporto LATM/LAOS.
  • Accoppiamento degli elementi del canale (CCEs). Il decodificatore ignorerà i fotogrammi audio con cces.
  • AAC-LC con dimensioni di frame di esempio 960. Sono supportati solo 1024 fotogrammi di esempio.

Attributi di trasformazione

Il decodificatore AAC implementa il metodo IMFTransform::GetAttributes . Le applicazioni possono usare questo metodo per ottenere o impostare gli attributi seguenti.

Attributo Descrizione
CODECAPI_AVDecAudioDualMono Specifica se l'audio a 2 canali è codificato come stereo o dual mono. Considera come di sola lettura.
CODECAPI_AVDecAudioDualMonoReproMode Specifica la modalità di riproduzione dell'audio dual mono da parte del decodificatore. Il valore predefinito è eAVDecAudioDualMonoReproMode_LEFT_MONO: Output Ch1 agli altoparlanti sinistro e destro.
Le applicazioni possono impostare questa proprietà per modificare il comportamento predefinito.
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE Il decodificatore AAC non gestisce le modifiche al formato dinamico e deve essere scaricato o svuotato prima che venga impostato un nuovo tipo di supporto di input. Considerare questo attributo come di sola lettura.
Nota: Il decodificatore AAC segnala erroneamente un valore TRUE per questo attributo.
In Windows 7 il decodificatore segnala erroneamente un valore TRUE per questo attributo. In Windows 8 il decodificatore segnala FALSE, ovvero il valore corretto

Tipi di supporti di esempio

Di seguito è riportato un esempio del tipo di supporto di input necessario per un flusso AAC-LC a 6 canali, a 48 kHz, usando un payload AAC non elaborato:

Attributo Valore
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 (facoltativo)

I primi 12 byte di MF_MT_USER_DATA corrispondono ai membri della struttura HEAACWAVEINFO seguenti:

  • wPayloadType = 0 (AAC non elaborato)
  • wAudioProfileLevelIndication = 0x2a (profilo AAC, livello 4)
  • wStructType = 0

Gli ultimi due byte di MF_MT_USER_DATA contengono il valore di AudioSpecificConfig(), come definito da MPEG-4.

  • AudioSpecificConfig.audioObjectType = 2 (AAC LC) (5 bit)
  • AudioSpecificConfig.samplingFrequencyIndex = 3 (4 bit)
  • AudioSpecificConfig.channelConfiguration = 6 (4 bit)
  • GASpecificConfig.frameLengthFlag = 0 (1 bit)
  • GASpecificConfig.dependsOnCoreCoder = 0 (1 bit)
  • GASpecificConfig.extensionFlag = 0 (1 bit)

Dato questo tipo di input, usare il tipo di supporto di output seguente per ottenere l'audio PCM a virgola mobile a 32 bit dal decodificatore:

Attributo Valore
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 (facoltativo)
MF_MT_AUDIO_BLOCK_ALIGNMENT 24 (facoltativo)
MF_MT_AUDIO_CHANNEL_MASK 0x3f (facoltativo)

Se è installato Platform Update Supplement per Windows Vista, il decodificatore audio AAC è disponibile in Windows Vista, ma è accessibile solo in Windows Vista usando il lettore di origine.

Requisiti

Requisito Valore
Client minimo supportato
Windows 7 [solo app desktop]
Server minimo supportato
Windows Server 2008 R2 [solo app desktop]
DLL
Msmpeg2adec.dll in Windows 7;
MSAudDecMFT.dll in Windows 8

Vedi anche

Oggetti codec

Tipi di supporti AAC

Tipi di supporti audio

Decodificatore audio Microsoft MPEG-1/DD/AAC

Supporto MPEG-4 in Media Foundation

Formati multimediali supportati in Media Foundation