tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

enc_external_image_gbench.cc (1626B)


      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 <jxl/types.h>
      7 
      8 #include <cstddef>
      9 #include <cstdint>
     10 #include <vector>
     11 
     12 #include "benchmark/benchmark.h"
     13 #include "lib/jxl/enc_external_image.h"
     14 #include "lib/jxl/image_metadata.h"
     15 #include "tools/no_memory_manager.h"
     16 
     17 namespace jxl {
     18 namespace {
     19 
     20 #define BM_CHECK(C)          \
     21  if (!(C)) {                \
     22    state.SkipWithError(#C); \
     23    return;                  \
     24  }
     25 
     26 // Encoder case, deinterleaves a buffer.
     27 void BM_EncExternalImage_ConvertImageRGBA(benchmark::State& state) {
     28  const size_t kNumIter = 5;
     29  size_t xsize = state.range();
     30  size_t ysize = state.range();
     31 
     32  ImageMetadata im;
     33  im.SetAlphaBits(8);
     34  ImageBundle ib(jpegxl::tools::NoMemoryManager(), &im);
     35 
     36  std::vector<uint8_t> interleaved(xsize * ysize * 4);
     37  JxlPixelFormat format = {4, JXL_TYPE_UINT8, JXL_NATIVE_ENDIAN, 0};
     38  for (auto _ : state) {
     39    (void)_;
     40    for (size_t i = 0; i < kNumIter; ++i) {
     41      BM_CHECK(ConvertFromExternal(
     42          Bytes(interleaved.data(), interleaved.size()), xsize, ysize,
     43          /*c_current=*/ColorEncoding::SRGB(),
     44          /*bits_per_sample=*/8, format,
     45          /*pool=*/nullptr, &ib));
     46    }
     47  }
     48 
     49  // Pixels per second.
     50  state.SetItemsProcessed(kNumIter * state.iterations() * xsize * ysize);
     51  state.SetBytesProcessed(kNumIter * state.iterations() * interleaved.size());
     52 }
     53 
     54 BENCHMARK(BM_EncExternalImage_ConvertImageRGBA)
     55    ->RangeMultiplier(2)
     56    ->Range(256, 2048);
     57 
     58 }  // namespace
     59 }  // namespace jxl