Всем привет,
первый раз задаю здесь вопрос, поэтому прошу быть помягче
Как известно, в Vista поменяли способ работы со звуковыми устройствами и управление микшером через функции mixer* перестало нормально функционировать. Для этого теперь есть
MMDevice и EndpointVolume API.
С помощью этих новых интерфейсов у меня получается управлять уровнем записи микрофона (recording volume), но мне нужно регулировать уровень воспроизведения (playback volume —
скриншот микшера). Каким образом я могу это сделать? В документации внятного ответа на этот вопрос нет.
На официальном форуме ответа мне тоже никто пока не дал
На данный момент пытаюсь достичь цели следующим образом:
1. Получаю указатель на интерфейс IMMDeviceEnumerator
2. Перебираю все endpoint'ы в системе (используя флаги eAll и DEVICE_STATEMASK_ALL, т.е. вообще все)
3. Мне возвращаются все устройства: колонки, spdif, линейный выход.. и, собственно, микрофон (ОДИН).
4. Активирую микрофон функцией Activate
5. Теперь, если я пытаюсь изменить уровень с помощью SetMasterVolumeLevelScalar — меняется уровень записи (recording level), а уровень воспроизведения (playback level) остается прежним.
Как мне добраться до уровня воспроизведения? Через IConnector/IPart и IDeviceTopology?

Пробовал, но дальше одной точки перебор не идет.. (на двух разных звуковых картах).
Очень надеюсь на вашу помощь!
Спасибо.
F>Очень надеюсь на вашу помощь!
Я не занимался подобными вещами, но мне кажется, что вот эти ссылки могут оказаться полезными:
ISimpleAudioVolume interface
Vista Core Audio API Master Volume Control
+ стоит более внимательно посмотреть в поисковиках.
Здравствуйте, x64, Вы писали:
F>>Очень надеюсь на вашу помощь!
x64>Я не занимался подобными вещами, но мне кажется, что вот эти ссылки могут оказаться полезными:
x64>ISimpleAudioVolume interface
x64>Vista Core Audio API Master Volume Control
x64>+ стоит более внимательно посмотреть в поисковиках.
Спасибо за ответ, но эти ссылки не раскрывают проблему

.. Интерфейс ISimpleAudioVolume, насколько я понял из документации, используется при РАБОТЕ со звуком, т.е. при захвате или воспроизведении. Мне же нужно просто глобально отрегулировать уровень громкости микрофона в микшере (на уровне ВСЕХ приложений). И чтобы добраться до самого интерфейса ISimpleAudioVolume, нужно сперва
инициализировать аудио клиент, и параметры там совершенно ненужные (например WAVEFORMATEX)).. Хотя я еще порою в эту сторону чуть позже, сейчас пока нет времени.
Пример с CodeProject просто показывает как работать с базовыми интерфейсами MMDevice/EndpointVolume, что само по себе у меня не вызывает проблем.
Главный вопрос в том, какие именно интерфейсы нужно использовать, чтобы можно было глобально управлять уровнем слышимости микрофона (уровень записи и прочие уровни микшера легко управляюся используя схему, которую я описал в самом вопросе).
PS. А в поисковиках я нахожу лишь
свой собственный вопрос