i, наконец, удалось создать библиотеку libjpeg-turbo static благодаря этому libjpeg-turbo для android теперь у меня есть libjpeg.a и libsimd.a, сгенерированный ndk-build
но я не смог найти информацию о том, что делать дальше? Я декодирую jpeg из буфера (из сокета) в растровое изображение, используя сборку в BitmapFactory, которая отлично работает
byte[] jpgBits = new byte[jpgBitsLen];
dis.readFully(jpgBits);
Bitmap bmp = BitmapFactory.decodeByteArray(jpgBits, 0, jpgBitsLen);
как заменить BitmapFactory.decodeByteArray на libjpeg-turbo?
i закодировать поток на моем ПК, используя этот
tjhandle rmfdJpegCompressor = tjInitCompress();
tjCompress2(rmfdJpegCompressor, (unsigned char *)s_rmfdPixels, MFD_WH, 0, MFD_WH, TJPF_BGRX,
&rmfdBits, &rmfdBitsLen, TJSAMP_420, RMFD_JPEG_QUALITY,
0);
tjDestroy(rmfdJpegCompressor);
которые работают нормально, поэтому я думаю, что должен быть андроид-эквивалент?
Я прочитал это https://wiki.linaro.org/BenjaminGaignard/libjpeg-turboAndSkia означает ли это, что единственный способ использовать его - перестроить источники Android, чтобы он использовал libjpeg-turbo? я читаю где-то есть api совместимости и собственный api для libjpeg-turbo, и я рад использовать все, что api проще всего, так как я не хочу перестраивать android
Я пробовал следующее: под моим проектом root я создал папки jni/include и ставил turbojpeg.h там под моим корнем проекта я создал папки jni/prebuilt и поместил libjpeg.a туда
в моем java-коде, я ставлю
private native int tjInitDecompress();
в MainActivity и в onCreate я добавляю
int i = tjInitDecompress();
Log.d("MainActivity", "i="+i);
он строит и запускает, но сбой при tjInitDecompress
в журнале говорится: Не найдена реализация для встроенного Lcom/example.jpegtest/MainActivity;.tjInitDecompress() I
спасибо