?

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
То есть, технически есть GEGL, который пытается представить буфера в виде коллекции плиточек (tiles), которые он хранит на диске в виде отдельных файлов или одного большого файла и в памяти, в виде отдельных подбуферов. Он умеет грузить jpeg и png в свои буфера, используя построчный интерфейс (сканлиниями).

Когда я попробовал создать простейший 100Mpix объект в GEGL и сохранить его в png (gegl -i bigrect.xml --output bigrect.png), он должен был бы занять около 380Мб памяти без всяких оптимизаций. Реально же было съедено на 100Мб больше.
<gegl>
    <rectangle width='10000' height='10000' color='red'/>
</gegl>


Процесс этот уже идет более 20 минут под Валгриндом на Intel(R) Core(TM)2 Duo CPU T9600 @ 2.80GHz с 3Гб ОЗУ.

Мне уже указывали на GEGL для подобных целей, но я не вижу, чтобы он хоть как-то эти цели достигал.


Edited at 2009-09-27 02:54 pm (UTC)

ля вьюера все это не нужно.
Для вьюера нужно создать X-овый pixmap размером с экран (благо для этого памяти сейчас хватает. Вот под DOS в real mode приходилось в этом месте извращаться, потому что 1024x768 в память уже не лезло. Но у тебя и экран не 1024x768) и прямо в процессе чтения её заполнять. А при масштабировании/панорамировании - читать прямо из исходного файла еще раз.

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

Написать это с нуля будет, не исключено что, быстрее, чем разбираться с GEGL, который вообще-то заточен под совсем другие задачи.



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

А чем примитивнее, тем надежнее. Альтшуллер говаривал, что идеальная система, это когда системы нет, а функция выполняется. Куда уж примитивнее.

  • 1