Share via


Representar formatos para transmisiones IEC 61937

Con el aumento de los dispositivos de almacenamiento multimedia que requieren formatos de audio comprimidos, las aplicaciones deben identificar, describir y usar una variedad de contenido de audio codificado nuevo para transmitir contenido de equipos a dispositivos como HDMI o DisplayPort receptor.

Para representar una secuencia de audio codificada que se va a transmitir a través de una interfaz compatible con IEC 61937, una aplicación debe proporcionar:

  • Características de una secuencia de audio codificada que se va a transmitir.

  • Características de una secuencia de audio descodificada en el dispositivo de destino.

En Windows Vista y sistemas operativos Windows anteriores, una aplicación puede deducir el nivel de calidad de un formato de audio del número de canales, el tamaño de la muestra y la velocidad de datos de una secuencia de audio que usa el formato. Para un formato PCM, esta información está disponible en los miembros nChannels, nSamplesPerSec y nAvgBytesPerSec de la estructura WAVEFORMATEX que especifica el formato. En el caso de un formato que no sea PCM, estos tres miembros se han ordenado para almacenar información sobre los datos comprimidos en la secuencia de audio. Por lo tanto, la estructura WAVEFORMATEX carece de información sobre el número efectivo de canales, tamaño de muestra y velocidad de datos de la secuencia de audio que no es PCM después de que la secuencia se descomprima y se reproduce. En función de la información de esta estructura, un usuario o una aplicación podría tener dificultades para deducir el nivel de calidad de la secuencia que no es PCM.

WaveFORMATEX se extendió a la estructura WAVEFORMATEXTENSIBLE para proporcionar las características de secuencia adicionales. Sin embargo, esta estructura tampoco es adecuada para describir la secuencia de transmisiones IEC 61937 porque estaba pensada para representar un único conjunto de características y se usó para datos PCM sin comprimir.

En Windows 7, el sistema operativo soluciona este problema proporcionando compatibilidad con una nueva estructura, WAVEFORMATEXTENSIBLE_IEC61937 que extiende la estructura WAVEFORMATEXTENSIBLE para almacenar dos conjuntos de características de secuencia de audio: el formato de audio codificado antes de la transmisión y las características de la secuencia de audio después de que se haya descodificado. La nueva estructura especifica explícitamente el número efectivo de canales, tamaño de muestra y velocidad de datos de un formato que no sea PCM. Con esta información, una aplicación puede deducir el nivel de calidad de la secuencia que no es PCM después de que se descomprima y se reproduzca.

La estructura WAVEFORMATEXTENSIBLE_IEC61937 se declara en el encabezado KsMedia.h incluido con el SDK de Windows 7. El miembro FormatExt es la estructura WAVEFORMATEXTENSIBLE que almacena las características de la secuencia que se van a transmitir. El miembro Format de la estructura WAVEFORMATEXTENSIBLE es la estructura WAVEFORMATEX . El contenido de este WAVEFORMATEX y WAVEFORMATEXTENSIBLE indican a una aplicación si la estructura se puede interpretar como una estructura de WAVEFORMATEXTENSIBLE_IEC61937 . Para una estructura de WAVEFORMATEXTENSIBLE_IEC61937 :

  • El miembro wFormatTag de WAVEFORMATEX debe contener WAVE_FORMAT_EXTENSIBLE (FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE).

  • El miembro SubFormat de la estructura WAVEFORMATEXTENSIBLE especifica el GUID del formato codificado que se va a transmitir. Por ejemplo, FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL indica el formato Dolby Digital Plus. Para conocer los GUID admitidos, consulte SubFormat GUID.

  • El tamaño indicado por el miembro cbSize del WAVEFORMATEX es de 34 bytes. (FormatExt.Format.cbSize = 34). El tamaño total de WAVEFORMATEXTENSIBLE_IEC61937 es de 52 bytes.

Los miembros dwEncodedSamplesPerSec, dwEncodedChannelCount y dwAverageBytesPerSec de WAVEFORMATEXTENSIBLE_IEC61937 describen la velocidad de muestreo, el número de canales y la velocidad de bits en bytes de la secuencia de audio después de que se haya descodificado.

GUID de subformato

En Windows 7, el encabezado KsMedia.h contiene definiciones para los GUID de SubFormat para los formatos de audio comprimidos definidos por CEA-861-D. Los GUID se especifican en el miembro SubFormat del WAVEFORMATEXTENSIBLE, especificado en el miembro FormatExt de la estructura WAVEFORMATEXTENSIBLE_IEC61937 (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat).

Los GUID para los formatos de audio comprimidos que están disponibles como formatos de audio codificados en IEC 61937 estándar se enumeran en la tabla siguiente. Estos formatos son similares a las representaciones existentes de Active Coding 3 (AC-3) y Digital Theater Sound (DTS) en Windows.

Tipo CEA 861 GUID de subformato Descripción
0x00 Consulte la secuencia.
0x01 00000000-0000-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_WAVEFORMATEX
IEC 60958 PCM
0x02 00000092-0000-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
AC-3
0x03 00000003-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1
MPEG-1 (capa 1 & 2)
0x04 00000004-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3
MPEG-3 (capa 3)
0x05 0000005-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2
MPEG-2(multicanal)
0x06 00000006-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_AAC
Codificación avanzada de audio (MPEG-2/4 AAC en ADTS)
0x07 00000008-0000-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS
DTS
0x0a 0000000a-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS
Dolby Digital Plus
0x0a 0000010a-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS
Dolby Atmos codificado con Dolby Digital Plus
0x0f Reservado sin usar

 

Los GUID para los formatos de audio comprimidos que se transmiten en paquetes de muestra de audio de alta velocidad de bits se enumeran en la tabla siguiente.

