Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср дек 12, 2018 4:03 pm

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




Начать новую тему  Ответить на тему  [ 947 сообщений ]  На страницу Пред. 1 2 3 4 5 664 След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 03, 2006 7:29 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
Serge тебе намылил ответ кратенько пока, смотри.
Всем! Всем! Всем!
Желающим хоть чем нибудь помочь упрямому фанатику-дровосеку :) прошу потестить и прислать отчетики и возможные баги по ДОС плееру на AC97 кодеках(несколько десятков наименований) и различных платформ южного моста VIA и Intel(ICH)
http://atom-os.narod.ru/edit_versions/ac97_501.zip
там есть README что, как, чем...


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 07, 2006 3:44 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
Видимо никому ничего не интересно в данном направлении. Ну что же, отрицательный результат - тоже результат. Возможно кто то, когда то, все же "наступит" на эти строки и хотя бы реально попробует. А между тем, на сегодня, существенные изменения в редакции 502(ac97_502.zip). Теперь это точно готовый тестовый этап кода.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 07, 2006 4:21 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1071
У меня к сожалению, мертвый кодек AC97 на nforce2 (убил, когда злоупотреблял использованием его в качестве осциллографа) :). А так обязательно бы потестил... :)


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 07, 2006 5:25 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
В драйверном деле никакая "мелочь" не лишняя... поэтому твои данные тоже полезны мне(!), т.к. любопытно посмортеть что мать, мост, кодек тестятся, находятся, сопоставляются со справочником + номера функции, девайса как PCI, линия прерывания какова и та ли, что пишет биос на этапе загрузки.... TXT ЛОГ экрана, который генерит прожка, дала бы мне статистику и вообще еще один практический результат на месте...
А ты видимо подпалил Вход/Выход перенебрегая некоторыми осторожностями? :) У каждого практикующего, свой счет подобных "побед" :) у меня свой конечно имеется ;))) А вот "паленость", думаю, до самого AC-LINK обмена кодека с чипом южного моста матери вряд ли добралась, посему лог картинка это может показать, как в прочем и то, что если скажем, в винде он есть и драйвер лепится, но не работает как звуковуха, то я прав. Но это мои рассуждения, тебе виднее, как там на самом деле.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 07, 2006 6:28 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1071
Отправил тебе на мыло лог-файл. А насчет пренебрежения осторожностями, ты прав: видимо ткнул случайно щупом в цепи питания ипытуемого устройства :)


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 07, 2006 10:02 pm 
Не в сети

Зарегистрирован: Сб янв 07, 2006 4:07 am
Сообщения: 47
Serge
Я тоже готов сотрудничать, только в инет выхожу редко, по этому наше сотрудничество будет в некоторой инерцией. Если у тебя есть доступ к FIDO, то можешь писать на 2:5066/160.25, так будет оперативнее с моей стороны.

Цитата:
Как подфункции сделаны ММХ микшеры на 2, 3, 4 потока в 1. ММХ конвертеры моно 44.1 в стерео 44.1, стерео 22.05 в стерео 44.1, моно 22.05 в стерео 44.1 и примитивный ресемплер 44.1 в 48.0

Но MMX есть не на всех х86 процах. Например, на старых 486 ноутах это недопустимо, но я говорю про подсистему а не про драйвер. По этому в подсистеме я не буду использовать MMX, по крайней мере пока.
Цитата:
Когда заканчивается проигрывание очередного 16 кб сегмента АС97 генерирует прерывание
и драйвер микширует в первичный буфер очередные 16 кб из звуковых буферов. Само микширование
происходит блоками по 512 байт
...
Недостаток - задержка с началом воспроизведения статического буфера.
При 16 кб сегменте и частоте 44100 масимальная задержка будет приблизительно 0.185 с.
если уменьшить размер сегмента до 8 или 4 кб задержка уменьшится до 0.092 и 0.046 с, что должно
быть приемлемым.

Этого недостатка можно избежать, если загружать (преобразовывать/микшировать) новую порцию звука после того, как запустил воспроизведение очередного блока (у тебя их 4 по 16 кб.). А вообще звуковые данные лучше измерять в выборках, а не в килобайтах.
Цитата:
Для экономии памяти звук в буферах хранится в исходном формате и приводится к основному
(стерео 44100 или 48000) перед микшированием также блоками по 256 или 512 байт.

Ну, это сотря для какого количества процессов, а так же смотря какая частота звукового устройства, хотя я опять говорю только про подсистему.
Цитата:
Для кратных частот 11025 -> 22050 -> 44100 это очень просто. Для преобразования дробных частот
44100 -> 48000 лучше конвертировать сразу весь буфер, моно в моно, стерео в стерео.

А у меня конвертирование будет в произвольную частоту. Особенно это пригодится для трекерной музыки, где тональность звучания задаётся изменением частоты дискретизации.

если что, пиши на hater05<ухо>mail.ru


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 08, 2006 8:32 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3952
Цитата:
Но MMX есть не на всех х86 процах. Например, на старых 486 ноутах это недопустимо, но я говорю про подсистему а не про драйвер. По этому в подсистеме я не буду использовать MMX, по крайней мере пока.


