LINUX.ORG.RU

Велосипедостроение: рабочий момент


0

0

Сижу, занимаюсь сабжем :) То, что начиналось когда-то как библиотечка для dithering'a (libSAD: scale & dither), неожиданно для меня самого переросло в одноимённый плеер. Начинал я писать эту либу для предпологаемой интеграции в Audacious, но отказался от этой затеи в связи с необходимостью домать API плагинов и убеждать майнтайнеров в необходимости это делать :) Основная идея в следующем: плагин-декодер запрашивает вывод в своём нативном формате (float, fixed-point (с указанием длины дробной части), signed/unsigned int8/16/24 etc.), который уже без участия декодера преобразуется в выходной формат (16 или 24 bit). Притом этот процесс происходит всегда по кратчайшему пути, который выбирается динамически исходя из необходимости минимизировать погрешности округления. Именно на этом этапе сигнал также масштабируется (software volume + Replay Gain), и, естесственно применяется dithering. Вот недавно попробовал приделать некоторую визуализацию, что вылилось в сражение с дико тормозящим Cairo...

В общем, работа далека до завершения: версию 0.0.1 выпущу, думаю, только осенью (скоро уезжаю, так что летом работать не смогу)...

PS: API плеера позволяет приделывать к нему и другие интерфейсы, например, имеется, не показанная на скриншоте, консольная версия.

>>> Просмотр (1280x1024, 262 Kb)

Есть у меня подозрение что "System of a down" это горячие армянские парни которые сейчас в калифорнии обитают ...

anonymous
()
Ответ на: комментарий от anonymous

обычный же vim вроде..?
или вы про схему цветовую? если нравится имхо быстрее gimp`ом снять чем спрашивать и ответ искать в комментах)

понравилось, как выглядит панелька xfce`шная вертикальная, надо будет попробовать тоже её так поставить)

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

вим то обычней некуда. я про тему - цвета хороши

anonymous
()
Ответ на: комментарий от anonymous

>Есть у меня подозрение что "System of a down" это горячие армянские парни которые сейчас в калифорнии обитают ...

Да, ты прав. К сожалению, в прошлом году они решили "взять перерыв", а недавно мелькнула инфа, что Танкян (вокал) свалил от них... Эххх... Back to the river Arax...

AsphyX ★★★
() автор топика
Ответ на: комментарий от pawnhearts

