Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podstawowe interfejsy API audio pełnią rolę podstaw podsystemu audio trybu użytkownika. Podstawowe interfejsy API audio są implementowane jako cienka warstwa składników systemu trybu użytkownika, które oddzielają klientów trybu użytkownika od sterowników audio trybu jądra i sprzętu audio. Interfejsy API audio wyższego poziomu, takie jak Media Foundation, uzyskują dostęp do urządzeń audio za pośrednictwem podstawowych interfejsów API audio. Ponadto niektóre aplikacje audio komunikują się bezpośrednio z podstawowymi interfejsami API audio.
Podstawowe interfejsy API audio obsługują przyjazne dla użytkownika pojęcie urządzenia punktu końcowego audio. Urządzenie punktu końcowego audio to abstrakcja oprogramowania reprezentująca urządzenie fizyczne, które użytkownik manipuluje bezpośrednio. Przykładami urządzeń punktów końcowych audio są głośniki, słuchawki i mikrofony. Aby uzyskać więcej informacji, zobacz Urządzenia punktu końcowego audio.
Na poniższym diagramie przedstawiono podstawowe interfejsy API audio i ich relację z innymi składnikami audio trybu użytkownika.
Dla uproszczenia powyższy diagram przedstawia tylko ścieżkę danych renderowania audio do urządzenia punktu końcowego — diagram nie pokazuje ścieżki danych przechwytywania dźwięku. Podstawowe interfejsy API audio obejmują interfejs API MMDevice, WASAPI, interfejs API DeviceTopology i interfejs API EndpointVolume, które są implementowane w modułach systemu Audioses.dll i Mmdevapi.dll trybu użytkownika.
Podstawowe interfejsy API audio stanowią podstawę dla interfejsów API wyższego poziomu, takich jak Media Foundation, które komunikują się z podstawowymi interfejsami API audio za pośrednictwem składnika renderowania audio przesyłania strumieniowego (SAR).
Klient interfejsu WASAPI przekazuje dane do urządzenia punktu końcowego za pośrednictwem buforu punktu końcowego. Składniki oprogramowania systemowego i sprzętu zarządzają przenoszeniem danych z buforu punktu końcowego do urządzenia punktu końcowego w sposób w dużej mierze niewidoczny dla klienta. Ponadto w przypadku urządzenia punktu końcowego, które podłącza się do karty audio z wykrywaniem obecności gniazda, klient może utworzyć bufor punktu końcowego tylko dla urządzenia punktu końcowego, które jest fizycznie obecne. Aby uzyskać więcej informacji na temat wykrywania obecności jacka, zobacz Audio Endpoint Devices (Urządzenia punktu końcowego audio).
Na powyższym diagramie przedstawiono dwa typy buforu punktu końcowego. Jeśli klient WASAPI otwiera strumień w trybie shared, klient zapisuje dane audio w buforze punktu końcowego, a aparat audio Windows odczytuje dane z buforu. W tym trybie klient udostępnia sprzęt audio innym aplikacjom uruchomionym w innych procesach. Aparat audio miesza strumienie z tych aplikacji i odtwarza wynikową mieszankę przez sprzęt. Aparat audio jest składnikiem systemu trybu użytkownika (Audiodg.dll), który wykonuje wszystkie operacje przetwarzania strumieniowego w oprogramowaniu. W przeciwieństwie do tego, jeśli klient otworzy strumień w trybie wyłącznym, klient ma wyłączny dostęp do sprzętu audio. Zazwyczaj tylko niewielka liczba aplikacji "pro audio" lub RTC wymaga trybu wyłączności. Chociaż diagram przedstawia zarówno strumienie trybu udostępnionego, jak i w trybie wyłączności, istnieje tylko jeden z tych dwóch strumieni (i odpowiadający mu bufor punktu końcowego), w zależności od tego, czy klient otwiera strumień w trybie udostępnionym, czy w trybie wyłączności.
W trybie wyłącznym klient może otworzyć strumień w dowolnym formacie audio obsługiwanym przez urządzenie punktu końcowego. W trybie udostępnionym klient musi otworzyć strumień w formacie mix, który jest obecnie używany przez aparat audio (lub format podobny do formatu mix). Strumienie wejściowe aparatu audio i mieszanka wyjściowa z aparatu są w tym formacie.
W trybie małych opóźnień, który jest dostępny dla strumieni w trybie udostępnionym, aparat audio działa w trybie ściągania, w którym występuje znaczne zmniejszenie opóźnienia. Jest to przydatne w przypadku aplikacji komunikacyjnych, które wymagają małego opóźnienia strumienia audio w celu szybszego przesyłania strumieniowego.
Aplikacje, które zarządzają strumieniami audio o małych opóźnieniach, mogą używać usługi MmCSS (Multimedia Class Scheduler Service), aby zwiększyć priorytet wątków aplikacji, które uzyskują dostęp do buforów punktów końcowych. Program MMCSS umożliwia uruchamianie aplikacji audio o wysokim priorytcie bez odmowy zasobów procesora CPU do aplikacji o niższym priorytcie. Program MMCSS przypisuje priorytet wątkowi na podstawie jego nazwy zadania. Na przykład nazwy zadań "Audio" i "Pro Audio" są obsługiwane dla wątków, które zarządzają strumieniami audio. Domyślnie priorytet wątku "Dźwięk pro" jest wyższy niż wątek "Audio". Aby uzyskać więcej informacji na temat usługi MMCSS, zobacz dokumentację zestawu SDK Windows.
Podstawowe interfejsy API audio obsługują zarówno formaty strumieni PCM, jak i innych niż PCM. Jednak aparat audio może mieszać tylko strumienie PCM. W związku z tym tylko strumienie w trybie wyłącznym mogą mieć formaty inne niż PCM. Aby uzyskać więcej informacji, zobacz Formaty urządzeń.
Aparat audio działa we własnym chronionym procesie, który jest oddzielony od procesu, w którym działa aplikacja. Aby obsługiwać strumień w trybie udostępnionym, usługa audio Windows (pole z etykietą "Usługa audio" na powyższym diagramie) przydziela bufor punktu końcowego między procesami, który jest dostępny zarówno dla aplikacji, jak i aparatu audio. W trybie wyłącznym bufor punktu końcowego znajduje się w pamięci, która jest dostępna zarówno dla aplikacji, jak i sprzętu audio.
Usługa audio Windows to moduł, który implementuje zasady Windows audio. Zasady audio to zestaw reguł wewnętrznych, które system stosuje do interakcji między strumieniami audio z wielu aplikacji, które współużytkują i konkurują o korzystanie z tego samego sprzętu audio. Usługa Windows audio implementuje zasady audio, ustawiając parametry sterowania dla aparatu audio. Obowiązki usługi audio obejmują:
- Śledzenie urządzeń audio, które użytkownik dodaje do systemu lub usuwa z systemu.
- Monitorowanie ról przypisanych do urządzeń audio w systemie.
- Zarządzanie strumieniami audio z grup zadań, które tworzą podobne klasy zawartości audio (konsola, multimedia i komunikacja).
- Kontrolowanie poziomu głośności połączonego strumienia wyjściowego ("submix") dla każdego z różnych typów zawartości audio.
- Informowanie aparatu audio o elementach przetwarzania w ścieżkach danych strumieni audio.
W niektórych wersjach Windows usługa audio Windows jest domyślnie wyłączona i musi być jawnie włączona, zanim system będzie mógł odtwarzać dźwięk.
W przykładzie pokazanym na powyższym diagramie urządzenie punktu końcowego jest zestawem głośników podłączonych do karty audio. Aplikacja kliencka zapisuje dane audio w buforze punktu końcowego, a aparat audio obsługuje szczegóły transportu danych z buforu do urządzenia punktu końcowego.
Pole oznaczone etykietą "Sterownik audio" na powyższym diagramie może być kombinacją składników sterowników dostarczonych przez system i dostarczonych przez dostawcę. W przypadku adaptera audio w magistrali PCI lub PCI Express system dostarcza sterownik systemowy klasy portów (Portcls.sys), który implementuje zestaw sterowników portów dla różnych funkcji audio w adapterze, a dostawca sprzętu dostarcza sterownik adaptera, który implementuje zestaw sterowników miniportu do obsługi operacji specyficznych dla urządzenia dla sterowników portów. W przypadku kontrolera Audio o wysokiej rozdzielczości i kodera kodera na magistrali PCI lub PCI Express system dostarcza sterownik adaptera (Hdaudio.sys), a żaden sterownik dostarczony przez dostawcę nie jest wymagany. W przypadku adaptera audio w magistrali USB system dostarcza sterownik systemu klasy AVStream (Ks.sys) plus sterownik audio USB (Usbaudio.sys); ponownie nie jest wymagany żaden sterownik dostarczony przez dostawcę.
Dla uproszczenia powyższy diagram przedstawia tylko strumienie renderowania. Jednak podstawowe interfejsy API audio obsługują również strumienie przechwytywania. W trybie udostępnionym kilku klientów może udostępniać przechwycony strumień z urządzenia sprzętowego audio. W trybie wyłącznym jeden klient ma wyłączny dostęp do przechwyconego strumienia z urządzenia.
Tematy pokrewne