Rappresentazione dei formati per le trasmissioni IEC 61937
Con l'aumento dei dispositivi di archiviazione multimediale che richiedono formati audio compressi, le applicazioni devono identificare, descrivere e usare un'ampia gamma di nuovi contenuti audio codificati per trasmettere contenuto da PC a dispositivi quali HDMI o DisplayPort ricevitore.
Per rappresentare un flusso audio codificato da trasmettere tramite un'interfaccia compatibile con IEC 61937, un'applicazione deve fornire:
Caratteristiche di un flusso audio codificato da trasmettere.
Caratteristiche di un flusso audio decodificato nel dispositivo di destinazione.
In Windows Vista e nei sistemi operativi Windows precedenti, un'applicazione può dedurre il livello di qualità di un formato audio dal numero di canali, dalle dimensioni del campione e dalla frequenza dei dati di un flusso audio che usa il formato. Per un formato PCM, queste informazioni sono disponibili dai membri nChannels, nSamplesPerSec e nAvgBytesPerSec della struttura WAVEFORMATEX che specifica il formato. Per un formato non PCM, questi tre membri sono stati sottoposti a comando per archiviare informazioni sui dati compressi nel flusso audio. Pertanto, la struttura WAVEFORMATEX non dispone di informazioni sul numero effettivo di canali, dimensioni del campione e frequenza dei dati del flusso audio non PCM dopo la decompressione e riproduzione del flusso. In base alle informazioni contenute in questa struttura, un utente o un'applicazione potrebbe avere difficoltà a dedurre il livello di qualità del flusso non PCM.
WAVEFORMATEX è stato esteso alla struttura WAVEFORMATEXTENSIBLE per fornire le caratteristiche di flusso aggiuntive. Tuttavia, questa struttura non è adeguata anche nella descrizione del flusso per le trasmissioni IEC 61937 perché è stato progettato per rappresentare un unico set di caratteristiche e utilizzato per i dati PCM non compressi e multicanale.
In Windows 7, il sistema operativo risolve questo problema fornendo supporto per una nuova struttura, WAVEFORMATEXTENSIBLE_IEC61937 che estende la struttura WAVEFORMATEXTENSIBLE per archiviare due set di caratteristiche del flusso audio: il formato audio codificato prima della trasmissione e le caratteristiche del flusso audio dopo la decodifica. La nuova struttura specifica in modo esplicito il numero effettivo di canali, dimensioni del campione e frequenza dei dati di un formato non PCM. Con queste informazioni, un'applicazione può dedurre il livello di qualità del flusso non PCM dopo essere stato decompresso e riprodotto.
La struttura WAVEFORMATEXTENSIBLE_IEC61937 viene dichiarata nell'intestazione KsMedia.h inclusa in Windows 7 SDK. Il membro FormatExt è la struttura WAVEFORMATEXTENSIBLE che archivia le caratteristiche del flusso da trasmettere. Il membro Format della struttura WAVEFORMATEXTENSIBLE è la struttura WAVEFORMATEX . Il contenuto di questo WAVEFORMATEX e WAVEFORMATEXTENSIBLE indicano a un'applicazione se la struttura può essere interpretata come una struttura WAVEFORMATEXTENSIBLE_IEC61937 . Per una struttura WAVEFORMATEXTENSIBLE_IEC61937 :
Il membro wFormatTag di WAVEFORMATEX deve contenere WAVE_FORMAT_EXTENSIBLE (
FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE
).Il membro SubFormat della struttura WAVEFORMATEXTENSIBLE specifica il GUID del formato codificato da trasmettere. Ad esempio,
FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
indica il formato Dolby Digital Plus. Per i GUID supportati, vedere GUID subFormat.La dimensione indicata dal membro cbSize di WAVEFORMATEX è di 34 byte. (
FormatExt.Format.cbSize = 34
). La dimensione totale di WAVEFORMATEXTENSIBLE_IEC61937 è di 52 byte.
I membri dwEncodedSamplesPerSec, dwEncodedChannelCount e dwAverageBytesPerSec di WAVEFORMATEXTENSIBLE_IEC61937 descrivono la frequenza di campionamento, il numero di canali e la velocità in bit in byte del flusso audio dopo la decodifica.
GUID SubFormat
In Windows 7 l'intestazione KsMedia.h contiene definizioni per i GUID SubFormat per i formati audio compressi definiti da CEA-861-D. I GUID vengono specificati nel membro SubFormat di WAVEFORMATEXTENSIBLE, specificato nel membro FormatExt della struttura WAVEFORMATEXTENSIBLE_IEC61937 (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat
).
I GUID per i formati audio compressi disponibili come formati audio con codifica IEC 61937 standard sono elencati nella tabella seguente. Questi formati sono simili ai formati Active Coding 3 (AC-3) e Digital Theater Sound (DTS) esistenti in Windows.
Tipo CEA 861 | SubFormat GUID | Descrizione |
---|---|---|
0x00 | Fare riferimento al flusso. | |
0x01 | 00000000-0000-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_WAVEFORMATEX |
IEC 60958 PCM |
0x02 | 00000092-0000-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL |
AC-3 |
0x03 | 00000003-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1 |
MPEG-1 (livello 1 e 2) |
0x04 | 00000004-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3 |
MPEG-3 (livello 3) |
0x05 | 00000005-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2 |
MPEG-2(multicanale) |
0x06 | 00000006-0cea-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_AAC |
Codifica audio avanzata (MPEG-2/4 AAC in 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-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS |
Dolby Atmos codificato con Dolby Digital Plus |
0x0f | Riservato inutilizzato |
I GUID per i formati audio compressi trasmessi in pacchetti di esempio audio a velocità elevata sono elencati nella tabella seguente.
Tipo CEA 861 | SubFormat GUID | Descrizione |
---|---|---|
0x0b | 0000000b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD |
DTS-HD (24 bit, 96 Khz) |
0x0c | 0000000c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP |
Dolby MAT 1.0: Dolby TrueHD (MLP – Compressione senza perdita meridiana) - 24 bit da 192 KHz/fino a 18 Mbps, 8 canali) |
0x0c | 0000010c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20 |
Dolby MAT 2.0: Dolby TrueHD: 24 bit da 192 KHz/fino a 18 Mbps, 8 canali o LPCM fino a 24 Mbps. |
0x0c | 0000030c-0cea-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21 |
Dolby MAT 2.1: Dolby TrueHD: 24 bit da 192 KHz/fino a 18 Mbps, 8 canali o LPCM fino a 24 Mbps. |
0x0e | 00000164-0000-0010-8000-00aa0389b71 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-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2 |
DTS:X E2 |
Il driver di classe HD Audio fornito da Microsoft supporta i formati PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro, MAT(MLP). I GUID per i formati audio compressi non supportati dal driver della classe audio HD e possono essere implementati da soluzioni di terze parti sono elencati nella tabella seguente.
Tipo CEA 861 | SubFormat GUID | Descrizione |
---|---|---|
0x08 | 00000008-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC |
Codifica acustica per la trasformazione adattiva (ATRAC) |
0x09 | 00000009-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO |
Audio a un bit |
0x0d | 0000000d-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DST |
Direct Stream Transport (DST): DSD compresso senza perdita (Direct Stream Digital). |
Formato Dolby Digital Plus
Quando il contenuto Dolby Digital Plus viene trasmesso su IEC 60958, la frequenza di campionamento dei collegamenti deve essere quattro volte la frequenza di campionamento del contenuto. Dolby Digital Plus supporta la frequenza di campionamento dei contenuti di 32 KHz, 44,1 KHz e 48 KHz. Le interfacce come HDMI non supportano 128 KHz (32 KHz x 4), quindi è possibile supportare solo le frequenze di campionamento dei contenuti da 44,1 e 48 KHz.
I valori impostati da un'applicazione nella struttura WAVEFORMATEXTENSIBLE_IEC61937 per rappresentare il formato Dolby Digital Plus a una frequenza di campionamento del contenuto di 48 KHz sono illustrati nell'esempio seguente.
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)
Il contenuto Dolby TrueHD viene trasmesso su IEC 60958 a 176,4 kHz / 8 canali (che richiedono una frequenza di fotogrammi IEC 60958 di 705,6 kHz) per la frequenza dei campioni di contenuto di 44,1, 88,2 e 176,4 kHz e 192 kHz / 8 canali (che richiedono una frequenza dei fotogrammi IEC 60958 di 768 kHz) per la frequenza dei campioni di contenuto di 48, 96 e 192 kHz.
I valori impostati da un'applicazione nella struttura WAVEFORMATEXTENSIBLE_IEC61937 per rappresentare Dolby TrueHD a una frequenza di campionamento del contenuto di 96 KHz sono illustrati negli esempi seguenti.
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.
Nota
Il supporto per una versione di Dolby MAT non implica il supporto per Dolby MAT con un numero di versione inferiore. Poiché Dolby MAT 2.1 è compatibile con le versioni precedenti di Dolby MAT, un driver di classe che indica il supporto per Dolby MAT 2.1 in genere indicherà anche il supporto per Dolby MAT 2.0 e Dolby MAT 1.0, usando una struttura di WAVEFORMATEXTENSIBLE_IEC61937 separata per ogni versione.
WMA Pro
Il contenuto audio WMA Pro può essere codificato in uno dei quattro profili elencati nella tabella seguente.
Profilo | Proprietà - Valore | Descrizione |
---|---|---|
M0 | Velocità massima in bit - 192000 bps Frequenza massima di campionamento - 48 KHz Numero massimo di canali - 2 Dimensioni massime del buffer - 600*1024 bit Numero massimo di campioni per fotogramma - 2048 Numero massimo di bit per fotogramma - 655536 |
Consigliato per musica e streaming over-the-air. La velocità massima in bit in un frame audio è di 1536000 bps. |
M1 | Velocità massima in bit - 385000 bps Frequenza massima di campionamento - 48 KHz Numero massimo di canali - 6 Dimensioni massime del buffer - 600*1024 bit Numero massimo di campioni per fotogramma - 4096 Numero massimo di bit per fotogramma - 131072 |
Consigliato per i film di definizione standard del suono surround. La velocità massima in bit in un frame audio è di 1536000 bps. |
M2 | Velocità massima in bit - 769000 bps Frequenza massima di campionamento - 96 KHz Numero massimo di canali - 6 Dimensioni massime del buffer - 1200*1024 bit Numero massimo di campioni per fotogramma - 4096 Numero massimo di bit per fotogramma - 131072 |
Consigliato per i film ad alta definizione audio. La frequenza massima in un frame audio è di 3072000 bps. |
M3 | Velocità massima in bit - 3000000 bps Frequenza massima di campionamento - 96 KHz Numero massimo di canali - 8 Dimensioni massime del buffer - 2400*1024 bit Numero massimo di campioni per fotogramma - 4096 Numero massimo di bit per fotogramma - 131072 |
Consigliato per il teatro digitale. La frequenza massima in un frame audio è di 3072000 bps. |
I profili M0 e M1 rientrano in un flusso IEC 60958 a 48 KHz/16 bit/Stereo (1536000 bps). I profili M2 e M3 rientrano in un flusso IEC 60958 a 96 KHz/16 bit/Stereo (3072000 bps).
I valori impostati da un'applicazione nella struttura WAVEFORMATEXTENSIBLE_IEC61937 per rappresentare WMA Pro come profilo M2 sono illustrati nell'esempio seguente.
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.
Argomenti correlati