Я не буду оригинален - мысль возникала у всех. Пока что на форуме наблюдались отдельные попытки, то для AC97, то для HDA. Изобретение велосипедов в общем то. Предлагаю сделать таки общий велосипед.
Так как сделано сейчас - каждое приложение регулирует свой звук, хорошо. Не хорошо, когда запускаешь плеер аудио или видео ночью и твои соседи начинают стучать в стены, а домашние вскакивают с кровати, орут благим матом и крутят у виска.
В общем мысль такая. Договориться где драйверы будут брать настройку звука. Оптимальным я считаю получение через системную функцию. Которая будет получать, хранить и отдавать произвольный блок с данными (формат которого нужно проработать), определяющими громкость отдельных устройств (есть ведь еще, как минимум, и на запись регулировка громкости). Таким образом будет две подфункции. Со стороны приложения можно хранить настройки в INI файле и применять при старте системы. Со стороны драйверов - получать блок информацией и использовать записанные в нем значения.
Может я конечно тут все упростил - я не писал звуковые драйвера ни разу. В общем есть ли есть возражения и замечания просьба высказываться. А может я вообще не прав и то что есть сейчас уже идеал, а я чего то не понимаю.
Единый регулятор громкости
-
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Тебя прёт на хорошие идеи в последнее время. Поддерживаю.
>> Оптимальным я считаю получение через системную функцию. Которая будет получать, хранить и отдавать произвольный блок с данными (формат которого нужно проработать), определяющими громкость отдельных устройств (есть ведь еще, как минимум, и на запись регулировка громкости).
>> Оптимальным я считаю получение через системную функцию. Которая будет получать, хранить и отдавать произвольный блок с данными (формат которого нужно проработать), определяющими громкость отдельных устройств (есть ведь еще, как минимум, и на запись регулировка громкости).
Из хаоса в космос
Mario_r4
Приложения уровень программно регулируют. А системные настройки имеют смысл для master volume.
Приложения уровень программно регулируют. А системные настройки имеют смысл для master volume.
Системная функция не нужна. Приложение "Единый регулятор громкости" взаимодействует с драйвером. Другие приложения запускают его с параметром.
Надо этот "Единый регулятор громкости" встроить в панель.
Может отдельное приложение? Так удобнее будет модифицировать, не комильфо всё в панель засовыватьSerge wrote:Надо этот "Единый регулятор громкости" встроить в панель.
Регулятор будет открываеться как Календарь возле панели. Скрытие при повторном нажатии на значёк звука или при деактивации окна.
Из хаоса в космос
Ага, а если драйвер не запускается, то пользователь крутит регулятор и удивляется почему звука нет. Надо продумывать все ситуации.Asper wrote:Системная функция не нужна. Приложение "Единый регулятор громкости" взаимодействует с драйвером. Другие приложения запускают его с параметром.
Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Если драйвер не запускается должен быть значок с перечёркнутым динамиком. И пользователь всё поймёт.
Если драйвер не запускается должен быть значок с перечёркнутым динамиком. И пользователь всё поймёт.
API для всех одинаковое. Если у драйвера проблема с регулировкой громкости, приложение не виновато.Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.
Last edited by Serge on Sun Oct 27, 2013 4:28 pm, edited 1 time in total.
Если драйвер не запускается, то регулятор не запускается тоже, и сообщает пользователю об ошибке.Mario_r4 wrote:Ага, а если драйвер не запускается, то пользователь крутит регулятор и удивляется почему звука нет. Надо продумывать все ситуации.
Эта версия "регулятора" работает и с HDA tv 12 и c AC97.Mario_r4 wrote:Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.
Last edited by Asper on Sun Oct 27, 2013 8:15 pm, edited 1 time in total.
Замечательно, беру сборку 4107, запускаю Qemu 0.12.2 со строкой:Asper wrote:Эта версия "регулятора" работает и с HDA tv 0.12 и c AC97.
Code: Select all
qemu -L . -m 128 -fda kolibri.img -fdb w98.img -boot a -hda c100.img -hdb c100_2.img -cdrom kolibri.iso -localtime -k ru -vga vmware -net nic,model=ne2k_pci -net user -soundhw ac97,pcspk
Кстати о том что он не работает в Qemu я писал. Реакции не было совсем никакой. Так что утверждать о работоспособности наверняка, если не проверено - нельзя.Из AC97 тестировался только на EMU10K1X
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
И по какому критерию/признаку приложение должно выводить перечеркнутый динамик?Serge wrote:Если драйвер не запускается должен быть значок с перечёркнутым динамиком. И пользователь всё поймёт.API для всех одинаковое. Если у драйвера проблема с регулировкой громкости, приложение не виновато.Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Qemu стал эталоном железки ?
Qemu стал эталоном железки ?
Чтобы работать с драйвером надо получить его логический номер. Если вместо номера ядро возвращает 0, значит драйвер не загружается.И по какому критерию/признаку приложение должно выводить перечеркнутый динамик?
Т.е. то что драйвер используется стандартный, звук проигрывается что в плеера аудио, что в плеере видео, в них же регулируется, а в миксере не регулируется это нормальное положение вещей? По мне так никак это не является нормальной ситуацией.Serge wrote:Mario_r4
Qemu стал эталоном железки ?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Потому что приложения регулируют громкость программно. Infinity при помощи нехитрой математикинезависимо управляет громкостью каждого звукового буфера. А насколько достоверно Qemu эмулирует AC97 вопрос к разработчикам эмулятора. Есть ещё Vbox, правда он прямой потомок Qemu.
Потому что приложения регулируют громкость программно. Infinity при помощи нехитрой математики
Code: Select all
.mix_loop:
add dword [edx], 8
add edx, 12
dec ecx
jz @F
mov eax, [edx]
movq mm1, [eax] ;семпл
movd mm2, [edx+4] ;громкость
punpckldq mm2, mm2
pmulhw mm1, mm2
psllw mm1, 1
paddsw mm0, mm1
jmp .mix_loop
Who is online
Users browsing this forum: No registered users and 1 guest