IEC 61937 Transmissions의 형식 표시
압축된 오디오 형식이 필요한 미디어 스토리지 디바이스가 증가함에 따라 애플리케이션은 PC에서 HDMI 또는 DisplayPort 수신기와 같은 디바이스로 콘텐츠를 전송하기 위해 다양한 새 인코딩된 오디오 콘텐츠를 식별, 설명 및 사용해야 합니다.
IEC 61937 호환 인터페이스를 통해 전송될 인코딩된 오디오 스트림을 나타내려면 애플리케이션에서 다음을 제공해야 합니다.
전송할 인코딩된 오디오 스트림의 특성입니다.
대상 디바이스에서 디코딩된 오디오 스트림의 특성입니다.
Windows Vista 및 이전 Windows 운영 체제에서 애플리케이션은 채널 수, 샘플 크기 및 형식을 사용하는 오디오 스트림의 데이터 속도에서 오디오 형식의 품질 수준을 유추할 수 있습니다. PCM 형식의 경우 이 정보는 형식을 지정하는 WAVEFORMATEX 구조체의 nChannels, nSamplesPerSec 및 nAvgBytesPerSec 멤버에서 사용할 수 있습니다. 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 구조체입니다. 이 WAVEFORMATEX 및 WAVEFORMATEXTENSIBLE의 내용은 구조체를 WAVEFORMATEXTENSIBLE_IEC61937 구조체로 해석할 수 있는지 여부를 애플리케이션에 나타냅니다. WAVEFORMATEXTENSIBLE_IEC61937 구조체의 경우:
WAVEFORMATEX의 wFormatTag 멤버는 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, dwEncodedChannelCount 및 dwAverageBytesPerSec 멤버 는 디코딩된 후 오디오 스트림 스트림의 샘플링 속도, 채널 수 및 비트 속도를 바이트 단위로 설명합니다.
하위 폼 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.
관련 항목