Board.KolibriOS.org
http://board.kolibrios.org/

sound, SB, AC97 и другое
http://board.kolibrios.org/viewtopic.php?f=28&t=317
Page 7 of 66

Author:  Mario79 [ Thu Jun 01, 2006 7:27 pm ]
Post subject: 

Serge
Потеря 1 Мб ради совершенства звука вполне допустима, лишь бы он работал быстро на слабых машинах. Интересно, каков будет результат на P100 с шиной 50.
4 битовый файл, который я имел в виду, является Microsoft ADPCM,44 100 Гц; 4 бит; Стерео
Это конечно редкая вещь, так что можно не заморачиваться на первых порах.

Quote:
По стандарту АС97 кодеки могут воспроизводить 8000 - 48000 Гц с шагом в 1 Гц. Как они это делают вопрос интересный. Похоже, что у некоторых продвинутых кодеков два кварца на 48000 и 44100.

Я думаю, нам пока хватит использования базовых возможностей, для реализации звуковой подсистемы в приемлемые сроки.
Если будет реализовано хотя бы это - это будет уже серьезный прорыв.

Quote:
Еще нужен код для загрузки драйвера. Похоже, что придётся делать загрузчик самому.

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

Author:  Serge [ Thu Jun 01, 2006 9:17 pm ]
Post subject: 

Статистика такая: ресемплирование 16 бит моно 44100 в 16-моно 48000.
Си код без оптимизации тестировал в Intel VTune несколько прогонов по 60 секунд. Среднее время работы программы 1.16 сек вместе с настройкой DirectSound, открытием файлов и т.д. Ресемплер работал около 0.8 -0.9 сек (за одну минуту общего времени) Процессор Р4 2.6С
так что можно интерполировать на близкие Celeron Athlon Sempron Duron.
Что касается P100, то им нужен драйвер Саундбластера. АС97 на таких машинах нет. Кстати воспроизведение звука в Колибри грузит процессор на 7-8% по данным CPU. Главная причина - работа с диском в PIO режиме. В общем нужен ДМА доступ к диску, чтение данных большими блоками (64 Кб) и т.д. Сделаю тесты для 4 потоков и позже выложу результаты.

Author:  Serge [ Fri Jun 02, 2006 10:32 am ]
Post subject: 

В библиотеке есть простой интерполирующий ресемплер. Он не использует дополнительную память но качество звука вполне приличное. Думаю что можно пока использовать его, а более качественный вариант сделать позже. Есть идея сделать версию, где вся обработка звука от начала до конца будет идти в вещественном формате. Заодно можно будет задействовать SSE.

Author:  Mario79 [ Fri Jun 02, 2006 6:20 pm ]
Post subject: 

Serge
Quote:
Что касается P100, то им нужен драйвер Саундбластера. АС97 на таких машинах нет.

Не факт. Можно установить плату в PCI слот и будет AC97.

Quote:
Кстати воспроизведение звука в Колибри грузит процессор на 7-8% по данным CPU. Главная причина - работа с диском в PIO режиме. В общем, нужен ДМА доступ к диску, чтение данных большими блоками (64 Кб) и т.д.

Сделаем со временем. Размышления уже идут.

Quote:
Сделаю тесты для 4 потоков и позже выложу результаты.

Желательней чтобы поддерживалось микширование 8 источников, но пока уж как есть.

Quote:
Заодно можно будет задействовать SSE.

А ты подумал, как будет работать этот код на машинах, не поддерживающих эти инструкции? Лучше ограничиться MMX для универсальности, даже MMX+ есть не на всех.

Author:  Serge [ Fri Jun 02, 2006 8:22 pm ]
Post subject: 

Протестил на 4 каналах, в среднем получается 2.2-2.4% загрузки процессора на 1 канал. Думаю отложить этот вариант и использовать ресемплер попроще. Библиотека будет поддерживать 16 звуковых буферов, но возможно будет увеличить до 32. Пока должно хватать.
Quote:
Можно установить плату в PCI слот и будет AC97.
Такой вариант возможен но удастся ли написать драйвер я не уверен. Открыто доступна информация только по чипсетам Intel и AMD. На остальные контроллеры инфа собирается с миру по нитке, а внешние PCI платы - тёмный лес. Что касается SSE, то это может быть отдельная High quality версия. Но я планировал и в основной версии использовать SSE и SEE2 по возможности. Соответствующие функции будут вызываться в зависимости от типа процессора. В общем библиотека должна быть достаточно гибкой и использовать все возможности процессора.

Author:  Serge [ Fri Jul 07, 2006 3:42 pm ]
Post subject: 

