-
DVM, помнится, выражал готовность поделиться рабочими заголовками под x64... Стандартные не работают, наверное, где-то должен быть NativeInt вместо Integer. Вот, кстати, человек откопал новую фишку, которая позволяет ещё немного ускорить декодирование: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=82040(сам пока не пробовал)
-
Да, я обещал и забыл совсем, сегодня вечером выложу куда-нибудь.
> Вот, кстати, человек откопал новую фишку, которая позволяет > ещё немного ускорить декодирование:
Это про порядок байт что ли BGR - RGB?
-
> Это про порядок байт что ли BGR - RGB?
Ну да. Попробовал - действительно помогает, до этого у меня lj-turbo немного отставала от IJL, сейчас одинаково.
-
> Sapersky (28.10.13 16:00) [2]
> до этого у меня lj-turbo немного отставала от IJL, сейчас > одинаково.
Мне кажется если использовать FastLib в качестве приемника растра от декодера то там и порядок как раз BGR, т.е никаких преобразований и не надо.
-
Нет, у lj-turbo по умолчанию RGB (точнее, в тех заголовках libjpeg, которые использовали ранее, было только RGB), а у TFastDIB/TBitmap BGR.
-
Собственно вот этот заголовочный файл 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), поэтому мне и показалось, что преобразований не требуется.
-
А заголовочный файл по этой ссылке http://www.delphikingdom.com/asp/answer.asp?IDAnswer=82040 под 64 бит не работает из-за того, что автор перемудрил с динамической загрузкой Dll под линукс и FreePascal и неправильно указал директивы условной компиляции (они перепутаны, WIN32 не определен не только под Linux, но и при CPU64 тоже). Ну там еще есть недочеты, с PChar => PAnsiChar.
-
Спасибо, но проблема была не в заголовке (с Линуксом я разобрался), а в строчке: jpeg.src := jpeg.mem^.alloc_small(@jpeg, JPOOL_PERMANENT, SizeOf(TMySourceMgr)); скопипастил её из какого-то примера. Под 32 бита всё работает, под 64 вроде бы выделяет память, но потом падает на jpeg_read_header. Заменил на выделение памяти стандартными дельфийскими средствами - заработало.
|