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.
Temas relacionados