Condividi tramite


Struttura MPEG1WAVEFORMAT (mmreg.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

La MPEG1WAVEFORMAT struttura descrive il formato dei dati audio MPEG-1.

Sintassi

typedef struct mpeg1waveformat_tag {
  WAVEFORMATEX wfx;
  WORD         fwHeadLayer;
  DWORD        dwHeadBitrate;
  WORD         fwHeadMode;
  WORD         fwHeadModeExt;
  WORD         wHeadEmphasis;
  WORD         fwHeadFlags;
  DWORD        dwPTSLow;
  DWORD        dwPTSHigh;
} MPEG1WAVEFORMAT;

Members

wfx

Struttura WAVEFORMATEX che contiene informazioni sul formato audio. Vedere la sezione Osservazioni.

fwHeadLayer

Specifica il livello audio MPEG, come definito dalle costanti seguenti:

Valore Significato
ACM_MPEG_LAYER1
Livello 1
ACM_MPEG_LAYER2
Livello 2
ACM_MPEG_LAYER3
Livello 3
 

Alcuni flussi MPEG possono contenere fotogrammi da più di un livello. In tal caso, combinare i flag con un OR bit per bit.

dwHeadBitrate

Specifica la velocità in bit, espressa in bit al secondo. Questo valore fornisce la velocità in bit effettiva, non il codice di intestazione del frame MPEG. Se la velocità in bit è variabile o è una velocità in bit non standard, impostare questo campo su zero.

fwHeadMode

Specifica la modalità di flusso, come definito dalle costanti seguenti:

Valore Significato
ACM_MPEG_STEREO
Stereo
ACM_MPEG_JOINTSTEREO
Stereo comune
ACM_MPEG_DUALCHANNEL
Doppio canale
ACM_MPEG_SINGLECHANNEL
Canale singolo
 

Alcuni flussi MPEG possono contenere fotogrammi con modalità diverse. In tal caso, combinare i flag con un OR bit per bit.

fwHeadModeExt

Specifica l'estensione della modalità per la codifica joint-stereo:

Valore Codice intestazione MPEG Frame Livelli 1 e 2 Livello 3
0x01 '00' Intensità stereo nelle bande da 4 a 31 Intensità stereo off; Stereo centrale/laterale (MS) disattivato
0x02 '01' Intensità stereo nelle bande da 8 a 31 Intensità stereo su; MS stereo disattivato
0x04 '10' Intensità stereo nelle bande da 12 a 31 Intensità stereo off; MS stereo on
0x08 '11' Stereo di intensità nelle bande da 16 a 31 Intensità stereo off; MS stereo on
 

Questi valori possono essere combinati con un OR bit per bit. In generale, i codificatori passeranno dinamicamente tra le modalità di estensione in base alle caratteristiche del segnale. Pertanto, per la normale codifica joint-stereo, impostare questo campo su 0x0F (or bit per bit di tutti i flag). È tuttavia possibile usare questo campo per limitare il codificatore a un set di tipi di codifica consentiti.

Questo campo si applica solo quando fwHeadMode include ACM_MPEG_JOINTSTEREO. Per altre modalità, impostare questo campo su zero.

wHeadEmphasis

Specifica l'enfasi richiesta dal decodificatore:

Valore Intestazione di frame MPEG De-enfasi del codice obbligatoria
1 '00' nessuno
2 '01' 50/15 ms enfasi
3 '10' Riservato
4 '11' CCITT J.17

fwHeadFlags

Specifica una combinazione bit per bit di zero o più dei flag seguenti:

Valore Significato
ACM_MPEG_PRIVATEBIT
Impostare il bit privato.
ACM_MPEG_COPYRIGHT
Impostare il bit di copyright.
ACM_MPEG_ORIGINALHOME
Impostare il bit originale/home.
ACM_MPEG_PROTECTIONBIT
Impostare il bit di protezione e inserire un codice di protezione degli errori a 16 bit in ogni frame.
ACM_MPEG_ID_MPEG1
Impostare il bit ID su 1, definendo il flusso come flusso audio MPEG-1.
 

Un codificatore userà questi flag per impostare i bit corrispondenti nelle intestazioni dei frame audio MPEG.

dwPTSLow

Specifica i 32 bit meno significativi del timestamp di presentazione (PTS) del primo fotogramma del flusso audio.

dwPTSHigh

Specifica il bit più significativo del pts. I campi dwPTSLow e dwPTSHigh possono essere considerati come un singolo valore a 64 bit.

Commenti

Per l'audio MPEG-1, la struttura WAVEFORMATEX definita nel membro wfx deve avere i valori seguenti.

Membro WAVEFORMATEX Descrizione
wFormatTag Deve essere WAVE_FORMAT_MPEG
nChannels 1 per mono, 2 per stereo
nSamplesPerSec Specifica la frequenza di campionamento, se la frequenza di campionamento è fissa. Se è variabile, impostare questo campo su zero.
nAvgBytesPerSec Specifica la velocità media dei dati. Se la codifica a velocità in bit variabile viene usata nel livello 3, il valore potrebbe non essere una velocità di bit MPEG-1 legale.
nBlockAlign Per i flussi audio con una lunghezza fissa del fotogramma audio, questo campo specifica la lunghezza del frame audio. Se la lunghezza del fotogramma è variabile, impostare questo campo su 1.Se la frequenza di campionamento è 32 kHz o 48 kHz e la frequenza di bit è costante, la dimensione del fotogramma audio è costante. In tal caso, calcolare nBlockAlign come segue:
  • Livello 1: 4 * (int)(12 * bitrate / sampling frequency)
  • Livelli 2 e 3: (int)(144 * bitrate / sampling frequency)
Se la frequenza di bit è variabile o la frequenza di campionamento è 44,1 kHz, le dimensioni dei fotogrammi audio non sono costanti e nBlockAlign deve essere 1.
wBitsPerSample Non utilizzato; impostato su zero.
cbSize Specifica le dimensioni dei dati di formato dopo la struttura WAVEFORMATEX , in byte. Per la struttura MPEG1WAVEFORMAT standard, questo valore è di 22 byte.

Requisiti

   
Intestazione mmreg.h

Vedi anche

Strutture DirectShow

Tipi di supporti MPEG-1