GUIDs de subformato para formatos compactados de áudio
Para o Windows 7, novos GUIDs de subformato foram adicionados ao arquivo de cabeçalho Ksmedia.h para fornecer suporte para formatos de áudio compactados. GUIDs de subformato indicam o subformato específico de um formato de dados. Esses formatos são definidos pelo padrão da Consumer Electronics Association (CEA) para áudio não compactado.
Como resultado do padrão CEA-861-D, você deve garantir que os formatos de áudio que não são suportados por um dispositivo CEA não sejam transmitidos a esse dispositivo. Interface multimídia de alta definição (HDMI) e DisplayPort são exemplos de dispositivos CEA.
Para acesso em modo de usuário, os GUIDs são especificados no membro SubFormat de WAVEFORMATEXTENSIBLE e no membro FormatExt de WAVEFORMATEXTENSIBLE_IEC61937. Para acesso em modo kernel para drivers de áudio, os GUIDs são especificados no membro DataRange da estrutura KSDATARANGE_AUDIO.
Os GUIDs para os formatos de áudio compactados disponíveis estão listados na tabela a seguir.
Observação Nem todos os formatos disponíveis são suportados pelo driver de classe de áudio HD do Windows 7. Os formatos suportados pelo Windows 7 são indicados nas tabelas com um asterisco (*).
Tipo CEA 861 | GUID de subformato | Descrição |
---|---|---|
0x00 |
Consulte o fluxo. |
|
0x01 |
00000000-0000-0010-8000-00aa0389b71 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 (Layer1 & 2) |
0x04 |
00000005-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3 |
MPEG-3 (Camada 3) |
0x05 |
00000004-0cea-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2 |
MPEG-2 (Multicanal) |
0x06 |
00000006-0cea-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_AAC |
Codificação de áudio avançada* (MPEG-2/4 AAC em ADTS) |
0x07 |
00000008-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS |
Som de Teatro Digital (DTS) |
0x0a |
0000000a-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS |
Dolby Digital Plus |
0x0f |
Não utilizado. |
Reserved |
Os GUIDs para formatos de áudio transmitidos em pacotes de amostra de áudio de alta taxa de bits estão listados na tabela a seguir.
Tipo CEA 861 | GUID de subformato | Descrição |
---|---|---|
0x0b |
0000000b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD |
DTS-HD (24 bits, 95KHz) |
0x0c |
0000000c-0cea-0010-8000-00aa0389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP |
MAT(MLP)- Embalagem sem perdas Meridian (Dolby Digital True HD - 24-bit 196KHz/até 18M bps, 8 canais) |
0x0e |
00000164-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO |
Windows Media Audio (WMA) Pro |
Os GUIDs para formatos de áudio compactados que podem ser implementados por soluções de terceiros estão listados na tabela a seguir.
Tipo CEA 861 | GUID de subformato | Descrição |
---|---|---|
0x08 |
00000008-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC |
Codificação Acústica por Transformada Adaptativa (ATRAC) |
0x09 |
00000009-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO |
Áudio de um bit |
0x0d |
0000000D-0CEA-0010-8000-00AA00389B71 KSDATAFORMAT_SUBTYPE_IEC61937_DST |
Transporte de fluxo direto (DST) |
O exemplo de código a seguir mostra como um driver de miniporta de áudio define e inicializa uma estrutura KSDATARANGE_AUDIO para uso com um coletor HDMI que tem um decodificador Dolby Digital Plus totalmente funcional. Um dissipador deste tipo suporta taxas de transferência de 44,1 e 48 KHz.
Para uma taxa de amostragem de 48 KHz, um driver de miniporta de áudio usa o código a seguir para definir e inicializar uma estrutura KSDATARANGE_AUDIO. Este código mostra os intervalos de dados que o driver de miniporta de áudio expõe:
//Define and initialize KSDATARANGE_AUDIO structure
// for use with a sample rate of 48 KHz.
KSDATARANGE_AUDIO drDDPlus48;
drDDPlus48.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus48.DataRange.Flags = 0; // Ignored.
drDDPlus48.DataRange.SampleSize = 0; // Ignored.
drDDPlus48.DataRange.Reserved = 0;
drDDPlus48.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus48.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus48.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus48.MaximumChannels = 2
drDDPlus48.MinimumBitsPerSample = 16; // All encoded data is transmitted at
drDDPlus48.MaximumBitsPerSample = 16; // 16 bits over IEC 60958.
drDDPlus48.MinimumSampleFrequency = 192000; // 48 KHz * 4.
drDDPlus48.MaximumSampleFrequency = 192000;
Para uma taxa de amostragem de 44,1 KHz, um driver de miniporta de áudio usa o seguinte código para definir e inicializar uma estrutura KSDATARANGE_AUDIO:
//Define and initialize KSDATARANGE_AUDIO structure
// for use with a sample rate of 41.1 KHz.
KSDATARANGE_AUDIO drDDPlus44;
drDDPlus44.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus44.DataRange.Flags = 0 // Ignored.
drDDPlus44.DataRange.SampleSize = 0 // Ignored.
drDDPlus44.DataRange.Reserved = 0;
drDDPlus44.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus44.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus44.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus44.MaximumChannels = 2
drDDPlus44.MinimumBitsPerSample = 16; // All encoded data is transmitted at
drDDPlus44.MaximumBitsPerSample = 16; // 16 bits over IEC 60958.
drDDPlus44.MinimumSampleFrequency = 176400; // 44.1 KHz * 4
drDDPlus44.MaximumSampleFrequency = 176400;