Share via


IEC 61937 Transmissions의 형식 표시

압축된 오디오 형식이 필요한 미디어 스토리지 디바이스가 증가함에 따라 애플리케이션은 PC에서 HDMI 또는 DisplayPort 수신기와 같은 디바이스로 콘텐츠를 전송하기 위해 다양한 새 인코딩된 오디오 콘텐츠를 식별, 설명 및 사용해야 합니다.

IEC 61937 호환 인터페이스를 통해 전송될 인코딩된 오디오 스트림을 나타내려면 애플리케이션에서 다음을 제공해야 합니다.

  • 전송할 인코딩된 오디오 스트림의 특성입니다.

  • 대상 디바이스에서 디코딩된 오디오 스트림의 특성입니다.

Windows Vista 및 이전 Windows 운영 체제에서 애플리케이션은 채널 수, 샘플 크기 및 형식을 사용하는 오디오 스트림의 데이터 속도에서 오디오 형식의 품질 수준을 유추할 수 있습니다. PCM 형식의 경우 이 정보는 형식을 지정하는 WAVEFORMATEX 구조체의 nChannels, nSamplesPerSecnAvgBytesPerSec 멤버에서 사용할 수 있습니다. PCM이 아닌 형식의 경우 이러한 세 멤버는 오디오 스트림에 압축된 데이터에 대한 정보를 저장하도록 명령되었습니다. 따라서 WAVEFORMATEX 구조는 스트림의 압축을 풀고 재생한 후 PCM이 아닌 오디오 스트림의 유효 채널 수, 샘플 크기 및 데이터 속도에 대한 정보가 부족합니다. 이 구조의 정보에 따라 사용자 또는 애플리케이션이 PCM이 아닌 스트림의 품질 수준을 유추하는 데 어려움을 겪을 수 있습니다.

WAVEFORMATEX추가 스트림 특성을 제공하기 위해 WAVEFORMATEXTENSIBLE 구조체로 확장되었습니다. 그러나 이 구조는 단일 특성 집합을 나타내기 위한 것이었으며 압축되지 않은 다중 채널 PCM 데이터에 사용되었기 때문에 IEC 61937 전송에 대한 스트림을 설명하는 데 적절하지 않습니다.

Windows 7에서 운영 체제는 WAVEFORMATEXTENSIBLE 구조를 확장하여 오디오 스트림 특성의 두 집합인 전송 전 인코딩된 오디오 형식과 디코딩된 후 오디오 스트림의 특징을 저장하는 WAVEFORMATEXTENSIBLE_IEC61937 새 구조에 대한 지원을 제공하여 이 문제를 해결합니다. 새 구조는 PCM이 아닌 형식의 유효 채널 수, 샘플 크기 및 데이터 속도를 명시적으로 지정합니다. 이 정보를 통해 애플리케이션은 압축을 해제하고 재생한 후 PCM이 아닌 스트림의 품질 수준을 유추할 수 있습니다.

WAVEFORMATEXTENSIBLE_IEC61937 구조체는 Windows 7 SDK에 포함된 KsMedia.h 헤더에 선언됩니다. FormatExt 멤버는 전송할 스트림의 특성을 저장하는 WAVEFORMATEXTENSIBLE 구조체입니다. WAVEFORMATEXTENSIBLE 구조체의 Format 멤버는 WAVEFORMATEX 구조체입니다. 이 WAVEFORMATEXWAVEFORMATEXTENSIBLE의 내용은 구조체를 WAVEFORMATEXTENSIBLE_IEC61937 구조체로 해석할 수 있는지 여부를 애플리케이션에 나타냅니다. WAVEFORMATEXTENSIBLE_IEC61937 구조체의 경우:

  • WAVEFORMATEXwFormatTag 멤버는 WAVE_FORMAT_EXTENSIBLE(FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE)를 포함해야 합니다.

  • WAVEFORMATEXTENSIBLE 구조체의 SubFormat 멤버는 전송할 인코딩된 형식의 GUID를 지정합니다. 예를 들어 FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL Dolby Digital Plus 형식을 나타냅니다. 지원되는 GUID는 SubFormat GUID를 참조하세요.

  • WAVEFORMATEX의 cbSize 멤버가 나타내는 크기는 34바이트입니다. (FormatExt.Format.cbSize = 34). 총 WAVEFORMATEXTENSIBLE_IEC61937 크기는 52바이트입니다.

