Skip to content

Commit f20cb34

Browse files
authored
Merge pull request #24 from awxkee/dev
Rebuild jxl to latest, some size improvements
2 parents 7453892 + 4f793b3 commit f20cb34

File tree

26 files changed

+172
-84
lines changed

26 files changed

+172
-84
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ concurrency:
77
on:
88
push:
99
branches:
10-
- '*'
11-
- '!ci_test_*'
10+
- 'master'
1211
tags-ignore:
1312
- '*'
1413
pull_request:
@@ -33,7 +32,7 @@ jobs:
3332
run: echo "GITHUB_REF_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV
3433
- name: Compile to maven local
3534
env:
36-
VERSION_NAME: ${{ env.GITHUB_REF_NAME }}
35+
VERSION_NAME: 0.0.1
3736
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.ORG_GRADLE_PROJECT_MAVENCENTRALUSERNAME }}
3837
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.ORG_GRADLE_PROJECT_MAVENCENTRALPASSWORD }}
3938
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEY }}

.github/workflows/create_release.yml

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,4 @@ jobs:
3232
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEYID }}
3333
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEYPASSWORD }}
3434
PUBLISH_STATE: Release
35-
run: bash ./gradlew jxlCoder:publishAllPublicationsToMavenCentralRepository
36-
37-
release:
38-
runs-on: ubuntu-latest
39-
permissions:
40-
contents: write
41-
needs:
42-
- build
43-
steps:
44-
- uses: actions/checkout@v3
45-
- uses: ncipollo/release-action@v1
46-
with:
47-
bodyFile: 'CHANGELOG.md'
35+
run: bash ./gradlew jxlCoder:publishAllPublicationsToMavenCentralRepository

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ class MainActivity : ComponentActivity() {
191191
(this@MainActivity.assets.list("") ?: return@launch).toList()
192192
// assets = assets.filter { it.contains("20181110_213419__MMC1561-HDR.jxl") }
193193
// assets = assets.take(15)
194-
// assets = assets.filter { it.contains("Lake_HDR.jxl") }
194+
// assets = assets.filter { it.contains("test_f32_image.jxl") }
195195
for (asset in assets) {
196196
try {
197197
val buffer4 =
@@ -213,7 +213,7 @@ class MainActivity : ComponentActivity() {
213213
buffer4,
214214
width = largeImageSize.width / 3,
215215
height = largeImageSize.height / 3,
216-
preferredColorConfig = PreferredColorConfig.HARDWARE,
216+
preferredColorConfig = PreferredColorConfig.RGBA_8888,
217217
com.awxkee.jxlcoder.ScaleMode.FIT,
218218
toneMapper = JxlToneMapper.REC2408,
219219
jxlResizeFilter = JxlResizeFilter.LANCZOS

build_jxl.sh

Lines changed: 123 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ fi
1313
rm -rf ./libjxl/deps.sh
1414
cp deps.sh ./libjxl/deps.sh
1515

16-
if [ -z "$INCLUDE_X86" ]; then
17-
ABI_LIST="armeabi-v7a arm64-v8a x86_64"
18-
echo "X86 won't be included into a build"
19-
else
20-
ABI_LIST="armeabi-v7a arm64-v8a x86 x86_64"
21-
fi
16+
ABI_LIST="armeabi-v7a arm64-v8a x86 x86_64"
2217

2318
cd libjxl
2419

@@ -31,28 +26,129 @@ for abi in ${ABI_LIST}; do
3126
mkdir "build-${abi}"
3227
cd "build-${abi}"
3328

34-
cmake .. \
35-
-G "Ninja" \
36-
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=${abi} -DCMAKE_ANDROID_ARCH_ABI=${abi} \
37-
-DANDROID_NDK=${NDK} \
38-
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
39-
-DANDROID_PLATFORM=android-21 \
40-
-DCMAKE_BUILD_TYPE=Release \
41-
-DBUILD_SHARED_LIBS=ON \
42-
-DCMAKE_SYSTEM_NAME=Generic \
43-
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
44-
-DCMAKE_SYSTEM_NAME=Android \
45-
-DCMAKE_THREAD_PREFER_PTHREAD=TRUE \
46-
-DTHREADS_PREFER_PTHREAD_FLAG=TRUE \
47-
-DJPEGXL_ENABLE_TOOLS=OFF \
48-
-DJPEGXL_BUNDLE_LIBPNG=TRUE \
49-
-DBUILD_TESTING=OFF \
50-
-DJPEGXL_ENABLE_SJPEG=OFF \
51-
-DJPEGXL_ENABLE_MANPAGES=FALSE \
52-
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=FALSE \
53-
-DJPEGXL_ENABLE_EXAMPLES=OFF \
54-
-DANDROID=TRUE
29+
echo $ARCH_OPTIONS
30+
31+
if [ "$abi" == "arm64-v8a" ]; then
32+
cmake .. \
33+
-G "Ninja" \
34+
-Wno-dev -Wno-policy \
35+
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=${abi} -DCMAKE_ANDROID_ARCH_ABI=${abi} \
36+
-DANDROID_NDK=${NDK} \
37+
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
38+
-DANDROID_PLATFORM=android-21 \
39+
-DCMAKE_BUILD_TYPE=Release \
40+
-DBUILD_SHARED_LIBS=ON \
41+
-DCMAKE_SYSTEM_NAME=Generic \
42+
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
43+
-DCMAKE_SYSTEM_NAME=Android \
44+
-DCMAKE_THREAD_PREFER_PTHREAD=TRUE \
45+
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" \
46+
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
47+
-DTHREADS_PREFER_PTHREAD_FLAG=TRUE \
48+
-DJPEGXL_ENABLE_TOOLS=OFF \
49+
-DBUILD_TESTING=OFF \
50+
-DJPEGXL_ENABLE_SKCMS=true \
51+
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF \
52+
-DJPEGXL_ENABLE_JPEGLI=OFF \
53+
-DJPEGXL_ENABLE_SJPEG=OFF \
54+
-DJPEGXL_ENABLE_MANPAGES=FALSE \
55+
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=FALSE \
56+
-DENABLE_SKCMS_DEFAULT=FALSE \
57+
-DJPEGXL_ENABLE_EXAMPLES=OFF \
58+
-DJPEGXL_ENABLE_HWY_SVE=false \
59+
-DJPEGXL_ENABLE_HWY_SVE2=false \
60+
-DJPEGXL_ENABLE_HWY_SVE_256=false \
61+
-DJPEGXL_ENABLE_HWY_SVE2_128=false \
62+
-DJPEGXL_ENABLE_HWY_NEON_BF16=false \
63+
-DJPEGXL_ENABLE_HWY_NEON_WITHOUT_AES=true \
64+
-DJPEGXL_ENABLE_HWY_NEON=false \
65+
-DJPEGXL_ENABLE_HWY_SCALAR=false \
66+
-DJPEGXL_ENABLE_HWY_EMU128=false \
67+
-DJPEGXL_ENABLE_HWY_AVX3=false \
68+
-DJPEGXL_ENABLE_HWY_AVX3_DL=false \
69+
-DJPEGXL_ENABLE_HWY_SSE2=false \
70+
-DJPEGXL_ENABLE_HWY_SSE4=false \
71+
-DJPEGXL_ENABLE_HWY_SSSE3=false \
72+
-DJPEGXL_ENABLE_HWY_AVX2=false \
73+
-DJPEGXL_BUNDLE_LIBPNG=false \
74+
-DANDROID=TRUE
75+
elif [[ "$abi" == "x86_64" || "$abi" == "x86" ]]; then
76+
cmake .. \
77+
-G "Ninja" \
78+
-Wno-dev -Wno-policy \
79+
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=${abi} -DCMAKE_ANDROID_ARCH_ABI=${abi} \
80+
-DANDROID_NDK=${NDK} \
81+
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
82+
-DANDROID_PLATFORM=android-21 \
83+
-DCMAKE_BUILD_TYPE=Release \
84+
-DBUILD_SHARED_LIBS=ON \
85+
-DCMAKE_SYSTEM_NAME=Generic \
86+
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
87+
-DCMAKE_SYSTEM_NAME=Android \
88+
-DCMAKE_THREAD_PREFER_PTHREAD=TRUE \
89+
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" \
90+
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
91+
-DTHREADS_PREFER_PTHREAD_FLAG=TRUE \
92+
-DJPEGXL_ENABLE_TOOLS=OFF \
93+
-DBUILD_TESTING=OFF \
94+
-DJPEGXL_ENABLE_SKCMS=true \
95+
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF \
96+
-DJPEGXL_ENABLE_JPEGLI=OFF \
97+
-DJPEGXL_ENABLE_SJPEG=OFF \
98+
-DJPEGXL_ENABLE_MANPAGES=FALSE \
99+
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=FALSE \
100+
-DENABLE_SKCMS_DEFAULT=FALSE \
101+
-DJPEGXL_ENABLE_EXAMPLES=OFF \
102+
-DJPEGXL_ENABLE_HWY_SCALAR=false \
103+
-DJPEGXL_ENABLE_HWY_EMU128=false \
104+
-DJPEGXL_ENABLE_HWY_AVX3=false \
105+
-DJPEGXL_ENABLE_HWY_AVX3_DL=false \
106+
-DJPEGXL_ENABLE_HWY_SSE2=true \
107+
-DJPEGXL_ENABLE_HWY_SSE4=false \
108+
-DJPEGXL_ENABLE_HWY_SSSE3=false \
109+
-DJPEGXL_ENABLE_HWY_AVX2=false \
110+
-DJPEGXL_BUNDLE_LIBPNG=false \
111+
-DANDROID=TRUE
112+
else
113+
cmake .. \
114+
-G "Ninja" \
115+
-Wno-dev -Wno-policy \
116+
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=${abi} -DCMAKE_ANDROID_ARCH_ABI=${abi} \
117+
-DANDROID_NDK=${NDK} \
118+
-DSJPEG_ANDROID_NDK_PATH=${NDK} \
119+
-DANDROID_PLATFORM=android-21 \
120+
-DCMAKE_BUILD_TYPE=Release \
121+
-DBUILD_SHARED_LIBS=ON \
122+
-DCMAKE_SYSTEM_NAME=Generic \
123+
-DCMAKE_ANDROID_STL_TYPE=c++_shared \
124+
-DCMAKE_SYSTEM_NAME=Android \
125+
-DCMAKE_THREAD_PREFER_PTHREAD=TRUE \
126+
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" \
127+
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
128+
-DTHREADS_PREFER_PTHREAD_FLAG=TRUE \
129+
-DJPEGXL_ENABLE_TOOLS=OFF \
130+
-DBUILD_TESTING=OFF \
131+
-DJPEGXL_ENABLE_SKCMS=true \
132+
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF \
133+
-DJPEGXL_ENABLE_JPEGLI=OFF \
134+
-DJPEGXL_ENABLE_SJPEG=OFF \
135+
-DJPEGXL_ENABLE_MANPAGES=FALSE \
136+
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=FALSE \
137+
-DENABLE_SKCMS_DEFAULT=FALSE \
138+
-DJPEGXL_ENABLE_EXAMPLES=OFF \
139+
-DJPEGXL_ENABLE_HWY_SCALAR=false \
140+
-DJPEGXL_ENABLE_HWY_EMU128=true \
141+
-DJPEGXL_BUNDLE_LIBPNG=false \
142+
-DANDROID=TRUE
143+
fi
144+
55145
ninja
146+
$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip lib/libjxl_threads.so
147+
$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip lib/libjxl_cms.so
148+
$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip lib/libjxl.so
149+
$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip third_party/brotli/libbrotlicommon.so
150+
$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip third_party/brotli/libbrotlidec.so
151+
$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip third_party/brotli/libbrotlienc.so
56152
cd ..
57153
done
58154

jxlcoder/src/main/cpp/interop/JxlDecoding.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ bool DecodeJpegXlOneShot(const uint8_t *jxl, size_t size,
9292
if (info.bits_per_sample > 8 && allowedFloats) {
9393
*useFloats = true;
9494
useBitmapHalfFloats = true;
95+
*bitDepth = 16;
9596
format = {4, JXL_TYPE_UINT16, JXL_NATIVE_ENDIAN, 0};
9697
} else {
98+
*bitDepth = 8;
9799
*useFloats = false;
98100
useBitmapHalfFloats = false;
99101
}

jxlcoder/src/main/cpp/jxl/decode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ JXL_EXPORT JxlSignature JxlSignatureCheck(const uint8_t* buf, size_t len);
8181
* Allocated and initialized with @ref JxlDecoderCreate().
8282
* Cleaned up and deallocated with @ref JxlDecoderDestroy().
8383
*/
84-
typedef struct JxlDecoderStruct JxlDecoder;
84+
typedef struct JxlDecoder JxlDecoder;
8585

8686
/**
8787
* Creates an instance of @ref JxlDecoder and initializes it.

jxlcoder/src/main/cpp/jxl/encode.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ JXL_EXPORT uint32_t JxlEncoderVersion(void);
4444
* Allocated and initialized with @ref JxlEncoderCreate().
4545
* Cleaned up and deallocated with @ref JxlEncoderDestroy().
4646
*/
47-
typedef struct JxlEncoderStruct JxlEncoder;
47+
typedef struct JxlEncoder JxlEncoder;
4848

4949
/**
5050
* Settings and metadata for a single image frame. This includes encoder options
@@ -54,7 +54,7 @@ typedef struct JxlEncoderStruct JxlEncoder;
5454
* Cleaned up and deallocated when the encoder is destroyed with
5555
* @ref JxlEncoderDestroy().
5656
*/
57-
typedef struct JxlEncoderFrameSettingsStruct JxlEncoderFrameSettings;
57+
typedef struct JxlEncoderFrameSettings JxlEncoderFrameSettings;
5858

5959
/**
6060
* Return value for multiple encoder functions.
@@ -352,7 +352,7 @@ typedef enum {
352352
*
353353
* When using streaming input and output the encoder minimizes memory usage at
354354
* the cost of compression density. Also note that images produced with
355-
* streaming mode might not be progressively decodeable.
355+
* streaming mode might not be progressively decodable.
356356
*/
357357
JXL_ENC_FRAME_SETTING_BUFFERING = 34,
358358

@@ -1004,8 +1004,9 @@ JXL_EXPORT JxlEncoderStatus JxlEncoderSetExtraChannelBuffer(
10041004
* case metadata cannot be added.
10051005
*
10061006
* Each box generally has the following byte structure in the file:
1007-
* - 4 bytes: box size including box header (Big endian. If set to 0, an
1008-
* 8-byte 64-bit size follows instead).
1007+
* - 4 bytes: box size including box header (Big endian. If set to 1, an
1008+
* 8-byte 64-bit size follows instead. If set to 0, the box extends to the
1009+
* end of the file.)
10091010
* - 4 bytes: type, e.g. "JXL " for the signature box, "jxlc" for a codestream
10101011
* box.
10111012
* - N bytes: box contents.
@@ -1506,6 +1507,8 @@ JXL_EXPORT float JxlEncoderDistanceFromQuality(float quality);
15061507
* only @ref JxlEncoderFrameSettings created with this function for the same
15071508
* encoder instance can be used.
15081509
*
1510+
* The returned value could be NULL in case of out of memory situatiton.
1511+
*
15091512
* @param enc encoder object.
15101513
* @param source source options to copy initial values from, or NULL to get
15111514
* defaults initialized to defaults.

jxlcoder/src/main/cpp/jxl/stats.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ extern "C" {
2626
* Allocated and initialized with @ref JxlEncoderStatsCreate().
2727
* Cleaned up and deallocated with @ref JxlEncoderStatsDestroy().
2828
*/
29-
typedef struct JxlEncoderStatsStruct JxlEncoderStats;
29+
typedef struct JxlEncoderStats JxlEncoderStats;
3030

3131
/**
3232
* Creates an instance of JxlEncoderStats and initializes it.
-580 KB
Binary file not shown.
-112 KB
Binary file not shown.

0 commit comments

Comments
 (0)