Bug 3378

Summary: xmms-cdread is stumpling while playing some CD's
Product: Sisyphus Reporter: Yury Aliaev <mutab0r>
Component: xmms-in-cdreadAssignee: Michael Shigorin <mike>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   

Description Yury Aliaev 2003-12-16 16:34:00 MSK
В некотором месте некоего диска начинает дико затыкаться (несколько десятых
долей секунды звук идёт, затем прерывается на несколько секунд). Если тот же
диск играть обычным способом через декодер самого привода (с помощью cdplay), то
всё проходит нормально.



Steps to Reproduce:
1. Попробовать обкатать плагин на наибольшем количестве приводов и дисков
 разной степени заезженности, параллельно смотря, как такие диски проигрываются
самим приводом.
Comment 1 Michael Shigorin 2004-01-07 18:57:31 MSK
Хех.  0.14a, собранный с патчем насчет xmms-1.2.8, просто взрывается на
нескольких ровных местах.  Реже, если в плейлисте _только_ CD, очень быстро
(порой на старте) -- если еще что-то и ~/.xmms/config ненулёвый.

Чинить его надо :-(
Comment 2 Mikhail Zabaluev 2004-01-07 19:26:03 MSK
Какого-нибудь аналогичного плагина на cdparanoia точно нету?
Comment 3 Mikhail Zabaluev 2004-01-16 01:15:33 MSK
Я точно не буду этим заниматься в ближайшее время.
Comment 4 Michael Shigorin 2004-01-19 18:44:53 MSK
Тёзка, а ведь шикарная мысль!

Что смешно, google://xmms+cdparanoia говорит, что есть.  Пойду смотреть :-)
Comment 5 inger@altlinux.org 2004-05-05 17:49:07 MSD
нет такого пакета 
 
Comment 6 Michael Shigorin 2004-05-05 17:52:59 MSD
есть такй пакет :(
Comment 7 Yury Aliaev 2004-05-12 22:05:34 MSD
Мне удалось малость копануть код xmms-in-cdparanoia (который глючит абсолютно
также: тот же диск, то же место...), и я выяснил, что плагин (и именно, похоже,
библиотечная функция из libcdparanoia) пытается считать сектор "до победного
конца", не смотя на то, что отпущенное для него время давно истекло. При этом
даже намёк на предварительную буферизацию отсутствует -- что прочитали, то тут
же и играем. В связи с чем предлагаю:
1) относиться к багу скорее как к feature request'у;
2) ввести чтение с упреждением и буферизацией, чтобы иметь про запас некий
прочитанный фрагмент;
3) организовать таймаут на функцию, читающую сектор диска, и при его истечении
непрочитавшийся фрагмент просто забивать чем-то вроде линейного спада/нарастания
(чтобы уж совсем по ушам не било).

P.S. Вероятно, имеет смысл описанные пожелания передать в upstream как для
xmms-in-cdread, так и для xmms-in-cdparanoia.
Comment 8 Konstantin A Lepikhov (L.A. Kostis) 2004-05-12 22:14:38 MSD
Все это конечно хорошо, если бы у developer'ов cdread и in-cdparanoia был к
этому интерес :(
Comment 9 Michael Shigorin 2004-06-04 18:03:29 MSD
В соответствии с комментарием #7 меняю на enhancement и объявляю конкурс на
почетный фикс.

Зафиксившему -- в зависимости от потраченного времени с меня пиво или (по
отдельной договоренности) возможна денежная компенсация.
Comment 10 Michael Shigorin 2005-10-12 11:41:23 MSD
похоже, таймаут :(  то ли по CDDA, то ли по xmms...
Comment 11 Michael Shigorin 2008-02-15 22:22:13 MSK
По -readcd.
Comment 12 Michael Shigorin 2008-02-15 22:22:28 MSK
В качестве workaround рекомендую использовать grip, а по результатам его
деятельности -- уже xmms :)