Программное регулирование уровня микрофона в 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
Re: Программное регулирование уровня микрофона в Vista
От: x64 Россия  
Дата: 10.07.08 09:16
Оценка:
F>Очень надеюсь на вашу помощь!

Я не занимался подобными вещами, но мне кажется, что вот эти ссылки могут оказаться полезными:

ISimpleAudioVolume interface
Vista Core Audio API Master Volume Control

+ стоит более внимательно посмотреть в поисковиках.
Re[2]: Программное регулирование уровня микрофона в Vista
От: Funbit Япония  
Дата: 10.07.08 10:49
Оценка:
Здравствуйте, x64, Вы писали:

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


x64>Я не занимался подобными вещами, но мне кажется, что вот эти ссылки могут оказаться полезными:


x64>ISimpleAudioVolume interface

x64>Vista Core Audio API Master Volume Control

x64>+ стоит более внимательно посмотреть в поисковиках.


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

Пример с CodeProject просто показывает как работать с базовыми интерфейсами MMDevice/EndpointVolume, что само по себе у меня не вызывает проблем.

Главный вопрос в том, какие именно интерфейсы нужно использовать, чтобы можно было глобально управлять уровнем слышимости микрофона (уровень записи и прочие уровни микшера легко управляюся используя схему, которую я описал в самом вопросе).

PS. А в поисковиках я нахожу лишь свой собственный вопрос
Re: Программное регулирование уровня микрофона в Vista
От: Funbit Япония  
Дата: 28.11.08 12:09
Оценка:
Ап...
Re[2]: Программное регулирование уровня микрофона в Vista
От: Ovl Россия  
Дата: 28.11.08 13:35
Оценка:
Здравствуйте, Funbit, Вы писали:

F>Ап...


так а IPart::EnumPartsOutgoing для микрофона что-нить из топологии дает?

надо будет попробовать, виста только дома...
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.