@@ -36,14 +36,9 @@ import android.util.Size
36
36
import androidx.appcompat.app.AppCompatActivity
37
37
import androidx.core.graphics.scale
38
38
import androidx.lifecycle.lifecycleScope
39
- import com.radzivon.bartoshyk.avif.coder.AvifAnimatedDecoder
40
- import com.radzivon.bartoshyk.avif.coder.AvifChromaSubsampling
41
39
import com.radzivon.bartoshyk.avif.coder.HeifCoder
42
- import com.radzivon.bartoshyk.avif.coder.HeifPreset
43
- import com.radzivon.bartoshyk.avif.coder.PreciseMode
44
40
import com.radzivon.bartoshyk.avif.coder.PreferredColorConfig
45
41
import com.radzivon.bartoshyk.avif.coder.ScaleMode
46
- import com.radzivon.bartoshyk.avif.coder.ScalingQuality
47
42
import com.radzivon.bartoshyk.avif.coder.ToneMapper
48
43
import com.radzivon.bartoshyk.avif.databinding.ActivityMainBinding
49
44
import com.radzivon.bartoshyk.avif.databinding.BindingImageViewBinding
@@ -57,6 +52,7 @@ import java.io.File
57
52
import java.io.FileNotFoundException
58
53
import java.io.FileOutputStream
59
54
import java.io.IOException
55
+ import kotlin.system.measureTimeMillis
60
56
61
57
62
58
class MainActivity : AppCompatActivity () {
@@ -122,9 +118,10 @@ class MainActivity : AppCompatActivity() {
122
118
var allFiles = mutableListOf<String >()
123
119
allFiles.addAll(allFiles2)
124
120
allFiles.addAll(allFiles1)
121
+ allFiles = allFiles.take(5 ).toMutableList()
125
122
// allFiles = allFiles.filter { it.contains("wide_gamut.avif") || it.contains("IMG_0199_rr.avif") || it.contains("bt_2020_pq.avif") }.toMutableList()
126
123
// allFiles = allFiles.filter { it.contains("bbb_alpha_inverted.avif") }.toMutableList()
127
- // allFiles = allFiles.filter { it.contains("bt_2020_pq .avif") }.toMutableList()
124
+ // allFiles = allFiles.filter { it.contains("test_alpha .avif") }.toMutableList()
128
125
for (file in allFiles) {
129
126
try {
130
127
Log .d(" AVIF" , " start processing $file " )
@@ -134,30 +131,30 @@ class MainActivity : AppCompatActivity() {
134
131
val size = coder.getSize(buffer)
135
132
if (size != null ) {
136
133
val bitmap0 = coder.decodeSampled(
137
- buffer,
138
- if (size.width > 1800 || size.height > 1800 ) size.width / 4 else size.width,
139
- if (size.width > 1800 || size.height > 1800 ) size.height / 4 else size.height,
140
- PreferredColorConfig .RGBA_8888 ,
141
- ScaleMode .RESIZE
134
+ buffer,
135
+ if (size.width > 1800 || size.height > 1800 ) size.width / 4 else size.width,
136
+ if (size.width > 1800 || size.height > 1800 ) size.height / 4 else size.height,
137
+ PreferredColorConfig .RGBA_1010102 ,
138
+ ScaleMode .RESIZE
142
139
)
143
140
var start = System .currentTimeMillis()
144
141
145
142
// var bitmap0 = coder.decode(
146
143
// byteArray = buffer,
147
- // preferredColorConfig = PreferredColorConfig.RGBA_8888 ,
144
+ // preferredColorConfig = PreferredColorConfig.RGBA_F16 ,
148
145
// )
149
146
150
147
Log .d(" AVIFFFF" , " Decode time ${System .currentTimeMillis() - start} " )
151
148
152
- val encode = coder.encodeAvif(bitmap0, avifChromaSubsampling = AvifChromaSubsampling .YUV422 )
153
- val roundTripped = coder.decode(encode)
149
+ // val encode = coder.encodeAvif(bitmap0, avifChromaSubsampling = AvifChromaSubsampling.YUV420 )
150
+ // val roundTripped = coder.decode(encode)
154
151
//
155
- val cachedFile = File (cacheDir, " yuv400.avif" )
156
- FileOutputStream (cachedFile).use {
157
- val bf = it.sink().buffer()
158
- bf.write(encode)
159
- bf.flush()
160
- }
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
+ // }
161
158
//
162
159
// val round = coder.decode(
163
160
// byteArray = encode,
@@ -172,7 +169,7 @@ class MainActivity : AppCompatActivity() {
172
169
binding.scrollViewContainer,
173
170
false
174
171
)
175
- imageView.root.setImageBitmap(roundTripped )
172
+ imageView.root.setImageBitmap(bitmap0 )
176
173
binding.scrollViewContainer.addView(imageView.root)
177
174
}
178
175
// lifecycleScope.launch(Dispatchers.Main) {
@@ -194,76 +191,6 @@ class MainActivity : AppCompatActivity() {
194
191
}
195
192
}
196
193
}
197
-
198
- // https://wh.aimuse.online/creatives/IMUSE_03617fe2db82a584166_27/TT_a9d21ff1061d785347935fef/68f06252.avif
199
- // https://wh.aimuse.online/preset/federico-beccari.avif
200
- // https://wh.aimuse.online/preset/avif10bit.avif
201
- //
202
- // Glide.with(this)
203
- // .load("https://wh.aimuse.online/preset/federico-beccari.avif")
204
- // .skipMemoryCache(true)
205
- // .into(binding.imageView)
206
-
207
- // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
208
- // binding.imageView.load("https://wh.aimuse.online/preset/federico-beccari.avif",
209
- // imageLoader = ImageLoader.Builder(this)
210
- // .components {
211
- // add(HeifDecoder.Factory())
212
- // }
213
- // .bitmapConfig(Bitmap.Config.RGBA_F16)
214
- // .build())
215
- // }
216
-
217
- // binding.imageView.setImageBitmap(bitmap)
218
- // binding.imageView.setImageBitmap(cc16)
219
- // val avif12DepthBuffer =
220
- // this.assets.open("test_avif_12_bitdepth.avif").source().buffer().readByteArray()
221
- // assert(HeifCoder().isAvif(avif12DepthBuffer))
222
- // val avifHDRBitmap = HeifCoder().decode(avif12DepthBuffer)
223
- // binding.imageView.setImageBitmap(avifHDRBitmap)
224
- // val heicBuffer = this.assets.open("pexels-heif.heif").source().buffer().readByteArray()
225
- // assert(HeifCoder().isHeif(heicBuffer))
226
- // val heicBitmap = HeifCoder().decode(heicBuffer)
227
- // binding.imageView.setImageBitmap(heicBitmap)
228
- // assert(HeifCoder().getSize(heicBuffer) != null)
229
- // assert(HeifCoder().getSize(buffer) != null)
230
- // val heicScaled = HeifCoder().decodeSampled(heicBuffer, 350, 900)
231
- // binding.imageView.setImageBitmap(heicScaled)
232
- // val extremlyLargeBitmapBuffer =
233
- // this.assets.open("extremly_large.avif").source().buffer().readByteArray()
234
- // assert(HeifCoder().isAvif(extremlyLargeBitmapBuffer))
235
- // val extremlyLargeBitmap = HeifCoder().decode(extremlyLargeBitmapBuffer)
236
- // binding.imageView.setImageBitmap(extremlyLargeBitmap)
237
-
238
- // val ff = File(this.filesDir, "result.avif")
239
- // ff.delete()
240
- // val output = FileOutputStream(ff)
241
- // output.sink().buffer().use {
242
- // it.write(bytes)
243
- // it.flush()
244
- // }
245
- // output.close()
246
- // Log.d("p", bytes.size.toString())
247
- // writeHevc(decodedBitmap)
248
- // val numbers = IntArray(5) { 1 * (it + 1) }
249
- // numbers.forEach {
250
- // testEncoder("test_${it}.jpg")
251
- // }
252
- // val bytes = HeifCoder().encodeAvif(cc16)
253
- // val ff = File(this.filesDir, "result.avif")
254
- // ff.delete()
255
- // val output = FileOutputStream(ff)
256
- // output.sink().buffer().use {
257
- // it.write(bytes)
258
- // it.flush()
259
- // }
260
- // output.close()
261
- // Log.d("p", bytes.size.toString())
262
- // writeHevc(decodedBitmap)
263
- // val numbers = IntArray(5) { 1 * (it + 1) }
264
- // numbers.forEach {
265
- // testEncoder("test_${it}.jpg")
266
- // }
267
194
}
268
195
269
196
private fun testEncoder (assetName : String ) {
0 commit comments