Parametry grupowania
Parametr grupowania identyfikuje kolekcję sesji audio , które są kontrolowane przez jedną kontrolkę głośności w programie sterowania głośnością systemu, Sndvol. Parametr grupowania jest identyfikatorem GUID, który jednoznacznie identyfikuje kolekcję w obrębie komputera.
Celem parametru grupowania jest pełnienie podobnej funkcji jak identyfikator GUID dla sesji międzyprocesowej. Oznacza to, że parametr grupowania umożliwia użytkownikowi kontrolowanie kolekcji strumieni z dowolnej liczby procesów jako pojedynczej jednostki. Jednak parametr grupowania służy do tego celu w okolicznościach, w których sesje między procesami nie mogą zapewnić rozwiązania.
Jeśli kilku klientów przypisze swoje strumienie do oddzielnych sesji, ale przypisze ten sam parametr grupowania do wszystkich sesji, usługa Sndvol wyświetla pojedynczą kontrolkę woluminu dla tych sesji. Aby zapewnić obsługę parametrów grupowania, usługa Sndvol lub dowolna podobna aplikacja do sterowania woluminami musi wykonać następujące czynności:
- Przed wyświetleniem kontrolek woluminu sprawdź parametry grupowania wszystkich aktywnych sesji. Grupuj razem w ramach pojedynczej kontrolki woluminu wszystkie sesje, które mają ten sam parametr grupowania.
- Gdy użytkownik zmieni ustawienie w kontrolce woluminu dla określonego parametru grupowania, zaktualizuj poziomy woluminu wszystkich sesji, które współużytkujące ten parametr grupowania.
Parametry grupowania pomagają zmniejszyć liczbę suwaków głośności wyświetlanych przez Sndvol. Użytkownicy mogą stać się zdezorientowani, jeśli Sndvol zaśmieca ekran z zbyt wieloma kontrolkami. Bez obsługi parametrów grupowania funkcja Sndvol zawsze wyświetla oddzielną kontrolkę woluminu dla każdej sesji, co może nie być odpowiednie we wszystkich okolicznościach. Ponadto parametry grupowania zapewniają wygodny sposób zapewnienia, że sesje zawierające podobne typy zawartości audio można łatwo ustawić na ten sam poziom głośności.
Jak wyjaśniono wcześniej, wyższe poziomy interfejsów API audio zazwyczaj przypisują strumienie do domyślnej sesji zależnej od procesu (identyfikowanej przez wartość identyfikatora sesji GUID GUID_NULL). To ustawienie domyślne umożliwia usłudze Sndvol wyświetlanie oddzielnej kontrolki woluminu dla każdego procesu aplikacji klienckiej, co jest często pożądanym zachowaniem. Ponadto, jeśli kilka wystąpień tego samego klienta działa w osobnych procesach, ale wymaga pojedynczej, udostępnionej kontroli woluminu, klienci mogą po prostu przypisać swoje strumienie do tej samej sesji między procesami. Żaden z tych przypadków nie wymaga użycia parametrów grupowania. Jednak jeden ważny przypadek, jak pokazano w programie Microsoft Internet Explorer, wymaga użycia parametrów grupowania w celu osiągnięcia żądanego zachowania.
Program Internet Explorer umożliwia użytkownikom otwieranie wielu okien przeglądarki, a te okna mogą nie być uruchamiane w tym samym procesie. Użytkownicy mogą stać się zdezorientowani, jeśli usługa Sndvol wyświetli osobną kontrolkę woluminu dla każdego wystąpienia aplikacji, z których wszystkie miały tę samą etykietę "Internet Explorer". Sesja między procesami nie jest w tym przypadku wykonalnym rozwiązaniem — jeśli kilka wystąpień programu Internet Explorer działa w różnych procesach, może nie być w stanie przypisać wszystkich strumieni audio do jednej sesji między procesami. Powodem jest, że okna programu Internet Explorer mogą uruchamiać instancje programu Windows Media Player lub innej wtyczki multimedialnej, która używa API audio wyższego poziomu do odtwarzania strumieni audio. Te interfejsy API zazwyczaj przypisują strumienie w procesie do domyślnej sesji specyficznej dla procesu. Program Internet Explorer nie ma kontroli nad przypisaniem tych strumieni do sesji.
WASAPI rozwiązuje ten problem, umożliwiając każdemu wystąpieniu programu Internet Explorer dostęp do kontrolek sesji jego domyślnej, specyficznej dla procesu sesji i przypisanie parametru grupowania do tej sesji. Jeśli wszystkie wystąpienia programu Internet Explorer przypisują ten sam parametr grupowania do wszystkich sesji audio, usługa Sndvol wyświetli pojedynczą kontrolkę głośności dla tych sesji.
Domyślnie sesja nie należy do żadnego grupowania. Jeśli klient nie przypisze jawnie sesji do grupowania, usługa Sndvol wyświetla dedykowaną kontrolkę woluminu dla tej sesji. Wartość parametru grupowania GUID_NULL wskazuje, że sesja nie należy do żadnego grupowania. Jeśli żaden klient nie przypisał jawnie parametru grupowania do sesji, wartość parametru grupowania dla tej sesji jest domyślnie GUID_NULL.
Klient może dynamicznie zmieniać grupowanie, do którego przypisano sesję.
Grupowanie może obejmować dowolną kombinację sesji międzyprocesowych i sesji specyficznych dla procesu na urządzeniu audio punktu końcowego .
Interfejs użytkownika Sndvol umożliwia użytkownikowi wyświetlanie kontrolek głośności tylko dla jednego urządzenia punktu końcowego audio w danym momencie. Gdy użytkownik dostosuje kontrolki głośności dla określonego urządzenia, nie ma to wpływu na poziomy woluminów sesji łączących się z innymi urządzeniami. W szczególności kontrolka woluminu dla określonego parametru grupowania ma wpływ tylko na sesje, które współużytkują parametr grupowania i są połączone z aktualnie wybranym urządzeniem. Nie ma to wpływu na sesję, która ma identyczny parametr grupowania, ale jest połączona z innym urządzeniem.
Jak opisano wcześniej, Sndvol etykietuje każdy suwak głośności, który wyświetla, nazwą i ikoną. W przypadku regulacji głośności dla grupowania, Sndvol dowolnie wybiera jedną z sesji w grupowaniu jako źródło nazwy wyświetlanej i ikony, wyświetlanej podczas regulacji głośności. W związku z tym, aby usługa Sndvol zawsze wyświetlała tę samą nazwę wyświetlaną i ikonę dla grupy, wszystkie instancje aplikacji, które przypisują sesje do tej grupy, powinny zapewnić, że ich odpowiednie sesje mają taką samą nazwę wyświetlaną i ikonę. Aby uzyskać więcej informacji na temat nazw wyświetlaczy i ikon, odnieś się do Sesje audio.
Aplikacja, taka jak Sndvol, może zarejestrować się, aby otrzymywać powiadomienia, gdy parametr grupowania dla danej sesji się zmienia. Takie powiadomienia mogą być przydatne, jeśli aplikacja buforuje informacje o przypisywaniu sesji do grupowania parametrów. Powiadomienie informuje aplikację, że buforowane informacje mogą nie być już prawidłowe.
Aby przypisać parametr grupowania do sesji, wywołaj metodę IAudioSessionControl::SetGroupingParam. Aby uzyskać parametr grupowania przypisany do sesji, wywołaj metodę IAudioSessionControl::GetGroupingParam.
Tematy pokrewne