>понравилось, как выглядит панелька xfce`шная вертикальная, надо будет попробовать тоже её так поставить)

Попробуй :) Я давно уже так обитаю. Меньше полезной площади монитора занимает. Один момент: многие апплеты будут неюзабельны.

AsphyX ★★★
() автор топика
Ответ на: комментарий от furs

К велосипеду данный плеер трудно отнести, т.к., как я понял, этот плеер является самодостаточным, в отличие от кучи морд к xine, gstreamer и т.д. Тем более самодостаточных плееров достаточно мало, из живых вроде только audacious, bmpx, qmmp (можно отнести также mpd и xmms2, но это из другой оперы, т.к. это демоны). Так что тут сложный вопрос, стоит ли называть тот же amaroK "плеером", т.к. он является по сути мордой к xine, ведь не называют же плеером клиенты к mpd. Тем более с точки зрения программиста труднее написать весь плеер, чем просто морду к xine. Не буду указывать лучшее решение, т.к. оба варианта имеет право на жизнь.

anonymous
()
Ответ на: комментарий от anonymous

Ещё интересна в этом плане библиотека libffmpeg. Как я понял, она является движком наполовину. Т.е. читает и декодирует файл своими силами. Остаётся только направить данные из буфера на вывод. Для аудио-плеера возможностей ffmpeg больше чем достаточно. Количество поддерживаемых аудио-форматов перекроет потребности практически любого пользователя. Но благодаря дистроклепателям и патентам libffmpeg собрана не со всеми флагами. Интересно было бы использовать libffmpeg в плеерах напрямую. Например в том же amaroK отказаться от xine и работать с libffmpeg напрямую.

anonymous
()

Поставил себе эту цветовую тему в вим - доволен, как слон :)

За музыку определенно зачот.

P.S. Сам пару дней назад перелез на xfce... о панели сбоку и о том, что так она места меньше занимает. У меня этих панелей пять штук. Но все они по дефолту скрыты, поэтому не мешают и не отвлекают. Я вдруг осознал, что созерцать постоянно присутствующую на экране панель есть занятие бесполезное.

KirG0FF ★★
()

Цвета вим - зачот.

MEZON ★★★★★
()
Ответ на: комментарий от AsphyX

> Да, ты прав. К сожалению, в прошлом году они решили "взять перерыв", а недавно мелькнула инфа, что Танкян (вокал) свалил от них... Эххх... Back to the river Arax...

Они все сейчас работают над личными проектами, Serj http://myspace.com/serjtankian а остлальные творили Scars on Broadway ...

valeri_ufo
()
Ответ на: комментарий от anonymous

> Так что тут сложный вопрос, стоит ли называть тот же amaroK "плеером", т.к. он является по сути мордой к xine

кстати, раз он морда, можно ль его заставить не запускать xine, а подключаться к нему... вот если хочется чтоб воспроизведение музыки не прерывалось если вдруг иксы упадут (или если вылогинишься), и нужна мащь амарока как библиотеки - то что делать?

enby ★★
()

За музыку зачот, тему для вима сейчас попробую :)

php-coder ★★★★★
()

За функцию больше чем один экран не зачОт.
За for в одну строку не зачОт.
За for(;;) с тельным break не зачОт.

За вим зачОт :).

не больше твойки (переходная степень между два и три) :D

vtVitus ★★★★★
()
Ответ на: комментарий от anonymous

libffmpeg, для начала, не существует.

Если Вы так сильно не доверяете мантейнерам дистрибутивов, то таскайте ffmpeg в пузе своей программы.

Даже не со всеми флагами ffmpeg умеет декодировать mp3. А что еще надо плееру? Почти ничего.

thresh ★★★
()
Ответ на: комментарий от thresh

Вопрос в том, почему по этому пути ни кто не идёт?

anonymous
()
Ответ на: комментарий от enby

>кстати, раз он морда, можно ль его заставить не запускать xine, а подключаться к >нему... вот если хочется чтоб воспроизведение музыки не прерывалось если вдруг >иксы упадут (или если вылогинишься), и нужна мащь амарока как библиотеки - то >что

xine это всего лишь библиотека. А вот если взять xmms2, то вполне реально сделать между ними взаимодействие. Только вся сложность в том, что библиотека привязана к amaroK, т.е. к морде. А надо, что бы использовались возможности xmms2. Я, думаю, в данном случае проще написать заново морду к xmms2 с функционалом, близким к amaroK. Только в таком случае придётся пожертвовать некоторым функционалом, например не будет визуализации.

anonymous
()
Ответ на: комментарий от Stalwart

>xmms2 позволяет клиентам реализовать визуализацию

Ну тогда ещё лучше =) Странно, что ни кто не хочет за это браться.

anonymous
()

2 AsphyX

А где собственно можно поиметь (в хорошем смысле) ваш плеер? Я бы пожалуй свою (не только для себя конечно) мордочку к нему забацал.

zloy_starper ★★★
()
Ответ на: комментарий от Bohtvaroh

>А можно немного подробнее про грабли с каирой?

Да вроде как вылечил уже. Но всё равно, если развернуть это дело на полный экран, отрисовка начинает подтормаживать. И так >50 fps не выжать. Дальше оптимизировать отрисовку некуда: и так она сводится всего к 2м операциям отрисовки: фоновая сетка с градиентной заливкой рисуется как один path (одна операция cairo_fill), затем все темные столбики (ещё один вызов cairo_fill)... Градиентный фон перерисовывается только по expose-event :)

AsphyX ★★★
() автор топика
Ответ на: комментарий от henturis

>265kb/s?

А почему нет? Это average bitrate. Кодировалось с -q 8, что даёт номинальный битрейт 256 kbps, а средний -- как получится :) Вот для этого трека получилось 265 :) Плагин-декодер предоставляет информацию только о среднем битрейте, посколько только он имеет смысл и напрямую связан с длительностью трека и длиной файла :) Зачем плодить лишние сущности?

AsphyX ★★★
() автор топика
Ответ на: комментарий от zloy_starper

>А где собственно можно поиметь (в хорошем смысле) ваш плеер? Я бы пожалуй свою (не только для себя конечно) мордочку к нему забацал.

Раньше сентября я, к сожалению, зарелизить его не смогу :(

AsphyX ★★★
() автор топика
Ответ на: комментарий от GlorySmith

>Ээээ...может и глупый вопрос... А как в виме табы сделать?

В vim7 командой tabnew :)

AsphyX ★★★
() автор топика
Ответ на: комментарий от vtVitus

>За функцию больше чем один экран не зачОт.

Согласен, читабельности это не прибавляет...

>За for в одну строку не зачОт.

Дык если тело цикла -- одна строка :)

>За for(;;) с тельным break не зачОт.

???

AsphyX ★★★
() автор топика
Ответ на: комментарий от KirG0FF

>У меня этих панелей пять штук. Но все они по дефолту скрыты, поэтому не мешают и не отвлекают.

Ещё один любитель методики "подполз-принюхался" ((c) кого-то с ЛОРа). Я предпочитаю видеть цель (кнопку) ещё до начала движения курсора :)

AsphyX ★★★
() автор топика
Ответ на: комментарий от AsphyX

> Раньше сентября я, к сожалению, зарелизить его не смогу :(

Жаль. У меня как-раз видимо будет вермя чем-нибудь заняться для души. Если передумаешь - напиши. Надругаться над чужим кодом не имею желания. :-)

zloy_starper ★★★
()
Ответ на: комментарий от AsphyX

>За for(;;) с тельным break не зачОт.

???

Проще переписать так:

while (SAD_decoder_decode(inst->....) > 0) {
    pthread_mutex_lock(....
    [...]
    SAD_output_buffer_write(...
}
/* EOF or orror */
[...]

anonymous
()

дело foobar живёт и пахне. И совсем даже не гуано...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.