WAVEFORMATEXTENSIBLE_IEC61937 dwEncodedSamplesPerSec, dwEncodedChannelCountdwAverageBytesPerSec 멤버 는 디코딩된 후 오디오 스트림 스트림의 샘플링 속도, 채널 수 및 비트 속도를 바이트 단위로 설명합니다.

하위 폼 GUID

Windows 7에서 KsMedia.h 헤더에는 CEA-861-D로 정의된 압축 오디오 형식에 대한 SubFormat GUID에 대한 정의가 포함되어 있습니다. GUID는 WAVEFORMATEXTENSIBLE의 SubFormat 멤버에 지정되며 WAVEFORMATEXTENSIBLE_IEC61937 구조체(WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat)의 FormatExt 멤버에 지정됩니다.

표준 IEC 61937로 인코딩된 오디오 형식으로 사용할 수 있는 압축 오디오 형식의 GUID는 다음 표에 나와 있습니다. 이러한 형식은 Windows의 기존 AC-3(Active Coding 3) 및 DTS(Digital Theater Sound) 형식 표현과 유사합니다.

CEA 861 형식 SubFormat GUID 설명
0x00 스트림을 참조하세요.
0x01 00000000-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_WAVEFORMATEX
IEC 60958 PCM
0x02 00000092-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
AC-3
0x03 00000003-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1
MPEG-1(계층 1 및 2)
0x04 00000004-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3
MPEG-3(계층 3)
0x05 00000005-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2
MPEG-2(다중 채널)
0x06 00000006-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_AAC
고급 오디오 코딩(ADTS의 MPEG-2/4 AAC)
0x07 00000008-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS
DTS
0x0a 0000000a-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS
Dolby Digital Plus
0x0a 0000010a-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS
Dolby Digital Plus로 인코딩된 Dolby Atmos
0x0f 사용되지 않는 예약됨

 

고비트 속도 오디오 샘플 패킷으로 전송되는 압축 오디오 형식의 GUID는 다음 표에 나와 있습니다.

CEA 861 형식 SubFormat GUID 설명
0x0b 0000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS-HD(24비트, 96Khz)
0x0c 0000000c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP
Dolby MAT 1.0:
Dolby TrueHD(MLP – 자오선 무손실 패킹) – 24비트 192KHz/최대 18Mbps, 8개 채널)
0x0c 0000010c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20
Dolby MAT 2.0:
Dolby TrueHD – 24비트 192KHz/최대 18Mbps, 8개 채널 또는 LPCM 최대 24Mbps
0x0c 0000030c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21
Dolby MAT 2.1:
Dolby TrueHD – 24비트 192KHz/최대 18Mbps, 8개 채널 또는 LPCM 최대 24Mbps
0x0e 00000164-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO
WMA(Windows Media Audio) Pro
0x0b 0000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS HD
0x0b 0000010b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1
DTS:X E1
0x0b 0000030b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2
DTS:X E2

 

Microsoft에서 제공하는 HD Audio 클래스 드라이버는 PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro, MAT(MLP) 형식을 지원합니다. HD 오디오 클래스 드라이버에서 지원되지 않고 타사 솔루션에서 구현할 수 있는 압축 오디오 형식의 GUID는 다음 표에 나와 있습니다.

CEA 861 형식 SubFormat GUID 설명
0x08 00000008-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC
적응형 변환 어쿠스틱 코딩(ATRAC)
0x09 00000009-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO
1비트 오디오
0x0d 0000000d-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DST
DST(직접 스트림 전송) - 무손실 압축 DSD(Direct Stream Digital).

 

Dolby Digital Plus 형식

Dolby Digital Plus 콘텐츠가 IEC 60958을 통해 전송되는 경우 링크 샘플링 속도는 콘텐츠의 샘플링 속도의 4배여야 합니다. Dolby Digital Plus는 32KHz, 44.1KHz 및 48KHz의 콘텐츠 샘플 속도를 지원합니다. HDMI와 같은 인터페이스는 128KHz(32KHz x 4)를 지원하지 않으므로 44.1 및 48KHz 콘텐츠 샘플 속도만 지원할 수 있습니다.