Tipo CEA 861 GUID de subformato Descripción
0x0b 0000000b-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS-HD (24 bits, 96Khz)
0x0c 0000000c-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP
Dolby MAT 1.0:
Dolby TrueHD (MLP – Meridian Lossless Packing) – 24 bits de 192KHz/hasta 18 Mbps, 8 canales)
0x0c 0000010c-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20
Dolby MAT 2.0:
Dolby TrueHD: 24 bits 192KHz/hasta 18 Mbps, 8 canales o LPCM hasta 24 Mbps.
0x0c 0000030c-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21
Dolby MAT 2.1:
Dolby TrueHD: 24 bits 192KHz/hasta 18 Mbps, 8 canales o LPCM hasta 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

 

El controlador de clase HD Audio proporcionado por Microsoft admite formatos PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro, MAT(MLP). Los GUID para los formatos de audio comprimidos que no son compatibles con el controlador de clase de audio HD y se pueden implementar mediante soluciones de terceros se enumeran en la tabla siguiente.

Tipo CEA 861 GUID de subformato Descripción
0x08 00000008-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC
Codificación acústica de transformación adaptable (ATRAC)
0x09 00000009-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO
audio de One-Bit
0x0d 0000000d-0cea-0010-80000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DST
Direct Stream Transport (DST): DSD comprimido sin pérdida (Direct Stream Digital).

 

Formato Dolby Digital Plus

Cuando el contenido de Dolby Digital Plus se transmite a través de IEC 60958, la frecuencia de muestreo de vínculo debe ser cuatro veces la frecuencia de muestreo del contenido. Dolby Digital Plus admite velocidades de muestreo de contenido de 32 KHz, 44,1 KHz y 48 KHz. Las interfaces como HDMI no admiten 128 KHz (32 KHz x 4), por lo que solo se pueden admitir frecuencias de muestreo de contenido de 44,1 y 48 KHz.

Los valores establecidos por una aplicación en la estructura de WAVEFORMATEXTENSIBLE_IEC61937 para representar el formato Dolby Digital Plus a una velocidad de muestreo de contenido de 48 KHz se muestran en el ejemplo siguiente.

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)

El contenido Dolby TrueHD se transmite a través de IEC 60958 a 176,4 kHz / 8 canales (que requieren una velocidad de fotogramas IEC 60958 de 705,6 kHz) para las velocidades de muestreo de contenido de 44,1, 88,2 y 176,4 kHz y 192 kHz / 8 canales (que requieren una velocidad de fotogramas IEC 60958 de 768 kHz) para las velocidades de muestreo de contenido de 48, 96 y 192 kHz.

Los valores establecidos por una aplicación en la estructura WAVEFORMATEXTENSIBLE_IEC61937 para representar Dolby TrueHD a una velocidad de muestreo de contenido de 96 KHz se muestran en los ejemplos siguientes.

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

La compatibilidad con una versión de Dolby MAT no implica la compatibilidad con Dolby MAT con un número de versión inferior. Dado que Dolby MAT 2.1 es compatible con versiones anteriores de Dolby MAT, un controlador de clase que indica la compatibilidad con Dolby MAT 2.1 normalmente también indicará compatibilidad con Dolby MAT 2.0 y Dolby MAT 1.0, usando una estructura de WAVEFORMATEXTENSIBLE_IEC61937 independiente para cada versión.

 

WMA Pro

El contenido de audio de WMA Pro se puede codificar en uno de los cuatro perfiles enumerados en la tabla siguiente.

Perfil Propiedad : valor Descripción
M0 Velocidad de bits máxima : 192000 bps
Frecuencia de muestreo máxima : 48 KHz
Número máximo de canales: 2
Tamaño máximo del búfer: 600*1024 bits
Máximo de muestras por fotograma – 2048
Bits máximos por fotograma: 655536
Recomendado para música y streaming por vía inalámbrica.
La velocidad máxima de bits en un fotograma de audio es de 1536000 bps.
M1 Velocidad máxima de bits : 385000 bps
Frecuencia de muestreo máxima : 48 KHz
Número máximo de canales: 6
Tamaño máximo del búfer: 600*1024 bits
Máximo de muestras por fotograma : 4096
Bits máximos por fotograma: 131072
Recomendado para películas de definición estándar de sonido envolvente.
La velocidad máxima de bits en un fotograma de audio es de 1536000 bps.
M2 Velocidad de bits máxima : 769000 bps
Frecuencia de muestreo máxima : 96 KHz
Número máximo de canales: 6
Tamaño máximo del búfer: 1200*1024 bits
Máximo de muestras por fotograma : 4096
Bits máximos por fotograma: 131072
Recomendado para películas de alta definición de sonido envolvente.
La velocidad máxima en un fotograma de audio es de 3072000 bps.
M3 Velocidad máxima de bits : 3000000 bps
Frecuencia de muestreo máxima : 96 KHz
Número máximo de canales: 8
Tamaño máximo del búfer: 2400*1024 bits
Máximo de muestras por fotograma : 4096
Bits máximos por fotograma: 131072
Recomendado para el teatro digital.
La velocidad máxima en un fotograma de audio es de 3072000 bps.

 

Los perfiles M0 y M1 encajan en un flujo IEC 60958 de 48 KHz/16 bits/Estéreo (1536000 bps). Los perfiles M2 y M3 encajan en un flujo IEC 60958 de 96 KHz/16 bits/Estéreo (3072000 bps).

Los valores establecidos por una aplicación en la estructura WAVEFORMATEXTENSIBLE_IEC61937 para representar WMA Pro como perfil M2 se muestran en el ejemplo siguiente.

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.

Formatos de dispositivo