tor-browser

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

enc_comparator.h (2146B)


      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_JXL_ENC_COMPARATOR_H_
      7 #define LIB_JXL_ENC_COMPARATOR_H_
      8 
      9 #include <jxl/cms_interface.h>
     10 
     11 #include "lib/jxl/base/data_parallel.h"
     12 #include "lib/jxl/base/status.h"
     13 #include "lib/jxl/image.h"
     14 #include "lib/jxl/image_bundle.h"
     15 
     16 namespace jxl {
     17 
     18 class Comparator {
     19 public:
     20  virtual ~Comparator() = default;
     21 
     22  // Sets the reference image, the first to compare
     23  // Image must be in linear sRGB (gamma expanded) in range 0.0f-1.0f as
     24  // the range from standard black point to standard white point, but values
     25  // outside permitted.
     26  virtual Status SetReferenceImage(const ImageBundle& ref) = 0;
     27 
     28  // Sets the actual image (with loss), the second to compare
     29  // Image must be in linear sRGB (gamma expanded) in range 0.0f-1.0f as
     30  // the range from standard black point to standard white point, but values
     31  // outside permitted.
     32  // In diffmap it outputs the local score per pixel, while in score it outputs
     33  // a single score. Any one may be set to nullptr to not compute it.
     34  virtual Status CompareWith(const ImageBundle& actual, ImageF* diffmap,
     35                             float* score) = 0;
     36 
     37  // Quality thresholds for diffmap and score values.
     38  // The good score must represent a value where the images are considered to
     39  // be perceptually indistinguishable (but not identical)
     40  // The bad value must be larger than good to indicate "lower means better"
     41  // and smaller than good to indicate "higher means better"
     42  virtual float GoodQualityScore() const = 0;
     43  virtual float BadQualityScore() const = 0;
     44 };
     45 
     46 // Computes the score given images in any RGB color model, optionally with
     47 // alpha channel.
     48 Status ComputeScore(const ImageBundle& rgb0, const ImageBundle& rgb1,
     49                    Comparator* comparator, const JxlCmsInterface& cms,
     50                    float* score, ImageF* diffmap = nullptr,
     51                    ThreadPool* pool = nullptr, bool ignore_alpha = false);
     52 
     53 }  // namespace jxl
     54 
     55 #endif  // LIB_JXL_ENC_COMPARATOR_H_