Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het headerbestand Mmreg.h definieert de waarde 0x0092 om de wave-formattag te zijn voor AC-3-over-S/PDIF.
#define WAVE_FORMAT_DOLBY_AC3_SPDIF 0x0092
Tags met golfindeling 0x0240 en 0x0241 zijn synoniem voor 0x0092 en veel dvd-toepassingen behandelen de drie tags als identiek. Om redundantie te elimineren, moeten stuurprogramma's en toepassingen alleen tag 0x0092 ondersteunen (en geen ondersteuning bieden voor tags 0x0240 en 0x0241).
De bijbehorende formaat-subtype GUID kan als volgt worden gespecificeerd in termen van de wave-formattag door gebruik te maken van de DEFINE_WAVEFORMATEX_GUID macro uit het headerbestand Ksmedia.h.
#define KSDATAFORMAT_SUBTYPE_AC3_SPDIF \
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DOLBY_AC3_SPDIF)
In het volgende codevoorbeeld ziet u hoe een WaveCyclic- of WavePci-minipoortstuurprogramma de KSDATARANGE_AUDIO tabelvermeldingen kan opgeven voor een pin die de AC-3-over-S/PDIF-indeling ondersteunt:
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
}
};
De tweede gegevensbereikvermelding in de voorgaande tabel is nodig om DirectSound in te schakelen voor het verwerken van de niet-PCM AC-3-over-S/PDIF-indeling in Windows 2000 SP2 en in Microsoft Windows 98 SE + hotfix.
Voor elk gegevensbereik dat het minipoortstuurprogramma aangeeft met KSDATAFORMAT_SPECIFIER_WAVEFORMATEX, voegt het poortstuurprogramma automatisch een tweede gegevensbereik toe dat is opgegeven met KSDATAFORMAT_SPECIFIER_DSOUND, maar anders identiek is aan de eerste. (U kunt dit controleren met behulp van het hulpprogramma KsStudio om de lijst met gegevensbereiken weer te geven.) In Windows 2000 en Windows 98 maakt het poortstuurprogramma alleen KSDATAFORMAT_SPECIFIER_DSOUND versies van gegevensbereiken voor KSDATAFORMAT_SUBTYPE_PCM indelingen omdat DirectSound-versies vóór DirectSound 8 alleen PCM ondersteunen. Deze beperking wordt verwijderd in Windows XP en hoger en in Windows Me. Het wordt echter niet verwijderd in Windows 2000 SP2 of in het hot-fix-pakket voor Windows 98 SE en ter ondersteuning van niet-PCM op DirectSound in deze Windows-versies, een stuurprogramma moet expliciet twee gegevensbereiken vermelden voor elke niet-PCM-gegevensindeling- een met KSDATAFORMAT_SPECIFIER_WAVEFORMATEX en een andere met KSDATAFORMAT_SPECIFIER_DSOUND.
Zoals uitgelegd in S/PDIF Pass-Through Transmission of Non-PCM Streams, gebruiken de twee AC-3-over-S/PDIF-gegevensbereiken beide de volgende PCM-parameters: twee kanalen en 16 bits per kanaal.