다음 예제에서는 48KHz의 콘텐츠 샘플 속도로 Dolby Digital Plus 형식을 나타내기 위해 WAVEFORMATEXTENSIBLE_IEC61937 구조의 애플리케이션에서 설정한 값입니다.

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2;              // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 192000;    // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 768000;   // 192 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4;            // 16 bits * 2 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;        // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                // Indicates that Format is part of a 
                                                   // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;    // Dolby 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
wfext.dwEncodedSamplesPerSec = 48000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6;                            // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby TrueHD(MAT)

Dolby TrueHD 콘텐츠는 44.1의 콘텐츠 샘플 속도에 대해 IEC 60958을 통해 176.4kHz/8 채널(IEC 60958 프레임 속도 705.6kHz 필요)으로 전송됩니다. 48, 96 및 192kHz의 콘텐츠 샘플 속도에 대해 88.2 및 176.4kHz 및 192kHz/8 채널(IEC 60958 프레임 속도 768kHz 필요).

다음 예제에서는 96KHz의 콘텐츠 샘플 속도로 Dolby TrueHD를 나타내기 위해 WAVEFORMATEXTENSIBLE_IEC61937 구조의 애플리케이션에서 설정한 값을 보여 줍니다.

Dolby MAT 1.0

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP; // This structure indicates MLP (MAT 1.0) support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby MAT 2.0

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20; // This structure indicates MAT 2.0 support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby MAT 2.1

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21; // This structure indicates MAT 2.1 support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

참고 항목

Dolby MAT의 한 버전에 대한 지원은 버전 번호가 낮은 Dolby MAT를 지원하지 않습니다. Dolby MAT 2.1은 이전 버전의 Dolby MAT와 호환되므로 Dolby MAT 2.1에 대한 지원을 나타내는 클래스 드라이버는 일반적으로 각 버전에 대해 별도의 WAVEFORMATEXTENSIBLE_IEC61937 구조를 사용하여 Dolby MAT 2.0 및 Dolby MAT 1.0에 대한 지원을 나타냅니다.

 

WMA Pro

다음 표에 나열된 4개의 프로필 중 하나에서 WMA Pro 오디오 콘텐츠를 인코딩할 수 있습니다.

프로필 속성 - 값 설명
M0 최대 비트 전송률 – 192000bps
최대 샘플링 속도 – 48KHz
최대 채널 수 – 2
최대 버퍼 크기 – 600*1024비트
프레임당 최대 샘플 – 2048
프레임당 최대 비트 수 - 655536
무선 음악 및 스트리밍에 권장됩니다.
오디오 프레임의 최대 비트 전송률은 1536000 bps입니다.
M1 최대 비트 비율 – 385000 bps
최대 샘플링 속도 – 48KHz
최대 채널 수 – 6
최대 버퍼 크기 – 600*1024비트
프레임당 최대 샘플 – 4096
프레임당 최대 비트 - 131072
서라운드 사운드 표준 정의 동영상에 권장됩니다.
오디오 프레임의 최대 비트 전송률은 1536000 bps입니다.
M2 최대 비트 전송률 – 769000bps
최대 샘플링 속도 – 96KHz
최대 채널 수 – 6
최대 버퍼 크기 – 1200*1024비트
프레임당 최대 샘플 – 4096
프레임당 최대 비트 - 131072
서라운드 사운드 고화질 동영상에 권장됩니다.
오디오 프레임의 최대 속도는 3072000 bps입니다.
M3 최대 비트 전송률 – 3000000bps
최대 샘플링 속도 – 96KHz
최대 채널 수 – 8
최대 버퍼 크기 – 2400*1024비트
프레임당 최대 샘플 – 4096
프레임당 최대 비트 - 131072
디지털 극장에 권장합니다.
오디오 프레임의 최대 속도는 3072000 bps입니다.

 

M0 및 M1 프로필은 48KHz/16비트/스테레오(1536000bps) IEC 60958 스트림에 적합합니다. M2 및 M3 프로필은 96KHz/16비트/스테레오(3072000bps) IEC 60958 스트림에 적합합니다.

M2 프로필로 WMA Pro를 나타내는 WAVEFORMATEXTENSIBLE_IEC61937 구조의 애플리케이션에서 설정한 값은 다음 예제에 나와 있습니다.

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2;             // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 96000;    // Link runs at 96 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 384000;  // 96 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4;           // 16 bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;       // Always at 16 bits over link.
wfext.FormatExt.Format.cbSize = 34;               // Indicates that Format is part of a 
                                                  // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;    // 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6;                            // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

디바이스 형식