libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

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