Skip to content

Commit 7d8dc3a

Browse files
committed
A lot of improvements, improve speed tests
1 parent 61e87d5 commit 7d8dc3a

File tree

8 files changed

+17
-24
lines changed

8 files changed

+17
-24
lines changed

app/src/main/java/com/radzivon/bartoshyk/avif/MainActivity.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import android.util.Size
3636
import androidx.appcompat.app.AppCompatActivity
3737
import androidx.core.graphics.scale
3838
import androidx.lifecycle.lifecycleScope
39+
import com.radzivon.bartoshyk.avif.coder.AvifChromaSubsampling
3940
import com.radzivon.bartoshyk.avif.coder.HeifCoder
4041
import com.radzivon.bartoshyk.avif.coder.PreferredColorConfig
4142
import com.radzivon.bartoshyk.avif.coder.ScaleMode
@@ -118,10 +119,10 @@ class MainActivity : AppCompatActivity() {
118119
var allFiles = mutableListOf<String>()
119120
allFiles.addAll(allFiles2)
120121
allFiles.addAll(allFiles1)
121-
allFiles = allFiles.take(5).toMutableList()
122+
// allFiles = allFiles.take(5).toMutableList()
122123
// allFiles = allFiles.filter { it.contains("wide_gamut.avif") || it.contains("IMG_0199_rr.avif") || it.contains("bt_2020_pq.avif") }.toMutableList()
123124
// allFiles = allFiles.filter { it.contains("bbb_alpha_inverted.avif") }.toMutableList()
124-
// allFiles = allFiles.filter { it.contains("test_alpha.avif") }.toMutableList()
125+
allFiles = allFiles.filter { it.contains("bt_2020_pq.avif") }.toMutableList()
125126
for (file in allFiles) {
126127
try {
127128
Log.d("AVIF", "start processing $file")
@@ -146,15 +147,9 @@ class MainActivity : AppCompatActivity() {
146147

147148
Log.d("AVIFFFF", "Decode time ${System.currentTimeMillis() - start}")
148149

149-
// val encode = coder.encodeAvif(bitmap0, avifChromaSubsampling = AvifChromaSubsampling.YUV420)
150+
val encode = coder.encodeAvif(bitmap0, avifChromaSubsampling = AvifChromaSubsampling.YUV420)
150151
// val roundTripped = coder.decode(encode)
151152
//
152-
// val cachedFile = File(cacheDir, "yuv400.avif")
153-
// FileOutputStream(cachedFile).use {
154-
// val bf = it.sink().buffer()
155-
// bf.write(encode)
156-
// bf.flush()
157-
// }
158153
//
159154
// val round = coder.decode(
160155
// byteArray = encode,

avif-coder/src/main/cpp/ReformatBitmap.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ ReformatColorConfig(JNIEnv *env, aligned_uint8_vector &imageData, string &imageC
7171
if (*useFloats) {
7272
uint32_t
7373
lineWidth = imageWidth * 4 * (uint32_t)
74-
sizeof(uint8_t);
74+
sizeof(uint8_t);
7575
uint32_t alignment = 64;
7676
uint32_t padding = (alignment - (lineWidth % alignment)) % alignment;
7777
uint32_t dstStride = lineWidth + padding;
@@ -96,7 +96,7 @@ ReformatColorConfig(JNIEnv *env, aligned_uint8_vector &imageData, string &imageC
9696
} else {
9797
uint32_t
9898
lineWidth = imageWidth * 4 * (uint32_t)
99-
sizeof(uint16_t);
99+
sizeof(uint16_t);
100100
uint32_t dstStride = lineWidth;
101101
aligned_uint8_vector rgbaF16Data(dstStride * imageHeight);
102102
weave_cvt_rgba8_to_rgba_f16(
@@ -113,7 +113,7 @@ ReformatColorConfig(JNIEnv *env, aligned_uint8_vector &imageData, string &imageC
113113
if (*useFloats) {
114114
uint32_t
115115
lineWidth = imageWidth * (uint32_t)
116-
sizeof(uint16_t);
116+
sizeof(uint16_t);
117117
uint32_t alignment = 64;
118118
uint32_t padding = (alignment - (lineWidth % alignment)) % alignment;
119119
uint32_t dstStride = lineWidth + padding;
@@ -129,7 +129,7 @@ ReformatColorConfig(JNIEnv *env, aligned_uint8_vector &imageData, string &imageC
129129
break;
130130
} else {
131131
uint32_t lineWidth = imageWidth * (uint32_t)
132-
sizeof(uint16_t);
132+
sizeof(uint16_t);
133133
uint32_t alignment = 64;
134134
uint32_t padding = (alignment - (lineWidth % alignment)) % alignment;
135135
uint32_t dstStride = lineWidth + padding;
@@ -148,7 +148,7 @@ ReformatColorConfig(JNIEnv *env, aligned_uint8_vector &imageData, string &imageC
148148
if (*useFloats) {
149149
uint32_t
150150
lineWidth = imageWidth * (uint32_t)
151-
sizeof(uint32_t);
151+
sizeof(uint32_t);
152152
uint32_t dstStride = lineWidth;
153153
aligned_uint8_vector rgba1010102Data(dstStride * imageHeight);
154154
weave_cvt_rgba16_to_ar30(reinterpret_cast<const uint16_t *>(imageData.data()),
@@ -164,11 +164,8 @@ ReformatColorConfig(JNIEnv *env, aligned_uint8_vector &imageData, string &imageC
164164
break;
165165
} else {
166166
uint32_t
167-
lineWidth = imageWidth * (uint32_t)
168-
sizeof(uint32_t);
169-
uint32_t alignment = 64;
170-
uint32_t padding = (alignment - (lineWidth % alignment)) % alignment;
171-
uint32_t dstStride = lineWidth + padding;
167+
dstStride = imageWidth * (uint32_t)
168+
sizeof(uint32_t) * 4;
172169
aligned_uint8_vector rgba1010102Data(dstStride * imageHeight);
173170
weave_cvt_rgba8_to_ar30(reinterpret_cast<const uint8_t *>(imageData.data()),
174171
*stride,

avif-coder/src/main/cpp/colorspace/Rec2408ToneMapper.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ void Rec2408ToneMapper::transferTone(float *inPlace, uint32_t width) {
8888
float r = targetPlace[0];
8989
float g = targetPlace[1];
9090
float b = targetPlace[2];
91-
float inLight = 0.2627f * static_cast<float>(r) + 0.6780f* static_cast<float>(g) + 0.0593f * static_cast<float>(b);
91+
float inLight = 0.2627f * static_cast<float>(r) + 0.6780f * static_cast<float>(g)
92+
+ 0.0593f * static_cast<float>(b);
9293
if (inLight == 0) {
9394
continue;
9495
}
Binary file not shown.
Binary file not shown.
-2.25 KB
Binary file not shown.
-704 Bytes
Binary file not shown.

avifpixart/src/cvt.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ fn work_on_transmuted_ptr_f16<F>(
6060
let src_slice =
6161
std::slice::from_raw_parts(rgba as *mut u8, rgba_stride as usize * height);
6262
for (dst, src) in dst_slice
63-
.chunks_exact_mut(rgba_stride as usize)
64-
.zip(src_slice.chunks_exact(dst_stride))
63+
.chunks_exact_mut(dst_stride)
64+
.zip(src_slice.chunks_exact(rgba_stride as usize))
6565
{
6666
let src = &src[0..width * 4 * 2];
6767
let dst = &mut dst[0..width * 4];
@@ -124,8 +124,8 @@ fn work_on_transmuted_ptr_u16<F>(
124124
let src_slice =
125125
std::slice::from_raw_parts(rgba as *mut u8, rgba_stride as usize * height);
126126
for (dst, src) in dst_slice
127-
.chunks_exact_mut(rgba_stride as usize)
128-
.zip(src_slice.chunks_exact(dst_stride))
127+
.chunks_exact_mut(dst_stride)
128+
.zip(src_slice.chunks_exact(rgba_stride as usize))
129129
{
130130
let src = &src[0..width * 4 * 2];
131131
let dst = &mut dst[0..width * 4];

0 commit comments

Comments
 (0)