Поделиться через


Параметры группировки

Параметр группировки определяет коллекцию звуковых сеансов , которые управляются одним элементом управления томом в системной программе управления громкостями, Sndvol. Параметр группировки — это GUID, который однозначно идентифицирует коллекцию в область компьютера.

Назначение параметра группировки аналогично GUID сеанса для межпроцессного сеанса. То есть параметр группировки позволяет пользователю управлять коллекцией потоков из любого количества процессов в виде одной единицы. Однако параметр группировки служит этой цели в случаях, когда межпроцессные сеансы не могут предоставить решение.

Если несколько клиентов назначают соответствующие потоки отдельным сеансам, но назначают один параметр группировки всем сеансам, Sndvol отображает единый элемент управления томом для этих сеансов. Чтобы обеспечить поддержку группирования параметров, Sndvol или любого аналогичного приложения управления томами необходимо выполнить следующие действия:

  • Перед отображением элементов управления томом проверка параметры группировки всех активных сеансов. Группировать вместе с одним элементом управления томом все сеансы с одинаковым параметром группировки.
  • Когда пользователь изменяет параметр на элементе управления томом для определенного параметра группировки, обновите уровни томов всех сеансов, которые совместно используют этот параметр группировки.

Параметры группировки помогают уменьшить количество элементов управления томами, отображаемых Sndvol. Пользователи могут запутаться, если Sndvol загромождает его отображение с слишком большим количеством элементов управления. Без поддержки параметров группировки Sndvol всегда будет отображать отдельный элемент управления томом для каждого сеанса, который может не соответствовать всем обстоятельствам. Кроме того, параметры группировки предоставляют удобный способ обеспечить, чтобы сеансы, содержащие похожие типы звукового содержимого, можно легко задать одинаковый уровень громкости.

Как описано ранее, ИНТЕРФЕЙСы API аудио на более высоком уровне обычно назначают потоки сеансу по умолчанию, конкретному процессу (идентифицируемым значением GUID сеанса GUID_NULL). По умолчанию Sndvol позволяет отображать отдельный элемент управления томом для каждого процесса клиентского приложения, что часто является требуемым поведением. Кроме того, если несколько экземпляров одного клиента выполняются в отдельных процессах, но требуют единого общего управления томом, клиенты могут просто назначать потоки одному сеансу межпроцессного процесса. Ни в чем из этих случаев не требуется использовать параметры группировки. Тем не менее, один важный случай, как пример Microsoft Internet Обозреватель, требует использования параметров группировки для достижения требуемого поведения.

Интернет Обозреватель позволяет пользователям открывать несколько окон браузера, и эти окна могут не выполняться в одном процессе. Пользователи могут запутаться, если Sndvol отображал отдельный элемент управления томом для каждого экземпляра приложения, все из которых имели одну метку "Интернет Обозреватель". Межпроцессный сеанс не является возможным решением в этом случае— если несколько экземпляров Интернет-Обозреватель выполняются в разных процессах, они могут быть не в состоянии назначить все звуковые потоки одному сеансу между процессами. Причина в том, что интернет-Обозреватель окна могут запускать экземпляры Медиаплеер Windows или другого мультимедийного подключаемого модуля, использующего БОЛЕЕ высокий уровень API звука для воспроизведения своих звуковых потоков. Эти API обычно назначают потоки в процессе сеансу по умолчанию. Интернет-Обозреватель не контролирует назначение этих потоков сеансам.

WASAPI решает эту проблему, позволяя каждому экземпляру Интернет-Обозреватель получить доступ к элементам управления сеансом по умолчанию, сеансу, который зависит от процесса, и назначить параметр группировки этому сеансу. Если все экземпляры Интернета Обозреватель назначить один и тот же параметр группировки всем их звуковым сеансам, Sndvol отобразит единый элемент управления громкости для этих сеансов.

По умолчанию сеанс не входит в группирование. Если клиент явно не назначает сеанс группировке, то Sndvol отображает выделенный элемент управления томом для этого сеанса. Значение параметра группировки GUID_NULL указывает, что сеанс не принадлежит какой-либо группировке. Если клиент явно не назначил параметр группировки сеансу, значение параметра группировки для этого сеанса по умолчанию GUID_NULL.

Клиент может динамически изменять группирование, которому назначен сеанс.

Группирование может включать любое сочетание межпроцессных сеансов и сеансов, относящихся к процессу, на устройстве аудио конечной точки.

Пользовательский интерфейс Sndvol позволяет пользователю одновременно отображать элементы управления громкости только для одного устройства аудио конечной точки. Когда пользователь настраивает элементы управления томами для определенного устройства, уровни томов сеансов, которые подключаются к другим устройствам, не затрагиваются. В частности, элемент управления томом для определенного параметра группировки влияет только на сеансы, которые совместно используют параметр группировки и подключены к выбранному устройству. Сеанс, который происходит с одинаковым параметром группировки, но подключен к другому устройству, не затрагивается.

Как описано ранее, Sndvol метки каждого элемента управления томом, который отображается с отображаемым именем и значком. В случае элемента управления томом для группировки Sndvol произвольно выбирает один из сеансов в группе в качестве источника отображаемого имени и значка, отображаемого с помощью элемента управления томом. Таким образом, чтобы убедиться, что Sndvol всегда отображает одинаковое отображаемое имя и значок для группировки, все экземпляры приложений, назначаемые сеансам, должны убедиться, что соответствующие сеансы имеют одинаковое отображаемое имя и значок. Дополнительные сведения о отображаемых именах и значках см. в разделе "Сеансы аудио".

Приложение, например Sndvol, может зарегистрировать себя для получения уведомлений при изменении параметра группировки для сеанса. Такие уведомления могут быть полезны, если приложение кэширует сведения о назначении сеансов для группирования параметров. Уведомление сообщает приложению, что кэшированные сведения больше не будут допустимыми.

Чтобы назначить параметр группировки сеансу, вызовите метод IAudioSessionControl::SetGroupingParam . Чтобы получить параметр группировки, назначенный сеансу, вызовите метод IAudioSessionControl::GetGroupingParam .

Аудиосеансы