LINUX.ORG.RU

Сообщения i-rinat

 

libvdpau-va-gl

https://github.com/i-rinat/libvdpau-va-gl/releases

В двух словах, это VDPAU драйвер, который использует OpenGL для рисования и VA-API для декодирования видео.

VDPAU это открытый интерфейс, который подразумевает единую точку входа (libvdpau) и подключаемые драйверы; API не замкнуто накоротко на nVidia. Выбор конкретного драйвера осуществляется либо через переменную окружения VDPAU_DRIVER, либо спрашивается у X-сервера. Если так или иначе получить имя не удалось, считается, что оно есть «nvidia». Драйвер представляет собой разделяемую библиотеку с именем вида libvdpau_<drivername>.so.1. Программы линкуются с libvdpau, а она в свою очередь загружает нужный драйвер.

Чтобы использовать, нужно собрать, положить библиотеку в директорию, где её сможет найти компоновщик, и добавить в окружение переменную VDPAU_DRIVER=va_gl. Проверить, что драйвер работает, можно запустив vdpauinfo. А vainfo покажет, работает ли драйвер VA-API.

На видеокартах AMD по чудаковатым причинам происходят падения внутри XCloseDisplay. Чтобы обойти проблему, нужно в переменную VDPAU_QUIRKS добавить строку XCloseDisplay. Элементы в VDPAU_QUIRKS перечисляются через запятую, слитно, без пробелов и служат для тонкой настройки поведения драйвера. Кроме XCloseDisplay, есть ещё параметр ShowWatermark, включающий отображение строки va_gl в правом нижнем углу. Полный список можно найти в README.md.

Начиная с версии 2.99.908 xf86-video-intel сообщает переходнику libvdpau.so имя VDPAU драйвера. Символьных ссылок
libvdpau_i965.so.1libvdpau_va_gl.so.1
libvdpau_i915.so.1libvdpau_va_gl.so.1
достаточно для загрузки, и необходимости в использовании VDPAU_DRIVER больше нет.

 , , ,

i-rinat
()

Философия VAAPI

Наверное, философия VAAPI это самое правильное название для того, что я ищу. Хочу текст/статью, по прочтении которой буду понимать что там и к чему прикладывать. Пока что единственная документация, которую я нашёл, это комментарии в va.h. После чтения остаётся ощущение, что не хватает чего-то важного, а именно, как это всё склеить.

Для тех, кто всё ещё гадает, что такое VAAPI, вот ссылка на статью в википедии.

Конечно, есть коды драйвера, и некоторых плееров, но они слабо помогают; пытаться понять по ним оригинальную задумку разработчиков примерно то же, что пытаться изучить алгоритм по реализации. К примеру, я пока так и не понял, почему vaQueryImageFormats говорит, что для изображений доступны только форматы YV12, I420, NV12, а vaCreateImage, для которого и нужно узнавать форматы, поддерживает ещё и BGRA (+ RGBA, ARGB, ABGR). Мне нужно как раз BGRA, но я не смог найти примеров использования; плеерам достаточно картинок в YV12.

После знакомства с VDPAU, его моделью отрисовки (и вполне внятной документацией), это как в другой мир попасть.

 ,

i-rinat
()

Выделение цветом жестких ссылок

Я гуглил на эту тему но так и не нашёл ответа на вопрос, который меня периодически мучает:

В Midnight Commander жёсткие ссылки не выделяются цветом. Это так специально? Или просто забыли?

В цветовых схемах есть отдельная категория hardlink. Но ведь от того что на файл есть больше одной ссылки, он не перестанет быть видеофайлом. А выходит, после создания ссылки на видеофайл, оригинал и клоны становятся серыми.

Хотелось бы услышать мнения причастных к разработке.

 ,

i-rinat
()

VDPAU-frontend для VAAPI ищу (чтобы ускорять flash и mplayer)

В общем, у flash-плеер тормозит в полноэкранном режиме. Я слышал, что у него есть поддержка ускорения через VDPAU, но у меня нет nvidia. У меня только intel'овское встроенное видео и оно умеет только VA-API.

Ищу прослойку, которая будет прикидываться VDPAU, под капотом используя VAAPI.

Я гуглил, но нашёл только обратное: VAAPI-frontend для VDPAU. Собственно именно этот frontend и надоумил меня заняться поиском. Если можно сделать преобразование в одну сторону, есть ненулевая вероятность, что и обратное возможно.

Заодно и изкоробочный mplayer будет декодирование видео ускорять.

 , ,

i-rinat
()