Сделал черновую версию для Колибри и попробовал проиграть несколько файлов одновременно. Один и два файла проигрывабтся нормально. Три файла грузят систему на 40% и звук начинает прерываться, четыре на 80-90% (файловая система просто захлёбывается хотя поток 684 Кб в секунду) нагрузка растет непропорционально. Ещё одна особенность: попробовал проиграть один 250Мб файл. Оказалось чем ближе к концу файла, тем дольше он читается. На двух третях загрузка была 40-45% в конце файла 90-95%.
Для пробы отключил подкачку файла и запустил четыре плеера. Система была загружена на 2-5% - как в режиме простоя. Утешает, что мр3 файлы обычно короткие и поток там меньше. Да и больше одного файла одновременно обычно не проигрывают.

Author:  Mario79 [ Fri Jul 07, 2006 10:15 pm ]
Post subject: 

Serge
Вполне возможно, что это "особенность" 58 функции, если ты использовал ее.
Попробуй прикрутить 70 функцию к своему ядру. Если не запускать файлы при помощи этой функции, то никаких доработок не понадобиться. При полном же слиянии кода вероятнее всего понадобиться дорабатывать новую процедуру запуска файлов.
Так что не стоит отчаиваться, возможно, проблема решаема. Надо пробовать.

Author:  Serge [ Sat Jul 08, 2006 11:15 am ]
Post subject: 

Если в 70 функции алгоритм чтения файла остался прежним то результат будет похожим.
Я попробую добавит ф.70 но это будет не скоро.

Author:  Serge [ Sat Jul 08, 2006 3:56 pm ]
Post subject: 

Я немного изменил алгоритм подкачки и ситуация стала лучше. Теперь можно нормально проигрывать несколько файлов. Длинный файл тоже проигрывается без срывов звука но все равно загрузка системы в начале файла 7-8% в конце 60-70%. Видимо функция чтения файла пробегает по всей цепочке кластеров и чем дальше от начала файла, тем цепочка длиннее .

Author:  Mario79 [ Sun Jul 09, 2006 3:36 pm ]
Post subject: 

Serge
Стоит, наверное, переложить все заботы по буферизации подкачки на приложение. Допустим по мере опустошения имеющегося буфера 0,5-1 Мб подгружались дополнительные данные. Например, когда буфер опустошится на 50%.
В принципе это стандартная проблема для любой операционной системы.

Author:  Serge [ Sun Jul 09, 2006 4:21 pm ]
Post subject: 

Если файл будет в 600 мегабайт то и большой буфер может не спасти.

Вот пробная версия. Только для Интел-чипсетов. http://infinity-sound.narod.ru/ac97.zip

Author:  Mario79 [ Mon Jul 10, 2006 7:15 pm ]
Post subject: 

Serge
Ты забыл добавить в ридмик, что запускать можно только с дискеты.
И я не смог запустить вообще к сожалению. Возможно из-за того, что я изменил Loader.ini. Доходит до сообщения "Unmasking all IRQs" и дальше не грузится. В начале курсор мышки шевелился, а когда нажал Ctrl+Alt+Del замерз.

Author:  Quantum [ Mon Jul 10, 2006 8:25 pm ]
Post subject: 

Quote:
VESA 1.2 и VGA режимы пока не работают.

Тестирование на интеловском чипе откладывается пока не будет поддержки VGA.

Quote:
Ты забыл добавить в ридмик, что запускать можно только с дискеты

И на SoundMAX'е тоже откладывается, т.к. нет дисковода для флопиков. Кстати, почему только с дискеты? Я всё-таки попробовал запустить с ЖД, но тщетно.

Author:  Serge [ Mon Jul 10, 2006 9:17 pm ]
Post subject: 

Mario79
Попробую разобраться. Образ был 0.530b2 ? Какая у тебя конфигурация компа? Сколько ОЗУ и какой чипсет? Похоже что не происходит первое переключение задач. Возможно что неправильно настраивается 8259 PIC хотя если курсор двигался значит прерывания обрабатывались. Ctrl+Alt+Del намертво вешает систему, почему я пока не разобрался.

Для загрузки с диска нужно модифицировать загрузчик. Я делал всё на основе загрузчика из 0.530b2, а там загрузиться с диска у меня ни разу не вышло.

Author:  Mario79 [ Mon Jul 10, 2006 10:19 pm ]
Post subject: 

Serge
Да образ брал исключительно k0530b2 (который сам же и выкладывал на http://www.kolibri.hut1.ru/), без всяких изменений.
Комп: Duron950, DDR256, FX5200, MB SIS735, чипсет звука (правда не Intel) - C-Media SIS7012 (в стандартном AC97WAV все пашет, единственное замеченное отличие от Intel документации - не устанавливается частота квантования, всегда выбрано 48000 Гц.). Еще подробности нужны?
Quote:
Для загрузки с диска нужно модифицировать загрузчик. Я делал всё на основе загрузчика из 0.530b2, а там загрузиться с диска у меня ни разу не вышло.

Есть аж целых 3 загрузчика для стандартной Колибри: meosload.com, acrobat и mtldr. Неужели ни один не заработал?
Или ты имел в виду только свое ядро?

Page 7 of 66 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/