tor-browser

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

jpegli.h (1640B)


      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 #ifndef LIB_EXTRAS_ENC_JPEGLI_H_
      7 #define LIB_EXTRAS_ENC_JPEGLI_H_
      8 
      9 // Encodes JPG pixels and metadata in memory using the libjpegli library.
     10 
     11 #include <stdint.h>
     12 
     13 #include <string>
     14 #include <vector>
     15 
     16 #include "lib/extras/packed_image.h"
     17 #include "lib/jxl/base/data_parallel.h"
     18 #include "lib/jxl/base/status.h"
     19 
     20 namespace jxl {
     21 namespace extras {
     22 
     23 struct JpegSettings {
     24  bool xyb = false;
     25  size_t target_size = 0;
     26  float quality = 0.0f;
     27  float distance = 1.f;
     28  bool use_adaptive_quantization = true;
     29  bool use_std_quant_tables = false;
     30  int progressive_level = 2;
     31  bool optimize_coding = true;
     32  std::string chroma_subsampling;
     33  int libjpeg_quality = 0;
     34  std::string libjpeg_chroma_subsampling;
     35  // Parameters for selecting distance based on PSNR target.
     36  float psnr_target = 0.0f;
     37  float search_tolerance = 0.01;
     38  float min_distance = 0.1f;
     39  float max_distance = 25.0f;
     40  // If not empty, must contain concatenated APP marker segments. In this case,
     41  // these and only these APP marker segments will be written to the JPEG
     42  // output. In xyb mode app_data must not contain an ICC profile, in this
     43  // case an additional APP2 ICC profile for the XYB colorspace will be emitted.
     44  std::vector<uint8_t> app_data;
     45 };
     46 
     47 Status EncodeJpeg(const PackedPixelFile& ppf, const JpegSettings& jpeg_settings,
     48                  ThreadPool* pool, std::vector<uint8_t>* compressed);
     49 
     50 }  // namespace extras
     51 }  // namespace jxl
     52 
     53 #endif  // LIB_EXTRAS_ENC_JPEGLI_H_