История reiserfs до включения в ядро

Решил я посмотреть, какой была reiserfs, когда попала в ядро. Всегда интересовал вопрос, а что было до версий 3.5 и 3.6? Где версии 1 и 2?

Ладно, первым делом — в гугл. Там я выяснил, что первое ядро, в котором была reiserfs — 2.4.1. Я скачал его и начал глазеть на код. Меня немного шокировал тот факт, что истерия с двумя форматами метаданных была уже в первом релизе (в составе ядра первом, да). В общем, вопросов не убавилось.

А были ли вообще версии до 3.5?

Может кто-нибудь помнит то время, когда была 3.5, но не было 3.6? Или они прям так вместе зародились?

 ,

i-rinat
()

Как реализовать барьеры записи?

Мне нужно что-то типа барьеров ФС, но для файла. Причём непосредственная запись в файл прямо сейчас не обязательна, даже наоборот, лучше чтоб её не было.

То есть мне нужно, чтобы блоки, которые я отправил на запись до вызова barrier() гарантировано записались на диск до того как начнут записываться данные, которые я отправил на запись позже.

Картинка для пояснения:

1 2 3 4 | 5 6 7 | 8 9 10 | 11 12 13 14 15 16 17 | 18 19 20
Здесь числа — блоки данных, пайпы — моменты вызова barrier()
Что мне нужно — это чтобы при сбрасывании кеша не было такого, что 9 записалось до 7, например. Последовательность записи внутри группы не имеет значения, пусть записывает как хочет.

Сейчас использую fsync, но он блокируется, пока не запишет данные, а это жуть как медленно. Есть sync_file_range, но как я понял, фактически он тоже ждёт.

 , , , ,

i-rinat
()

Пишу оффлайн дефрагментатор reiserfs

Собственно, уже написал.

На данный момент он дорос до версии v0.2.2 и в нём реализовано всё, что я собирался реализовывать. Код здесь: https://github.com/i-rinat/reiserfs-defrag/archive/v0.2.2.tar.gz

В плане сохранности данных реализовано журналирование как метаданных, так и самих данных (нужно включить, указав параметр командной строки). Сама схема журналирования похожа на data=ordered в ext3/4, когда сначала пишутся данные, а только потом происходит обновление метаданных. Актуальные данные никогда не переписываются на месте, всегда происходит копирование на пустое место. Это снижает производительность, но значительно снижает вероятность повреждения. Собственно, сейчас повреждения возможны только если диск сойдёт с ума и начнёт писать куда не просили. По крайней мере, мне нравится так думать.

В составе есть краткая документация.

В далёком будущем появится версия v0.3, в которой ожидаются убавление тормозов в режиме tree-through и улучшение производительности для больших директорий.

 ,

i-rinat
()

Загрузиться с usbboot на устройстве с Ingenic JZ4760

Есть большое желание уметь грузить телефон (z800) на JZ4760 через usbboot. Но у меня никак не получается. Официальный инструмент от Ingenic присутствует (правда только под Windows), даже доступен его исходник, но он умеет только массово прошивать железки, а мне надо и снимать, и восстанавливать дампы nand'а.

Я тщательно скопировал все настройки из конфигов официальной тулзы в конфиг usbboot, взял оттуда же оба загрузчика, но с этим всем загрузиться не удаётся. usbboot опознаёт платформу как JZ4760V1, а потом, секунд через пять отваливается с ошибкой usb "-110". Запустить тест памяти тоже не получается, оно на все запросы отвечает, что была ошибка после 0xa. Как я понял, оно отваливается по таймауту.

Есть владельцы? Удалось загрузиться?

 , jz4760, , , z800

i-rinat
()

Ищу каталогизатор статей (c хранилищем данных и метаданных в одном месте/файле)

У меня скопилось много (научных) статей, и я стал в них теряться. Мне нужен каталогизатор документов, я даже начал писать свой, но со временем программа стала слишком большой для меня и делать её всё труднее. Поэтому я начал задумываться, а стоит ли дальше её делать?

Я в курсе, что таких есть уже много. Но у тех, которые я видел, есть один из двух недостатков: они либо онлайн, либо хранят статьи отдельными файлами. Во втором случае, если я переношу коллекцию на другой компьютер или отдаю коллеге, пути меняются и красивая система рушится.

Мой идеал — это менеджер документов с хранилищем в одном файле, причём и метаданные и сами статьи лежат прямо там. Естественно, с возможностью делать экспорт в обычные PDF.

Может уже есть такие?

 , ищу программу, ,

i-rinat
()

