Page 12 of 66
Posted: Thu Oct 26, 2006 9:37 am
by Mario79
VaStaNi
Sis735 уехал к родственникам, а за новый комп я еще 2 месяца буду расплачиваться (кредит). Так что потестить не получится.

850 готов погонять!
Posted: Thu Oct 26, 2006 12:32 pm
by VaStaNi
Намылил. Меня устроит и через 2, хотелось бы знать в принципе пошло ли, теперь весьма убежден почему было(расклад был выше). Код один универсальный под се и всех, это было первейшей целью, так что запускай где сможешь, сообщишь о багах и успехах на разных платформах - уже помошь. Спасибо!
Posted: Thu Oct 26, 2006 2:50 pm
by Serge
Mario79
ALC850 - 8-ми канальный АС97 кодек, так что должно работать.
МСР04 есть в исходниках ALSA. Его devise id 0x003a. Вообще там для NForce указано шесть контроллеров СК8, СК804, СК8S, МСР04, МСР51 и разные NForce. Чем они отличаются я не знаю, поэтому включил только NForce.
Posted: Fri Oct 27, 2006 7:15 am
by Mario79
VaStaNi
Твой прогу протестил на 850.
Все работает.
Serge
Попробовал доработать unisound.asm как ты говорил из PCIDEV взял значение 0059h, в результате при запуске проигрывателя система уходит в перезагрузку. Возможно у меня версия проигрывателя не самая новая. Где скачать самое свежее?
Posted: Fri Oct 27, 2006 12:25 pm
by VaStaNi
Mario79 спасибо за проверку. Для механизма опознания использую следующее:
Code: Select all
; Vendor IDs
VIA_VID = 0x1106
INTEL_VID = 0x8086
SIS_VID = 0x1039
NVIDIA_VID = 0x10DE
AMD_VID = 0x1022
ATI_VID = 0x1002
Code: Select all
; базовые данные из
; ALSA driver for Intel ICH (i8x0) chips. Jaroslav Kysela <perex@suse.cz>
; исключительно для чипетов INTEL совместимых Device IDs
I440MX_DID = 0x7195
ICH_DID = 0x2415
ICH0_DID = 0x2425
ICH2_DID = 0x2445
ICH3_DID = 0x2485
ICH4_DID = 0x24C5
ICH5_DID = 0x24D5
ICH6_DID = 0x266E
ICH7_DID = 0x27DE
ESB_DID = 0x25A6
ESB2_DID = 0x2698
NFORCE_DID = 0x01B1
NFORCE2_DID = 0x006A
NFORCE3_DID = 0x00DA
; VaStaNi - добавлено, на основании реального чипсета nVidia
NFORCEx_DID = 0x026B ; ASROCK K8NF4G
MCP04_DID = 0x003A
CK8_DID = 0x008A
CK804_DID = 0x0059
CK8S_DID = 0x00EA
SIS7012_DID = 0x7012
AMD768_DID = 0x7445
AMD8111_DID = 0x764D
Posted: Fri Oct 27, 2006 3:17 pm
by Serge
Mario79
Последняя версия
http://infinity-sound.narod.ru/060_rev_005.7z. Исходники на SVN в папке programs/media/ac97 mp3 Проблема скорее всего не в плеере а в драйвере. Код менялся много раз. Возможно у тебя были разные версии ядра и драйверов. Я добавлю все NV контроллеры и выложу на SVN
Posted: Fri Oct 27, 2006 7:53 pm
by Serge
Mario79
Добавил все контроллеры. Код на SVN.
Posted: Mon Oct 30, 2006 8:33 am
by Mario79
Serge
Я выхожу в сеть не из дома. Ты мог бы выложить это для скачивания отдельным дистрибутивом, так как прямого доступа к SVN не имею, а скачивать через сайт муторно (потом требуется дополнительная работа по восстановлению исходного вида файлов).
Posted: Mon Oct 30, 2006 1:16 pm
by Mario79
Serge
Ничего не надо выкладывать, я сначала не понял что нужно, а теперь разобрался.
Все работает. Большое тебе спасибо за работу!
Пока тыркался, выяснил, что больше 12 mp3 или wav не запускать, так как звук начинает конкретно хрипеть.
При запуске 16 плееров на A64-3000 загрузка процессора не более 22% (что говорит о хорошей оптимальности кода плеера, а размер в памяти менее 200 Кб - это вообще нет слов!), а DMA доступ к жесткому диску видимо немного разгрузил процер.
Единственный минус, что mp3 файл нельзя перематывать (надеюсь пока) - это даже важней чем наличие плейлиста.
Также неплохо было бы предварительно кешировать часть файла.
В общем, удачи в дальнейшем программировании.
Posted: Mon Oct 30, 2006 5:02 pm
by Serge
Хорошо что всё работает. Перемотку я сделаю, но это немного сложнее чем для wav - требуется найти начало фрейма.
Ты неправильно посчитал расход памяти. На каждый плеер должно тратиться: 132 Кб - распакованный плеер, 180 Кб буфер драйвера, 96-128 Кб - буфер мр3 плеера (32 Кб для wav).
Posted: Mon Oct 30, 2006 5:05 pm
by Mario79
Serge
Я смотрел в CPU, было это в обед и возможно я ошибся.
Posted: Mon Oct 30, 2006 5:13 pm
by Serge
Mario79
Не ошибся. CPU не показывает память выделяемую драйвером. И не учитывает динамчески создаваемый буфер, но эту часть можно исправить.
Posted: Mon Oct 30, 2006 5:16 pm
by Mario79
Serge
Ты имеешь ввиду, что CPU не учитывает наличие функции 64? Тогда это не вина приложения. Получается баг ядра.
Posted: Mon Oct 30, 2006 5:22 pm
by andrew_programmer
Mario79
Я так понял,что Serge говорил про буфер выделяемый в ядре.
А память в плеере выделяется через 68 функцию.
Posted: Mon Oct 30, 2006 5:46 pm
by Serge
68 функция не обновляет размер памяти приложения. Это моя ошибка. А драйвер выделяет память в ядре и про неё CPU просто ничего не знает.