Skip to content

Commit 0fb8993

Browse files
authored
Merge pull request #29 from awxkee/dev
Rebuilding for faster decoding
2 parents b101882 + e946d91 commit 0fb8993

33 files changed

+57
-233
lines changed

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

Lines changed: 1 addition & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -107,91 +107,12 @@ class MainActivity : ComponentActivity() {
107107
lifecycleScope.launch(Dispatchers.IO) {
108108
val buffer5 =
109109
assets.open("test_image_1.jpg").source().buffer().readByteArray()
110-
val bitmap = BitmapFactory.decodeByteArray(buffer5, 0, buffer5.size)
111-
.scale(1305, 1295)
112-
// val encoder = JxlAnimatedEncoder(
113-
// bitmap.width,
114-
// bitmap.height,
115-
// dataPixelFormat = JxlEncodingDataPixelFormat.BINARY_16
116-
// )
117-
// repeat(4) {
118-
// encoder.addFrame(bitmap, 24)
119-
// }
120-
// val encoded = encoder.encode()
121-
122-
// val animated = JxlCoder.decode(encoded)
123-
// lifecycleScope.launch {
124-
// imagesArray.add(animated)
125-
// }
126-
//
127-
// fun simpleRoundTrip(image: String) {
128-
// val bufferPng = assets.open(image).source().buffer().readByteArray()
129-
// val bitmap = BitmapFactory.decodeByteArray(bufferPng, 0, bufferPng.size)
130-
// .copy(Bitmap.Config.RGBA_1010102,true)
131-
// lifecycleScope.launch {
132-
// imagesArray.add(bitmap)
133-
// }
134-
// val jxlBuffer = JxlCoder.encode(bitmap,
135-
// channelsConfiguration = JxlChannelsConfiguration.RGB,
136-
// compressionOption = JxlCompressionOption.LOSSY,
137-
// effort = JxlEffort.LIGHTNING,
138-
// decodingSpeed = JxlDecodingSpeed.SLOW)
139-
//// val decodedEncoded = JxlCoder.decode(jxlBuffer,
140-
//// preferredColorConfig = PreferredColorConfig.RGBA_1010102)
141-
// val decodedEncoded = JxlAnimatedImage(jxlBuffer).getFrame(0, bitmap.width /2 , bitmap.height / 2)
142-
// lifecycleScope.launch {
143-
// imagesArray.add(decodedEncoded)
144-
// }
145-
// val fos = FileOutputStream(File(cacheDir, image))
146-
// fos.sink().buffer().use {
147-
// it.writeAll(ByteArrayInputStream(jxlBuffer).source().buffer())
148-
// it.flush()
149-
// }
150-
// }
151-
//
152-
// simpleRoundTrip("screenshot_discord_5.png")
153-
// simpleRoundTrip("screen_discord.png")
154-
// simpleRoundTrip("screen_discord_2.png")
155-
//
156-
// val buffer5 = assets.open("elephant.png").source().buffer().readByteArray()
157-
// val jxlBufferPNG = JxlCoder.Convenience.apng2JXL(buffer5, quality = 55)
158-
// val buffer = assets.open("abstract_alpha.png").source().buffer().readByteArray()
159-
// val bitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.size)
160-
// .copy(Bitmap.Config.ARGB_8888, true)
161-
// lifecycleScope.launch {
162-
// drawables.add(BitmapDrawable(resources, bitmap))
163-
// }
164-
// val space = bitmap.copy(Bitmap.Config.ARGB_8888, true)
165-
// val encoded =
166-
// JxlCoder.encode(
167-
// space,
168-
// channelsConfiguration = JxlChannelsConfiguration.RGB,
169-
// effort = JxlEffort.LIGHTNING,
170-
// compressionOption = JxlCompressionOption.LOSSLESS,
171-
// quality = 100,
172-
// )
173-
// val decoded = JxlCoder.decodeSampled(
174-
// encoded,
175-
// preferredColorConfig = PreferredColorConfig.HARDWARE, width = 1305,
176-
// height = 1295
177-
// )
178-
// lifecycleScope.launch {
179-
// imagesArray.add(decoded)
180-
// }
181-
182-
val display: Display = this@MainActivity.windowManager.defaultDisplay
183-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
184-
val hdrCapabilities = display.hdrCapabilities
185-
val maxNits = hdrCapabilities.desiredMaxLuminance
186-
val whitePoint = hdrCapabilities.desiredMaxAverageLuminance
187-
Log.d("Max HDR value", "$maxNits whitePoint $whitePoint")
188-
}
189110

190111
var assets =
191112
(this@MainActivity.assets.list("") ?: return@launch).toList()
192113
// assets = assets.filter { it.contains("20181110_213419__MMC1561-HDR.jxl") }
193114
// assets = assets.take(15)
194-
// assets = assets.filter { it.contains("test_f32_image.jxl") }
115+
// assets = assets.filter { it.contains("test_img_q80.jxl") }
195116
for (asset in assets) {
196117
try {
197118
val buffer4 =
@@ -201,13 +122,6 @@ class MainActivity : ComponentActivity() {
201122
val largeImageSize = JxlCoder.getSize(buffer4)
202123
if (largeImageSize != null) {
203124
val decodingTime = measureTimeMillis {
204-
// val srcImage = JxlCoder.decode(
205-
// buffer4,
206-
// preferredColorConfig = PreferredColorConfig.HARDWARE,
207-
// com.awxkee.jxlcoder.ScaleMode.FIT,
208-
// toneMapper = JxlToneMapper.REC2408,
209-
// )
210-
211125
// Resizable version
212126
val srcImage = JxlCoder.decodeSampled(
213127
buffer4,

build_jxl.sh

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ else
1010
echo "Destination directory '$destination_directory' already exists. Cloning skipped."
1111
fi
1212

13-
rm -rf ./libjxl/deps.sh
14-
cp deps.sh ./libjxl/deps.sh
15-
1613
ABI_LIST="armeabi-v7a arm64-v8a x86 x86_64"
1714

1815
cd libjxl
@@ -36,6 +33,8 @@ for abi in ${ABI_LIST}; do
3633
-DANDROID_NDK=${NDK} \
3734
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
3835
-DANDROID_PLATFORM=android-21 \
36+
-DCMAKE_C_FLAGS="-DJXL_HIGH_PRECISION=0" \
37+
-DCMAKE_CXX_FLAGS="-DJXL_HIGH_PRECISION=0" \
3938
-DCMAKE_BUILD_TYPE=Release \
4039
-DBUILD_SHARED_LIBS=ON \
4140
-DCMAKE_SYSTEM_NAME=Generic \
@@ -79,19 +78,21 @@ for abi in ${ABI_LIST}; do
7978
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=${abi} -DCMAKE_ANDROID_ARCH_ABI=${abi} \
8079
-DANDROID_NDK=${NDK} \
8180
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
81+
-DCMAKE_C_FLAGS="-DJXL_HIGH_PRECISION=0" \
82+
-DCMAKE_CXX_FLAGS="-DJXL_HIGH_PRECISION=0" \
8283
-DANDROID_PLATFORM=android-21 \
8384
-DCMAKE_BUILD_TYPE=Release \
8485
-DBUILD_SHARED_LIBS=ON \
8586
-DCMAKE_SYSTEM_NAME=Generic \
8687
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
8788
-DCMAKE_SYSTEM_NAME=Android \
8889
-DCMAKE_THREAD_PREFER_PTHREAD=TRUE \
90+
-DJPEGXL_ENABLE_SKCMS=true \
8991
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" \
9092
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
9193
-DTHREADS_PREFER_PTHREAD_FLAG=TRUE \
9294
-DJPEGXL_ENABLE_TOOLS=OFF \
9395
-DBUILD_TESTING=OFF \
94-
-DJPEGXL_ENABLE_SKCMS=true \
9596
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF \
9697
-DJPEGXL_ENABLE_JPEGLI=OFF \
9798
-DJPEGXL_ENABLE_SJPEG=OFF \
@@ -115,9 +116,12 @@ for abi in ${ABI_LIST}; do
115116
-Wno-dev -Wno-policy \
116117
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=${abi} -DCMAKE_ANDROID_ARCH_ABI=${abi} \
117118
-DANDROID_NDK=${NDK} \
119+
-DCMAKE_C_FLAGS="-DJXL_HIGH_PRECISION=0" \
120+
-DCMAKE_CXX_FLAGS="-DJXL_HIGH_PRECISION=0" \
118121
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
119122
-DANDROID_PLATFORM=android-21 \
120123
-DCMAKE_BUILD_TYPE=Release \
124+
-DJPEGXL_ENABLE_SKCMS=true \
121125
-DBUILD_SHARED_LIBS=ON \
122126
-DCMAKE_SYSTEM_NAME=Generic \
123127
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
@@ -128,7 +132,6 @@ for abi in ${ABI_LIST}; do
128132
-DTHREADS_PREFER_PTHREAD_FLAG=TRUE \
129133
-DJPEGXL_ENABLE_TOOLS=OFF \
130134
-DBUILD_TESTING=OFF \
131-
-DJPEGXL_ENABLE_SKCMS=true \
132135
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF \
133136
-DJPEGXL_ENABLE_JPEGLI=OFF \
134137
-DJPEGXL_ENABLE_SJPEG=OFF \
@@ -154,6 +157,11 @@ done
154157

155158
for abi in ${ABI_LIST}; do
156159
mkdir -p "../jxlcoder/src/main/cpp/lib/${abi}"
157-
cp -r "build-${abi}/*" "../jxlcoder/src/main/cpp/lib/${abi}/"
160+
cp -r "build-${abi}/lib/libjxl_cms.so" "../jxlcoder/src/main/cpp/lib/${abi}/libjxl_cms.so"
161+
cp -r "build-${abi}/lib/libjxl.so" "../jxlcoder/src/main/cpp/lib/${abi}/libjxl.so"
162+
cp -r "build-${abi}/lib/libjxl_threads.so" "../jxlcoder/src/main/cpp/lib/${abi}/libjxl_threads.so"
163+
cp -r "build-${abi}/third_party/brotli/libbrotlicommon.so" "../jxlcoder/src/main/cpp/lib/${abi}/libbrotlicommon.so"
164+
cp -r "build-${abi}/third_party/brotli/libbrotlidec.so" "../jxlcoder/src/main/cpp/lib/${abi}/libbrotlidec.so"
165+
cp -r "build-${abi}/third_party/brotli/libbrotlienc.so" "../jxlcoder/src/main/cpp/lib/${abi}/libbrotlienc.so"
158166
echo "build-${abi}/* was successfully copied to ../jxlcoder/src/main/cpp/lib/${abi}/"
159167
done

deps.sh

Lines changed: 0 additions & 93 deletions
This file was deleted.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
5.04 KB
Binary file not shown.
2.16 KB
Binary file not shown.
0 Bytes
Binary file not shown.
368 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)