PDA

Просмотр полной версии : CD-ROM



alone
04.01.2006, 06:58
Пишем плейер видео (со звуком) с CD-ROM'а.

При чтении CD наблюдается торможение между секторами. Насколько сильно тормозит - зависит от конкретного привода. Как бороться? Пробовали и команду #EB, и команду #28 - эффект одинаковый.

У кого-нибудь работало блочное чтение секторов с CD-ROM?

newart
04.01.2006, 07:30
Пишем плейер видео (со звуком) с CD-ROM'а.

При чтении CD наблюдается торможение между секторами. Насколько сильно тормозит - зависит от конкретного привода. Как бороться? Пробовали и команду #EB, и команду #28 - эффект одинаковый.

У кого-нибудь работало блочное чтение секторов с CD-ROM?
Блочное работало, хотя по каким-то причинам потом от него отказались.
Лучше всего себя показал CD-ROM Asus, хуже всего работали всяческие
Combo & RW.

SMT
04.01.2006, 08:52
насколько тормозит? может, после чтения очередного сектора дать команду на следующий, а DRQ пусть висит, пока данные не понадобятся...или так тоже не успевает?

буферизация сильно испортит скорость?

jtn
04.01.2006, 10:36
я пожалуй порассуждаю как теоретик:
данные с диска читаются гораздо медленнее чем даже минимальная скорость привода, т.е.
1x - 176kb/s. А поскольку сектора не буферизируются (в часности т.к. не используется команда блочного чтения), то получается временной "зазор" - время ожидания, когда диск встанет на нужный сектор.
Теперь, что можно тут сделать. Команду блочного чтения я бы все-таки не стал использовать, ввиду её не стабильности - по крайней мере, неизвестно как она будет выполняться на других приводах.
Остаются варианты:
1) синхронное чтение - как посоветовал SMT, пробовать после чтения одного сектора сразу давать команду чтения другого - по идее привод должен считать в буфер, а из буфера читать уж когда нам будет нужно.
2) полностью рассинхронизовать чтение-вывод (видимо, нельзя будет грузить прямо в экран...)

p.s. поздравляю AlCo с выходом в сеть - первое значимое событие 2006 года o_O

SMT
04.01.2006, 11:28
ещё кеш в приводе на 1-2mb - обычное дело. можно попробовать дать команды чтения на несколько секторов вперёд, не читая данные (на эмуляторе такой номер не пройдёт). потом уже должно из кеша приходить без задержек



поздравляю AlCo с выходом в сеть - первое значимое событие 2006 годахе-хе. попробую угадать: вторым значимым событием станет уход AlCo из сети или прекращение выпуска IG,ACE,PT,RAR,ALASM,... ^_^

Добавлено:
в эмуляторе вариант #1 тоже будет работать неправильно, потому что при посылке пакета эмуль заодно читает данные в свой буфер. так что реал рулит

Surfin_Bird
04.01.2006, 11:33
Так, народ! Это уже делали Newart cо одним товарищем!!! Давайте дружно из запинаем, чтобы они откопали исходники и конвертилки!!!!!!!

rajdee
04.01.2006, 12:20
Так, народ! Это уже делали Newart cо одним товарищем!!! Давайте дружно из запинаем, чтобы они откопали исходники и конвертилки!!!!!!!
Разработками в этой области, помимо newart и hedgehog, также занимался psb^halloween^triumph, но ввиду своей скромности, этот факт остался малоизвестен общественности.

Surfin_Bird
04.01.2006, 13:01
Не знаю, как вас всех, а меня этот факт просто бесит! Какого хрена нужно что-то делать, а потом ложить на это х.. и, что вообще подрасстрельно - херить исходники!?!?!?!?
Тем более что результат-то был офигенный!
Личная просьба к тем, кто делает это сейчас: КОПИРУЙТЕ ИСХОДНИКИ НА ВИНТ И НА РЕЗЕРВНУЮ ДИСКЕТУ!!!!!!
Личная просьба к тем, кто делал это раньше: НАЙДИТЕ, ПОЖАЛУЙСТА, ИСХОДНИКИ ИЛИ РАБОЧИЕ КОНВЕРТИЛКИ И ПЛЕЕРЫ!!!!

alone
04.01.2006, 17:14
насколько тормозит? может, после чтения очередного сектора дать команду на следующий, а DRQ пусть висит, пока данные не понадобятся...или так тоже не успевает?
так и сделано. но проблема в том, что данные надобятся сразу же...
команда чтения (пробовали и #BE, и #28) с заданием >1 секторов виснет в цикле опроса DRQ. а если 1 сектор, то работает.


буферизация сильно испортит скорость?
да.
вот расчётные данные:
в одном кадре сжатого 16-цветного видео около 14.5k (считая со звуком). видео сжато по знакоместам. одно знакоместо (оно состоит из двух полузнакомест - чётныеи нечётные пары столбцов) строится 1152 тактов, за это время проигрывается 4 кванта звука. коэффициент турбирования АТМ на данной задаче - ориентировочно 1.45. поэтому частота звука около 17500 Гц. один сектор звука приходится на 7 секторов видео. данные одного знакоместа (с координатами) занимают 36 байт. поэтому в одном секторе помещается 113 полузнакомест. частота кадров 10 fps, но она немного плывёт в зависимости от подвижности видео. итого в среднем 338 знакомест на кадр.


дать команды чтения на несколько секторов вперёд, не читая данные (на эмуляторе такой номер не пройдёт)
я вообще сомневаюсь, что этот номер где-то пройдёт :-/

PSB был запрошен сутки назад, но не ответил.

P.S. я в инете потому, что сижу у Shiru, а потом вы меня в инете не найдёте :P

alone
04.01.2006, 21:33
Величина задержки между секторами, видимо, не больше 10% от общего времени чтения данных.
В общем, есть положительные результаты: удалось подогнать звук к видео и уже можно смотреть ролики с небольшим искажением звука (потрескивание)