enc_external_image_gbench.cc (1328B)
1 // Copyright (c) the JPEG XL Project Authors. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 #include "benchmark/benchmark.h" 7 #include "lib/jxl/enc_external_image.h" 8 #include "lib/jxl/image_ops.h" 9 10 namespace jxl { 11 namespace { 12 13 // Encoder case, deinterleaves a buffer. 14 void BM_EncExternalImage_ConvertImageRGBA(benchmark::State& state) { 15 const size_t kNumIter = 5; 16 size_t xsize = state.range(); 17 size_t ysize = state.range(); 18 19 ImageMetadata im; 20 im.SetAlphaBits(8); 21 ImageBundle ib(&im); 22 23 std::vector<uint8_t> interleaved(xsize * ysize * 4); 24 JxlPixelFormat format = {4, JXL_TYPE_UINT8, JXL_NATIVE_ENDIAN, 0}; 25 for (auto _ : state) { 26 for (size_t i = 0; i < kNumIter; ++i) { 27 JXL_CHECK(ConvertFromExternal( 28 Bytes(interleaved.data(), interleaved.size()), xsize, ysize, 29 /*c_current=*/ColorEncoding::SRGB(), 30 /*bits_per_sample=*/8, format, 31 /*pool=*/nullptr, &ib)); 32 } 33 } 34 35 // Pixels per second. 36 state.SetItemsProcessed(kNumIter * state.iterations() * xsize * ysize); 37 state.SetBytesProcessed(kNumIter * state.iterations() * interleaved.size()); 38 } 39 40 BENCHMARK(BM_EncExternalImage_ConvertImageRGBA) 41 ->RangeMultiplier(2) 42 ->Range(256, 2048); 43 44 } // namespace 45 } // namespace jxl