Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт окт 17, 2017 9:49 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 18 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 12:53 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Я не буду оригинален - мысль возникала у всех. Пока что на форуме наблюдались отдельные попытки, то для AC97, то для HDA. Изобретение велосипедов в общем то. Предлагаю сделать таки общий велосипед.

Так как сделано сейчас - каждое приложение регулирует свой звук, хорошо. Не хорошо, когда запускаешь плеер аудио или видео ночью и твои соседи начинают стучать в стены, а домашние вскакивают с кровати, орут благим матом и крутят у виска.

В общем мысль такая. Договориться где драйверы будут брать настройку звука. Оптимальным я считаю получение через системную функцию. Которая будет получать, хранить и отдавать произвольный блок с данными (формат которого нужно проработать), определяющими громкость отдельных устройств (есть ведь еще, как минимум, и на запись регулировка громкости). Таким образом будет две подфункции. Со стороны приложения можно хранить настройки в INI файле и применять при старте системы. Со стороны драйверов - получать блок информацией и использовать записанные в нем значения.

Может я конечно тут все упростил - я не писал звуковые драйвера ни разу. В общем есть ли есть возражения и замечания просьба высказываться. А может я вообще не прав и то что есть сейчас уже идеал, а я чего то не понимаю.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 1:16 am 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4219
Тебя прёт на хорошие идеи в последнее время. Поддерживаю.

>> Оптимальным я считаю получение через системную функцию. Которая будет получать, хранить и отдавать произвольный блок с данными (формат которого нужно проработать), определяющими громкость отдельных устройств (есть ведь еще, как минимум, и на запись регулировка громкости).

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 7:39 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario_r4
Приложения уровень программно регулируют. А системные настройки имеют смысл для master volume.


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 9:33 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 974
Системная функция не нужна. Приложение "Единый регулятор громкости" взаимодействует с драйвером. Другие приложения запускают его с параметром.


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 10:09 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Надо этот "Единый регулятор громкости" встроить в панель.


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 12:35 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4219
Serge писал(а):
Надо этот "Единый регулятор громкости" встроить в панель.

Может отдельное приложение? Так удобнее будет модифицировать, не комильфо всё в панель засовывать :)
Регулятор будет открываеться как Календарь возле панели. Скрытие при повторном нажатии на значёк звука или при деактивации окна.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 1:00 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Asper писал(а):
Системная функция не нужна. Приложение "Единый регулятор громкости" взаимодействует с драйвером. Другие приложения запускают его с параметром.

Ага, а если драйвер не запускается, то пользователь крутит регулятор и удивляется почему звука нет. Надо продумывать все ситуации.
Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 4:22 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario_r4
Если драйвер не запускается должен быть значок с перечёркнутым динамиком. И пользователь всё поймёт.
Цитата:
Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.
API для всех одинаковое. Если у драйвера проблема с регулировкой громкости, приложение не виновато.


Последний раз редактировалось Serge Вс окт 27, 2013 4:28 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 4:22 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 974
Mario_r4 писал(а):
Ага, а если драйвер не запускается, то пользователь крутит регулятор и удивляется почему звука нет. Надо продумывать все ситуации.

Если драйвер не запускается, то регулятор не запускается тоже, и сообщает пользователю об ошибке.

Mario_r4 писал(а):
Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.

Эта версия "регулятора" работает и с HDA tv 12 и c AC97.


Последний раз редактировалось Asper Вс окт 27, 2013 8:15 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 5:04 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Asper писал(а):
Эта версия "регулятора" работает и с HDA tv 0.12 и c AC97.

Замечательно, беру сборку 4107, запускаю Qemu 0.12.2 со строкой:
Код:
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

Запускаю MP3 ассоциации из файлового менеджера. Файл проигрывает AC97SND. Запускаю MIXER, проверяю все 6 кнопок совместно с PgUp|PgDn и Home|End - никакого эффекта. Может быть проблема в том, что:
Цитата:
Из AC97 тестировался только на EMU10K1X

Кстати о том что он не работает в Qemu я писал. Реакции не было совсем никакой. Так что утверждать о работоспособности наверняка, если не проверено - нельзя.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 5:06 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
Если драйвер не запускается должен быть значок с перечёркнутым динамиком. И пользователь всё поймёт.
Цитата:
Еще я не видел, чтобы один и тот же регулятор из выложенных работал и с AC97 и HDA.
API для всех одинаковое. Если у драйвера проблема с регулировкой громкости, приложение не виновато.

И по какому критерию/признаку приложение должно выводить перечеркнутый динамик?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 5:07 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario_r4
Qemu стал эталоном железки ?


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 5:09 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Цитата:
И по какому критерию/признаку приложение должно выводить перечеркнутый динамик?
Чтобы работать с драйвером надо получить его логический номер. Если вместо номера ядро возвращает 0, значит драйвер не загружается.


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 5:27 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
Mario_r4
Qemu стал эталоном железки ?

Т.е. то что драйвер используется стандартный, звук проигрывается что в плеера аудио, что в плеере видео, в них же регулируется, а в миксере не регулируется это нормальное положение вещей? По мне так никак это не является нормальной ситуацией.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Единый регулятор громкости
СообщениеДобавлено: Вс окт 27, 2013 6:34 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario_r4
Потому что приложения регулируют громкость программно. Infinity при помощи нехитрой математики
Код:
.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
независимо управляет громкостью каждого звукового буфера. А насколько достоверно Qemu эмулирует AC97 вопрос к разработчикам эмулятора. Есть ещё Vbox, правда он прямой потомок Qemu.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 18 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB