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:
|
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.
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 |
|