Я ориентировался на ММХ потому, что если на компе есть АС97 кодек то и процессор с ММХ тоже есть. Позже я хочу написать версии для SSE и SSE2. Версии для ALU тоже можно сделать.

Цитата:
Этого недостатка можно избежать, если загружать (преобразовывать/микшировать) новую порцию звука после того, как запустил воспроизведение очередного блока (у тебя их 4 по 16 кб.). А вообще звуковые данные лучше измерять в выборках, а не в килобайтах.


Небольщая задержка будет в любом случае. Когда программа посылает драйверу команду play_buffer звук уже смикширован и воспроизводится, значит его можно смикшировать только в сегмент следующий за текущим. Возможна ситуация когда начнется воспроизводится сегмент, в который мы только что начали микшировать звук и будет щелчок.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 10, 2006 6:32 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Serge,я вот всё думаю,что значит драйвер AC'97 будет ввиде отдельного модуля ?
Всмысле он будет работать из Колибри как обычная программа ?
А как тогда он будет обрабатывать запрос от нескольких программ ?
Если обмен сообщениями с драйвером будет происходить через IPC, то понадобиться выделять физический блок памяти.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 10, 2006 7:34 pm 
VaStaNi
Сожалею, я не мог тебе ответить, так как болел гриппом целую неделю.
Сейчас ссылка уже не работает, вероятно, ты удалил файл. Если выложишь снова, могу протестировать.

andrew_programmer
Скорее всего, он будет в виде подключаемого драйвера, хотя сама система звука будет встроена в ядро, без этого не обойтись.
IPC тут совершенно не причем. Приложение через системную функцию передает звуковой подсистеме координаты расположения звукового блока, а дальше оно свободно. Правда может возникнуть необходимость контролировать окончание проигрывания или остановить проигрывание, так что время от времени приложение будет запрашивать у звуковой подсистемы данные о том, что делается.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 10, 2006 7:41 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Я про IPC сказал на тот случай,если драйвер будет ввиде программы.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 10, 2006 9:18 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3952
Можно сделать драйвер в виде отдельной программы, но нужна функция для установки пользовательского обработчика прерывания. Пока такой функции в системе нет


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 11, 2006 2:53 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
Mario79 писал(а):
VaStaNi
Сожалею, я не мог тебе ответить, так как болел гриппом целую неделю.
Сейчас ссылка уже не работает, вероятно, ты удалил файл. Если выложишь снова, могу протестировать.

Дык чуть ниже писал, что 502я теперь... т.е. глючное и старое удалил, оставил только более "уверенный" :) вариант + мелкая доводка.
http://atom-os.narod.ru/edit_versions/ac97_502.zip


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 11, 2006 5:23 pm 
Не в сети

Зарегистрирован: Пт ноя 12, 2004 3:20 pm
Сообщения: 90
Пользовательское прерывание установить можно. Пример - программа PPP. Однако это реализовано в системе ужасно криво. Программа может получить сигнал о прерывании с опозданием более двух секунд (это зависит от количества процессов).


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 11, 2006 5:58 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
Иван Поддубный писал(а):
Пользовательское прерывание установить можно. Пример - программа PPP. Однако это реализовано в системе ужасно криво. Программа может получить сигнал о прерывании с опозданием более двух секунд (это зависит от количества процессов).

Так в том то и оно, что криво и кто и когда это хотя бы НАЧНЕТ менять в системе!??? Для драйверов, именно для драйверов этот механизм что есть сейчас - не приемлем и надо менять ядро... Со стороны взглянуть - получается, что либо не хотят ребята, либо не видят зачем это нужно или не могут, но хуже всего, что просто молчание наблюдается! Т.е., как будто проблемы и нет. Не понимаю эту позицию. Лично я не раз говорил еще на старом форуме про эти вещи (IRQ,DMA,железо...), но это было столько раз, что я не хочу быть занудой (или перестал им быть)...
На счет прерываний по сути и сейчас. Надо (так думаю) хотябы завести такое понятие, как резервирование системой некоторых прерываний, как ИМЕННО СИСТЕМНОЕ! Т.е. если уж известно или оттестировано, вычитано, что IRQ5, скажем не что иное, как AC97, то обработчик ставится системой в IDT именно на IRQ5 позицию и никакой "гад" не может запросить иного, т.к. считается, что система "лучше знает"! А поскольку у Вас все монолит и драйвер в одном кольце с ядерным кодом, то не вижу проблем вообще!
Мало того! Обработчик НАДО ставить кака можно "прямее и короче", минуя тормоза, присущие вызову int 0x40, да собственно мышонок так, кажется по умолчанию то стоит (вкраплен). Вот те и реактивность работы драйвера.
Имеющие уши - да услышат! :0)


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 11, 2006 6:27 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3952
Не надо ничего специально резервировать. Нужен массив куда можно будет записывать адрес пользовательского обработчика прерываний. Номер IRQ - индекс в массиве. Если сделать двумерный массив, можно будет установить несколько обработчиков на один IRQ и вызывать их последовательно.
Системный обработчик должен считывать из массива адрес пользовательского обработчика и передавать на него управление.


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

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


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

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


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

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