Что представляют собой значения перечисления ERoles в Windows Core Audio API?Они взаимоисключающие? - PullRequest
1 голос
/ 24 сентября 2019

Из документа API Microsoft: https://docs.microsoft.com/en-us/windows/win32/api/mmdeviceapi/ne-mmdeviceapi-erole

Перечисление ERole

typedef enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0002 {
  eConsole,
  eMultimedia,
  eCommunications,
  ERole_enum_count
} ERole;

определяет список «ролей», которые конечные аудиоустройства выбирают для воспроизведения

Константы

  • eConsole Игры, звуки системных уведомлений и голосовые команды.
  • eMultimedia Музыка, фильмы, повествования и записи живой музыки.
  • eCommunications Голосовая связь (общение с другим человеком).
  • ERole_enum_count Количество членов в перечислении ERole (не считая члена ERole_enum_count).

Что я не получаю из документастраница:

  • Если устройство установлено на eConsole, будет ли оно полностью исключено из обработки
  • Музыка, фильмы, повествование и запись живой музыки, а также

  • Голосовая связь (разговор с другим человеком)

?

Я не верю, что ответ - да, потому что низкоуровневое оборудование или операционная система не будут знать, является ли аудиопоток музыкой или речью без пометки пользователя.Так что же это тогда за * 1053?Конфигурация микширования звука, которая играет «хорошо» (субъективно и статистически) с целевыми типами контента?Задержка?или комбинация двух или более свойств?

ОБНОВЛЕНИЕ

Спасибо за ответ @Roman R.Теперь еще вопросы, соответствующие названию вопроса:

Документ из IMMDeviceEnumerator::GetDefaultAudioEndpoint говорит:

HRESULT GetDefaultAudioEndpoint(
  EDataFlow dataFlow,
  ERole     role,
  IMMDevice **ppEndpoint
);

role

Роль устройства конечной точки.Вызывающий должен установить этот параметр на одно из следующих значений перечисления ERole:

eConsole

eMultimedia

eCommunications

поэтому может быть назначена только «ОДНА» роль;А поскольку ERole_enum_count не является реальным вариантом, как в большинстве пользовательских протоколов enum, как можно было бы убедиться, что «all of the roles» воспроизводится одним устройством, как указано в Роли устройств и ваша цитата наэта страница?

1 Ответ

1 голос
/ 24 сентября 2019

Роли устройства :

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

Первое предложение выше отвечает на вопрос, являются ли роли взаимоисключающими.Устройства не исключены из обработки аудио ввода / вывода.Вместо этого роли определяют, какое устройство используется для конкретной деятельности в системе с несколькими устройствами.Например, коммуникационное программное обеспечение будет выполнять захват / рендеринг звука с использованием устройств, для которых установлена ​​роль eCommunications, в то же время воспроизведение мультимедиа будет выполняться на другом устройстве.

Автоматическое обнаружение роли устройства

Рассмотрим сценарий, в котором компьютер имеет устройство рендеринга по умолчанию, динамики и устройство захвата по умолчанию, микрофон.Пользователь подключает USB-гарнитуру к компьютеру.После установки соответствующих драйверов операционная система пытается определить роль, назначаемую для нового аудиоустройства.

и, например,

...Приложение связи может улучшить взаимодействие с пользователем, реализовав такие действия, как уклонение, путем обработки уведомлений от конечной точки устройства.

UPD

, поэтому можно назначить только одну "ОДНУ" роль

Не верно, и в документации есть четкое заявление об этом.

API, на который вы ссылаетесь, позволяет вам получить устройство по умолчанию для конкретной роли.Это же устройство может быть по умолчанию для другой роли в то же время.

Позвольте мне еще раз извлечь это из комментария: «Роли помогают вам выбирать между [несколькими] устройствами вместо этого».Роли не ограничивают использование приложениями аудиоустройств.Они просто помогают выбрать правильное устройство в случае, если система оснащена несколькими устройствами, и, кроме того, возможны также индивидуальные настройки для устройств, например, эхоподавление.

...