Программное регулирование уровня микрофона в Vista
От: Funbit Япония  
Дата: 10.07.08 03:05
Оценка:
Всем привет,
первый раз задаю здесь вопрос, поэтому прошу быть помягче

Как известно, в 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? Пробовал, но дальше одной точки перебор не идет.. (на двух разных звуковых картах).

Очень надеюсь на вашу помощь!

Спасибо.
vista mmdevice
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.