Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il codificatore audio MPEG-2 di Microsoft Media Foundation è una trasformazione di Media Foundation che codifica audio mono o stereo in audio MPEG-1 (ISO/IEC 11172-3) o AUDIO MPEG-2 (ISO/IEC 13818-3).
Il codificatore supporta l'audio livello 1 e livello 2. Non supporta MPEG-Layer audio 3 (MP3). Per MPEG-2, il codificatore supporta la parte LSF (Low Sampling Frequencyes) dell'audio MPEG-2. Non supporta le estensioni multicanale. MFT restituisce un flusso elementare MPEG. Non può generare flussi elementari pacchetti, flussi di programma o flussi di trasporto.
Identificatore di classe
L'identificatore di classe (CLSID) del codificatore audio MEPG-2 è CLSID_CMPEG2AudioEncoderMFT, definito nel file di intestazione wmcodecdsp.h.
Tipi di output
Il tipo di output deve essere impostato prima del tipo di input. Nella tabella seguente sono elencati gli attributi obbligatori e facoltativi per il tipo di supporto di output.
Attributo | Descrizione | Osservazioni |
---|---|---|
MF_MT_MAJOR_TYPE | Tipo principale. | Obbligatorio. Deve essere MFMediaType_Audio. |
MF_MT_SUBTYPE | Sottotipo audio. | Obbligatorio. Deve essere MFAudioFormat_MPEG. Questo sottotipo viene usato sia per l'audio MPEG-1 che MPEG-2. |
MF_MT_AUDIO_SAMPLES_PER_SECOND | Campioni al secondo. | Obbligatorio. I valori seguenti sono supportati sia per MPEG-1 che MPEG-2:
|
MF_MT_AUDIO_NUM_CHANNELS | Numero di canali. | Obbligatorio. Deve essere 1 (mono) o 2 (stereo). |
MF_MT_AUDIO_CHANNEL_MASK | Specifica l'assegnazione di canali audio alle posizioni dell'altoparlante. | Facoltativa. Se impostato, il valore deve essere 0x3 per stereo (canali front-sinistro e destro) o 0x4 per mono (canale centrale anteriore). |
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | Velocità di bit del flusso MPEG codificato, in byte al secondo. | Facoltativa. Le specifiche ISO/IEC 11172-3 e ISO/IEC 13818-3 (LSF) definiscono diverse velocità di bit, a seconda della frequenza di campionamento, del numero di canali e del livello audio (1 o 2). Il codificatore è predefinito per l'audio di livello 2. Se l'attributo MF_MT_AUDIO_AVG_BYTES_PER_SECOND non è impostato, il codificatore usa le velocità di bit predefinite seguenti:
È anche possibile impostare la frequenza di bit usando l'interfaccia ICodecAPI . Per ulteriori informazioni, vedere la sezione Osservazioni. |
Se gli attributi facoltativi non sono impostati, il codificatore li aggiunge al tipo di supporto dopo l'impostazione del tipo.
Tipi di input
Nella tabella seguente sono elencati gli attributi obbligatori e facoltativi per il tipo di supporto di input.
Attributo | Descrizione | Osservazioni |
---|---|---|
MF_MT_MAJOR_TYPE | Tipo principale. | Obbligatorio. Deve essere MFMediaType_Audio. |
MF_MT_SUBTYPE | Sottotipo audio. | Obbligatorio. Deve essere MFAudioFormat_PCM o MFAudioFormat_Float. |
MF_MT_AUDIO_BITS_PER_SAMPLE | Numero di bit per esempio audio. | Obbligatorio. Il valore deve essere 16 se il sottotipo è MFAudioFormat_PCM o 32 se il sottotipo è MFAudioFormat_Float. |
MF_MT_AUDIO_SAMPLES_PER_SECOND | Campioni al secondo. | Obbligatorio. Deve corrispondere al tipo di output. |
MF_MT_AUDIO_NUM_CHANNELS | Numero di canali. | Obbligatorio. Deve corrispondere al tipo di output. |
MF_MT_AUDIO_BLOCK_ALIGNMENT | Allineamento blocchi, in byte. | Obbligatorio. Calcolare il valore come indicato di seguito:
|
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | Frequenza di bit del flusso AC3 codificato, in byte al secondo. | Obbligatorio. Deve essere uguale all'allineamento a blocchi × campioni al secondo. |
MF_MT_AUDIO_CHANNEL_MASK | Specifica l'assegnazione di canali audio alle posizioni dell'altoparlante. | Facoltativa. Se impostato, il valore deve corrispondere al tipo di output. |
MF_MT_AUDIO_VALID_BITS_PER_SAMPLE | Numero di bit validi di dati audio in ogni campione audio. | Facoltativa. Se impostato, il valore deve essere identico a MF_MT_AUDIO_BITS_PER_SAMPLE. |
Il codificatore non supporta la conversione della frequenza di campionamento o la conversione stereo/mono. Se gli attributi facoltativi non sono impostati, il codificatore li aggiunge al tipo di supporto dopo l'impostazione del tipo.
Proprietà codec
Il codificatore supporta le proprietà seguenti tramite l'interfaccia ICodecAPI .
Proprietà | Descrizione | Valore predefinito |
---|---|---|
CODECAPI_AVEncCommonMeanBitRate | Specifica la velocità media dei bit codificati, espressa in bit al secondo. | Come descritto per l'attributo MF_MT_AUDIO_AVG_BYTES_PER_SECOND nel tipo di supporto di output. |
CODECAPI_AVEncMPACodingMode | Specifica la modalità di codifica audio MPEG. | Stereo per l'audio a 2 canali o un canale singolo per l'audio a 1 canale. Per l'audio a 2 canali, il codificatore supporta anche dual channel e joint stereo. |
CODECAPI_AVEncMPACopyright | Specifica se impostare il bit di copyright nel flusso audio MPEG. | Nessun copyright. |
CODECAPI_AVEncMPAEmphasisType | Specifica il tipo di filtro di de-enfasi che deve essere utilizzato quando il flusso codificato viene decodificato. | Nessuna enfasi specificata. |
AVEncMPAEnableRedundancyProtection | Specifica se aggiungere un controllo di ridondanza ciclica (CRC) all'intestazione del frame. | Un checksum CRC viene scritto nel flusso di bit. |
CODECAPI_AVEncMPALayer | Specifica il livello audio MPEG. | Audio di livello 2. |
CODECAPI_AVEncMPAOriginalBitstream | Specifica se impostare per il bit originale nel flusso audio MPEG. | Il bit "Originale" è disattivato. |
CODECAPI_AVEncMPAPrivateUserBit | Specifica se impostare per il bit utente privato nel flusso audio MPEG. | Il bit utente privato è disattivato. |
Per ottenere un puntatore all'interfaccia ICodecAPI , chiamare QueryInterface su MFT.
MFT implementa i metodi ICodecAPI seguenti:
Tutti gli altri metodi ICodecAPI restituiscono E_NOTIMPL.
Commenti
Ogni frame audio MPEG contiene campioni audio 384 (livello 1) o 1152 (livello 2) per canale. Tuttavia, ogni buffer di input per il codificatore può contenere un numero qualsiasi di campioni PCM. Le dimensioni di ogni buffer di input devono essere un multiplo dell'allineamento del blocco. Il codificatore memorizza nella cache gli esempi di input fino a quando non ha abbastanza per un frame audio MPEG.
Ogni buffer di output contiene un frame MPEG non elaborato. Le dimensioni di ogni buffer di output dipendono dalla frequenza di bit e dalla frequenza di campionamento.
Configurazione del codificatore
Per modificare una delle impostazioni predefinite nel codificatore, seguire questa procedura:
Creare un'istanza del codificatore MFT.
Chiamare IMFTransform::GetOutputAvailableType per ottenere l'elenco dei tipi di output preferiti. Il codificatore enumera tutte le frequenze di campionamento per mono e stereo. Selezionare uno di questi tipi di supporti in base alla frequenza di campionamento e al numero di canali. L'attributo MF_MT_AUDIO_AVG_BYTES_PER_SECOND indica la velocità di bit predefinita, espressa in byte al secondo.
Facoltativo: è possibile eseguire l'override della velocità di bit predefinita impostando un nuovo valore per MF_MT_AUDIO_AVG_BYTES_PER_SECOND nel tipo di supporto di output. Le frequenze di bit valide dipendono dalla frequenza di campionamento, dal numero di canali e dal livello audio.
Nota
A questo punto del processo di configurazione, per impostazione predefinita il codificatore è audio di livello 2 e accetta solo le frequenze di bit di livello 2. Sarà possibile passare il codificatore al livello 1 in un passaggio successivo (vedere il passaggio 7). In tal caso, lasciare la velocità di bit predefinita per il momento; è possibile modificarlo di nuovo nel passaggio 8.
Chiamare IMFTransform::SetOutputType per impostare il tipo di supporto di output. Se si imposta il proprio valore per MF_MT_AUDIO_AVG_BYTES_PER_SECOND e MFT rifiuta il tipo di supporto di output, è probabile che sia stata specificata una velocità di bit non valida.
Chiamare IMFTransform::GetInputAvailableType per enumerare il tipo di supporto di input. Poiché la frequenza di campionamento e il numero di canali devono essere identici al tipo di output, vengono enumerate solo due opzioni: input PCM a virgola mobile a 32 bit e input PCM integer a 16 bit. Selezionare una di queste.
Chiamare IMFTransform::SetInputType per impostare il tipo di supporto di input.
Facoltativo: per codificare l'audio di livello 1, impostare la proprietà CODECAPI_AVEncMPALayer su eAVEncMPALayer_1.
Facoltativo: per modificare la velocità in bit, impostare la proprietà CODECAPI_ AVEncCommonMeanBitRate . La velocità di bit deve essere una delle frequenze di bit valide elencate nelle specifiche MPEG-1 o MPEG-2 LSF. In alternativa, è possibile chiamare ICodecAPI::GetParameterValues per ottenere un elenco di velocità di bit valide, in base alle impostazioni correnti.
Facoltativo: con l'audio a 2 canali è possibile impostare la proprietà CODECAPI_ AVEncMPACodingMode per modificare la modalità di codifica su doppio canale o stereo congiunto. È possibile chiamare ICodecAPI::GetParameterRange per ottenere le opzioni valide. Per l'audio a 1 canale, l'unica opzione è mono.
Facoltativo: impostare una delle altre proprietà ICodecAPI elencate in precedenza.
È importante seguire l'ordine di questi passaggi. In particolare, impostare il tipo di supporto di output prima di modificare le proprietà ICodecAPI . Inoltre, è necessario impostare le proprietà ICodecAPI prima che MFT riceva il primo esempio di input. Dopo che MFT riceve l'input, le proprietà del codec sono di sola lettura e ICodecAPI::SetValue restituisce il valore S_FALSE.
Velocità di bit supportate
Il codificatore supporta le frequenze di bit seguenti.
MPEG-1
MPEG-2
Livello 1
Livello 2
Livello 1
Livello 2
32
32*
32
8
64
48*
38
16
96
56*
56
24
128
64
64
32
160
80*
80
40
192
96
96
48
224
112
112
56
256
128
128
64
288
160
144
80
320
192
160
96
352
224**
176
112
384
256**
192
128
416
230**
224
144
448
384**
256
160
- \* Solo Mono \*\* Solo stereo
Tipi di supporti di esempio
Ecco un esempio dei tipi di supporti necessari per codificare PCM intero a 16 bit, audio stereo a 48 kHz alla velocità di bit predefinita.
Tipo di supporto di output:
Attributo | Valore |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_MPEG |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48000 |
MF_MT_AUDIO_NUM_CHANNELS | 2 |
Tipo di supporto di input:
Attributo | Valore |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_PCM |
MF_MT_AUDIO_BITS_PER_SAMPLE | 16 |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48000 |
MF_MT_AUDIO_NUM_CHANNELS | 2 |
MF_MT_AUDIO_BLOCK_ALIGNMENT | 4 |
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | 192000 |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows 8 [solo app desktop] |
Server minimo supportato |
Nessuno supportato |
DLL |
|
Vedi anche