Skip to content

Commit e98d721

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents ba5330f + acbd9b5 commit e98d721

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Upgrade libjxl, speed improvements and stability
1+
Improvements for f16, fixes for non standard cpu processors

app/src/main/java/com/awxkee/jxlcoder/MainActivity.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ class MainActivity : ComponentActivity() {
125125
}
126126
LaunchedEffect(key1 = Unit, block = {
127127
lifecycleScope.launch(Dispatchers.IO) {
128-
val buffer5 =
129-
assets.open("hatice.jpg").source().buffer().readByteArray()
128+
// val buffer5 =
129+
// assets.open("hatice.jpg").source().buffer().readByteArray()
130130
// val bitmap = BitmapFactory.decodeByteArray(buffer5, 0, buffer5.size)
131131
// .scale(500, 500)
132132
// val encoder = JxlAnimatedEncoder(
@@ -190,7 +190,7 @@ class MainActivity : ComponentActivity() {
190190

191191
var assets =
192192
(this@MainActivity.assets.list("") ?: return@launch).toList()
193-
assets = assets.filter { it.contains("20181110_213419__MMC1561-HDR.jxl") }
193+
// assets = assets.filter { it.contains("20181110_213419__MMC1561-HDR.jxl") }
194194
for (asset in assets) {
195195
try {
196196
val buffer4 =
@@ -204,9 +204,9 @@ class MainActivity : ComponentActivity() {
204204
buffer4,
205205
largeImageSize.width / 2,
206206
largeImageSize.height / 2,
207-
preferredColorConfig = PreferredColorConfig.RGBA_F16,
207+
preferredColorConfig = PreferredColorConfig.RGBA_8888,
208208
com.awxkee.jxlcoder.ScaleMode.FIT,
209-
toneMapper = JxlToneMapper.FILMIC,
209+
toneMapper = JxlToneMapper.REC2408,
210210
)
211211
// val srcImage = JxlCoder.decode(buffer4,
212212
// preferredColorConfig = PreferredColorConfig.RGB_565,

jxlcoder/src/main/cpp/JniDecoding.cpp

+18-4
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ jobject decodeSampledImageImpl(JNIEnv *env, std::vector<uint8_t> &imageData, jin
103103
imageData.clear();
104104

105105
if (!iccProfile.empty()) {
106-
size_t stride = (size_t) xsize * 4 * (size_t)(useBitmapFloats ? sizeof(uint16_t) : sizeof(uint8_t));
106+
size_t stride =
107+
(size_t) xsize * 4 * (size_t) (useBitmapFloats ? sizeof(uint16_t) : sizeof(uint8_t));
107108
convertUseDefinedColorSpace(rgbaPixels,
108109
stride,
109110
static_cast<size_t>(xsize),
@@ -113,11 +114,13 @@ jobject decodeSampledImageImpl(JNIEnv *env, std::vector<uint8_t> &imageData, jin
113114
useBitmapFloats);
114115
}
115116

116-
bool useSampler = (scaledWidth > 0 || scaledHeight > 0) && (scaledWidth != 0 && scaledHeight != 0);
117+
bool
118+
useSampler = (scaledWidth > 0 || scaledHeight > 0) && (scaledWidth != 0 && scaledHeight != 0);
117119

118120
uint32_t finalWidth = xsize;
119121
uint32_t finalHeight = ysize;
120-
uint32_t stride = static_cast<uint32_t >(finalWidth) * 4 * static_cast<uint32_t >(useBitmapFloats ? sizeof(uint16_t) : sizeof(uint8_t));
122+
uint32_t stride = static_cast<uint32_t >(finalWidth) * 4
123+
* static_cast<uint32_t >(useBitmapFloats ? sizeof(uint16_t) : sizeof(uint8_t));
121124

122125
if (useSampler) {
123126
auto scaleResult = RescaleImage(rgbaPixels, env, &stride, useBitmapFloats,
@@ -248,7 +251,8 @@ jobject decodeSampledImageImpl(JNIEnv *env, std::vector<uint8_t> &imageData, jin
248251
jobject rgba8888Obj = env->GetStaticObjectField(bitmapConfig, rgba8888FieldID);
249252

250253
jclass bitmapClass = env->FindClass("android/graphics/Bitmap");
251-
jmethodID createBitmapMethodID = env->GetStaticMethodID(bitmapClass, "createBitmap",
254+
jmethodID createBitmapMethodID = env->GetStaticMethodID(bitmapClass,
255+
"createBitmap",
252256
"(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;");
253257
jobject bitmapObj = env->CallStaticObjectMethod(bitmapClass, createBitmapMethodID,
254258
static_cast<jint>(finalWidth),
@@ -317,6 +321,11 @@ Java_com_awxkee_jxlcoder_JxlCoder_decodeSampledImpl(JNIEnv *env, jobject thiz,
317321
std::string errorString = "Not enough memory to decode this image";
318322
throwException(env, errorString);
319323
return nullptr;
324+
} catch (std::runtime_error &err) {
325+
std::string w1 = err.what();
326+
std::string errorString = "Error while decoding: " + w1;
327+
throwException(env, errorString);
328+
return nullptr;
320329
}
321330
}
322331

@@ -346,6 +355,11 @@ Java_com_awxkee_jxlcoder_JxlCoder_decodeByteBufferSampledImpl(JNIEnv *env, jobje
346355
std::string errorString = "Not enough memory to decode this image";
347356
throwException(env, errorString);
348357
return nullptr;
358+
} catch (std::runtime_error &err) {
359+
std::string w1 = err.what();
360+
std::string errorString = "Error while decoding: " + w1;
361+
throwException(env, errorString);
362+
return nullptr;
349363
}
350364
}
351365

0 commit comments

Comments
 (0)