?

Log in

No account? Create an account
Speaker Rabbit

abbra


CIFS: curious information funneled sometimes


Previous Entry Share Flag Next Entry
Maemo Summit 2009
Speaker Rabbit
abbra
В субботу, 10 октября, на Maemo Summit мы с Jussi Rautio будем рассказывать об обработке многопиксельных изображений на Maemo. Точнее, что есть сейчас с камерой и обработкой изображений во Фремантле и что мы хотим сделать в Maemo 6. Комнатку нам дали самую маленькую (25 человек) и вообще это будет BoF, но лиха беда -- начало.

Если вдруг вы будете в это время в Амстердаме и вас не интересуют обзорные рассказы о Rygel, Mer и адаптации приложений GNOME, добро пожаловать в аудиторию 770.

http://wiki.maemo.org/Maemo_Summit_2009/Schedule
Tags: ,


  • 1
А без костылей слабо? Ну без gtk под maemo тяжко. Какой идиот завязал экранную клавиатуру на такой высокий уровень, вместо того чтобы через XTEST события пихать. Но, насколько я знаю, то что менюшки и прочая мишура через gtk не мешает графику рисовать непосредственно средствами xlib.

Рисовать можно, без проблем. Даже с клавиатурой не так страшно, нужно выставить определенный атом в свойствах окна и события будут приходить.

То есть, написать панорамный вьюер для конкретного jpeg или там png -- не проблема. Хочется же, чтобы оно поддерживало все внятные форматы. В этом случае приходится либо самому писать эту абстракцию над libjpeg/libpng/..., либо пользоваться тем, что есть.

И вот тут проявляется мрачная действительность "памяти хватает". gdkpixbuf loaders со времен 770-й научились использовать сканирующий режим libjpeg, как раз тогда его в апстрим запихали. Но так и не научились в API прокидывать Region of Interest до загрузки изображения. После загрузки приложение получит сигнал с размером bounding box и даже может его изменить, gdkpixbuf отреагирует, но это будет уже после того, как 100Мпиксельное изображение засосано в память.

В Qt все ровно наоборот. В API QImageIOHandler присутствует возможность указать как ROI, так и то, что нам надо масштабировать читаемое изображение. Но совершенно отсутствует оптимизация масштабирования при чтении, например, jpeg, хотя бы на уровне DCT. То есть, всегда читаем сканлинию, распахиваем все символы и после этого делаем программную интерполяцию с потерей информации.

Хорошо, что оба этих популярных тулкита хотя бы поддерживают подсовывание потока из памяти, а не только из диска. То есть, по крайней мере без особых наворотов в Qt можно реализовать многопроходный панорамный вьюер без особых затрат -- в стиле "размер файла" + 3х3 размера экрана, то есть с достаточно предсказуемым поведением. В GDKPixbuf и такое сделать нельзя.

Qt на Maemo 5 будет -- он уже есть в extras-devel, народ даже собирается сделать так, чтобы темы и виджеты базовые совпадали с предоставляемым Hildon-стилем. Так что вполне реально такое написать на Qt без особой потери поддержки других форматов. Хотя, по-хорошему, надо дорабатывать все плагины поддержки этих форматов.

В этом случае приходится либо самому писать эту абстракцию над libjpeg/libpng/..., либо пользоваться тем, что есть.

А придется писать. Потому что то что есть - неработоспособно.
Не исключено, что отказываться надо не только от всяких gtk-шных поделий, но и от библиотек чтения форматов. Во всяком случае от некоторых. libjpeg - вроде вменяема, libtiff - неизбежное зло, уж больно формат развесистый.
А вот насчет libpng есть сомнения. Когда мне тут недавно потребовалось прописать в png-файл, сгенерированный libgd физическое разрешение, то оказалось проще написать встраивания чанка pHYs самому, чем разбираться в том, как это сделать через libpng.

Как правило форматы - проще, чем библиотеки, реализующие работу с ними.

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






Посмотри на QImageReader и QImageIOHandler в Qt 4.5, API там неплохое, реализация страдает.

С libpng у меня уже давно руки чешутся, от нее такой ужас исходит. Я не верю, что PNG должен так медленно обрабатываться и быть таким запутанным в использовании.

  • 1