Odczytywanie dźwięku wielokanałowego
[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i Sink Writer. Czytnik Źródła i Zapisujący Ujścia zostały zoptymalizowane pod kątem Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał Source Reader i Sink Writer zamiast Windows Media Format 11 SDK, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Koder dekodera Windows Media Audio 9 Professional może kodować dźwięk wielokanałowy (więcej niż dwa kanały). Podczas odczytywania pliku z dźwiękiem wielokanałowym należy prawidłowo skonfigurować dane wyjściowe lub dźwięk będzie dostarczany w niższej jakości i w stereo. Aby ustawić dane wyjściowe na potrzeby dostarczania dźwięku wielokanałowego, należy ustawić dwa ustawienia wyjściowe: g_wszEnableDiscreteOutput i g_wszSpeakerConfig.
Ustawienie g_wszEnableDiscreteOutput na wartość TRUE ustawia koder-dekoder w celu dostarczania danych wyjściowych dźwięku o wysokiej rozdzielczości. Dźwięk o wysokiej rozdzielczości jest kodowany przez koder dekodera Windows Media Audio 9 z 24-bitowymi próbkami w stereo lub wielu kanałach. Jeśli to ustawienie jest false, zostanie dostarczone tylko 16-bitowe wyjście stereo.
Liczba głośników w komputerze, na którym odbywa się odtwarzanie, jest ustawiana za pomocą g_wszSpeakerConfig. To ustawienie jest wartością DWORD ustawioną na jedną z stałych DirectSound dla głośników wymienionych w poniższej tabeli. Aby rozwiązać nazwy stałych dla kompilatora, należy uwzględnić dsound.h.
Stały | Wartość | Opis |
---|---|---|
DirectnyWynikGłośnikaDS | 0x00000000 | Dźwięk jest przekazywany bezpośrednio, bez konfigurowania dla głośników. |
DSSPEAKER_HEADPHONE | 0x00000001 | Komputer kliencki jest wyposażony w słuchawki. |
DSSPEAKER_MONO | 0x00000002 | Komputer kliencki jest wyposażony w głośnik mono. |
DSSPEAKER_QUAD | 0x00000003 | Komputer kliencki jest wyposażony w głośniki kwadratowe. |
DSSPEAKER_STEREO | 0x00000004 | Komputer kliencki jest wyposażony w głośniki stereo. |
DSSPEAKER_surround | 0x00000005 | Komputer kliencki jest wyposażony w czterokanałowe głośniki dźwiękowe. |
DSSPEAKER_5POINT1 | 0x00000006 | Komputer kliencki wyposażony jest w pięć głośników i subwoofer. |
DSSPEAKER_7POINT1 | 0x00000007 | Komputer kliencki wyposażony jest w siedem głośników i subwoofer. |
Aby ustawić te ustawienia, użyj IWMReaderAdvanced2::SetOutputSetting.
Na koniec, aby kanały były wyprowadzane dyskretnie, bez redukcji do stereo, należy ustawić prawidłowy typ wyjścia, wykonując następujące kroki:
- Wywołaj IWMReader::GetOutputFormatCount, aby uzyskać liczbę obsługiwanych formatów dla odpowiednich danych wyjściowych dźwięku. Indeksy formatu wyjściowego są oparte na zera.
- Dla każdego obsługiwanego formatu wywołaj interfejs IWMReader::GetOutputFormat, aby pobrać interfejs IWMOutputMediaProps obiektu właściwości nośnika wyjściowego.
- Wywołaj IWMMediaProps::GetMediaType, aby pobrać typ multimediów.
- Jeśli pobrany typ nośnika jest żądanym typem wielokanałowym, ustaw go przez wywołanie IWMReader::SetOutputProps.
Po ustawieniu dyskretnych wyjść audio i konfiguracji głośnika, formaty wyjściowe wyliczane przez czytnik powinny zawierać formaty wielokanałowe, które używają struktury WAVEFORMATEXTENSIBLE. Jeśli wyliczysz formaty danych wyjściowych przed ustawieniem właściwości, zostaną uwzględnione tylko formaty z 1 lub 2 kanałami i maksymalnie 16 bitów na kanał. Podobnie jak w przypadku innych formatów audio, należy używać tylko formatów wyliczanych przez czytelnika; nie należy konfigurować własnych.
Notatka
Dźwięk wielokanałowy można wyświetlać tylko wtedy, gdy aplikacja jest uruchomiona w systemie Microsoft Windows XP lub nowszej wersji systemu Microsoft Windows.
Tematy pokrewne
-
Praca z audio PCM High-Resolution