Condividi tramite


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.

Formati di dispositivo