Опиши свой ноутбук и работу GNU/Linux на нём

Давным-давно существовал сайт linux on laptops. Его основной и единственной целью был сбор информации об успешном использовании дистрибутивов GNU/Linux на разных машинах. К сожалению, сайт давно умер. На нём всё ещё доступны ссылки на некоторые старые обзоры, но новых уже никто не добавляет.

А ещё я регулярно вижу однотипные нити «выбираю ноутбук».

Если у тебя ноутбук, на котором ты пользуешься GNU/Linux, и у тебя есть блог или сайт, индексируемый поисковиками, создай одну простую страничку. Опиши там, какое железо заработало сразу, какое после настроек, а какое не работает до сих пор. Укажи версию дистрибутива и ядра. Дай вывод lspci (а если не жалко, то и lsusb). Укажи особые прошивки, если нужно. Остальное по усмотрению.

Желательно поставить ссылку на http://www.linux-on-laptops.com/, тогда в гугле можно будет быстро найти страницу по запросу «linux on laptops <производитель> <модель>». Вот тут у них есть образец отчёта: http://www.linux-on-laptops.com/submitsample.html

 linux on laptops

i-rinat
()

Разыскивается аналог imo.im для «параноиков»

Я попробовал imo.im (это такой веб-клиент для IM) и внезапно осознал, что в нём есть то, чего мне не хватало в клиентах icq: возможность подключаться с нескольких устройств, возможность «подхватить» беседу с телефона на десктопе, общая история. К тому же коннект поддерживает сервер и я не теряю сообщения, когда мобилка теряет сеть или уходит в сон.

Но иногда меня беспокоит тревога за свои аккаунты и за историю сообщений. Они где-то там, далеко. Я не могу ими управлять. Было бы здорово иметь аналог такой системы, пригодную к установке на свой сервер. Ещё было бы здорово иметь клиенты для десктопа (GNU/Linux) и android.

Есть такие?

P.S. Я в курсе, что есть XMPP. Я также в курсе, что хостер имеет доступ к данным моего сервера.

 , , imo.im

i-rinat
()

sqlalchemy, как узнать не пуста ли транзакция

Я храню данные приложения в базе (sqlite3) и пытаюсь использовать транзакции для сохранения. То есть при старте приложения начинается транзакция, которая завершается, когда пользователь выбирает «Сохранить»; тут же начинается новая. Фактически, за меня это делает sqlalchemy, я просто вызываю session.commit() .

При закрытии приложения я хочу знать, не изменил ли пользователь чего, чтобы предложить ему сохранить изменения. Из того, что я нашёл в документации, мне могла бы подойти проверка Session.dirty, Session.new и Session.deleted на непустоту, но они опустошаются при вызове flush (а отключать autoflush не кажется хорошей идеей).

Как узнать, были ли после начала транзакции запросы к базе данных?

 ,

i-rinat
()

Ищу алгоритм дефрагментации

Есть файловая система, нужно в ней собрать размазанные куски файлов вместе. Допустим, что примитивы вроде «переместить кусок файла вот сюда» уже есть. Интересует высокоуровневое описание того, как это делать.

Поиск в интернете даёт простые алгоритмы вроде упаковки всех файлов один за другим, начиная с начала диска. Так работал speeddisk под DOS, так работают многие дефрагментаторы под Windows. Но для целевой ОС этот подход плохо работает: нет и не может быть одного сплошного непрерывного пространства. Есть обязательные блоки как минимум раз в 128 Мб. Плюс ещё блоки внутренних структур. Кроме этого есть необязательное, но очень желательное условие: данные файла хорошо бы хранить недалеко от от соответствующих метаданных ФС.

Что можно почитать по этой теме?

i-rinat
()

libstdc++, UTF-8, thousand separator печатается как один байт вместо двух

Неприятный баг в libstdc++, багу уже лет 8 (нашел упоминание аж от 2004-го). И все дубликаты помечены WONTFIX. Суть бага в том что разделитель тысяч (так вроде) в русской локали суть неразрывный пробел и кодируется в UTF-8 двумя байтами (0xC2 0xA0), но на печать вылетает только первый. Строка становится некорректной и на неё ругаются все, кому не лень. Да и выглядит неаккуратно.

Есть способ обойти (без хаков вроде сброса LC_MONETARY в C)?

#include <iostream>
#include <sstream>
#include <locale>
using namespace std;
int main (void)
{
        locale::global (locale (""));

        int k = 1023;
        stringstream ss;
        ss << k;
        cout << ss.str() << endl;
        cout << k << endl;
}
$ ./a.out | hexdump -C
00000000  31 c2 30 32 33 0a 31 30  32 33 0a                 |1.023.1023.|
0000000b
i-rinat
()

