Condividi tramite


Codificatore audio MPEG-2

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:
  • 32000
  • 44100
  • 48000
Inoltre, i valori seguenti sono supportati per MPEG-2 LSF:
  • 16000
  • 22050
  • 24000
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:
  • STEREO MPEG-1: 224.000 bit al secondo (bps) = 28.000 byte al secondo.
  • MPEG-1 mono: 192.000 bps = 24.000 byte al secondo.
  • MPEG-2 LSF, mono o stereo: 160.000 bps = 20.000 byte al secondo.
Questo attributo può essere impostato su altri valori. Se il valore non è valido in base alle specifiche MPEG, MFT rifiuterà il tipo di supporto.
È 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:
  • MFAudioFormat_PCM: numero di canali × 2.
  • MFAudioFormat_Float: numero di canali × 4.
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:

  1. Creare un'istanza del codificatore MFT.

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

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

     

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

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

  6. Chiamare IMFTransform::SetInputType per impostare il tipo di supporto di input.

  7. Facoltativo: per codificare l'audio di livello 1, impostare la proprietà CODECAPI_AVEncMPALayer su eAVEncMPALayer_1.

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

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

  10. 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
Msmpeg2enc.dll

Vedi anche

Oggetti codec