Конференция "Media" » libjpeg-turbo x64
 
  • Sapersky (27.10.13 16:30) [0]
    DVM, помнится, выражал готовность поделиться рабочими заголовками под x64...
    Стандартные не работают, наверное, где-то должен быть NativeInt вместо Integer.

    Вот, кстати, человек откопал новую фишку, которая позволяет ещё немного ускорить декодирование:
    http://www.delphikingdom.com/asp/answer.asp?IDAnswer=82040
    (сам пока не пробовал)
  • DVM © (28.10.13 11:14) [1]
    Да, я обещал и забыл совсем, сегодня вечером выложу куда-нибудь.


    > Вот, кстати, человек откопал новую фишку, которая позволяет
    > ещё немного ускорить декодирование:

    Это про порядок байт что ли BGR - RGB?
  • Sapersky (28.10.13 16:00) [2]

    > Это про порядок байт что ли BGR - RGB?

    Ну да. Попробовал - действительно помогает, до этого у меня lj-turbo немного отставала от IJL, сейчас одинаково.
  • DVM © (28.10.13 16:22) [3]

    > Sapersky   (28.10.13 16:00) [2]


    > до этого у меня lj-turbo немного отставала от IJL, сейчас
    > одинаково.

    Мне кажется если использовать FastLib в качестве приемника растра от декодера то там и порядок как раз BGR, т.е никаких преобразований и не надо.
  • Sapersky (28.10.13 17:19) [4]
    Нет, у lj-turbo по умолчанию RGB (точнее, в тех заголовках libjpeg, которые использовали ранее, было только RGB), а у TFastDIB/TBitmap BGR.
  • DVM © (28.10.13 22:30) [5]
    Собственно вот этот заголовочный файл 100% работает как 64 бит dll так и 32 бит (обе в комплекте). http://yadi.sk/d/idaVRpdaBjwcQ
    Я не помню что я там исправлял и исправлял ли вообще.
    Кстати, в этом файле уже есть:

    J_COLOR_SPACE = (JCS_UNKNOWN, { error/unspecified }
       JCS_GRAYSCALE, { monochrome }
       JCS_RGB, { red/green/blue }
       JCS_YCbCr, { Y/Cb/Cr (also known as YUV) }
       JCS_CMYK, { C/M/Y/K }
       JCS_YCCK { Y/Cb/Cr/K }
       );

    что я собственно и использовал (JCS_RGB), поэтому мне и показалось, что преобразований не требуется.
  • DVM © (28.10.13 22:55) [6]
    А заголовочный файл по этой ссылке http://www.delphikingdom.com/asp/answer.asp?IDAnswer=82040 под 64 бит не работает из-за того, что автор перемудрил с динамической загрузкой Dll под линукс и FreePascal и неправильно указал директивы условной компиляции (они перепутаны, WIN32 не определен не только под Linux, но и при CPU64 тоже). Ну там еще есть недочеты, с PChar => PAnsiChar.
  • Sapersky (29.10.13 00:16) [7]
    Спасибо, но проблема была не в заголовке (с Линуксом я разобрался), а в строчке:
       jpeg.src := jpeg.mem^.alloc_small(@jpeg, JPOOL_PERMANENT, SizeOf(TMySourceMgr));
    скопипастил её из какого-то примера. Под 32 бита всё работает, под 64 вроде бы выделяет память, но потом падает на jpeg_read_header. Заменил на выделение памяти стандартными дельфийскими средствами - заработало.
Есть новые Нет новых   [118666   +35][b:0][p:0]