@@ -36,14 +36,9 @@ import android.util.Size
3636import androidx.appcompat.app.AppCompatActivity
3737import androidx.core.graphics.scale
3838import androidx.lifecycle.lifecycleScope
39- import com.radzivon.bartoshyk.avif.coder.AvifAnimatedDecoder
40- import com.radzivon.bartoshyk.avif.coder.AvifChromaSubsampling
4139import com.radzivon.bartoshyk.avif.coder.HeifCoder
42- import com.radzivon.bartoshyk.avif.coder.HeifPreset
43- import com.radzivon.bartoshyk.avif.coder.PreciseMode
4440import com.radzivon.bartoshyk.avif.coder.PreferredColorConfig
4541import com.radzivon.bartoshyk.avif.coder.ScaleMode
46- import com.radzivon.bartoshyk.avif.coder.ScalingQuality
4742import com.radzivon.bartoshyk.avif.coder.ToneMapper
4843import com.radzivon.bartoshyk.avif.databinding.ActivityMainBinding
4944import com.radzivon.bartoshyk.avif.databinding.BindingImageViewBinding
@@ -57,6 +52,7 @@ import java.io.File
5752import java.io.FileNotFoundException
5853import java.io.FileOutputStream
5954import java.io.IOException
55+ import kotlin.system.measureTimeMillis
6056
6157
6258class MainActivity : AppCompatActivity () {
@@ -122,9 +118,10 @@ class MainActivity : AppCompatActivity() {
122118 var allFiles = mutableListOf<String >()
123119 allFiles.addAll(allFiles2)
124120 allFiles.addAll(allFiles1)
121+ allFiles = allFiles.take(5 ).toMutableList()
125122// allFiles = allFiles.filter { it.contains("wide_gamut.avif") || it.contains("IMG_0199_rr.avif") || it.contains("bt_2020_pq.avif") }.toMutableList()
126123// 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()
128125 for (file in allFiles) {
129126 try {
130127 Log .d(" AVIF" , " start processing $file " )
@@ -134,30 +131,30 @@ class MainActivity : AppCompatActivity() {
134131 val size = coder.getSize(buffer)
135132 if (size != null ) {
136133 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
142139 )
143140 var start = System .currentTimeMillis()
144141
145142// var bitmap0 = coder.decode(
146143// byteArray = buffer,
147- // preferredColorConfig = PreferredColorConfig.RGBA_8888 ,
144+ // preferredColorConfig = PreferredColorConfig.RGBA_F16 ,
148145// )
149146
150147 Log .d(" AVIFFFF" , " Decode time ${System .currentTimeMillis() - start} " )
151148
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)
154151//
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+ // }
161158//
162159// val round = coder.decode(
163160// byteArray = encode,
@@ -172,7 +169,7 @@ class MainActivity : AppCompatActivity() {
172169 binding.scrollViewContainer,
173170 false
174171 )
175- imageView.root.setImageBitmap(roundTripped )
172+ imageView.root.setImageBitmap(bitmap0 )
176173 binding.scrollViewContainer.addView(imageView.root)
177174 }
178175// lifecycleScope.launch(Dispatchers.Main) {
@@ -194,76 +191,6 @@ class MainActivity : AppCompatActivity() {
194191 }
195192 }
196193 }
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- // }
267194 }
268195
269196 private fun testEncoder (assetName : String ) {
0 commit comments