Субтитры к «Default to open: The story of open source and Red Hat», требуется помощь

Я сделал субтитры на английском. Английский у меня неидеален, так сказать, так что во многих местах я не смог разобрать, что говорят. Особенно Alan Cox. Его речь для меня вообще загадка. С индусом тоже проблемы. Да со всеми, у каждого было пара слов, которые я не разобрал, как ни старался. Так что просьба к тем, кому нечем заняться — просмотрите субтитры вместе с видео (http://www.youtube.com/watch?v=vhYMRtqvMg8) и поправьте те места, в которых найдёте ошибки.

http://pastebin.com/izexA7au  — субтитры отдельно.

i-rinat
()

Как отобразить вывод perf report на место в .so файле при отсутствии таблицы имён?

Собрал perf'ом данные по процессу:

perf record -g -p 7242
смотрю вывод
perf report
Events: 146K cycles                                                                                                                   
+     91,67%  operapluginwrap  libflashplayer.so                   [.] 0x86fd75
+      2,01%  operapluginwrap  libspeexdsp.so.1.5.0                [.] 0x976d
+      1,12%  operapluginwrap  [rtlwifi]                           [k] pci_read32_sync
+      0,80%  operapluginwrap  libasound.so.2.0.0                  [.] 0x639d7
+      0,29%  operapluginwrap  perf-7242.map                       [.] 0x7fa105be3e82
+      0,17%  operapluginwrap  libm-2.13.so                        [.] __floor
+      0,14%  operapluginwrap  libspeexdsp.so.1.5.0                [.] speex_resampler_process_int
+      0,12%  operapluginwrap  operapluginwrapper-native           [.] 0x26b62
Там, где символов нет, отображается шестнадцатиричное число. Как по нему найти точку в файле, которой он соответствует? Отсчитывать от начала файла или от начала .text? В обоих местах какая-то бредятина. Каждый раз при новом сборе семплов число меняется.

i-rinat
()

Статистика использования swap

Нужна накопительная статистика по использованию swap: сколько страниц было сброшено в swap.

Есть железка с OpenWRT, памяти мало, для страховки подключен swap на usb flash drive (swap используется где-то 4Мб). Требуется узнать, лежат ли там страницы просто так или постоянно перезаписываются. Ситуация осложняется тем, что одна программа периодически (не часто) запускает другие и уже они могут вызвать интенсивный своппинг.

За пару дней не смог нагуглить, по swap statistics выдаёт либо про использованный объём, либо про интенсивность на текущий момент, а мне нужно именно с накоплением.

i-rinat
()

Ищу программу для поиска шрифта по символу

Не во всех шрифтах есть все символы. И если необходимый шрифт не установлен, вместо символов я увижу квадратики.

Идеальным решением была бы программа со следующим функционалом: копируешь в неё строку квадратиков, а она выдаёт минимальный список шрифтов (ещё лучше — названия пакетов со шрифтами), которые нужны для корректного отображения строки. Как бонус — просто список всех шрифтов (доступных в дистрибутиве), в которых есть глиф для введённого символа.

Есть такая?

i-rinat
()

[libreoffice] Как изменять цвет вычеркнутого текста?

Это нужно для использования libreoffice writer как outliner'а. Составил список дел в виде списка. Вычёркиваешь дело, а оно цвет меняет на серый, чтобы глаза не мозолить. Сразу удалять не хочется, созерцание вычеркнутых дел радует.

Насколько я понял, это то, для чего нужны макросы. Беда в том, что я в них ничего не понимаю. Подскажите, как бы это сделать; либо ключевые слова для поиска в гугле — моё google-fu хромает.

 

i-rinat
()

reiserfs: move_unformatted_block / move_formatted_block

В составе reiserfsprogs есть функции move_unformatted_block и move_formatted_block, которые используются для перемещения блоков из конца в начало раздела при его уменьшении. Фактически, это заготовка для создания оффлайн-дефрагментатора.

Но вот в чём вопрос - до меня этот код смотрело много людей, и наверняка значительная часть из них сделала аналогичный вывод. Но дефрагментаторов для reiserfs почему-то не наблюдается. Есть для этого объективная причина?

Если кто-то слышал об изысканиях на эту тему, буду рад увидеть ссылку (мой поиск в гугле ничего не дал).

i-rinat
()

RSS подписка на новые темы