sound, SB, AC97 и другое

Drivers for sound cards
  • Статистика такая: ресемплирование 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 потоков и позже выложу результаты.
  • В библиотеке есть простой интерполирующий ресемплер. Он не использует дополнительную память но качество звука вполне приличное. Думаю что можно пока использовать его, а более качественный вариант сделать позже. Есть идея сделать версию, где вся обработка звука от начала до конца будет идти в вещественном формате. Заодно можно будет задействовать SSE.
  • Serge
    Что касается P100, то им нужен драйвер Саундбластера. АС97 на таких машинах нет.
    Не факт. Можно установить плату в PCI слот и будет AC97.
    Кстати воспроизведение звука в Колибри грузит процессор на 7-8% по данным CPU. Главная причина - работа с диском в PIO режиме. В общем, нужен ДМА доступ к диску, чтение данных большими блоками (64 Кб) и т.д.
    Сделаем со временем. Размышления уже идут.
    Сделаю тесты для 4 потоков и позже выложу результаты.
    Желательней чтобы поддерживалось микширование 8 источников, но пока уж как есть.
    Заодно можно будет задействовать SSE.
    А ты подумал, как будет работать этот код на машинах, не поддерживающих эти инструкции? Лучше ограничиться MMX для универсальности, даже MMX+ есть не на всех.
  • Протестил на 4 каналах, в среднем получается 2.2-2.4% загрузки процессора на 1 канал. Думаю отложить этот вариант и использовать ресемплер попроще. Библиотека будет поддерживать 16 звуковых буферов, но возможно будет увеличить до 32. Пока должно хватать.
    Можно установить плату в PCI слот и будет AC97.
    Такой вариант возможен но удастся ли написать драйвер я не уверен. Открыто доступна информация только по чипсетам Intel и AMD. На остальные контроллеры инфа собирается с миру по нитке, а внешние PCI платы - тёмный лес. Что касается SSE, то это может быть отдельная High quality версия. Но я планировал и в основной версии использовать SSE и SEE2 по возможности. Соответствующие функции будут вызываться в зависимости от типа процессора. В общем библиотека должна быть достаточно гибкой и использовать все возможности процессора.
  • Сделал черновую версию для Колибри и попробовал проиграть несколько файлов одновременно. Один и два файла проигрывабтся нормально. Три файла грузят систему на 40% и звук начинает прерываться, четыре на 80-90% (файловая система просто захлёбывается хотя поток 684 Кб в секунду) нагрузка растет непропорционально. Ещё одна особенность: попробовал проиграть один 250Мб файл. Оказалось чем ближе к концу файла, тем дольше он читается. На двух третях загрузка была 40-45% в конце файла 90-95%.
    Для пробы отключил подкачку файла и запустил четыре плеера. Система была загружена на 2-5% - как в режиме простоя. Утешает, что мр3 файлы обычно короткие и поток там меньше. Да и больше одного файла одновременно обычно не проигрывают.
  • Serge
    Вполне возможно, что это "особенность" 58 функции, если ты использовал ее.
    Попробуй прикрутить 70 функцию к своему ядру. Если не запускать файлы при помощи этой функции, то никаких доработок не понадобиться. При полном же слиянии кода вероятнее всего понадобиться дорабатывать новую процедуру запуска файлов.
    Так что не стоит отчаиваться, возможно, проблема решаема. Надо пробовать.
  • Если в 70 функции алгоритм чтения файла остался прежним то результат будет похожим.
    Я попробую добавит ф.70 но это будет не скоро.
  • Я немного изменил алгоритм подкачки и ситуация стала лучше. Теперь можно нормально проигрывать несколько файлов. Длинный файл тоже проигрывается без срывов звука но все равно загрузка системы в начале файла 7-8% в конце 60-70%. Видимо функция чтения файла пробегает по всей цепочке кластеров и чем дальше от начала файла, тем цепочка длиннее .
  • Serge
    Стоит, наверное, переложить все заботы по буферизации подкачки на приложение. Допустим по мере опустошения имеющегося буфера 0,5-1 Мб подгружались дополнительные данные. Например, когда буфер опустошится на 50%.
    В принципе это стандартная проблема для любой операционной системы.
  • Если файл будет в 600 мегабайт то и большой буфер может не спасти.

    Вот пробная версия. Только для Интел-чипсетов. http://infinity-sound.narod.ru/ac97.zip
  • Serge
    Ты забыл добавить в ридмик, что запускать можно только с дискеты.
    И я не смог запустить вообще к сожалению. Возможно из-за того, что я изменил Loader.ini. Доходит до сообщения "Unmasking all IRQs" и дальше не грузится. В начале курсор мышки шевелился, а когда нажал Ctrl+Alt+Del замерз.
  • VESA 1.2 и VGA режимы пока не работают.
    Тестирование на интеловском чипе откладывается пока не будет поддержки VGA.
    Ты забыл добавить в ридмик, что запускать можно только с дискеты
    И на SoundMAX'е тоже откладывается, т.к. нет дисковода для флопиков. Кстати, почему только с дискеты? Я всё-таки попробовал запустить с ЖД, но тщетно.
  • Mario79
    Попробую разобраться. Образ был 0.530b2 ? Какая у тебя конфигурация компа? Сколько ОЗУ и какой чипсет? Похоже что не происходит первое переключение задач. Возможно что неправильно настраивается 8259 PIC хотя если курсор двигался значит прерывания обрабатывались. Ctrl+Alt+Del намертво вешает систему, почему я пока не разобрался.

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

    Users browsing this forum: No registered users and 12 guests