Mewakili Format untuk Transmisi IEC 61937
Dengan peningkatan perangkat penyimpanan media yang memerlukan format audio terkompresi, aplikasi harus mengidentifikasi, menjelaskan, dan menggunakan berbagai konten audio yang dikodekan baru untuk mengirimkan konten dari PC ke perangkat seperti penerima HDMI atau DisplayPort.
Untuk mewakili aliran audio yang dikodekan untuk ditransmisikan melalui antarmuka yang kompatibel dengan IEC 61937, aplikasi harus menyediakan:
Karakteristik aliran audio yang dikodekan yang akan ditransmisikan.
Karakteristik aliran audio yang didekodekan pada perangkat target.
Di Windows Vista dan sistem operasi Windows sebelumnya, aplikasi dapat menyimpulkan tingkat kualitas format audio dari jumlah saluran, ukuran sampel, dan tingkat data aliran audio yang menggunakan format . Untuk format PCM, informasi ini tersedia dari anggota nChannels, nSamplesPerSec, dan nAvgBytesPerSec dari struktur WAVEFORMATEX yang menentukan format. Untuk format non-PCM, ketiga anggota ini telah dikomandoi untuk menyimpan informasi tentang data terkompresi dalam aliran audio. Dengan demikian, struktur WAVEFORMATEX tidak memiliki informasi tentang jumlah saluran yang efektif, ukuran sampel, dan tingkat data aliran audio non-PCM setelah aliran didekompresi dan diputar. Berdasarkan informasi dalam struktur ini, pengguna atau aplikasi mungkin mengalami kesulitan menyimpulkan tingkat kualitas aliran non-PCM.
WAVEFORMATEX diperluas ke struktur WAVEFORMATEXTENSIBLE untuk memberikan karakteristik aliran tambahan. Namun, struktur ini juga tidak memadai dalam menjelaskan aliran untuk transmisi IEC 61937 karena dimaksudkan untuk mewakili satu set karakteristik dan digunakan untuk data PCM multi-saluran yang tidak dikompresi.
Di Windows 7, sistem operasi mengatasi masalah ini dengan memberikan dukungan untuk struktur baru, WAVEFORMATEXTENSIBLE_IEC61937 yang memperluas struktur WAVEFORMATEXTENSIBLE untuk menyimpan dua set karakteristik aliran audio: format audio yang dikodekan sebelum transmisi dan karakteristik aliran audio setelah didekodekan. Struktur baru secara eksplisit menentukan jumlah saluran, ukuran sampel, dan tingkat data yang efektif dari format non-PCM. Dengan informasi ini, aplikasi dapat menyimpulkan tingkat kualitas aliran non-PCM setelah didekompresi dan diputar.
Struktur WAVEFORMATEXTENSIBLE_IEC61937 dideklarasikan dalam header KsMedia.h yang disertakan dengan Windows 7 SDK. Anggota FormatExt adalah struktur WAVEFORMATEXTENSIBLE yang menyimpan karakteristik aliran yang akan ditransmisikan. Anggota Format dari struktur WAVEFORMATEXTENSIBLE adalah struktur WAVEFORMATEX . Isi WAVEFORMATEX dan WAVEFORMATEXTENSIBLE ini menunjukkan kepada aplikasi apakah struktur dapat ditafsirkan sebagai struktur WAVEFORMATEXTENSIBLE_IEC61937. Untuk struktur WAVEFORMATEXTENSIBLE_IEC61937:
Anggota wFormatTag dari WAVEFORMATEX harus berisi WAVE_FORMAT_EXTENSIBLE (
FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE
).Anggota SubFormat dari struktur WAVEFORMATEXTENSIBLE menentukan GUID format yang dikodekan untuk dikirimkan. Misalnya,
FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
menunjukkan format Dolby Digital Plus. Untuk GUID yang didukung, lihat GUID SubFormat.Ukuran yang ditunjukkan oleh anggota cbSize dari WAVEFORMATEX adalah 34 byte. (
FormatExt.Format.cbSize = 34
). Ukuran total WAVEFORMATEXTENSIBLE_IEC61937 adalah 52 byte.
Anggota dwEncodedSamplesPerSec, dwEncodedChannelCount, dan dwAverageBytesPerSec WAVEFORMATEXTENSIBLE_IEC61937 menjelaskan laju pengambilan sampel, jumlah saluran, dan laju bit dalam byte aliran aliran audio setelah didekode.
GUID SubFormat
Di Windows 7, header KsMedia.h berisi definisi untuk GUID SubFormat untuk format audio terkompresi yang ditentukan oleh CEA-861-D. GUID ditentukan dalam anggota SubFormat dari WAVEFORMATEXTENSIBLE, yang ditentukan dalam anggota FormatExt dari struktur WAVEFORMATEXTENSIBLE_IEC61937 (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat
).
GUID untuk format audio terkompresi yang tersedia sebagai format audio berkode IEC 61937 standar tercantum dalam tabel berikut. Format ini mirip dengan representasi format Active Coding 3 (AC-3) dan Digital Theater Sound (DTS) yang ada di Windows.
Jenis CEA 861 | SubFormat GUID | Deskripsi |
---|---|---|
0x00 | Lihat aliran. | |
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 (Lapisan 1 & 2) |
0x04 | 00000004-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3 |
MPEG-3 (Lapisan 3) |
0x05 | 00000005-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2 |
MPEG-2(multisaluran) |
0x06 | 00000006-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_AAC |
Pengodean Audio Tingkat Lanjut (MPEG-2/4 AAC di ADTS) |
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 Atmos dikodekan dengan Dolby Digital Plus |
0x0f | Dicadangkan yang Tidak Digunakan |
GUID untuk format audio terkompresi yang ditransmisikan dalam paket sampel audio laju bit tinggi tercantum dalam tabel berikut.
Jenis CEA 861 | SubFormat GUID | Deskripsi |
---|---|---|
0x0b | 0000000b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD |
DTS-HD (24-bit, 96Khz) |
0x0c | 0000000c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP |
Dolby MAT 1.0: Dolby TrueHD (MLP – Meridian Lossless Packing) – 24-bit 192KHz/hingga 18 Mbps, 8 saluran) |
0x0c | 0000010c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20 |
Dolby MAT 2.0: Dolby TrueHD – 24-bit 192KHz/hingga 18 Mbps, 8 saluran, atau LPCM hingga 24 Mbps. |
0x0c | 0000030c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21 |
Dolby MAT 2.1: Dolby TrueHD – 24-bit 192KHz/hingga 18 Mbps, 8 saluran, atau LPCM hingga 24 Mbps. |
0x0e | 00000164-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO |
Windows Media Audio (WMA) 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 |
Driver kelas HD Audio yang disediakan Microsoft mendukung format PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro, MAT(MLP). GUID untuk format audio terkompresi yang tidak didukung oleh driver kelas audio HD dan dapat diimplementasikan oleh solusi pihak ketiga tercantum dalam tabel berikut.
Jenis CEA 861 | SubFormat GUID | Deskripsi |
---|---|---|
0x08 | 00000008-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC |
Adaptive Transform Acoustic Coding (ATRAC) |
0x09 | 00000009-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO |
Audio Satu-Bit |
0x0d | 0000000d-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DST |
Direct Stream Transport (DST)—DSD terkompresi tanpa kehilangan (Direct Stream Digital). |
Dolby Digital Plus Format
Ketika konten Dolby Digital Plus dikirimkan melalui IEC 60958, laju pengambilan sampel tautan harus empat kali lipat tingkat pengambilan sampel konten. Dolby Digital Plus mendukung tingkat sampel konten 32 KHz, 44,1 KHz, dan 48 KHz. Antarmuka seperti HDMI tidak mendukung 128 KHz (32 KHz x 4), sehingga hanya tingkat sampel konten 44,1 dan 48 KHz yang dapat didukung.
Nilai yang ditetapkan oleh aplikasi dalam struktur WAVEFORMATEXTENSIBLE_IEC61937 untuk mewakili format Dolby Digital Plus pada tingkat sampel konten 48 KHz ditampilkan dalam contoh berikut.
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)
Konten Dolby TrueHD ditransmisikan melalui IEC 60958 pada saluran 176,4 kHz / 8 (memerlukan kecepatan bingkai IEC 60958 705,6 kHz) untuk tingkat sampel konten 44,1, 88,2 dan 176,4 kHz, dan 192 kHz / 8 saluran (memerlukan kecepatan bingkai IEC 60958 768 kHz) untuk tingkat sampel konten 48, 96 dan 192 kHz.
Nilai yang ditetapkan oleh aplikasi dalam struktur WAVEFORMATEXTENSIBLE_IEC61937 untuk mewakili Dolby TrueHD pada tingkat sampel konten 96 KHz ditampilkan dalam contoh berikut.
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.
Catatan
Dukungan untuk satu versi Dolby MAT tidak menyiratkan dukungan untuk Dolby MAT dengan nomor versi yang lebih rendah. Karena Dolby MAT 2.1 kompatibel mundur dengan versi Dolby MAT sebelumnya, driver kelas yang menunjukkan dukungan untuk Dolby MAT 2.1 biasanya juga akan menunjukkan dukungan untuk Dolby MAT 2.0 dan Dolby MAT 1.0, menggunakan struktur WAVEFORMATEXTENSIBLE_IEC61937 terpisah untuk setiap versi.
WMA Pro
Konten audio WMA Pro dapat dikodekan di salah satu dari empat profil yang tercantum dalam tabel berikut.
Profil | Properti - Nilai | Deskripsi |
---|---|---|
M0 | Laju bit maksimum – 192000 bps Laju pengambilan sampel maksimum – 48 KHz Jumlah saluran maksimum – 2 Ukuran buffer maksimum – 600* 1024 bit Sampel maksimum per bingkai – 2048 Bit maksimum per bingkai - 655536 |
Direkomendasikan untuk musik dan streaming over-the-air. Laju bit maksimum dalam bingkai audio adalah 1536000 bps. |
M1 | Laju bit maksimum – 385000 bps Laju pengambilan sampel maksimum – 48 KHz Jumlah saluran maksimum – 6 Ukuran buffer maksimum – 600* 1024 bit Sampel maksimum per bingkai – 4096 Bit maksimum per bingkai - 131072 |
Disarankan untuk film definisi standar surround-sound. Laju bit maksimum dalam bingkai audio adalah 1536000 bps. |
M2 | Laju bit maksimum – 769000 bps Laju pengambilan sampel maksimum – 96 KHz Jumlah saluran maksimum – 6 Ukuran buffer maksimum – 1200*1024 bit Sampel maksimum per bingkai – 4096 Bit maksimum per bingkai - 131072 |
Disarankan untuk film definisi tinggi suara surround. Laju maksimum dalam bingkai audio adalah 3072000 bps. |
M3 | Laju bit maksimum – 3000000 bps Laju pengambilan sampel maksimum – 96 KHz Jumlah saluran maksimum – 8 Ukuran buffer maksimum – 2400* 1024 bit Sampel maksimum per bingkai – 4096 Bit maksimum per bingkai - 131072 |
Direkomendasikan untuk bioskop digital. Laju maksimum dalam bingkai audio adalah 3072000 bps. |
Profil M0 dan M1 cocok dengan aliran IEC 60958 48 KHz/16 bit/Stereo (1536000 bps). Profil M2 dan M3 cocok dengan aliran IEC 60958 96 KHz/16 bit/Stereo (3072000 bps).
Nilai yang ditetapkan oleh aplikasi dalam struktur WAVEFORMATEXTENSIBLE_IEC61937 untuk mewakili WMA Pro sebagai profil M2 diperlihatkan dalam contoh berikut.
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.
Topik terkait