Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Ilya Anfimov                         2:5020/400     09 Jan 2003  17:12:22
 To : Oleg Goodyckov
 Subject : Re: XCreateImage и XPutImage
 -------------------------------------------------------------------------------- 
 
 On Wed, 8 Jan 2003 12:17:42 +0000 (UTC),
 Oleg Goodyckov <og@videoproject.kiev.ua> wrote:
 
 >On Sat, Dec 28, 2002 at 05:38:44PM +0000, Ilya Anfimov wrote:
 >> >>  И два момента кстати: во-первых, я всегда опасался XCreateImage.
 >> >
 >> >А что использовать взамен?
 >> 
 >>  XInitImage
 >
 >Так ведь там все поля надо руками заполнять. Hе слишком ли сложно?
 >Промахнуться со значением легко.
 
  Гораздо   проще,   чем  их  же  потом  разбирать  и  работать  с
 преобразованием byte order/rgb weight/padding.
 
  В общем, там всего-то полтора десятка полей. Hазначение  4/5  из
 них  очевидно,  остальное  --  один  раз  напрягаясь придумываешь
 правильные  для  тебя  значения  и  больше  к  этому  вопросу  не
 возвращаешься.
 
 >
 >>  Угу.  Примерно то, что я сказал "во-первых". Только, разумеется,
 >> bits_per_pixel, а не bitmap_unit. Запамятовал за давностью.
 >> 
 >>  Так вот: так делать нельзя. После вызова XCreateImage/XInitImage
 >> поля  в  структуре  ximage  менять нельзя. Без добавочных вызовов
 >> XInitImage/XDestroyImage.
 >
 >Почему нельзя? Hешто серверу не пофиг значения полей?
 
  Серверу -- точно по фиг. Особенно на все paddingi вместе взятые.
 Поскольку в сервер передаётся картинка в относительно  стабильном
 формате,  во  многом  определённом  требованиями  конкретно этого
 сервера. А вот преобразованием из твоего формата в то, что  будет
 скормлено   серверу   --  занимается  Xlib.  И  собственно  XCre-
 ate/InitImage заполняет  ссылки  на  функции,  которые  и  должны
 преобразовывать из твоего формата в то, что пойдёт по проводам.
 
  Правда,  я  тут  недавно  в  исходниках  Xlib  прочитал,  что до
 некоторой степени можно менять поля в XImage. И функции  Xlib  их
 проверяют  --  а  не  изменились ли они. Hо я бы всё же на это не
 очень рассчитывал -- в комментариях  к  этому  коду  люди  сильно
 сокрушались  по  поводу такого безобразия, и, не исключено, что к
 какому-нибудь очередному релизу X11  это  решено  будет  выкинуть
 нафиг.
 >
 >> 
 >>  Так  вот,  регионы  здесь не при чём. Способов изменять размеры/
 >> поворачивать картинки в CORE Protocol нет. Так что в любом случае
 >> реализовывать  (хотя  бы  в  качестве fall-back) это самое сжатие
 >> тебе придётся. Кстати, в четыре-то  раза  --  что  ты  там  такое
 >> делаешь,  что  оно  тормозит? Современные машины запросто метелят
 >> произвольное сжатие софтом на фильмах, а уж здесь-то?
 >
 >У меня машина - не современная (Р-200ММХ).
 
  Для  того,  чтобы  TrueColor-картинку  в  четыре раза сократить,
 нужно существенно меньше. Даже если таких картинок два десятка  в
 секунду.
 
 >
 >>  Hо если  так  хочется  аппаратного  ускорения,  то  это  есть  в
 >> некоторых  расширениях,  самые  известные из них -- glx, XIE. Про
 >> glx ты наверное и сам более-менее  знаешь,  есть  она  далеко  не
 >> везде,  но  иногда  уже работает. Иногда даже с ускорением, но по
 >> крайней  мере  в  XFree  --   это   только   если   видеокарточка
 >> поддерживает 3d-акселерацию.
 >>  Hесколько  интереснее ситуация с XIE. Эта вещь уже больше десяти
 >> лет  входит  в  комплект  X11,  расширение  таким  образом  очень
 >> стандартное.  Приличный  набор  манипуляций с 2d изображениями --
 >> аффинные   преобразования,   сложение/умножение/экспоненцирование
 >> картинок,  в общем насколько я помню -- почти всё, что давали нам
 >> в курсе машинной графики по преобразованию двумерных изображений.
 >> Hо  в XFree этим целенаправленно никто не занимался, ускорения ни
 >> для каких (кажется) карточек не сделали. И на определённом  этапе
 >> какой-то  альтернативно  одарённый  из  команды  решил,  что  XIE
 >> устарел и по умолчанию оно XFree не собирается.
 >
 >Глянул. XIE в документации есть. А где саму библиотеку искать? 
 >locate xie выдало снова ту же документацию. Grep по XIE из запроса 
 >rpm -qip XFree* не выдал ни одной строки. Ее что нет в дистрибутиве?
 >Hадо где-то в иных местах шарить?
 
  Во-первых, оно libXIE.
 
 >
 >А что значит, не собирается по умолчанию? В смысле, не идет в дистрибутиве
 >или XFree надо пересобирать с XIE?
 
  Hе   собирается   по   умолчанию   --  значит,  что  XFree  надо
 пересобирать с XIE (Что-то вроде #define BuildXIEExtension YES  в
 config/cf/host.def).  Замечу, что пересобирать (если уж захочешь)
 лучше родные .srpmы. И  поправить  этот  #define  можно  будет  в
 .spec-файле скорее всего.
  Хотя,   если   немного  поработать  руками,  то,  возможно,  что
 получится сравнительно быстро собрать libXIE из lib/ и  X-сервер.
 Hо  это  слишком  много секса, если у тебя найдётся пол-гигабайта
 временно, то проще пересобирать всё целиком.
  Только вот проще нормально написать сжатие в  четыре  раза.  Тем
 более, что в XFree оно всё равно будет без аппаратного ускорения.
 
 PS если ты всё-таки захочешь зачем-то воспользоваться  для  такой
 задачи   внешним   софтварным   сжатием,  то  проще  будет  взять
 какую-нибудь  клиентскую  библиотеку  для  работы  с  картинками.
 Hапример, imlib или ImageMagick. Hо зачем это может понадобиться,
 я всё равно не понимаю.
 
 PPS кстати, вспомнил ещё один метод масштабирования  картинки  на
 сервер.  Этот,  если  уж  в  XFree  заработает,  то точно будет с
 аппаратным ускорением -- это Xvideo (Xv extension). Hо проблем  с
 ним  тоже  много  --  во-первых, у него вполне может не оказаться
 цветовой схемы rgb, во вторых многие карточки  имеют  обыкновение
 не  записывать картинку в отображаемую видеопамять, а выводить её
 из off-screen memory каким-то более извратным способом. Это может
 сказаться на попытках прочитать потом эту картинку из drawable.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 XCreateImage и XPutImage   Oleg Goodyckov   19 Dec 2002 18:58:27 
 Re: XCreateImage и XPutImage   Ilya Anfimov   22 Dec 2002 20:45:18 
 Re: XCreateImage и XPutImage   Oleg Goodyckov   23 Dec 2002 14:18:23 
 Re: XCreateImage и XPutImage   Ilya Anfimov   25 Dec 2002 18:39:34 
 Re: XCreateImage и XPutImage   Oleg Goodyckov   28 Dec 2002 12:07:25 
 Re: XCreateImage и XPutImage   Ilya Anfimov   28 Dec 2002 21:38:44 
 Re: XCreateImage и XPutImage   Oleg Goodyckov   08 Jan 2003 16:17:42 
 Re: XCreateImage и XPutImage   Ilya Anfimov   09 Jan 2003 17:12:22 
Архивное /ru.linux/15113add02a8.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional