Läsa multikanalsljud
[Funktionen som är associerad med den här sidan, Windows Media Format 11 SDK, är en äldre funktion. Det har ersatts av Source Reader och Sink Writer. Source Reader och Sink Writer har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder Source Reader och Sink Writer i stället för Windows Media Format 11 SDK, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]
Windows Media Audio 9 Professional-codec kan koda multichannel-ljud (mer än två kanaler). När du läser en fil med multikanalsljud måste du konfigurera utdata korrekt, annars levereras ljudet med lägre kvalitet och i stereo. Om du vill ange utdata för ljudleverans med flera kanaler måste du ange två utdatainställningar: g_wszEnableDiscreteOutput och g_wszSpeakerConfig.
Genom att ställa in g_wszEnableDiscreteOutput till TRUE konfigurerar du codec för att leverera högupplöst ljudutgång. Hd-ljud kodas av Windows Media Audio 9 codec med 24-bitarsprover i stereo eller flera kanaler. Om den här inställningen är FALSElevereras endast 16-bitars stereoutdata.
Antalet högtalare på den spelande datorn anges med g_wszSpeakerConfig. Den här inställningen är ett DWORD- värde inställt på en av DirectSound-talarkonstanterna som anges i följande tabell. För att lösa dessa konstanta namn för kompilatorn måste du inkludera dsound.h.
Konstant | Värde | Beskrivning |
---|---|---|
DSSPEAKER_DIRECTOUT | 0x00000000 | Ljudet skickas direkt, utan att konfigureras för högtalare. |
DSHÖGTALARE_HÖRLURAR | 0x00000001 | Klientdatorn är utrustad med hörlurar. |
DSSPEAKER_MONO | 0x00000002 | Klientdatorn är utrustad med en monaural högtalare. |
DSSPEAKER_QUAD | 0x00000003 | Klientdatorn är utrustad med fyrkanaliga högtalare. |
DSSPEAKER_STEREO | 0x00000004 | Klientdatorn är utrustad med stereohögtalare. |
DSSPEAKER_SURROUND | 0x00000005 | Klientdatorn är utrustad med högtalare med fyra kanalers surroundljud. |
DSSPEAKER_5POINT1 | 0x00000006 | Klientdatorn är utrustad med fem högtalare och en subwoofer. |
DSSPEAKER_7PUNKT1 | 0x00000007 | Klientdatorn är utrustad med sju högtalare och en subwoofer. |
Om du vill ange de här inställningarna använder du IWMReaderAdvanced2::SetOutputSetting.
Slutligen, för att kanalerna ska matas ut diskret, utan att brytas ner till stereo, måste du ange rätt medietyp på utgången genom att följa dessa steg:
- Anropa IWMReader::GetOutputFormatCount för att hämta antalet format som stöds för relevanta ljudutdata. Utdataformatindex är nollbaserade.
- För varje format som stöds anropar du IWMReader::GetOutputFormat för att hämta IWMOutputMediaProps-gränssnittet på objektet för utdatamedieegenskaper.
- Anropa IWMMediaProps::GetMediaType för att hämta medietypen.
- Om den hämtade medietypen är önskad flerkanalstyp anger du den genom att anropa IWMReader::SetOutputProps.
När du har angett diskreta utdata och talarkonfigurationen bör de utdataformat som läsaren räknar upp innehålla flerkanalsformat som använder WAVEFORMATEXTENSIBLE- struktur. Om du räknar upp utdataformaten innan du anger egenskaperna inkluderas endast format med 1 eller 2 kanaler och högst 16 bitar per kanal. Precis som med andra ljudformat bör du endast använda de format som uppräknas av läsaren. konfigurera inte egna.
Not
Du kan endast mata ut ljud med flera kanaler om programmet körs på Microsoft Windows XP eller en senare version av Microsoft Windows.
Relaterade ämnen