MPEG1WAVEFORMAT 구조체(mmreg.h)

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

구조체는 MPEG1WAVEFORMAT MPEG-1 오디오 데이터의 형식을 설명합니다.

구문

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

멤버

wfx

오디오 형식에 대한 정보를 포함하는 WAVEFORMATEX 구조체입니다. 설명 부분을 참조하세요.

fwHeadLayer

다음 상수에 정의된 대로 MPEG 오디오 계층을 지정합니다.

의미
ACM_MPEG_LAYER1
계층 1
ACM_MPEG_LAYER2
계층 2
ACM_MPEG_LAYER3
계층 3
 

일부 MPEG 스트림에는 둘 이상의 레이어의 프레임이 포함될 수 있습니다. 그렇다면 플래그를 비트 OR과 결합합니다.

dwHeadBitrate

비트 전송률을 초당 비트 단위로 지정합니다. 이 값은 MPEG 프레임 헤더 코드가 아닌 실제 비트 전송률을 제공합니다. 비트 전송률이 가변이거나 비표준 비트 전송률인 경우 이 필드를 0으로 설정합니다.

fwHeadMode

다음 상수에 정의된 스트림 모드를 지정합니다.

의미
ACM_MPEG_STEREO
스테레오
ACM_MPEG_JOINTSTEREO
조인트 스테레오
ACM_MPEG_DUALCHANNEL
이중 채널
ACM_MPEG_SINGLECHANNEL
단일 채널
 

일부 MPEG 스트림에는 다른 모드의 프레임이 포함될 수 있습니다. 그렇다면 플래그를 비트 OR과 결합합니다.

fwHeadModeExt

조인트 스테레오 인코딩에 대한 모드 확장을 지정합니다.

MPEG 프레임 헤더 코드 레이어 1 및 2 계층 3
0x01 '00' 밴드 4에서 31까지의 강도 스테레오 강도 스테레오 오프; 중간/측면(MS) 스테레오 끄기
0x02 '01' 밴드 8에서 31까지의 강도 스테레오 강도 스테레오 켜기; MS 스테레오 끄기
0x04 '10' 밴드 12에서 31까지의 강도 스테레오 강도 스테레오 오프; MS 스테레오 켜기
0x08 '11' 밴드 16에서 31까지의 강도 스테레오 강도 스테레오 오프; MS 스테레오 켜기
 

이러한 값은 비트 OR과 결합될 수 있습니다. 일반적으로 인코더는 신호의 특성에 따라 확장 모드 간에 동적으로 전환됩니다. 따라서 일반적인 조인트 스테레오 인코딩의 경우 이 필드를 0x0F(모든 플래그의 비트 OR)로 설정합니다. 그러나 이 필드를 사용하여 인코더를 허용 가능한 인코딩 형식 집합으로 제한할 수 있습니다.

이 필드는 fwHeadMode 에 ACM_MPEG_JOINTSTEREO 포함된 경우에만 적용됩니다. 다른 모드의 경우 이 필드를 0으로 설정합니다.

wHeadEmphasis

디코더에 필요한 강조 해제를 지정합니다.

MPEG 프레임 헤더 코드 강조 해제 필요
1 '00' 없음
2 '01' 50/15ms 강조
3 '10' 예약됨
4 '11' CCITT J.17

fwHeadFlags

다음 플래그 중 0개 이상의 비트 조합을 지정합니다.

의미
ACM_MPEG_PRIVATEBIT
프라이빗 비트를 설정합니다.
ACM_MPEG_COPYRIGHT
저작권 비트를 설정합니다.
ACM_MPEG_ORIGINALHOME
원래/홈 비트를 설정합니다.
ACM_MPEG_PROTECTIONBIT
보호 비트를 설정하고 각 프레임에 16비트 오류 보호 코드를 삽입합니다.
ACM_MPEG_ID_MPEG1
ID 비트를 1로 설정하고 스트림을 MPEG-1 오디오 스트림으로 정의합니다.
 

인코더는 이러한 플래그를 사용하여 MPEG 오디오 프레임 헤더에서 해당 비트를 설정합니다.

dwPTSLow

오디오 스트림의 첫 번째 프레임에서 가장 중요한 32비트 프레젠테이션 타임스탬프(PTS)를 지정합니다.

dwPTSHigh

PTS의 가장 중요한 비트를 지정합니다. dwPTSLowdwPTSHigh 필드는 단일 64비트 값으로 처리할 수 있습니다.

설명

MPEG-1 오디오의 경우 wfx 멤버에 정의된 WAVEFORMATEX 구조체에는 다음 값이 있어야 합니다.

WAVEFORMATEX 멤버 설명
wFormatTag Must be WAVE_FORMAT_MPEG
nChannels 모노 1개, 스테레오 2개
nSamplesPerSec 샘플링 빈도가 고정된 경우 샘플링 빈도를 지정합니다. 변수인 경우 이 필드를 0으로 설정합니다.
nAvgBytesPerSec 평균 데이터 속도를 지정합니다. 계층 3에서 가변 비트 전송률 인코딩을 사용하는 경우 값이 유효한 MPEG-1 비트 전송률이 아닐 수 있습니다.
nBlockAlign 오디오 프레임 길이가 고정된 오디오 스트림의 경우 이 필드는 오디오 프레임의 길이를 지정합니다. 프레임 길이가 가변적인 경우 이 필드를 1로 설정합니다. 샘플링 빈도가 32kHz 또는 48kHz이고 비트 속도가 일정하면 오디오 프레임 크기가 일정합니다. 이 경우 다음과 같이 nBlockAlign 을 계산합니다.
  • 계층 1: 4 * (int)(12 * bitrate / sampling frequency)
  • 레이어 2 및 3: (int)(144 * bitrate / sampling frequency)
비트 속도가 가변적이거나 샘플링 빈도가 44.1kHz인 경우 오디오 프레임 크기는 일정하지 않으며 nBlockAlign 은 1이어야 합니다.
wBitsPerSample 사용되지 않음; 를 0으로 설정합니다.
cbSize WAVEFORMATEX 구조체 뒤의 형식 데이터 크기를 바이트 단위로 지정합니다. 표준 MPEG1WAVEFORMAT 구조체의 경우 이 값은 22바이트입니다.

요구 사항

   
머리글 mmreg.h

추가 정보

DirectShow 구조체

MPEG-1 미디어 형식