Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O ficheiro de cabeçalho Mmreg.h define o valor 0x0092 como sendo a tag de formato de onda para AC-3 sobre S/PDIF.
#define WAVE_FORMAT_DOLBY_AC3_SPDIF 0x0092
Tags de formato de onda 0x0240 e 0x0241 são sinônimo de 0x0092 e muitos aplicativos de DVD tratam as três tags como idênticas. No entanto, para eliminar a redundância, os drivers e aplicativos devem suportar apenas tags 0x0092 (e não suportar tags 0x0240 e 0x0241).
O GUID do subtipo de formato correspondente pode ser especificado em termos da tag wave-format usando a macro DEFINE_WAVEFORMATEX_GUID do arquivo de cabeçalho Ksmedia.h da seguinte maneira:
#define KSDATAFORMAT_SUBTYPE_AC3_SPDIF \
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DOLBY_AC3_SPDIF)
O exemplo de código a seguir mostra como um driver de miniporta WaveCyclic ou WavePci pode especificar as entradas de tabela KSDATARANGE_AUDIO para um pino que suporta o formato AC-3-over-S/PDIF:
static KSDATARANGE_AUDIO PinDataRangesAC3Stream[] =
{
// 48-kHz AC-3 over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
48000, // Minimum rate
48000 // Maximum rate
},
// If you do not include this second data range (which is identical
// to the first except for the value KSDATAFORMAT_SPECIFIER_DSOUND),
// then your non-PCM pin is not seen by DirectSound on Windows 98 SE
// or Windows 2000, regardless of the DirectX version or whether a
// hotfix or service pack is installed.
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_DSOUND)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
48000, // Minimum rate
48000 // Maximum rate
}
};
A segunda entrada de intervalo de dados na tabela anterior é necessária para habilitar o DirectSound para manipular o formato não-PCM AC-3-over-S/PDIF no Windows 2000 SP2 e no Microsoft Windows 98 SE + hotfix.
Para cada intervalo de dados que o driver de miniporta especifica com KSDATAFORMAT_SPECIFIER_WAVEFORMATEX, o driver de porta adiciona automaticamente um segundo intervalo de dados, especificado com KSDATAFORMAT_SPECIFIER_DSOUND, mas idêntico ao primeiro. (Você pode verificar isso usando o utilitário KsStudio para exibir a lista de intervalos de dados.) No Windows 2000 e Windows 98, o driver de porta cria versões KSDATAFORMAT_SPECIFIER_DSOUND de intervalos de dados apenas para formatos KSDATAFORMAT_SUBTYPE_PCM porque as versões DirectSound anteriores ao DirectSound 8 suportam apenas PCM. Esta limitação é removida no Windows XP e versões posteriores e no Windows Me. No entanto, ele não é removido no Windows 2000 SP2 ou no pacote de hot-fix para Windows 98 SE, e para oferecer suporte não-PCM no DirectSound nessas versões do Windows, um driver deve listar explicitamente dois intervalos de dados para cada formato de dados não-PCM - um com KSDATAFORMAT_SPECIFIER_WAVEFORMATEX e outro com KSDATAFORMAT_SPECIFIER_DSOUND.
Como explicado em S/PDIF Pass-Through Transmission of Non-PCM Streams, os dois intervalos de dados para AC-3 sobre S/PDIF utilizam os seguintes parâmetros PCM: dois canais e 16 bits por canal.