Я разработал довольно сложное аудио-программное обеспечение для моего клиента с плагинами для Winamp, проигрывателя Windows Media и VST.Теперь клиент заинтересован в каком-либо методе, позволяющем избежать поддержки множества плагинов, у нас нет возможности поддерживать все медиаплееры там.
Клиенту пока нет дела до Unix / Mac, поэтому я могу посмотретьтолько в Windows XP и Vista / 7 /. По сути, нам нужен способ всегда надежно перехватывать как можно больше протоколов аудиопотока (ну, за исключением, может быть, ASIO, это другая история, я полагаю), а затем передавать этот звук через наш пользовательскийобработчик эффектов и затем вернитесь к аудиоустройству по умолчанию, каким бы оно ни было.
Теперь я думаю, какие варианты у меня есть (теоретически).
Я мог бы использовать хуки.Мне нужно подключить глобально более старый vaweOut, а также DirectSound.
Но будет ли это работать на Vista / 7?
Я мог бы использовать виртуальный драйвер, как это делал автор Virtual Audio Cable: http://software.muzychenko.net/eng/vac.htm
Кажется довольно сложной задачей.В любом случае, клиент свяжется с автором VAC, чтобы узнать, согласен ли он продать свой исходный код по разумной цене.
Этот драйвер может установить себя как устройство вывода звука по умолчанию, перехватывать аудиопоток из Windows,и передать его обратно на устройство по умолчанию.Хм, а как насчет различных аудиобуферов DirectSound, нужно ли мне их микшировать самостоятельно или есть ли способ заставить микшер Windows смешать все для меня и пропустить один смешанный аудиопоток?Кажется, этот пользовательский драйвер, конечно, убьет все аппаратное ускорение звука, но мы можем с этим смириться, если предупредим наших клиентов об этой проблеме.
Как я понимаю, самый последний стандарт драйверов для Windows - это WDF,
Но, может быть, он не работает для звука в Windows Vista / 7? Я знаю, Vista / 7 имеет другой стек аудио от XP.
ЕслиЯ могу сделать это с помощью WDF, какой драйвер мне написать - режим ядра или режим пользователя?
Может быть, мне не хватает более элегантных и простых опций для перехвата, обработки и маршрутизации звука в Windows?