Coverage Report

Created: 2026-11-12 07:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libjxl/lib/jxl/cms/jxl_cms_internal.h
Line
Count
Source
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_CMS_JXL_CMS_INTERNAL_H_
7
#define LIB_JXL_CMS_JXL_CMS_INTERNAL_H_
8
9
// ICC profiles and color space conversions.
10
11
#include <jxl/color_encoding.h>
12
13
#include <algorithm>
14
#include <cmath>
15
#include <cstddef>
16
#include <cstdint>
17
#include <cstring>
18
#include <string>
19
#include <vector>
20
21
#include "lib/jxl/base/common.h"
22
#include "lib/jxl/base/compiler_specific.h"
23
#include "lib/jxl/base/matrix_ops.h"
24
#include "lib/jxl/base/span.h"  // Bytes
25
#include "lib/jxl/base/status.h"
26
#include "lib/jxl/cms/opsin_params.h"
27
#include "lib/jxl/cms/tone_mapping.h"
28
#include "lib/jxl/cms/transfer_functions.h"
29
30
#ifndef JXL_ENABLE_3D_ICC_TONEMAPPING
31
#define JXL_ENABLE_3D_ICC_TONEMAPPING 1
32
#endif
33
34
namespace jxl {
35
36
enum class ExtraTF {
37
  kNone,
38
  kPQ,
39
  kHLG,
40
  kSRGB,
41
};
42
43
static Status PrimariesToXYZ(float rx, float ry, float gx, float gy, float bx,
44
521k
                             float by, float wx, float wy, Matrix3x3& matrix) {
45
521k
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
46
521k
  if (!ok) {
47
0
    return JXL_FAILURE("Invalid white point");
48
0
  }
49
  // TODO(lode): also require rx, ry, gx, gy, bx, to be in range 0-1? ICC
50
  // profiles in theory forbid negative XYZ values, but in practice the ACES P0
51
  // color space uses a negative y for the blue primary.
52
521k
  Matrix3x3 primaries{{{rx, gx, bx},
53
521k
                       {ry, gy, by},
54
521k
                       {1.0f - rx - ry, 1.0f - gx - gy, 1.0f - bx - by}}};
55
521k
  Matrix3x3 primaries_inv;
56
521k
  primaries_inv = primaries;
57
521k
  JXL_RETURN_IF_ERROR(Inv3x3Matrix(primaries_inv));
58
59
520k
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
60
  // 1 / tiny float can still overflow
61
520k
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
62
520k
  Vector3 xyz;
63
520k
  Mul3x3Vector(primaries_inv, w, xyz);
64
65
520k
  Matrix3x3 a{{{xyz[0], 0, 0}, {0, xyz[1], 0}, {0, 0, xyz[2]}}};
66
67
520k
  Mul3x3Matrix(primaries, a, matrix);
68
520k
  return true;
69
520k
}
encode.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
44
84
                             float by, float wx, float wy, Matrix3x3& matrix) {
45
84
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
46
84
  if (!ok) {
47
0
    return JXL_FAILURE("Invalid white point");
48
0
  }
49
  // TODO(lode): also require rx, ry, gx, gy, bx, to be in range 0-1? ICC
50
  // profiles in theory forbid negative XYZ values, but in practice the ACES P0
51
  // color space uses a negative y for the blue primary.
52
84
  Matrix3x3 primaries{{{rx, gx, bx},
53
84
                       {ry, gy, by},
54
84
                       {1.0f - rx - ry, 1.0f - gx - gy, 1.0f - bx - by}}};
55
84
  Matrix3x3 primaries_inv;
56
84
  primaries_inv = primaries;
57
84
  JXL_RETURN_IF_ERROR(Inv3x3Matrix(primaries_inv));
58
59
84
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
60
  // 1 / tiny float can still overflow
61
84
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
62
84
  Vector3 xyz;
63
84
  Mul3x3Vector(primaries_inv, w, xyz);
64
65
84
  Matrix3x3 a{{{xyz[0], 0, 0}, {0, xyz[1], 0}, {0, 0, xyz[2]}}};
66
67
84
  Mul3x3Matrix(primaries, a, matrix);
68
84
  return true;
69
84
}
Unexecuted instantiation: enc_fields.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ans.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_frame.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_modular.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_debug_image.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_xyb.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_external_image.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_heuristics.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_cache.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_group.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
jxl_cms.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
44
23.3k
                             float by, float wx, float wy, Matrix3x3& matrix) {
45
23.3k
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
46
23.3k
  if (!ok) {
47
0
    return JXL_FAILURE("Invalid white point");
48
0
  }
49
  // TODO(lode): also require rx, ry, gx, gy, bx, to be in range 0-1? ICC
50
  // profiles in theory forbid negative XYZ values, but in practice the ACES P0
51
  // color space uses a negative y for the blue primary.
52
23.3k
  Matrix3x3 primaries{{{rx, gx, bx},
53
23.3k
                       {ry, gy, by},
54
23.3k
                       {1.0f - rx - ry, 1.0f - gx - gy, 1.0f - bx - by}}};
55
23.3k
  Matrix3x3 primaries_inv;
56
23.3k
  primaries_inv = primaries;
57
23.3k
  JXL_RETURN_IF_ERROR(Inv3x3Matrix(primaries_inv));
58
59
22.3k
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
60
  // 1 / tiny float can still overflow
61
22.3k
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
62
22.3k
  Vector3 xyz;
63
22.3k
  Mul3x3Vector(primaries_inv, w, xyz);
64
65
22.3k
  Matrix3x3 a{{{xyz[0], 0, 0}, {0, xyz[1], 0}, {0, 0, xyz[2]}}};
66
67
22.3k
  Mul3x3Matrix(primaries, a, matrix);
68
22.3k
  return true;
69
22.3k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_encoding.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
color_encoding_internal.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
44
497k
                             float by, float wx, float wy, Matrix3x3& matrix) {
45
497k
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
46
497k
  if (!ok) {
47
0
    return JXL_FAILURE("Invalid white point");
48
0
  }
49
  // TODO(lode): also require rx, ry, gx, gy, bx, to be in range 0-1? ICC
50
  // profiles in theory forbid negative XYZ values, but in practice the ACES P0
51
  // color space uses a negative y for the blue primary.
52
497k
  Matrix3x3 primaries{{{rx, gx, bx},
53
497k
                       {ry, gy, by},
54
497k
                       {1.0f - rx - ry, 1.0f - gx - gy, 1.0f - bx - by}}};
55
497k
  Matrix3x3 primaries_inv;
56
497k
  primaries_inv = primaries;
57
497k
  JXL_RETURN_IF_ERROR(Inv3x3Matrix(primaries_inv));
58
59
497k
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
60
  // 1 / tiny float can still overflow
61
497k
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
62
497k
  Vector3 xyz;
63
497k
  Mul3x3Vector(primaries_inv, w, xyz);
64
65
497k
  Matrix3x3 a{{{xyz[0], 0, 0}, {0, xyz[1], 0}, {0, 0, xyz[2]}}};
66
67
497k
  Mul3x3Matrix(primaries, a, matrix);
68
497k
  return true;
69
497k
}
Unexecuted instantiation: compressed_dc.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_cache.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: blending.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_external_image.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_frame.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_group.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_modular.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_noise.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
dec_xyb.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
44
710
                             float by, float wx, float wy, Matrix3x3& matrix) {
45
710
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
46
710
  if (!ok) {
47
0
    return JXL_FAILURE("Invalid white point");
48
0
  }
49
  // TODO(lode): also require rx, ry, gx, gy, bx, to be in range 0-1? ICC
50
  // profiles in theory forbid negative XYZ values, but in practice the ACES P0
51
  // color space uses a negative y for the blue primary.
52
710
  Matrix3x3 primaries{{{rx, gx, bx},
53
710
                       {ry, gy, by},
54
710
                       {1.0f - rx - ry, 1.0f - gx - gy, 1.0f - bx - by}}};
55
710
  Matrix3x3 primaries_inv;
56
710
  primaries_inv = primaries;
57
710
  JXL_RETURN_IF_ERROR(Inv3x3Matrix(primaries_inv));
58
59
710
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
60
  // 1 / tiny float can still overflow
61
710
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
62
710
  Vector3 xyz;
63
710
  Mul3x3Vector(primaries_inv, w, xyz);
64
65
710
  Matrix3x3 a{{{xyz[0], 0, 0}, {0, xyz[1], 0}, {0, 0, xyz[2]}}};
66
67
710
  Mul3x3Matrix(primaries, a, matrix);
68
710
  return true;
69
710
}
Unexecuted instantiation: decode.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: epf.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: frame_header.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_bundle.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_metadata.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: luminance.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: passes_state.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: quant_weights.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_blending.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_cms.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_epf.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_from_linear.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_gaborish.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_noise.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_patches.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_splines.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_spot.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_to_linear.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_upsampling.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_write.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_xyb.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::PrimariesToXYZ(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
70
71
/* Chromatic adaptation matrices*/
72
constexpr Matrix3x3 kBradford{{{0.8951f, 0.2664f, -0.1614f},
73
                               {-0.7502f, 1.7135f, 0.0367f},
74
                               {0.0389f, -0.0685f, 1.0296f}}};
75
constexpr Matrix3x3 kBradfordInv{{{0.9869929f, -0.1470543f, 0.1599627f},
76
                                  {0.4323053f, 0.5183603f, 0.0492912f},
77
                                  {-0.0085287f, 0.0400428f, 0.9684867f}}};
78
79
// Adapts white point x, y to D50
80
995k
static Status AdaptToXYZD50(float wx, float wy, Matrix3x3& matrix) {
81
995k
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
82
995k
  if (!ok) {
83
    // Out of range values can cause division through zero
84
    // further down with the bradford adaptation too.
85
381
    return JXL_FAILURE("Invalid white point");
86
381
  }
87
995k
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
88
  // 1 / tiny float can still overflow
89
995k
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
90
995k
  Vector3 w50{0.96422f, 1.0f, 0.82521f};
91
92
995k
  Vector3 lms;
93
995k
  Vector3 lms50;
94
95
995k
  Mul3x3Vector(kBradford, w, lms);
96
995k
  Mul3x3Vector(kBradford, w50, lms50);
97
98
995k
  if (lms[0] == 0 || lms[1] == 0 || lms[2] == 0) {
99
0
    return JXL_FAILURE("Invalid white point");
100
0
  }
101
995k
  Matrix3x3 a{{{lms50[0] / lms[0], 0, 0},
102
995k
               {0, lms50[1] / lms[1], 0},
103
995k
               {0, 0, lms50[2] / lms[2]}}};
104
995k
  if (!std::isfinite(a[0][0]) || !std::isfinite(a[1][1]) ||
105
995k
      !std::isfinite(a[2][2])) {
106
0
    return JXL_FAILURE("Invalid white point");
107
0
  }
108
109
995k
  Matrix3x3 b;
110
995k
  Mul3x3Matrix(a, kBradford, b);
111
995k
  Mul3x3Matrix(kBradfordInv, b, matrix);
112
113
995k
  return true;
114
995k
}
encode.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
80
168
static Status AdaptToXYZD50(float wx, float wy, Matrix3x3& matrix) {
81
168
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
82
168
  if (!ok) {
83
    // Out of range values can cause division through zero
84
    // further down with the bradford adaptation too.
85
0
    return JXL_FAILURE("Invalid white point");
86
0
  }
87
168
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
88
  // 1 / tiny float can still overflow
89
168
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
90
168
  Vector3 w50{0.96422f, 1.0f, 0.82521f};
91
92
168
  Vector3 lms;
93
168
  Vector3 lms50;
94
95
168
  Mul3x3Vector(kBradford, w, lms);
96
168
  Mul3x3Vector(kBradford, w50, lms50);
97
98
168
  if (lms[0] == 0 || lms[1] == 0 || lms[2] == 0) {
99
0
    return JXL_FAILURE("Invalid white point");
100
0
  }
101
168
  Matrix3x3 a{{{lms50[0] / lms[0], 0, 0},
102
168
               {0, lms50[1] / lms[1], 0},
103
168
               {0, 0, lms50[2] / lms[2]}}};
104
168
  if (!std::isfinite(a[0][0]) || !std::isfinite(a[1][1]) ||
105
168
      !std::isfinite(a[2][2])) {
106
0
    return JXL_FAILURE("Invalid white point");
107
0
  }
108
109
168
  Matrix3x3 b;
110
168
  Mul3x3Matrix(a, kBradford, b);
111
168
  Mul3x3Matrix(kBradfordInv, b, matrix);
112
113
168
  return true;
114
168
}
Unexecuted instantiation: enc_fields.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ans.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_frame.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_modular.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_debug_image.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_xyb.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_external_image.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_heuristics.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_cache.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_group.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
jxl_cms.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
80
28.5k
static Status AdaptToXYZD50(float wx, float wy, Matrix3x3& matrix) {
81
28.5k
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
82
28.5k
  if (!ok) {
83
    // Out of range values can cause division through zero
84
    // further down with the bradford adaptation too.
85
351
    return JXL_FAILURE("Invalid white point");
86
351
  }
87
28.2k
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
88
  // 1 / tiny float can still overflow
89
28.2k
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
90
28.2k
  Vector3 w50{0.96422f, 1.0f, 0.82521f};
91
92
28.2k
  Vector3 lms;
93
28.2k
  Vector3 lms50;
94
95
28.2k
  Mul3x3Vector(kBradford, w, lms);
96
28.2k
  Mul3x3Vector(kBradford, w50, lms50);
97
98
28.2k
  if (lms[0] == 0 || lms[1] == 0 || lms[2] == 0) {
99
0
    return JXL_FAILURE("Invalid white point");
100
0
  }
101
28.2k
  Matrix3x3 a{{{lms50[0] / lms[0], 0, 0},
102
28.2k
               {0, lms50[1] / lms[1], 0},
103
28.2k
               {0, 0, lms50[2] / lms[2]}}};
104
28.2k
  if (!std::isfinite(a[0][0]) || !std::isfinite(a[1][1]) ||
105
28.2k
      !std::isfinite(a[2][2])) {
106
0
    return JXL_FAILURE("Invalid white point");
107
0
  }
108
109
28.2k
  Matrix3x3 b;
110
28.2k
  Mul3x3Matrix(a, kBradford, b);
111
28.2k
  Mul3x3Matrix(kBradfordInv, b, matrix);
112
113
28.2k
  return true;
114
28.2k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_encoding.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
color_encoding_internal.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
80
966k
static Status AdaptToXYZD50(float wx, float wy, Matrix3x3& matrix) {
81
966k
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
82
966k
  if (!ok) {
83
    // Out of range values can cause division through zero
84
    // further down with the bradford adaptation too.
85
30
    return JXL_FAILURE("Invalid white point");
86
30
  }
87
966k
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
88
  // 1 / tiny float can still overflow
89
966k
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
90
966k
  Vector3 w50{0.96422f, 1.0f, 0.82521f};
91
92
966k
  Vector3 lms;
93
966k
  Vector3 lms50;
94
95
966k
  Mul3x3Vector(kBradford, w, lms);
96
966k
  Mul3x3Vector(kBradford, w50, lms50);
97
98
966k
  if (lms[0] == 0 || lms[1] == 0 || lms[2] == 0) {
99
0
    return JXL_FAILURE("Invalid white point");
100
0
  }
101
966k
  Matrix3x3 a{{{lms50[0] / lms[0], 0, 0},
102
966k
               {0, lms50[1] / lms[1], 0},
103
966k
               {0, 0, lms50[2] / lms[2]}}};
104
966k
  if (!std::isfinite(a[0][0]) || !std::isfinite(a[1][1]) ||
105
966k
      !std::isfinite(a[2][2])) {
106
0
    return JXL_FAILURE("Invalid white point");
107
0
  }
108
109
966k
  Matrix3x3 b;
110
966k
  Mul3x3Matrix(a, kBradford, b);
111
966k
  Mul3x3Matrix(kBradfordInv, b, matrix);
112
113
966k
  return true;
114
966k
}
Unexecuted instantiation: compressed_dc.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_cache.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: blending.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_external_image.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_frame.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_group.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_modular.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_noise.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
dec_xyb.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
80
639
static Status AdaptToXYZD50(float wx, float wy, Matrix3x3& matrix) {
81
639
  bool ok = (wx >= 0) && (wx <= 1) && (wy > 0) && (wy <= 1);
82
639
  if (!ok) {
83
    // Out of range values can cause division through zero
84
    // further down with the bradford adaptation too.
85
0
    return JXL_FAILURE("Invalid white point");
86
0
  }
87
639
  Vector3 w{wx / wy, 1.0f, (1.0f - wx - wy) / wy};
88
  // 1 / tiny float can still overflow
89
639
  JXL_RETURN_IF_ERROR(std::isfinite(w[0]) && std::isfinite(w[2]));
90
639
  Vector3 w50{0.96422f, 1.0f, 0.82521f};
91
92
639
  Vector3 lms;
93
639
  Vector3 lms50;
94
95
639
  Mul3x3Vector(kBradford, w, lms);
96
639
  Mul3x3Vector(kBradford, w50, lms50);
97
98
639
  if (lms[0] == 0 || lms[1] == 0 || lms[2] == 0) {
99
0
    return JXL_FAILURE("Invalid white point");
100
0
  }
101
639
  Matrix3x3 a{{{lms50[0] / lms[0], 0, 0},
102
639
               {0, lms50[1] / lms[1], 0},
103
639
               {0, 0, lms50[2] / lms[2]}}};
104
639
  if (!std::isfinite(a[0][0]) || !std::isfinite(a[1][1]) ||
105
639
      !std::isfinite(a[2][2])) {
106
0
    return JXL_FAILURE("Invalid white point");
107
0
  }
108
109
639
  Matrix3x3 b;
110
639
  Mul3x3Matrix(a, kBradford, b);
111
639
  Mul3x3Matrix(kBradfordInv, b, matrix);
112
113
639
  return true;
114
639
}
Unexecuted instantiation: decode.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: epf.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: frame_header.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_bundle.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_metadata.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: luminance.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: passes_state.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: quant_weights.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_blending.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_cms.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_epf.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_from_linear.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_gaborish.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_noise.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_patches.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_splines.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_spot.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_to_linear.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_upsampling.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_write.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_xyb.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::AdaptToXYZD50(float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
115
116
static Status PrimariesToXYZD50(float rx, float ry, float gx, float gy,
117
                                float bx, float by, float wx, float wy,
118
475k
                                Matrix3x3& matrix) {
119
475k
  Matrix3x3 toXYZ;
120
475k
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(rx, ry, gx, gy, bx, by, wx, wy, toXYZ));
121
474k
  Matrix3x3 d50;
122
474k
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, d50));
123
124
474k
  Mul3x3Matrix(d50, toXYZ, matrix);
125
474k
  return true;
126
474k
}
encode.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
118
84
                                Matrix3x3& matrix) {
119
84
  Matrix3x3 toXYZ;
120
84
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(rx, ry, gx, gy, bx, by, wx, wy, toXYZ));
121
84
  Matrix3x3 d50;
122
84
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, d50));
123
124
84
  Mul3x3Matrix(d50, toXYZ, matrix);
125
84
  return true;
126
84
}
Unexecuted instantiation: enc_fields.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ans.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_frame.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_modular.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_debug_image.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_xyb.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_external_image.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_heuristics.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_cache.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_group.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
jxl_cms.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
118
5.84k
                                Matrix3x3& matrix) {
119
5.84k
  Matrix3x3 toXYZ;
120
5.84k
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(rx, ry, gx, gy, bx, by, wx, wy, toXYZ));
121
4.88k
  Matrix3x3 d50;
122
4.88k
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, d50));
123
124
4.88k
  Mul3x3Matrix(d50, toXYZ, matrix);
125
4.88k
  return true;
126
4.88k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_encoding.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
color_encoding_internal.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
118
469k
                                Matrix3x3& matrix) {
119
469k
  Matrix3x3 toXYZ;
120
469k
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(rx, ry, gx, gy, bx, by, wx, wy, toXYZ));
121
469k
  Matrix3x3 d50;
122
469k
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, d50));
123
124
469k
  Mul3x3Matrix(d50, toXYZ, matrix);
125
469k
  return true;
126
469k
}
Unexecuted instantiation: compressed_dc.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_cache.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: blending.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_external_image.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_frame.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_group.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_modular.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_noise.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
dec_xyb.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
118
355
                                Matrix3x3& matrix) {
119
355
  Matrix3x3 toXYZ;
120
355
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(rx, ry, gx, gy, bx, by, wx, wy, toXYZ));
121
355
  Matrix3x3 d50;
122
355
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, d50));
123
124
355
  Mul3x3Matrix(d50, toXYZ, matrix);
125
355
  return true;
126
355
}
Unexecuted instantiation: decode.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: epf.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: frame_header.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_bundle.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_metadata.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: luminance.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: passes_state.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: quant_weights.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_blending.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_cms.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_epf.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_from_linear.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_gaborish.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_noise.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_patches.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_splines.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_spot.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_to_linear.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_upsampling.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_write.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_xyb.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::PrimariesToXYZD50(float, float, float, float, float, float, float, float, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
127
128
static Status ToneMapPixel(const JxlColorEncoding& c, const float in[3],
129
45.1k
                           uint8_t pcslab_out[3]) {
130
45.1k
  Matrix3x3 primaries_XYZ;
131
45.1k
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(
132
45.1k
      c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
133
45.1k
      c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
134
45.1k
      c.white_point_xy[0], c.white_point_xy[1], primaries_XYZ));
135
45.1k
  const Vector3 luminances = primaries_XYZ[1];
136
45.1k
  Color linear;
137
45.1k
  JxlTransferFunction tf = c.transfer_function;
138
45.1k
  if (tf == JXL_TRANSFER_FUNCTION_PQ) {
139
87.4k
    for (size_t i = 0; i < 3; ++i) {
140
65.6k
      linear[i] = TF_PQ_Base::DisplayFromEncoded(
141
65.6k
          /*display_intensity_target=*/10000.0, in[i]);
142
65.6k
    }
143
23.3k
  } else {
144
93.3k
    for (size_t i = 0; i < 3; ++i) {
145
69.9k
      linear[i] = TF_HLG_Base::DisplayFromEncoded(in[i]);
146
69.9k
    }
147
23.3k
  }
148
45.1k
  if (tf == JXL_TRANSFER_FUNCTION_PQ) {
149
21.8k
    Rec2408ToneMapperBase tone_mapper({0.0f, 10000.0f}, {0.0f, 250.0f},
150
21.8k
                                      luminances);
151
21.8k
    tone_mapper.ToneMap(linear);
152
23.3k
  } else {
153
23.3k
    HlgOOTF_Base ootf(/*source_luminance=*/300, /*target_luminance=*/80,
154
23.3k
                      luminances);
155
23.3k
    ootf.Apply(linear);
156
23.3k
  }
157
45.1k
  GamutMapScalar(linear, luminances,
158
45.1k
                 /*preserve_saturation=*/0.3f);
159
160
45.1k
  Matrix3x3 chad;
161
45.1k
  JXL_RETURN_IF_ERROR(
162
45.1k
      AdaptToXYZD50(c.white_point_xy[0], c.white_point_xy[1], chad));
163
45.1k
  Matrix3x3 to_xyzd50;
164
45.1k
  Mul3x3Matrix(chad, primaries_XYZ, to_xyzd50);
165
166
45.1k
  Vector3 xyz{0, 0, 0};
167
180k
  for (size_t xyz_c = 0; xyz_c < 3; ++xyz_c) {
168
542k
    for (size_t rgb_c = 0; rgb_c < 3; ++rgb_c) {
169
406k
      xyz[xyz_c] += linear[rgb_c] * to_xyzd50[xyz_c][rgb_c];
170
406k
    }
171
135k
  }
172
173
135k
  const auto lab_f = [](const float x) {
174
135k
    static constexpr float kDelta = 6. / 29;
175
135k
    return x <= kDelta * kDelta * kDelta
176
135k
               ? x * (1 / (3 * kDelta * kDelta)) + 4.f / 29
177
135k
               : std::cbrt(x);
178
135k
  };
Unexecuted instantiation: encode.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)::$_0::operator()(float) const
jxl_cms.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)::$_0::operator()(float) const
Line
Count
Source
173
52.4k
  const auto lab_f = [](const float x) {
174
52.4k
    static constexpr float kDelta = 6. / 29;
175
52.4k
    return x <= kDelta * kDelta * kDelta
176
52.4k
               ? x * (1 / (3 * kDelta * kDelta)) + 4.f / 29
177
52.4k
               : std::cbrt(x);
178
52.4k
  };
color_encoding_internal.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)::$_0::operator()(float) const
Line
Count
Source
173
83.1k
  const auto lab_f = [](const float x) {
174
83.1k
    static constexpr float kDelta = 6. / 29;
175
83.1k
    return x <= kDelta * kDelta * kDelta
176
83.1k
               ? x * (1 / (3 * kDelta * kDelta)) + 4.f / 29
177
83.1k
               : std::cbrt(x);
178
83.1k
  };
Unexecuted instantiation: dec_cache.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)::$_0::operator()(float) const
Unexecuted instantiation: decode.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)::$_0::operator()(float) const
179
45.1k
  static constexpr float kXn = 0.964212;
180
45.1k
  static constexpr float kYn = 1;
181
45.1k
  static constexpr float kZn = 0.825188;
182
183
45.1k
  const float f_x = lab_f(xyz[0] / kXn);
184
45.1k
  const float f_y = lab_f(xyz[1] / kYn);
185
45.1k
  const float f_z = lab_f(xyz[2] / kZn);
186
187
45.1k
  pcslab_out[0] = static_cast<uint8_t>(
188
45.1k
      std::lroundf(255.f * Clamp1(1.16f * f_y - .16f, 0.f, 1.f)));
189
45.1k
  pcslab_out[1] = static_cast<uint8_t>(
190
45.1k
      std::lroundf(128.f + Clamp1(500 * (f_x - f_y), -128.f, 127.f)));
191
45.1k
  pcslab_out[2] = static_cast<uint8_t>(
192
45.1k
      std::lroundf(128.f + Clamp1(200 * (f_y - f_z), -128.f, 127.f)));
193
194
45.1k
  return true;
195
45.1k
}
Unexecuted instantiation: encode.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_fields.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_ans.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_frame.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_modular.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_debug_image.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_xyb.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_external_image.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_heuristics.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_cache.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_group.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
jxl_cms.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Line
Count
Source
129
17.4k
                           uint8_t pcslab_out[3]) {
130
17.4k
  Matrix3x3 primaries_XYZ;
131
17.4k
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(
132
17.4k
      c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
133
17.4k
      c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
134
17.4k
      c.white_point_xy[0], c.white_point_xy[1], primaries_XYZ));
135
17.4k
  const Vector3 luminances = primaries_XYZ[1];
136
17.4k
  Color linear;
137
17.4k
  JxlTransferFunction tf = c.transfer_function;
138
17.4k
  if (tf == JXL_TRANSFER_FUNCTION_PQ) {
139
34.9k
    for (size_t i = 0; i < 3; ++i) {
140
26.2k
      linear[i] = TF_PQ_Base::DisplayFromEncoded(
141
26.2k
          /*display_intensity_target=*/10000.0, in[i]);
142
26.2k
    }
143
8.74k
  } else {
144
34.9k
    for (size_t i = 0; i < 3; ++i) {
145
26.2k
      linear[i] = TF_HLG_Base::DisplayFromEncoded(in[i]);
146
26.2k
    }
147
8.74k
  }
148
17.4k
  if (tf == JXL_TRANSFER_FUNCTION_PQ) {
149
8.74k
    Rec2408ToneMapperBase tone_mapper({0.0f, 10000.0f}, {0.0f, 250.0f},
150
8.74k
                                      luminances);
151
8.74k
    tone_mapper.ToneMap(linear);
152
8.74k
  } else {
153
8.74k
    HlgOOTF_Base ootf(/*source_luminance=*/300, /*target_luminance=*/80,
154
8.74k
                      luminances);
155
8.74k
    ootf.Apply(linear);
156
8.74k
  }
157
17.4k
  GamutMapScalar(linear, luminances,
158
17.4k
                 /*preserve_saturation=*/0.3f);
159
160
17.4k
  Matrix3x3 chad;
161
17.4k
  JXL_RETURN_IF_ERROR(
162
17.4k
      AdaptToXYZD50(c.white_point_xy[0], c.white_point_xy[1], chad));
163
17.4k
  Matrix3x3 to_xyzd50;
164
17.4k
  Mul3x3Matrix(chad, primaries_XYZ, to_xyzd50);
165
166
17.4k
  Vector3 xyz{0, 0, 0};
167
69.9k
  for (size_t xyz_c = 0; xyz_c < 3; ++xyz_c) {
168
209k
    for (size_t rgb_c = 0; rgb_c < 3; ++rgb_c) {
169
157k
      xyz[xyz_c] += linear[rgb_c] * to_xyzd50[xyz_c][rgb_c];
170
157k
    }
171
52.4k
  }
172
173
17.4k
  const auto lab_f = [](const float x) {
174
17.4k
    static constexpr float kDelta = 6. / 29;
175
17.4k
    return x <= kDelta * kDelta * kDelta
176
17.4k
               ? x * (1 / (3 * kDelta * kDelta)) + 4.f / 29
177
17.4k
               : std::cbrt(x);
178
17.4k
  };
179
17.4k
  static constexpr float kXn = 0.964212;
180
17.4k
  static constexpr float kYn = 1;
181
17.4k
  static constexpr float kZn = 0.825188;
182
183
17.4k
  const float f_x = lab_f(xyz[0] / kXn);
184
17.4k
  const float f_y = lab_f(xyz[1] / kYn);
185
17.4k
  const float f_z = lab_f(xyz[2] / kZn);
186
187
17.4k
  pcslab_out[0] = static_cast<uint8_t>(
188
17.4k
      std::lroundf(255.f * Clamp1(1.16f * f_y - .16f, 0.f, 1.f)));
189
17.4k
  pcslab_out[1] = static_cast<uint8_t>(
190
17.4k
      std::lroundf(128.f + Clamp1(500 * (f_x - f_y), -128.f, 127.f)));
191
17.4k
  pcslab_out[2] = static_cast<uint8_t>(
192
17.4k
      std::lroundf(128.f + Clamp1(200 * (f_y - f_z), -128.f, 127.f)));
193
194
17.4k
  return true;
195
17.4k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: enc_encoding.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
color_encoding_internal.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Line
Count
Source
129
27.7k
                           uint8_t pcslab_out[3]) {
130
27.7k
  Matrix3x3 primaries_XYZ;
131
27.7k
  JXL_RETURN_IF_ERROR(PrimariesToXYZ(
132
27.7k
      c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
133
27.7k
      c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
134
27.7k
      c.white_point_xy[0], c.white_point_xy[1], primaries_XYZ));
135
27.7k
  const Vector3 luminances = primaries_XYZ[1];
136
27.7k
  Color linear;
137
27.7k
  JxlTransferFunction tf = c.transfer_function;
138
27.7k
  if (tf == JXL_TRANSFER_FUNCTION_PQ) {
139
52.4k
    for (size_t i = 0; i < 3; ++i) {
140
39.3k
      linear[i] = TF_PQ_Base::DisplayFromEncoded(
141
39.3k
          /*display_intensity_target=*/10000.0, in[i]);
142
39.3k
    }
143
14.5k
  } else {
144
58.3k
    for (size_t i = 0; i < 3; ++i) {
145
43.7k
      linear[i] = TF_HLG_Base::DisplayFromEncoded(in[i]);
146
43.7k
    }
147
14.5k
  }
148
27.7k
  if (tf == JXL_TRANSFER_FUNCTION_PQ) {
149
13.1k
    Rec2408ToneMapperBase tone_mapper({0.0f, 10000.0f}, {0.0f, 250.0f},
150
13.1k
                                      luminances);
151
13.1k
    tone_mapper.ToneMap(linear);
152
14.5k
  } else {
153
14.5k
    HlgOOTF_Base ootf(/*source_luminance=*/300, /*target_luminance=*/80,
154
14.5k
                      luminances);
155
14.5k
    ootf.Apply(linear);
156
14.5k
  }
157
27.7k
  GamutMapScalar(linear, luminances,
158
27.7k
                 /*preserve_saturation=*/0.3f);
159
160
27.7k
  Matrix3x3 chad;
161
27.7k
  JXL_RETURN_IF_ERROR(
162
27.7k
      AdaptToXYZD50(c.white_point_xy[0], c.white_point_xy[1], chad));
163
27.7k
  Matrix3x3 to_xyzd50;
164
27.7k
  Mul3x3Matrix(chad, primaries_XYZ, to_xyzd50);
165
166
27.7k
  Vector3 xyz{0, 0, 0};
167
110k
  for (size_t xyz_c = 0; xyz_c < 3; ++xyz_c) {
168
332k
    for (size_t rgb_c = 0; rgb_c < 3; ++rgb_c) {
169
249k
      xyz[xyz_c] += linear[rgb_c] * to_xyzd50[xyz_c][rgb_c];
170
249k
    }
171
83.1k
  }
172
173
27.7k
  const auto lab_f = [](const float x) {
174
27.7k
    static constexpr float kDelta = 6. / 29;
175
27.7k
    return x <= kDelta * kDelta * kDelta
176
27.7k
               ? x * (1 / (3 * kDelta * kDelta)) + 4.f / 29
177
27.7k
               : std::cbrt(x);
178
27.7k
  };
179
27.7k
  static constexpr float kXn = 0.964212;
180
27.7k
  static constexpr float kYn = 1;
181
27.7k
  static constexpr float kZn = 0.825188;
182
183
27.7k
  const float f_x = lab_f(xyz[0] / kXn);
184
27.7k
  const float f_y = lab_f(xyz[1] / kYn);
185
27.7k
  const float f_z = lab_f(xyz[2] / kZn);
186
187
27.7k
  pcslab_out[0] = static_cast<uint8_t>(
188
27.7k
      std::lroundf(255.f * Clamp1(1.16f * f_y - .16f, 0.f, 1.f)));
189
27.7k
  pcslab_out[1] = static_cast<uint8_t>(
190
27.7k
      std::lroundf(128.f + Clamp1(500 * (f_x - f_y), -128.f, 127.f)));
191
27.7k
  pcslab_out[2] = static_cast<uint8_t>(
192
27.7k
      std::lroundf(128.f + Clamp1(200 * (f_y - f_z), -128.f, 127.f)));
193
194
27.7k
  return true;
195
27.7k
}
Unexecuted instantiation: compressed_dc.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_cache.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: blending.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_external_image.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_frame.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_group.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_modular.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_noise.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: dec_xyb.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: decode.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: epf.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: frame_header.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: image_bundle.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: image_metadata.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: luminance.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: passes_state.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: quant_weights.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: render_pipeline.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_blending.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_cms.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_epf.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_from_linear.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_gaborish.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_noise.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_patches.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_splines.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_spot.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_to_linear.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_upsampling.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_write.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_xyb.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::ToneMapPixel(JxlColorEncoding const&, float const*, unsigned char*)
196
197
template <size_t N, ExtraTF tf>
198
2.09k
static std::vector<uint16_t> CreateTableCurve(bool tone_map) {
199
  // The generated PQ curve will make room for highlights up to this luminance.
200
  // TODO(sboukortt): make this variable?
201
2.09k
  static constexpr float kPQIntensityTarget = 10000;
202
203
2.09k
  static_assert(N <= 4096, "ICC MFT2 only allows 4K entries");
204
2.09k
  static_assert(tf == ExtraTF::kPQ || tf == ExtraTF::kHLG,
205
2.09k
                "Only PQ/HLG is supported");
206
207
2.09k
  static constexpr Vector3 kLuminances{1.f / 3, 1.f / 3, 1.f / 3};
208
2.09k
  Rec2408ToneMapperBase tone_mapper(
209
2.09k
      {0.0f, kPQIntensityTarget}, {0.0f, kDefaultIntensityTarget}, kLuminances);
210
  // No point using float - LCMS converts to 16-bit for A2B/MFT.
211
2.09k
  std::vector<uint16_t> table(N);
212
136k
  for (uint32_t i = 0; i < N; ++i) {
213
134k
    const float x = static_cast<float>(i) / (N - 1);  // 1.0 at index N - 1.
214
134k
    const double dx = static_cast<double>(x);
215
    // LCMS requires EOTF (e.g. 2.4 exponent).
216
134k
    double y = (tf == ExtraTF::kHLG)
217
134k
                   ? TF_HLG_Base::DisplayFromEncoded(dx)
218
134k
                   : TF_PQ_Base::DisplayFromEncoded(kPQIntensityTarget, dx);
219
134k
    if (tone_map && tf == ExtraTF::kPQ &&
220
0
        kPQIntensityTarget > kDefaultIntensityTarget) {
221
0
      float l = y * 10000 / kPQIntensityTarget;
222
0
      Color gray{l, l, l};
223
0
      tone_mapper.ToneMap(gray);
224
0
      y = gray[0];
225
0
    }
226
134k
    JXL_DASSERT(y >= 0.0);
227
    // Clamp to table range - necessary for HLG.
228
134k
    y = Clamp1(y, 0.0, 1.0);
229
    // 1.0 corresponds to table value 0xFFFF.
230
134k
    table[i] = static_cast<uint16_t>(roundf(y * 65535.0));
231
134k
  }
232
2.09k
  return table;
233
2.09k
}
Unexecuted instantiation: encode.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_fields.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_fields.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_ans.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_ans.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_fast_lossless.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_fast_lossless.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_frame.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_frame.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_modular.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_modular.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_patch_dictionary.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_patch_dictionary.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_debug_image.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_debug_image.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_dot_dictionary.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_dot_dictionary.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_detect_dots.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_detect_dots.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_quant_weights.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_quant_weights.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_xyb.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_xyb.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_image_bundle.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_image_bundle.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_external_image.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_external_image.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_heuristics.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_heuristics.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_adaptive_quantization.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_adaptive_quantization.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_butteraugli_comparator.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_butteraugli_comparator.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_cache.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_cache.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_group.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_group.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_progressive_split.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_progressive_split.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_chroma_from_luma.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_chroma_from_luma.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_ac_strategy.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_ac_strategy.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_entropy_coder.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_entropy_coder.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
jxl_cms.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Line
Count
Source
198
791
static std::vector<uint16_t> CreateTableCurve(bool tone_map) {
199
  // The generated PQ curve will make room for highlights up to this luminance.
200
  // TODO(sboukortt): make this variable?
201
791
  static constexpr float kPQIntensityTarget = 10000;
202
203
791
  static_assert(N <= 4096, "ICC MFT2 only allows 4K entries");
204
791
  static_assert(tf == ExtraTF::kPQ || tf == ExtraTF::kHLG,
205
791
                "Only PQ/HLG is supported");
206
207
791
  static constexpr Vector3 kLuminances{1.f / 3, 1.f / 3, 1.f / 3};
208
791
  Rec2408ToneMapperBase tone_mapper(
209
791
      {0.0f, kPQIntensityTarget}, {0.0f, kDefaultIntensityTarget}, kLuminances);
210
  // No point using float - LCMS converts to 16-bit for A2B/MFT.
211
791
  std::vector<uint16_t> table(N);
212
51.4k
  for (uint32_t i = 0; i < N; ++i) {
213
50.6k
    const float x = static_cast<float>(i) / (N - 1);  // 1.0 at index N - 1.
214
50.6k
    const double dx = static_cast<double>(x);
215
    // LCMS requires EOTF (e.g. 2.4 exponent).
216
50.6k
    double y = (tf == ExtraTF::kHLG)
217
50.6k
                   ? TF_HLG_Base::DisplayFromEncoded(dx)
218
50.6k
                   : TF_PQ_Base::DisplayFromEncoded(kPQIntensityTarget, dx);
219
50.6k
    if (tone_map && tf == ExtraTF::kPQ &&
220
0
        kPQIntensityTarget > kDefaultIntensityTarget) {
221
0
      float l = y * 10000 / kPQIntensityTarget;
222
0
      Color gray{l, l, l};
223
0
      tone_mapper.ToneMap(gray);
224
0
      y = gray[0];
225
0
    }
226
50.6k
    JXL_DASSERT(y >= 0.0);
227
    // Clamp to table range - necessary for HLG.
228
50.6k
    y = Clamp1(y, 0.0, 1.0);
229
    // 1.0 corresponds to table value 0xFFFF.
230
50.6k
    table[i] = static_cast<uint16_t>(roundf(y * 65535.0));
231
50.6k
  }
232
791
  return table;
233
791
}
jxl_cms.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Line
Count
Source
198
803
static std::vector<uint16_t> CreateTableCurve(bool tone_map) {
199
  // The generated PQ curve will make room for highlights up to this luminance.
200
  // TODO(sboukortt): make this variable?
201
803
  static constexpr float kPQIntensityTarget = 10000;
202
203
803
  static_assert(N <= 4096, "ICC MFT2 only allows 4K entries");
204
803
  static_assert(tf == ExtraTF::kPQ || tf == ExtraTF::kHLG,
205
803
                "Only PQ/HLG is supported");
206
207
803
  static constexpr Vector3 kLuminances{1.f / 3, 1.f / 3, 1.f / 3};
208
803
  Rec2408ToneMapperBase tone_mapper(
209
803
      {0.0f, kPQIntensityTarget}, {0.0f, kDefaultIntensityTarget}, kLuminances);
210
  // No point using float - LCMS converts to 16-bit for A2B/MFT.
211
803
  std::vector<uint16_t> table(N);
212
52.1k
  for (uint32_t i = 0; i < N; ++i) {
213
51.3k
    const float x = static_cast<float>(i) / (N - 1);  // 1.0 at index N - 1.
214
51.3k
    const double dx = static_cast<double>(x);
215
    // LCMS requires EOTF (e.g. 2.4 exponent).
216
51.3k
    double y = (tf == ExtraTF::kHLG)
217
51.3k
                   ? TF_HLG_Base::DisplayFromEncoded(dx)
218
51.3k
                   : TF_PQ_Base::DisplayFromEncoded(kPQIntensityTarget, dx);
219
51.3k
    if (tone_map && tf == ExtraTF::kPQ &&
220
0
        kPQIntensityTarget > kDefaultIntensityTarget) {
221
0
      float l = y * 10000 / kPQIntensityTarget;
222
0
      Color gray{l, l, l};
223
0
      tone_mapper.ToneMap(gray);
224
0
      y = gray[0];
225
0
    }
226
51.3k
    JXL_DASSERT(y >= 0.0);
227
    // Clamp to table range - necessary for HLG.
228
51.3k
    y = Clamp1(y, 0.0, 1.0);
229
    // 1.0 corresponds to table value 0xFFFF.
230
51.3k
    table[i] = static_cast<uint16_t>(roundf(y * 65535.0));
231
51.3k
  }
232
803
  return table;
233
803
}
Unexecuted instantiation: enc_jpeg_data.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_jpeg_data.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: enc_encoding.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: enc_encoding.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
color_encoding_internal.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Line
Count
Source
198
359
static std::vector<uint16_t> CreateTableCurve(bool tone_map) {
199
  // The generated PQ curve will make room for highlights up to this luminance.
200
  // TODO(sboukortt): make this variable?
201
359
  static constexpr float kPQIntensityTarget = 10000;
202
203
359
  static_assert(N <= 4096, "ICC MFT2 only allows 4K entries");
204
359
  static_assert(tf == ExtraTF::kPQ || tf == ExtraTF::kHLG,
205
359
                "Only PQ/HLG is supported");
206
207
359
  static constexpr Vector3 kLuminances{1.f / 3, 1.f / 3, 1.f / 3};
208
359
  Rec2408ToneMapperBase tone_mapper(
209
359
      {0.0f, kPQIntensityTarget}, {0.0f, kDefaultIntensityTarget}, kLuminances);
210
  // No point using float - LCMS converts to 16-bit for A2B/MFT.
211
359
  std::vector<uint16_t> table(N);
212
23.3k
  for (uint32_t i = 0; i < N; ++i) {
213
22.9k
    const float x = static_cast<float>(i) / (N - 1);  // 1.0 at index N - 1.
214
22.9k
    const double dx = static_cast<double>(x);
215
    // LCMS requires EOTF (e.g. 2.4 exponent).
216
22.9k
    double y = (tf == ExtraTF::kHLG)
217
22.9k
                   ? TF_HLG_Base::DisplayFromEncoded(dx)
218
22.9k
                   : TF_PQ_Base::DisplayFromEncoded(kPQIntensityTarget, dx);
219
22.9k
    if (tone_map && tf == ExtraTF::kPQ &&
220
0
        kPQIntensityTarget > kDefaultIntensityTarget) {
221
0
      float l = y * 10000 / kPQIntensityTarget;
222
0
      Color gray{l, l, l};
223
0
      tone_mapper.ToneMap(gray);
224
0
      y = gray[0];
225
0
    }
226
22.9k
    JXL_DASSERT(y >= 0.0);
227
    // Clamp to table range - necessary for HLG.
228
22.9k
    y = Clamp1(y, 0.0, 1.0);
229
    // 1.0 corresponds to table value 0xFFFF.
230
22.9k
    table[i] = static_cast<uint16_t>(roundf(y * 65535.0));
231
22.9k
  }
232
359
  return table;
233
359
}
color_encoding_internal.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Line
Count
Source
198
144
static std::vector<uint16_t> CreateTableCurve(bool tone_map) {
199
  // The generated PQ curve will make room for highlights up to this luminance.
200
  // TODO(sboukortt): make this variable?
201
144
  static constexpr float kPQIntensityTarget = 10000;
202
203
144
  static_assert(N <= 4096, "ICC MFT2 only allows 4K entries");
204
144
  static_assert(tf == ExtraTF::kPQ || tf == ExtraTF::kHLG,
205
144
                "Only PQ/HLG is supported");
206
207
144
  static constexpr Vector3 kLuminances{1.f / 3, 1.f / 3, 1.f / 3};
208
144
  Rec2408ToneMapperBase tone_mapper(
209
144
      {0.0f, kPQIntensityTarget}, {0.0f, kDefaultIntensityTarget}, kLuminances);
210
  // No point using float - LCMS converts to 16-bit for A2B/MFT.
211
144
  std::vector<uint16_t> table(N);
212
9.36k
  for (uint32_t i = 0; i < N; ++i) {
213
9.21k
    const float x = static_cast<float>(i) / (N - 1);  // 1.0 at index N - 1.
214
9.21k
    const double dx = static_cast<double>(x);
215
    // LCMS requires EOTF (e.g. 2.4 exponent).
216
9.21k
    double y = (tf == ExtraTF::kHLG)
217
9.21k
                   ? TF_HLG_Base::DisplayFromEncoded(dx)
218
9.21k
                   : TF_PQ_Base::DisplayFromEncoded(kPQIntensityTarget, dx);
219
9.21k
    if (tone_map && tf == ExtraTF::kPQ &&
220
0
        kPQIntensityTarget > kDefaultIntensityTarget) {
221
0
      float l = y * 10000 / kPQIntensityTarget;
222
0
      Color gray{l, l, l};
223
0
      tone_mapper.ToneMap(gray);
224
0
      y = gray[0];
225
0
    }
226
9.21k
    JXL_DASSERT(y >= 0.0);
227
    // Clamp to table range - necessary for HLG.
228
9.21k
    y = Clamp1(y, 0.0, 1.0);
229
    // 1.0 corresponds to table value 0xFFFF.
230
9.21k
    table[i] = static_cast<uint16_t>(roundf(y * 65535.0));
231
9.21k
  }
232
144
  return table;
233
144
}
Unexecuted instantiation: compressed_dc.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: compressed_dc.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_cache.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: blending.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: blending.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_external_image.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_external_image.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_frame.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_frame.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_group.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_group.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_modular.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_modular.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_noise.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_noise.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_patch_dictionary.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_patch_dictionary.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: dec_xyb.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: dec_xyb.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: decode.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: epf.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: epf.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: frame_header.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: frame_header.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: image_bundle.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: image_bundle.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: image_metadata.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: image_metadata.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: luminance.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: luminance.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: passes_state.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: passes_state.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: quant_weights.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: quant_weights.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: render_pipeline.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: render_pipeline.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: low_memory_render_pipeline.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: low_memory_render_pipeline.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: simple_render_pipeline.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: simple_render_pipeline.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_blending.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_blending.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: render_pipeline_stage.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: render_pipeline_stage.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_chroma_upsampling.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_chroma_upsampling.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_cms.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_cms.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_epf.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_epf.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_from_linear.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_from_linear.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_gaborish.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_gaborish.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_noise.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_noise.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_patches.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_patches.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_splines.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_splines.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_spot.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_spot.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_to_linear.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_to_linear.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_tone_mapping.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_tone_mapping.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_upsampling.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_upsampling.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_write.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_write.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_xyb.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_xyb.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: stage_ycbcr.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: stage_ycbcr.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
Unexecuted instantiation: decode_to_jpeg.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)2>(bool)
Unexecuted instantiation: decode_to_jpeg.cc:std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > jxl::CreateTableCurve<64ul, (jxl::ExtraTF)1>(bool)
234
235
2.86k
static Status CIEXYZFromWhiteCIExy(double wx, double wy, Color& XYZ) {
236
  // Target Y = 1.
237
2.86k
  if (std::abs(wy) < 1e-12) return JXL_FAILURE("Y value is too small");
238
2.85k
  const float factor = 1 / wy;
239
2.85k
  XYZ[0] = wx * factor;
240
2.85k
  XYZ[1] = 1;
241
2.85k
  XYZ[2] = (1 - wx - wy) * factor;
242
2.85k
  return true;
243
2.86k
}
encode.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Line
Count
Source
235
15
static Status CIEXYZFromWhiteCIExy(double wx, double wy, Color& XYZ) {
236
  // Target Y = 1.
237
15
  if (std::abs(wy) < 1e-12) return JXL_FAILURE("Y value is too small");
238
15
  const float factor = 1 / wy;
239
15
  XYZ[0] = wx * factor;
240
15
  XYZ[1] = 1;
241
15
  XYZ[2] = (1 - wx - wy) * factor;
242
15
  return true;
243
15
}
Unexecuted instantiation: enc_fields.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_ans.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_frame.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_modular.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_debug_image.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_xyb.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_external_image.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_heuristics.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_cache.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_group.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
jxl_cms.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Line
Count
Source
235
1.19k
static Status CIEXYZFromWhiteCIExy(double wx, double wy, Color& XYZ) {
236
  // Target Y = 1.
237
1.19k
  if (std::abs(wy) < 1e-12) return JXL_FAILURE("Y value is too small");
238
1.19k
  const float factor = 1 / wy;
239
1.19k
  XYZ[0] = wx * factor;
240
1.19k
  XYZ[1] = 1;
241
1.19k
  XYZ[2] = (1 - wx - wy) * factor;
242
1.19k
  return true;
243
1.19k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: enc_encoding.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
color_encoding_internal.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Line
Count
Source
235
1.65k
static Status CIEXYZFromWhiteCIExy(double wx, double wy, Color& XYZ) {
236
  // Target Y = 1.
237
1.65k
  if (std::abs(wy) < 1e-12) return JXL_FAILURE("Y value is too small");
238
1.64k
  const float factor = 1 / wy;
239
1.64k
  XYZ[0] = wx * factor;
240
1.64k
  XYZ[1] = 1;
241
1.64k
  XYZ[2] = (1 - wx - wy) * factor;
242
1.64k
  return true;
243
1.65k
}
Unexecuted instantiation: compressed_dc.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_cache.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: blending.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_external_image.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_frame.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_group.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_modular.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_noise.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: dec_xyb.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: decode.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: epf.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: frame_header.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: image_bundle.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: image_metadata.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: luminance.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: passes_state.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: quant_weights.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: render_pipeline.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_blending.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_cms.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_epf.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_from_linear.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_gaborish.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_noise.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_patches.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_splines.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_spot.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_to_linear.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_upsampling.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_write.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_xyb.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::CIEXYZFromWhiteCIExy(double, double, std::__1::array<float, 3ul>&)
244
245
namespace detail {
246
247
constexpr bool kEnable3DToneMapping = JXL_ENABLE_3D_ICC_TONEMAPPING;
248
249
957k
static bool CanToneMap(const JxlColorEncoding& encoding) {
250
  // If the color space cannot be represented by a CICP tag in the ICC profile
251
  // then the rest of the profile must unambiguously identify it; we have less
252
  // freedom to do use it for tone mapping.
253
957k
  JxlTransferFunction tf = encoding.transfer_function;
254
957k
  JxlPrimaries p = encoding.primaries;
255
957k
  JxlWhitePoint wp = encoding.white_point;
256
957k
  return encoding.color_space == JXL_COLOR_SPACE_RGB &&
257
951k
         (tf == JXL_TRANSFER_FUNCTION_PQ || tf == JXL_TRANSFER_FUNCTION_HLG) &&
258
6.02k
         ((p == JXL_PRIMARIES_P3 &&
259
44
           (wp == JXL_WHITE_POINT_D65 || wp == JXL_WHITE_POINT_DCI)) ||
260
6.00k
          (p != JXL_PRIMARIES_CUSTOM && wp == JXL_WHITE_POINT_D65));
261
957k
}
encode.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Line
Count
Source
249
198
static bool CanToneMap(const JxlColorEncoding& encoding) {
250
  // If the color space cannot be represented by a CICP tag in the ICC profile
251
  // then the rest of the profile must unambiguously identify it; we have less
252
  // freedom to do use it for tone mapping.
253
198
  JxlTransferFunction tf = encoding.transfer_function;
254
198
  JxlPrimaries p = encoding.primaries;
255
198
  JxlWhitePoint wp = encoding.white_point;
256
198
  return encoding.color_space == JXL_COLOR_SPACE_RGB &&
257
168
         (tf == JXL_TRANSFER_FUNCTION_PQ || tf == JXL_TRANSFER_FUNCTION_HLG) &&
258
0
         ((p == JXL_PRIMARIES_P3 &&
259
0
           (wp == JXL_WHITE_POINT_D65 || wp == JXL_WHITE_POINT_DCI)) ||
260
0
          (p != JXL_PRIMARIES_CUSTOM && wp == JXL_WHITE_POINT_D65));
261
198
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_group.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
jxl_cms.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Line
Count
Source
249
14.6k
static bool CanToneMap(const JxlColorEncoding& encoding) {
250
  // If the color space cannot be represented by a CICP tag in the ICC profile
251
  // then the rest of the profile must unambiguously identify it; we have less
252
  // freedom to do use it for tone mapping.
253
14.6k
  JxlTransferFunction tf = encoding.transfer_function;
254
14.6k
  JxlPrimaries p = encoding.primaries;
255
14.6k
  JxlWhitePoint wp = encoding.white_point;
256
14.6k
  return encoding.color_space == JXL_COLOR_SPACE_RGB &&
257
12.1k
         (tf == JXL_TRANSFER_FUNCTION_PQ || tf == JXL_TRANSFER_FUNCTION_HLG) &&
258
4.92k
         ((p == JXL_PRIMARIES_P3 &&
259
0
           (wp == JXL_WHITE_POINT_D65 || wp == JXL_WHITE_POINT_DCI)) ||
260
4.92k
          (p != JXL_PRIMARIES_CUSTOM && wp == JXL_WHITE_POINT_D65));
261
14.6k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
color_encoding_internal.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Line
Count
Source
249
942k
static bool CanToneMap(const JxlColorEncoding& encoding) {
250
  // If the color space cannot be represented by a CICP tag in the ICC profile
251
  // then the rest of the profile must unambiguously identify it; we have less
252
  // freedom to do use it for tone mapping.
253
942k
  JxlTransferFunction tf = encoding.transfer_function;
254
942k
  JxlPrimaries p = encoding.primaries;
255
942k
  JxlWhitePoint wp = encoding.white_point;
256
942k
  return encoding.color_space == JXL_COLOR_SPACE_RGB &&
257
939k
         (tf == JXL_TRANSFER_FUNCTION_PQ || tf == JXL_TRANSFER_FUNCTION_HLG) &&
258
1.09k
         ((p == JXL_PRIMARIES_P3 &&
259
44
           (wp == JXL_WHITE_POINT_D65 || wp == JXL_WHITE_POINT_DCI)) ||
260
1.07k
          (p != JXL_PRIMARIES_CUSTOM && wp == JXL_WHITE_POINT_D65));
261
942k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: blending.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_group.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: decode.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: epf.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: frame_header.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: luminance.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: passes_state.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_write.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CanToneMap(JxlColorEncoding const&)
262
263
static void ICCComputeMD5(const std::vector<uint8_t>& data, uint8_t sum[16])
264
476k
    JXL_NO_SANITIZE("unsigned-integer-overflow") {
265
476k
  std::vector<uint8_t> data64 = data;
266
476k
  data64.push_back(128);
267
  // Add bytes such that ((size + 8) & 63) == 0.
268
476k
  size_t extra = ((64 - ((data64.size() + 8) & 63)) & 63);
269
476k
  data64.resize(data64.size() + extra, 0);
270
4.29M
  for (uint64_t i = 0; i < 64; i += 8) {
271
3.81M
    data64.push_back(static_cast<uint64_t>(data.size() << 3u) >> i);
272
3.81M
  }
273
274
476k
  static const uint32_t sineparts[64] = {
275
476k
      0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a,
276
476k
      0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
277
476k
      0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340,
278
476k
      0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
279
476k
      0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8,
280
476k
      0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
281
476k
      0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa,
282
476k
      0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
283
476k
      0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92,
284
476k
      0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
285
476k
      0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,
286
476k
  };
287
476k
  static const uint32_t shift[64] = {
288
476k
      7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
289
476k
      5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20,
290
476k
      4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
291
476k
      6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
292
476k
  };
293
294
476k
  uint32_t a0 = 0x67452301;
295
476k
  uint32_t b0 = 0xefcdab89;
296
476k
  uint32_t c0 = 0x98badcfe;
297
476k
  uint32_t d0 = 0x10325476;
298
299
4.77M
  for (size_t i = 0; i < data64.size(); i += 64) {
300
4.29M
    uint32_t a = a0;
301
4.29M
    uint32_t b = b0;
302
4.29M
    uint32_t c = c0;
303
4.29M
    uint32_t d = d0;
304
4.29M
    uint32_t f;
305
4.29M
    uint32_t g;
306
279M
    for (size_t j = 0; j < 64; j++) {
307
275M
      if (j < 16) {
308
68.7M
        f = (b & c) | ((~b) & d);
309
68.7M
        g = j;
310
206M
      } else if (j < 32) {
311
68.7M
        f = (d & b) | ((~d) & c);
312
68.7M
        g = (5 * j + 1) & 0xf;
313
137M
      } else if (j < 48) {
314
68.7M
        f = b ^ c ^ d;
315
68.7M
        g = (3 * j + 5) & 0xf;
316
68.7M
      } else {
317
68.7M
        f = c ^ (b | (~d));
318
68.7M
        g = (7 * j) & 0xf;
319
68.7M
      }
320
275M
      uint32_t dg0 = data64[i + g * 4 + 0];
321
275M
      uint32_t dg1 = data64[i + g * 4 + 1];
322
275M
      uint32_t dg2 = data64[i + g * 4 + 2];
323
275M
      uint32_t dg3 = data64[i + g * 4 + 3];
324
275M
      uint32_t u = dg0 | (dg1 << 8u) | (dg2 << 16u) | (dg3 << 24u);
325
275M
      f += a + sineparts[j] + u;
326
275M
      a = d;
327
275M
      d = c;
328
275M
      c = b;
329
275M
      b += (f << shift[j]) | (f >> (32u - shift[j]));
330
275M
    }
331
4.29M
    a0 += a;
332
4.29M
    b0 += b;
333
4.29M
    c0 += c;
334
4.29M
    d0 += d;
335
4.29M
  }
336
476k
  sum[0] = a0;
337
476k
  sum[1] = a0 >> 8u;
338
476k
  sum[2] = a0 >> 16u;
339
476k
  sum[3] = a0 >> 24u;
340
476k
  sum[4] = b0;
341
476k
  sum[5] = b0 >> 8u;
342
476k
  sum[6] = b0 >> 16u;
343
476k
  sum[7] = b0 >> 24u;
344
476k
  sum[8] = c0;
345
476k
  sum[9] = c0 >> 8u;
346
476k
  sum[10] = c0 >> 16u;
347
476k
  sum[11] = c0 >> 24u;
348
476k
  sum[12] = d0;
349
476k
  sum[13] = d0 >> 8u;
350
476k
  sum[14] = d0 >> 16u;
351
476k
  sum[15] = d0 >> 24u;
352
476k
}
encode.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Line
Count
Source
264
99
    JXL_NO_SANITIZE("unsigned-integer-overflow") {
265
99
  std::vector<uint8_t> data64 = data;
266
99
  data64.push_back(128);
267
  // Add bytes such that ((size + 8) & 63) == 0.
268
99
  size_t extra = ((64 - ((data64.size() + 8) & 63)) & 63);
269
99
  data64.resize(data64.size() + extra, 0);
270
891
  for (uint64_t i = 0; i < 64; i += 8) {
271
792
    data64.push_back(static_cast<uint64_t>(data.size() << 3u) >> i);
272
792
  }
273
274
99
  static const uint32_t sineparts[64] = {
275
99
      0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a,
276
99
      0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
277
99
      0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340,
278
99
      0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
279
99
      0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8,
280
99
      0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
281
99
      0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa,
282
99
      0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
283
99
      0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92,
284
99
      0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
285
99
      0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,
286
99
  };
287
99
  static const uint32_t shift[64] = {
288
99
      7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
289
99
      5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20,
290
99
      4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
291
99
      6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
292
99
  };
293
294
99
  uint32_t a0 = 0x67452301;
295
99
  uint32_t b0 = 0xefcdab89;
296
99
  uint32_t c0 = 0x98badcfe;
297
99
  uint32_t d0 = 0x10325476;
298
299
945
  for (size_t i = 0; i < data64.size(); i += 64) {
300
846
    uint32_t a = a0;
301
846
    uint32_t b = b0;
302
846
    uint32_t c = c0;
303
846
    uint32_t d = d0;
304
846
    uint32_t f;
305
846
    uint32_t g;
306
54.9k
    for (size_t j = 0; j < 64; j++) {
307
54.1k
      if (j < 16) {
308
13.5k
        f = (b & c) | ((~b) & d);
309
13.5k
        g = j;
310
40.6k
      } else if (j < 32) {
311
13.5k
        f = (d & b) | ((~d) & c);
312
13.5k
        g = (5 * j + 1) & 0xf;
313
27.0k
      } else if (j < 48) {
314
13.5k
        f = b ^ c ^ d;
315
13.5k
        g = (3 * j + 5) & 0xf;
316
13.5k
      } else {
317
13.5k
        f = c ^ (b | (~d));
318
13.5k
        g = (7 * j) & 0xf;
319
13.5k
      }
320
54.1k
      uint32_t dg0 = data64[i + g * 4 + 0];
321
54.1k
      uint32_t dg1 = data64[i + g * 4 + 1];
322
54.1k
      uint32_t dg2 = data64[i + g * 4 + 2];
323
54.1k
      uint32_t dg3 = data64[i + g * 4 + 3];
324
54.1k
      uint32_t u = dg0 | (dg1 << 8u) | (dg2 << 16u) | (dg3 << 24u);
325
54.1k
      f += a + sineparts[j] + u;
326
54.1k
      a = d;
327
54.1k
      d = c;
328
54.1k
      c = b;
329
54.1k
      b += (f << shift[j]) | (f >> (32u - shift[j]));
330
54.1k
    }
331
846
    a0 += a;
332
846
    b0 += b;
333
846
    c0 += c;
334
846
    d0 += d;
335
846
  }
336
99
  sum[0] = a0;
337
99
  sum[1] = a0 >> 8u;
338
99
  sum[2] = a0 >> 16u;
339
99
  sum[3] = a0 >> 24u;
340
99
  sum[4] = b0;
341
99
  sum[5] = b0 >> 8u;
342
99
  sum[6] = b0 >> 16u;
343
99
  sum[7] = b0 >> 24u;
344
99
  sum[8] = c0;
345
99
  sum[9] = c0 >> 8u;
346
99
  sum[10] = c0 >> 16u;
347
99
  sum[11] = c0 >> 24u;
348
99
  sum[12] = d0;
349
99
  sum[13] = d0 >> 8u;
350
99
  sum[14] = d0 >> 16u;
351
99
  sum[15] = d0 >> 24u;
352
99
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_group.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
jxl_cms.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Line
Count
Source
264
5.67k
    JXL_NO_SANITIZE("unsigned-integer-overflow") {
265
5.67k
  std::vector<uint8_t> data64 = data;
266
5.67k
  data64.push_back(128);
267
  // Add bytes such that ((size + 8) & 63) == 0.
268
5.67k
  size_t extra = ((64 - ((data64.size() + 8) & 63)) & 63);
269
5.67k
  data64.resize(data64.size() + extra, 0);
270
51.0k
  for (uint64_t i = 0; i < 64; i += 8) {
271
45.3k
    data64.push_back(static_cast<uint64_t>(data.size() << 3u) >> i);
272
45.3k
  }
273
274
5.67k
  static const uint32_t sineparts[64] = {
275
5.67k
      0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a,
276
5.67k
      0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
277
5.67k
      0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340,
278
5.67k
      0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
279
5.67k
      0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8,
280
5.67k
      0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
281
5.67k
      0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa,
282
5.67k
      0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
283
5.67k
      0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92,
284
5.67k
      0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
285
5.67k
      0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,
286
5.67k
  };
287
5.67k
  static const uint32_t shift[64] = {
288
5.67k
      7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
289
5.67k
      5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20,
290
5.67k
      4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
291
5.67k
      6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
292
5.67k
  };
293
294
5.67k
  uint32_t a0 = 0x67452301;
295
5.67k
  uint32_t b0 = 0xefcdab89;
296
5.67k
  uint32_t c0 = 0x98badcfe;
297
5.67k
  uint32_t d0 = 0x10325476;
298
299
63.1k
  for (size_t i = 0; i < data64.size(); i += 64) {
300
57.4k
    uint32_t a = a0;
301
57.4k
    uint32_t b = b0;
302
57.4k
    uint32_t c = c0;
303
57.4k
    uint32_t d = d0;
304
57.4k
    uint32_t f;
305
57.4k
    uint32_t g;
306
3.73M
    for (size_t j = 0; j < 64; j++) {
307
3.67M
      if (j < 16) {
308
919k
        f = (b & c) | ((~b) & d);
309
919k
        g = j;
310
2.75M
      } else if (j < 32) {
311
919k
        f = (d & b) | ((~d) & c);
312
919k
        g = (5 * j + 1) & 0xf;
313
1.83M
      } else if (j < 48) {
314
919k
        f = b ^ c ^ d;
315
919k
        g = (3 * j + 5) & 0xf;
316
919k
      } else {
317
919k
        f = c ^ (b | (~d));
318
919k
        g = (7 * j) & 0xf;
319
919k
      }
320
3.67M
      uint32_t dg0 = data64[i + g * 4 + 0];
321
3.67M
      uint32_t dg1 = data64[i + g * 4 + 1];
322
3.67M
      uint32_t dg2 = data64[i + g * 4 + 2];
323
3.67M
      uint32_t dg3 = data64[i + g * 4 + 3];
324
3.67M
      uint32_t u = dg0 | (dg1 << 8u) | (dg2 << 16u) | (dg3 << 24u);
325
3.67M
      f += a + sineparts[j] + u;
326
3.67M
      a = d;
327
3.67M
      d = c;
328
3.67M
      c = b;
329
3.67M
      b += (f << shift[j]) | (f >> (32u - shift[j]));
330
3.67M
    }
331
57.4k
    a0 += a;
332
57.4k
    b0 += b;
333
57.4k
    c0 += c;
334
57.4k
    d0 += d;
335
57.4k
  }
336
5.67k
  sum[0] = a0;
337
5.67k
  sum[1] = a0 >> 8u;
338
5.67k
  sum[2] = a0 >> 16u;
339
5.67k
  sum[3] = a0 >> 24u;
340
5.67k
  sum[4] = b0;
341
5.67k
  sum[5] = b0 >> 8u;
342
5.67k
  sum[6] = b0 >> 16u;
343
5.67k
  sum[7] = b0 >> 24u;
344
5.67k
  sum[8] = c0;
345
5.67k
  sum[9] = c0 >> 8u;
346
5.67k
  sum[10] = c0 >> 16u;
347
5.67k
  sum[11] = c0 >> 24u;
348
5.67k
  sum[12] = d0;
349
5.67k
  sum[13] = d0 >> 8u;
350
5.67k
  sum[14] = d0 >> 16u;
351
5.67k
  sum[15] = d0 >> 24u;
352
5.67k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
color_encoding_internal.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Line
Count
Source
264
471k
    JXL_NO_SANITIZE("unsigned-integer-overflow") {
265
471k
  std::vector<uint8_t> data64 = data;
266
471k
  data64.push_back(128);
267
  // Add bytes such that ((size + 8) & 63) == 0.
268
471k
  size_t extra = ((64 - ((data64.size() + 8) & 63)) & 63);
269
471k
  data64.resize(data64.size() + extra, 0);
270
4.23M
  for (uint64_t i = 0; i < 64; i += 8) {
271
3.76M
    data64.push_back(static_cast<uint64_t>(data.size() << 3u) >> i);
272
3.76M
  }
273
274
471k
  static const uint32_t sineparts[64] = {
275
471k
      0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a,
276
471k
      0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
277
471k
      0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340,
278
471k
      0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
279
471k
      0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8,
280
471k
      0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
281
471k
      0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa,
282
471k
      0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
283
471k
      0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92,
284
471k
      0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
285
471k
      0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,
286
471k
  };
287
471k
  static const uint32_t shift[64] = {
288
471k
      7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
289
471k
      5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20, 5, 9,  14, 20,
290
471k
      4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
291
471k
      6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
292
471k
  };
293
294
471k
  uint32_t a0 = 0x67452301;
295
471k
  uint32_t b0 = 0xefcdab89;
296
471k
  uint32_t c0 = 0x98badcfe;
297
471k
  uint32_t d0 = 0x10325476;
298
299
4.71M
  for (size_t i = 0; i < data64.size(); i += 64) {
300
4.23M
    uint32_t a = a0;
301
4.23M
    uint32_t b = b0;
302
4.23M
    uint32_t c = c0;
303
4.23M
    uint32_t d = d0;
304
4.23M
    uint32_t f;
305
4.23M
    uint32_t g;
306
275M
    for (size_t j = 0; j < 64; j++) {
307
271M
      if (j < 16) {
308
67.8M
        f = (b & c) | ((~b) & d);
309
67.8M
        g = j;
310
203M
      } else if (j < 32) {
311
67.8M
        f = (d & b) | ((~d) & c);
312
67.8M
        g = (5 * j + 1) & 0xf;
313
135M
      } else if (j < 48) {
314
67.8M
        f = b ^ c ^ d;
315
67.8M
        g = (3 * j + 5) & 0xf;
316
67.8M
      } else {
317
67.8M
        f = c ^ (b | (~d));
318
67.8M
        g = (7 * j) & 0xf;
319
67.8M
      }
320
271M
      uint32_t dg0 = data64[i + g * 4 + 0];
321
271M
      uint32_t dg1 = data64[i + g * 4 + 1];
322
271M
      uint32_t dg2 = data64[i + g * 4 + 2];
323
271M
      uint32_t dg3 = data64[i + g * 4 + 3];
324
271M
      uint32_t u = dg0 | (dg1 << 8u) | (dg2 << 16u) | (dg3 << 24u);
325
271M
      f += a + sineparts[j] + u;
326
271M
      a = d;
327
271M
      d = c;
328
271M
      c = b;
329
271M
      b += (f << shift[j]) | (f >> (32u - shift[j]));
330
271M
    }
331
4.23M
    a0 += a;
332
4.23M
    b0 += b;
333
4.23M
    c0 += c;
334
4.23M
    d0 += d;
335
4.23M
  }
336
471k
  sum[0] = a0;
337
471k
  sum[1] = a0 >> 8u;
338
471k
  sum[2] = a0 >> 16u;
339
471k
  sum[3] = a0 >> 24u;
340
471k
  sum[4] = b0;
341
471k
  sum[5] = b0 >> 8u;
342
471k
  sum[6] = b0 >> 16u;
343
471k
  sum[7] = b0 >> 24u;
344
471k
  sum[8] = c0;
345
471k
  sum[9] = c0 >> 8u;
346
471k
  sum[10] = c0 >> 16u;
347
471k
  sum[11] = c0 >> 24u;
348
471k
  sum[12] = d0;
349
471k
  sum[13] = d0 >> 8u;
350
471k
  sum[14] = d0 >> 16u;
351
471k
  sum[15] = d0 >> 24u;
352
471k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: blending.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_group.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: decode.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: epf.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: frame_header.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: luminance.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: passes_state.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_write.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ICCComputeMD5(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&, unsigned char*)
353
354
475k
static Status CreateICCChadMatrix(double wx, double wy, Matrix3x3& result) {
355
475k
  Matrix3x3 m;
356
475k
  if (wy == 0) {  // WhitePoint can not be pitch-black.
357
62
    return JXL_FAILURE("Invalid WhitePoint");
358
62
  }
359
475k
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, m));
360
475k
  result = m;
361
475k
  return true;
362
475k
}
encode.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
354
84
static Status CreateICCChadMatrix(double wx, double wy, Matrix3x3& result) {
355
84
  Matrix3x3 m;
356
84
  if (wy == 0) {  // WhitePoint can not be pitch-black.
357
0
    return JXL_FAILURE("Invalid WhitePoint");
358
0
  }
359
84
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, m));
360
84
  result = m;
361
84
  return true;
362
84
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
jxl_cms.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
354
6.24k
static Status CreateICCChadMatrix(double wx, double wy, Matrix3x3& result) {
355
6.24k
  Matrix3x3 m;
356
6.24k
  if (wy == 0) {  // WhitePoint can not be pitch-black.
357
54
    return JXL_FAILURE("Invalid WhitePoint");
358
54
  }
359
6.19k
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, m));
360
5.84k
  result = m;
361
5.84k
  return true;
362
6.19k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
color_encoding_internal.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
354
469k
static Status CreateICCChadMatrix(double wx, double wy, Matrix3x3& result) {
355
469k
  Matrix3x3 m;
356
469k
  if (wy == 0) {  // WhitePoint can not be pitch-black.
357
8
    return JXL_FAILURE("Invalid WhitePoint");
358
8
  }
359
469k
  JXL_RETURN_IF_ERROR(AdaptToXYZD50(wx, wy, m));
360
469k
  result = m;
361
469k
  return true;
362
469k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCChadMatrix(double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
363
364
// Creates RGB to XYZ matrix given RGB primaries and white point in xy.
365
static Status CreateICCRGBMatrix(double rx, double ry, double gx, double gy,
366
                                 double bx, double by, double wx, double wy,
367
475k
                                 Matrix3x3& result) {
368
475k
  Matrix3x3 m;
369
475k
  JXL_RETURN_IF_ERROR(PrimariesToXYZD50(rx, ry, gx, gy, bx, by, wx, wy, m));
370
474k
  result = m;
371
474k
  return true;
372
475k
}
encode.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
367
84
                                 Matrix3x3& result) {
368
84
  Matrix3x3 m;
369
84
  JXL_RETURN_IF_ERROR(PrimariesToXYZD50(rx, ry, gx, gy, bx, by, wx, wy, m));
370
84
  result = m;
371
84
  return true;
372
84
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
jxl_cms.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
367
5.84k
                                 Matrix3x3& result) {
368
5.84k
  Matrix3x3 m;
369
5.84k
  JXL_RETURN_IF_ERROR(PrimariesToXYZD50(rx, ry, gx, gy, bx, by, wx, wy, m));
370
4.88k
  result = m;
371
4.88k
  return true;
372
5.84k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
color_encoding_internal.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Line
Count
Source
367
469k
                                 Matrix3x3& result) {
368
469k
  Matrix3x3 m;
369
469k
  JXL_RETURN_IF_ERROR(PrimariesToXYZD50(rx, ry, gx, gy, bx, by, wx, wy, m));
370
469k
  result = m;
371
469k
  return true;
372
469k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCRGBMatrix(double, double, double, double, double, double, double, double, std::__1::array<std::__1::array<float, 3ul>, 3ul>&)
373
374
static void WriteICCUint32(uint32_t value, size_t pos,
375
42.8M
                           std::vector<uint8_t>* icc) {
376
42.8M
  if (icc->size() < pos + 4) icc->resize(pos + 4);
377
42.8M
  (*icc)[pos + 0] = (value >> 24u) & 255;
378
42.8M
  (*icc)[pos + 1] = (value >> 16u) & 255;
379
42.8M
  (*icc)[pos + 2] = (value >> 8u) & 255;
380
42.8M
  (*icc)[pos + 3] = value & 255;
381
42.8M
}
encode.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
375
8.25k
                           std::vector<uint8_t>* icc) {
376
8.25k
  if (icc->size() < pos + 4) icc->resize(pos + 4);
377
8.25k
  (*icc)[pos + 0] = (value >> 24u) & 255;
378
8.25k
  (*icc)[pos + 1] = (value >> 16u) & 255;
379
8.25k
  (*icc)[pos + 2] = (value >> 8u) & 255;
380
8.25k
  (*icc)[pos + 3] = value & 255;
381
8.25k
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
375
507k
                           std::vector<uint8_t>* icc) {
376
507k
  if (icc->size() < pos + 4) icc->resize(pos + 4);
377
507k
  (*icc)[pos + 0] = (value >> 24u) & 255;
378
507k
  (*icc)[pos + 1] = (value >> 16u) & 255;
379
507k
  (*icc)[pos + 2] = (value >> 8u) & 255;
380
507k
  (*icc)[pos + 3] = value & 255;
381
507k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
375
42.3M
                           std::vector<uint8_t>* icc) {
376
42.3M
  if (icc->size() < pos + 4) icc->resize(pos + 4);
377
42.3M
  (*icc)[pos + 0] = (value >> 24u) & 255;
378
42.3M
  (*icc)[pos + 1] = (value >> 16u) & 255;
379
42.3M
  (*icc)[pos + 2] = (value >> 8u) & 255;
380
42.3M
  (*icc)[pos + 3] = value & 255;
381
42.3M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::WriteICCUint32(unsigned int, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
382
383
static void WriteICCUint16(uint16_t value, size_t pos,
384
3.96M
                           std::vector<uint8_t>* icc) {
385
3.96M
  if (icc->size() < pos + 2) icc->resize(pos + 2);
386
3.96M
  (*icc)[pos + 0] = (value >> 8u) & 255;
387
3.96M
  (*icc)[pos + 1] = value & 255;
388
3.96M
}
encode.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
384
792
                           std::vector<uint8_t>* icc) {
385
792
  if (icc->size() < pos + 2) icc->resize(pos + 2);
386
792
  (*icc)[pos + 0] = (value >> 8u) & 255;
387
792
  (*icc)[pos + 1] = value & 255;
388
792
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
384
154k
                           std::vector<uint8_t>* icc) {
385
154k
  if (icc->size() < pos + 2) icc->resize(pos + 2);
386
154k
  (*icc)[pos + 0] = (value >> 8u) & 255;
387
154k
  (*icc)[pos + 1] = value & 255;
388
154k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
384
3.80M
                           std::vector<uint8_t>* icc) {
385
3.80M
  if (icc->size() < pos + 2) icc->resize(pos + 2);
386
3.80M
  (*icc)[pos + 0] = (value >> 8u) & 255;
387
3.80M
  (*icc)[pos + 1] = value & 255;
388
3.80M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::WriteICCUint16(unsigned short, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
389
390
static void WriteICCUint8(uint8_t value, size_t pos,
391
2.10M
                          std::vector<uint8_t>* icc) {
392
2.10M
  if (icc->size() < pos + 1) icc->resize(pos + 1);
393
2.10M
  (*icc)[pos] = value;
394
2.10M
}
encode.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
391
336
                          std::vector<uint8_t>* icc) {
392
336
  if (icc->size() < pos + 1) icc->resize(pos + 1);
393
336
  (*icc)[pos] = value;
394
336
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
391
89.7k
                          std::vector<uint8_t>* icc) {
392
89.7k
  if (icc->size() < pos + 1) icc->resize(pos + 1);
393
89.7k
  (*icc)[pos] = value;
394
89.7k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
391
2.01M
                          std::vector<uint8_t>* icc) {
392
2.01M
  if (icc->size() < pos + 1) icc->resize(pos + 1);
393
2.01M
  (*icc)[pos] = value;
394
2.01M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::WriteICCUint8(unsigned char, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
395
396
// Writes a 4-character tag
397
static void WriteICCTag(const char* value, size_t pos,
398
13.8M
                        std::vector<uint8_t>* icc) {
399
13.8M
  if (icc->size() < pos + 4) icc->resize(pos + 4);
400
13.8M
  memcpy(icc->data() + pos, value, 4);
401
13.8M
}
encode.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
398
2.69k
                        std::vector<uint8_t>* icc) {
399
2.69k
  if (icc->size() < pos + 4) icc->resize(pos + 4);
400
2.69k
  memcpy(icc->data() + pos, value, 4);
401
2.69k
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
398
171k
                        std::vector<uint8_t>* icc) {
399
171k
  if (icc->size() < pos + 4) icc->resize(pos + 4);
400
171k
  memcpy(icc->data() + pos, value, 4);
401
171k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
398
13.6M
                        std::vector<uint8_t>* icc) {
399
13.6M
  if (icc->size() < pos + 4) icc->resize(pos + 4);
400
13.6M
  memcpy(icc->data() + pos, value, 4);
401
13.6M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::WriteICCTag(char const*, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
402
403
static Status WriteICCS15Fixed16(float value, size_t pos,
404
12.3M
                                 std::vector<uint8_t>* icc) {
405
  // "nextafterf" for 32768.0f towards zero are:
406
  // 32767.998046875, 32767.99609375, 32767.994140625
407
  // Even the first value works well,...
408
12.3M
  bool ok = (-32767.995f <= value) && (value <= 32767.995f);
409
12.3M
  if (!ok) return JXL_FAILURE("ICC value is out of range / NaN");
410
12.3M
  int32_t i = static_cast<int32_t>(std::lround(value * 65536.0f));
411
  // Use two's complement
412
12.3M
  uint32_t u = static_cast<uint32_t>(i);
413
12.3M
  WriteICCUint32(u, pos, icc);
414
12.3M
  return true;
415
12.3M
}
encode.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
404
2.30k
                                 std::vector<uint8_t>* icc) {
405
  // "nextafterf" for 32768.0f towards zero are:
406
  // 32767.998046875, 32767.99609375, 32767.994140625
407
  // Even the first value works well,...
408
2.30k
  bool ok = (-32767.995f <= value) && (value <= 32767.995f);
409
2.30k
  if (!ok) return JXL_FAILURE("ICC value is out of range / NaN");
410
2.30k
  int32_t i = static_cast<int32_t>(std::lround(value * 65536.0f));
411
  // Use two's complement
412
2.30k
  uint32_t u = static_cast<uint32_t>(i);
413
2.30k
  WriteICCUint32(u, pos, icc);
414
2.30k
  return true;
415
2.30k
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
404
136k
                                 std::vector<uint8_t>* icc) {
405
  // "nextafterf" for 32768.0f towards zero are:
406
  // 32767.998046875, 32767.99609375, 32767.994140625
407
  // Even the first value works well,...
408
136k
  bool ok = (-32767.995f <= value) && (value <= 32767.995f);
409
136k
  if (!ok) return JXL_FAILURE("ICC value is out of range / NaN");
410
135k
  int32_t i = static_cast<int32_t>(std::lround(value * 65536.0f));
411
  // Use two's complement
412
135k
  uint32_t u = static_cast<uint32_t>(i);
413
135k
  WriteICCUint32(u, pos, icc);
414
135k
  return true;
415
136k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
404
12.2M
                                 std::vector<uint8_t>* icc) {
405
  // "nextafterf" for 32768.0f towards zero are:
406
  // 32767.998046875, 32767.99609375, 32767.994140625
407
  // Even the first value works well,...
408
12.2M
  bool ok = (-32767.995f <= value) && (value <= 32767.995f);
409
12.2M
  if (!ok) return JXL_FAILURE("ICC value is out of range / NaN");
410
12.2M
  int32_t i = static_cast<int32_t>(std::lround(value * 65536.0f));
411
  // Use two's complement
412
12.2M
  uint32_t u = static_cast<uint32_t>(i);
413
12.2M
  WriteICCUint32(u, pos, icc);
414
12.2M
  return true;
415
12.2M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::WriteICCS15Fixed16(float, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
416
417
static Status CreateICCHeader(const JxlColorEncoding& c,
418
478k
                              std::vector<uint8_t>* header) {
419
  // TODO(lode): choose color management engine name, e.g. "skia" if
420
  // integrated in skia.
421
478k
  static const char* kCmm = "jxl ";
422
423
478k
  header->resize(128, 0);
424
425
478k
  WriteICCUint32(0, 0, header);  // size, correct value filled in at end
426
478k
  WriteICCTag(kCmm, 4, header);
427
478k
  WriteICCUint32(0x04400000u, 8, header);
428
478k
  const char* profile_type =
429
478k
      c.color_space == JXL_COLOR_SPACE_XYB ? "scnr" : "mntr";
430
478k
  WriteICCTag(profile_type, 12, header);
431
478k
  WriteICCTag(c.color_space == JXL_COLOR_SPACE_GRAY ? "GRAY" : "RGB ", 16,
432
478k
              header);
433
478k
  if (kEnable3DToneMapping && CanToneMap(c)) {
434
    // We are going to use a 3D LUT for tone mapping, which will be more compact
435
    // with an 8-bit LUT to CIELAB than with a 16-bit LUT to XYZ. 8-bit XYZ
436
    // would not be viable due to XYZ being linear, whereas it is fine with
437
    // CIELAB's ~cube root.
438
62
    WriteICCTag("Lab ", 20, header);
439
478k
  } else {
440
478k
    WriteICCTag("XYZ ", 20, header);
441
478k
  }
442
443
  // Three uint32_t's date/time encoding.
444
  // TODO(lode): encode actual date and time, this is a placeholder
445
478k
  uint32_t year = 2019;
446
478k
  uint32_t month = 12;
447
478k
  uint32_t day = 1;
448
478k
  uint32_t hour = 0;
449
478k
  uint32_t minute = 0;
450
478k
  uint32_t second = 0;
451
478k
  WriteICCUint16(year, 24, header);
452
478k
  WriteICCUint16(month, 26, header);
453
478k
  WriteICCUint16(day, 28, header);
454
478k
  WriteICCUint16(hour, 30, header);
455
478k
  WriteICCUint16(minute, 32, header);
456
478k
  WriteICCUint16(second, 34, header);
457
458
478k
  WriteICCTag("acsp", 36, header);
459
478k
  WriteICCTag("APPL", 40, header);
460
478k
  WriteICCUint32(0, 44, header);  // flags
461
478k
  WriteICCUint32(0, 48, header);  // device manufacturer
462
478k
  WriteICCUint32(0, 52, header);  // device model
463
478k
  WriteICCUint32(0, 56, header);  // device attributes
464
478k
  WriteICCUint32(0, 60, header);  // device attributes
465
478k
  WriteICCUint32(static_cast<uint32_t>(c.rendering_intent), 64, header);
466
467
  // Mandatory D50 white point of profile connection space
468
478k
  WriteICCUint32(0x0000f6d6, 68, header);
469
478k
  WriteICCUint32(0x00010000, 72, header);
470
478k
  WriteICCUint32(0x0000d32d, 76, header);
471
472
478k
  WriteICCTag(kCmm, 80, header);
473
474
478k
  return true;
475
478k
}
encode.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
418
99
                              std::vector<uint8_t>* header) {
419
  // TODO(lode): choose color management engine name, e.g. "skia" if
420
  // integrated in skia.
421
99
  static const char* kCmm = "jxl ";
422
423
99
  header->resize(128, 0);
424
425
99
  WriteICCUint32(0, 0, header);  // size, correct value filled in at end
426
99
  WriteICCTag(kCmm, 4, header);
427
99
  WriteICCUint32(0x04400000u, 8, header);
428
99
  const char* profile_type =
429
99
      c.color_space == JXL_COLOR_SPACE_XYB ? "scnr" : "mntr";
430
99
  WriteICCTag(profile_type, 12, header);
431
99
  WriteICCTag(c.color_space == JXL_COLOR_SPACE_GRAY ? "GRAY" : "RGB ", 16,
432
99
              header);
433
99
  if (kEnable3DToneMapping && CanToneMap(c)) {
434
    // We are going to use a 3D LUT for tone mapping, which will be more compact
435
    // with an 8-bit LUT to CIELAB than with a 16-bit LUT to XYZ. 8-bit XYZ
436
    // would not be viable due to XYZ being linear, whereas it is fine with
437
    // CIELAB's ~cube root.
438
0
    WriteICCTag("Lab ", 20, header);
439
99
  } else {
440
99
    WriteICCTag("XYZ ", 20, header);
441
99
  }
442
443
  // Three uint32_t's date/time encoding.
444
  // TODO(lode): encode actual date and time, this is a placeholder
445
99
  uint32_t year = 2019;
446
99
  uint32_t month = 12;
447
99
  uint32_t day = 1;
448
99
  uint32_t hour = 0;
449
99
  uint32_t minute = 0;
450
99
  uint32_t second = 0;
451
99
  WriteICCUint16(year, 24, header);
452
99
  WriteICCUint16(month, 26, header);
453
99
  WriteICCUint16(day, 28, header);
454
99
  WriteICCUint16(hour, 30, header);
455
99
  WriteICCUint16(minute, 32, header);
456
99
  WriteICCUint16(second, 34, header);
457
458
99
  WriteICCTag("acsp", 36, header);
459
99
  WriteICCTag("APPL", 40, header);
460
99
  WriteICCUint32(0, 44, header);  // flags
461
99
  WriteICCUint32(0, 48, header);  // device manufacturer
462
99
  WriteICCUint32(0, 52, header);  // device model
463
99
  WriteICCUint32(0, 56, header);  // device attributes
464
99
  WriteICCUint32(0, 60, header);  // device attributes
465
99
  WriteICCUint32(static_cast<uint32_t>(c.rendering_intent), 64, header);
466
467
  // Mandatory D50 white point of profile connection space
468
99
  WriteICCUint32(0x0000f6d6, 68, header);
469
99
  WriteICCUint32(0x00010000, 72, header);
470
99
  WriteICCUint32(0x0000d32d, 76, header);
471
472
99
  WriteICCTag(kCmm, 80, header);
473
474
99
  return true;
475
99
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
418
7.43k
                              std::vector<uint8_t>* header) {
419
  // TODO(lode): choose color management engine name, e.g. "skia" if
420
  // integrated in skia.
421
7.43k
  static const char* kCmm = "jxl ";
422
423
7.43k
  header->resize(128, 0);
424
425
7.43k
  WriteICCUint32(0, 0, header);  // size, correct value filled in at end
426
7.43k
  WriteICCTag(kCmm, 4, header);
427
7.43k
  WriteICCUint32(0x04400000u, 8, header);
428
7.43k
  const char* profile_type =
429
7.43k
      c.color_space == JXL_COLOR_SPACE_XYB ? "scnr" : "mntr";
430
7.43k
  WriteICCTag(profile_type, 12, header);
431
7.43k
  WriteICCTag(c.color_space == JXL_COLOR_SPACE_GRAY ? "GRAY" : "RGB ", 16,
432
7.43k
              header);
433
7.43k
  if (kEnable3DToneMapping && CanToneMap(c)) {
434
    // We are going to use a 3D LUT for tone mapping, which will be more compact
435
    // with an 8-bit LUT to CIELAB than with a 16-bit LUT to XYZ. 8-bit XYZ
436
    // would not be viable due to XYZ being linear, whereas it is fine with
437
    // CIELAB's ~cube root.
438
24
    WriteICCTag("Lab ", 20, header);
439
7.40k
  } else {
440
7.40k
    WriteICCTag("XYZ ", 20, header);
441
7.40k
  }
442
443
  // Three uint32_t's date/time encoding.
444
  // TODO(lode): encode actual date and time, this is a placeholder
445
7.43k
  uint32_t year = 2019;
446
7.43k
  uint32_t month = 12;
447
7.43k
  uint32_t day = 1;
448
7.43k
  uint32_t hour = 0;
449
7.43k
  uint32_t minute = 0;
450
7.43k
  uint32_t second = 0;
451
7.43k
  WriteICCUint16(year, 24, header);
452
7.43k
  WriteICCUint16(month, 26, header);
453
7.43k
  WriteICCUint16(day, 28, header);
454
7.43k
  WriteICCUint16(hour, 30, header);
455
7.43k
  WriteICCUint16(minute, 32, header);
456
7.43k
  WriteICCUint16(second, 34, header);
457
458
7.43k
  WriteICCTag("acsp", 36, header);
459
7.43k
  WriteICCTag("APPL", 40, header);
460
7.43k
  WriteICCUint32(0, 44, header);  // flags
461
7.43k
  WriteICCUint32(0, 48, header);  // device manufacturer
462
7.43k
  WriteICCUint32(0, 52, header);  // device model
463
7.43k
  WriteICCUint32(0, 56, header);  // device attributes
464
7.43k
  WriteICCUint32(0, 60, header);  // device attributes
465
7.43k
  WriteICCUint32(static_cast<uint32_t>(c.rendering_intent), 64, header);
466
467
  // Mandatory D50 white point of profile connection space
468
7.43k
  WriteICCUint32(0x0000f6d6, 68, header);
469
7.43k
  WriteICCUint32(0x00010000, 72, header);
470
7.43k
  WriteICCUint32(0x0000d32d, 76, header);
471
472
7.43k
  WriteICCTag(kCmm, 80, header);
473
474
7.43k
  return true;
475
7.43k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
418
471k
                              std::vector<uint8_t>* header) {
419
  // TODO(lode): choose color management engine name, e.g. "skia" if
420
  // integrated in skia.
421
471k
  static const char* kCmm = "jxl ";
422
423
471k
  header->resize(128, 0);
424
425
471k
  WriteICCUint32(0, 0, header);  // size, correct value filled in at end
426
471k
  WriteICCTag(kCmm, 4, header);
427
471k
  WriteICCUint32(0x04400000u, 8, header);
428
471k
  const char* profile_type =
429
471k
      c.color_space == JXL_COLOR_SPACE_XYB ? "scnr" : "mntr";
430
471k
  WriteICCTag(profile_type, 12, header);
431
471k
  WriteICCTag(c.color_space == JXL_COLOR_SPACE_GRAY ? "GRAY" : "RGB ", 16,
432
471k
              header);
433
471k
  if (kEnable3DToneMapping && CanToneMap(c)) {
434
    // We are going to use a 3D LUT for tone mapping, which will be more compact
435
    // with an 8-bit LUT to CIELAB than with a 16-bit LUT to XYZ. 8-bit XYZ
436
    // would not be viable due to XYZ being linear, whereas it is fine with
437
    // CIELAB's ~cube root.
438
38
    WriteICCTag("Lab ", 20, header);
439
471k
  } else {
440
471k
    WriteICCTag("XYZ ", 20, header);
441
471k
  }
442
443
  // Three uint32_t's date/time encoding.
444
  // TODO(lode): encode actual date and time, this is a placeholder
445
471k
  uint32_t year = 2019;
446
471k
  uint32_t month = 12;
447
471k
  uint32_t day = 1;
448
471k
  uint32_t hour = 0;
449
471k
  uint32_t minute = 0;
450
471k
  uint32_t second = 0;
451
471k
  WriteICCUint16(year, 24, header);
452
471k
  WriteICCUint16(month, 26, header);
453
471k
  WriteICCUint16(day, 28, header);
454
471k
  WriteICCUint16(hour, 30, header);
455
471k
  WriteICCUint16(minute, 32, header);
456
471k
  WriteICCUint16(second, 34, header);
457
458
471k
  WriteICCTag("acsp", 36, header);
459
471k
  WriteICCTag("APPL", 40, header);
460
471k
  WriteICCUint32(0, 44, header);  // flags
461
471k
  WriteICCUint32(0, 48, header);  // device manufacturer
462
471k
  WriteICCUint32(0, 52, header);  // device model
463
471k
  WriteICCUint32(0, 56, header);  // device attributes
464
471k
  WriteICCUint32(0, 60, header);  // device attributes
465
471k
  WriteICCUint32(static_cast<uint32_t>(c.rendering_intent), 64, header);
466
467
  // Mandatory D50 white point of profile connection space
468
471k
  WriteICCUint32(0x0000f6d6, 68, header);
469
471k
  WriteICCUint32(0x00010000, 72, header);
470
471k
  WriteICCUint32(0x0000d32d, 76, header);
471
472
471k
  WriteICCTag(kCmm, 80, header);
473
474
471k
  return true;
475
471k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCHeader(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
476
477
static void AddToICCTagTable(const char* tag, size_t offset, size_t size,
478
                             std::vector<uint8_t>* tagtable,
479
5.22M
                             std::vector<size_t>* offsets) {
480
5.22M
  WriteICCTag(tag, tagtable->size(), tagtable);
481
  // writing true offset deferred to later
482
5.22M
  WriteICCUint32(0, tagtable->size(), tagtable);
483
5.22M
  offsets->push_back(offset);
484
5.22M
  WriteICCUint32(size, tagtable->size(), tagtable);
485
5.22M
}
encode.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Line
Count
Source
479
984
                             std::vector<size_t>* offsets) {
480
984
  WriteICCTag(tag, tagtable->size(), tagtable);
481
  // writing true offset deferred to later
482
984
  WriteICCUint32(0, tagtable->size(), tagtable);
483
984
  offsets->push_back(offset);
484
984
  WriteICCUint32(size, tagtable->size(), tagtable);
485
984
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
jxl_cms.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Line
Count
Source
479
56.3k
                             std::vector<size_t>* offsets) {
480
56.3k
  WriteICCTag(tag, tagtable->size(), tagtable);
481
  // writing true offset deferred to later
482
56.3k
  WriteICCUint32(0, tagtable->size(), tagtable);
483
56.3k
  offsets->push_back(offset);
484
56.3k
  WriteICCUint32(size, tagtable->size(), tagtable);
485
56.3k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
color_encoding_internal.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Line
Count
Source
479
5.16M
                             std::vector<size_t>* offsets) {
480
5.16M
  WriteICCTag(tag, tagtable->size(), tagtable);
481
  // writing true offset deferred to later
482
5.16M
  WriteICCUint32(0, tagtable->size(), tagtable);
483
5.16M
  offsets->push_back(offset);
484
5.16M
  WriteICCUint32(size, tagtable->size(), tagtable);
485
5.16M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: blending.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: decode.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: epf.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::AddToICCTagTable(char const*, unsigned long, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
486
487
static void FinalizeICCTag(std::vector<uint8_t>* tags, size_t* offset,
488
4.27M
                           size_t* size) {
489
5.24M
  while ((tags->size() & 3) != 0) {
490
969k
    tags->push_back(0);
491
969k
  }
492
4.27M
  *offset += *size;
493
4.27M
  *size = tags->size() - *offset;
494
4.27M
}
encode.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Line
Count
Source
488
816
                           size_t* size) {
489
1.05k
  while ((tags->size() & 3) != 0) {
490
238
    tags->push_back(0);
491
238
  }
492
816
  *offset += *size;
493
816
  *size = tags->size() - *offset;
494
816
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_group.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
jxl_cms.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Line
Count
Source
488
47.4k
                           size_t* size) {
489
71.0k
  while ((tags->size() & 3) != 0) {
490
23.6k
    tags->push_back(0);
491
23.6k
  }
492
47.4k
  *offset += *size;
493
47.4k
  *size = tags->size() - *offset;
494
47.4k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
color_encoding_internal.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Line
Count
Source
488
4.23M
                           size_t* size) {
489
5.17M
  while ((tags->size() & 3) != 0) {
490
946k
    tags->push_back(0);
491
946k
  }
492
4.23M
  *offset += *size;
493
4.23M
  *size = tags->size() - *offset;
494
4.23M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: blending.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_group.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: decode.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: epf.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: frame_header.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: luminance.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: passes_state.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_write.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::FinalizeICCTag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*)
495
496
// The input text must be ASCII, writing other characters to UTF-16 is not
497
// implemented.
498
static void CreateICCMlucTag(const std::string& text,
499
957k
                             std::vector<uint8_t>* tags) {
500
957k
  WriteICCTag("mluc", tags->size(), tags);
501
957k
  WriteICCUint32(0, tags->size(), tags);
502
957k
  WriteICCUint32(1, tags->size(), tags);
503
957k
  WriteICCUint32(12, tags->size(), tags);
504
957k
  WriteICCTag("enUS", tags->size(), tags);
505
957k
  WriteICCUint32(text.size() * 2, tags->size(), tags);
506
957k
  WriteICCUint32(28, tags->size(), tags);
507
3.88M
  for (char c : text) {
508
3.88M
    tags->push_back(0);  // prepend 0 for UTF-16
509
3.88M
    tags->push_back(c);
510
3.88M
  }
511
957k
}
encode.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
499
198
                             std::vector<uint8_t>* tags) {
500
198
  WriteICCTag("mluc", tags->size(), tags);
501
198
  WriteICCUint32(0, tags->size(), tags);
502
198
  WriteICCUint32(1, tags->size(), tags);
503
198
  WriteICCUint32(12, tags->size(), tags);
504
198
  WriteICCTag("enUS", tags->size(), tags);
505
198
  WriteICCUint32(text.size() * 2, tags->size(), tags);
506
198
  WriteICCUint32(28, tags->size(), tags);
507
933
  for (char c : text) {
508
933
    tags->push_back(0);  // prepend 0 for UTF-16
509
933
    tags->push_back(c);
510
933
  }
511
198
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
499
14.8k
                             std::vector<uint8_t>* tags) {
500
14.8k
  WriteICCTag("mluc", tags->size(), tags);
501
14.8k
  WriteICCUint32(0, tags->size(), tags);
502
14.8k
  WriteICCUint32(1, tags->size(), tags);
503
14.8k
  WriteICCUint32(12, tags->size(), tags);
504
14.8k
  WriteICCTag("enUS", tags->size(), tags);
505
14.8k
  WriteICCUint32(text.size() * 2, tags->size(), tags);
506
14.8k
  WriteICCUint32(28, tags->size(), tags);
507
505k
  for (char c : text) {
508
505k
    tags->push_back(0);  // prepend 0 for UTF-16
509
505k
    tags->push_back(c);
510
505k
  }
511
14.8k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
499
942k
                             std::vector<uint8_t>* tags) {
500
942k
  WriteICCTag("mluc", tags->size(), tags);
501
942k
  WriteICCUint32(0, tags->size(), tags);
502
942k
  WriteICCUint32(1, tags->size(), tags);
503
942k
  WriteICCUint32(12, tags->size(), tags);
504
942k
  WriteICCTag("enUS", tags->size(), tags);
505
942k
  WriteICCUint32(text.size() * 2, tags->size(), tags);
506
942k
  WriteICCUint32(28, tags->size(), tags);
507
3.38M
  for (char c : text) {
508
3.38M
    tags->push_back(0);  // prepend 0 for UTF-16
509
3.38M
    tags->push_back(c);
510
3.38M
  }
511
942k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCMlucTag(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
512
513
1.90M
static Status CreateICCXYZTag(const Color& xyz, std::vector<uint8_t>* tags) {
514
1.90M
  WriteICCTag("XYZ ", tags->size(), tags);
515
1.90M
  WriteICCUint32(0, tags->size(), tags);
516
7.60M
  for (size_t i = 0; i < 3; ++i) {
517
5.70M
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(xyz[i], tags->size(), tags));
518
5.70M
  }
519
1.90M
  return true;
520
1.90M
}
encode.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
513
351
static Status CreateICCXYZTag(const Color& xyz, std::vector<uint8_t>* tags) {
514
351
  WriteICCTag("XYZ ", tags->size(), tags);
515
351
  WriteICCUint32(0, tags->size(), tags);
516
1.40k
  for (size_t i = 0; i < 3; ++i) {
517
1.05k
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(xyz[i], tags->size(), tags));
518
1.05k
  }
519
351
  return true;
520
351
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
513
21.3k
static Status CreateICCXYZTag(const Color& xyz, std::vector<uint8_t>* tags) {
514
21.3k
  WriteICCTag("XYZ ", tags->size(), tags);
515
21.3k
  WriteICCUint32(0, tags->size(), tags);
516
84.6k
  for (size_t i = 0; i < 3; ++i) {
517
63.6k
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(xyz[i], tags->size(), tags));
518
63.6k
  }
519
20.9k
  return true;
520
21.3k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
513
1.87M
static Status CreateICCXYZTag(const Color& xyz, std::vector<uint8_t>* tags) {
514
1.87M
  WriteICCTag("XYZ ", tags->size(), tags);
515
1.87M
  WriteICCUint32(0, tags->size(), tags);
516
7.51M
  for (size_t i = 0; i < 3; ++i) {
517
5.63M
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(xyz[i], tags->size(), tags));
518
5.63M
  }
519
1.87M
  return true;
520
1.87M
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCXYZTag(std::__1::array<float, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
521
522
static Status CreateICCChadTag(const Matrix3x3& chad,
523
475k
                               std::vector<uint8_t>* tags) {
524
475k
  WriteICCTag("sf32", tags->size(), tags);
525
475k
  WriteICCUint32(0, tags->size(), tags);
526
1.90M
  for (size_t j = 0; j < 3; j++) {
527
5.70M
    for (size_t i = 0; i < 3; i++) {
528
4.27M
      JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(chad[j][i], tags->size(), tags));
529
4.27M
    }
530
1.42M
  }
531
475k
  return true;
532
475k
}
encode.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
523
84
                               std::vector<uint8_t>* tags) {
524
84
  WriteICCTag("sf32", tags->size(), tags);
525
84
  WriteICCUint32(0, tags->size(), tags);
526
336
  for (size_t j = 0; j < 3; j++) {
527
1.00k
    for (size_t i = 0; i < 3; i++) {
528
756
      JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(chad[j][i], tags->size(), tags));
529
756
    }
530
252
  }
531
84
  return true;
532
84
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
523
5.84k
                               std::vector<uint8_t>* tags) {
524
5.84k
  WriteICCTag("sf32", tags->size(), tags);
525
5.84k
  WriteICCUint32(0, tags->size(), tags);
526
23.3k
  for (size_t j = 0; j < 3; j++) {
527
70.1k
    for (size_t i = 0; i < 3; i++) {
528
52.5k
      JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(chad[j][i], tags->size(), tags));
529
52.5k
    }
530
17.5k
  }
531
5.84k
  return true;
532
5.84k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
523
469k
                               std::vector<uint8_t>* tags) {
524
469k
  WriteICCTag("sf32", tags->size(), tags);
525
469k
  WriteICCUint32(0, tags->size(), tags);
526
1.87M
  for (size_t j = 0; j < 3; j++) {
527
5.63M
    for (size_t i = 0; i < 3; i++) {
528
4.22M
      JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(chad[j][i], tags->size(), tags));
529
4.22M
    }
530
1.40M
  }
531
469k
  return true;
532
469k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCChadTag(std::__1::array<std::__1::array<float, 3ul>, 3ul> const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
533
534
static void MaybeCreateICCCICPTag(const JxlColorEncoding& c,
535
                                  std::vector<uint8_t>* tags, size_t* offset,
536
                                  size_t* size, std::vector<uint8_t>* tagtable,
537
475k
                                  std::vector<size_t>* offsets) {
538
475k
  if (c.color_space != JXL_COLOR_SPACE_RGB) {
539
0
    return;
540
0
  }
541
475k
  uint8_t primaries = 0;
542
475k
  if (c.primaries == JXL_PRIMARIES_P3) {
543
66
    if (c.white_point == JXL_WHITE_POINT_D65) {
544
22
      primaries = 12;
545
44
    } else if (c.white_point == JXL_WHITE_POINT_DCI) {
546
10
      primaries = 11;
547
34
    } else {
548
34
      return;
549
34
    }
550
475k
  } else if (c.primaries != JXL_PRIMARIES_CUSTOM &&
551
469k
             c.white_point == JXL_WHITE_POINT_D65) {
552
468k
    primaries = static_cast<uint8_t>(c.primaries);
553
468k
  } else {
554
6.55k
    return;
555
6.55k
  }
556
468k
  JxlTransferFunction tf = c.transfer_function;
557
468k
  if (tf == JXL_TRANSFER_FUNCTION_UNKNOWN ||
558
468k
      tf == JXL_TRANSFER_FUNCTION_GAMMA) {
559
90
    return;
560
90
  }
561
468k
  WriteICCTag("cicp", tags->size(), tags);
562
468k
  WriteICCUint32(0, tags->size(), tags);
563
468k
  WriteICCUint8(primaries, tags->size(), tags);
564
468k
  WriteICCUint8(static_cast<uint8_t>(tf), tags->size(), tags);
565
  // Matrix
566
468k
  WriteICCUint8(0, tags->size(), tags);
567
  // Full range
568
468k
  WriteICCUint8(1, tags->size(), tags);
569
468k
  FinalizeICCTag(tags, offset, size);
570
468k
  AddToICCTagTable("cicp", *offset, *size, tagtable, offsets);
571
468k
}
encode.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Line
Count
Source
537
84
                                  std::vector<size_t>* offsets) {
538
84
  if (c.color_space != JXL_COLOR_SPACE_RGB) {
539
0
    return;
540
0
  }
541
84
  uint8_t primaries = 0;
542
84
  if (c.primaries == JXL_PRIMARIES_P3) {
543
0
    if (c.white_point == JXL_WHITE_POINT_D65) {
544
0
      primaries = 12;
545
0
    } else if (c.white_point == JXL_WHITE_POINT_DCI) {
546
0
      primaries = 11;
547
0
    } else {
548
0
      return;
549
0
    }
550
84
  } else if (c.primaries != JXL_PRIMARIES_CUSTOM &&
551
84
             c.white_point == JXL_WHITE_POINT_D65) {
552
84
    primaries = static_cast<uint8_t>(c.primaries);
553
84
  } else {
554
0
    return;
555
0
  }
556
84
  JxlTransferFunction tf = c.transfer_function;
557
84
  if (tf == JXL_TRANSFER_FUNCTION_UNKNOWN ||
558
84
      tf == JXL_TRANSFER_FUNCTION_GAMMA) {
559
0
    return;
560
0
  }
561
84
  WriteICCTag("cicp", tags->size(), tags);
562
84
  WriteICCUint32(0, tags->size(), tags);
563
84
  WriteICCUint8(primaries, tags->size(), tags);
564
84
  WriteICCUint8(static_cast<uint8_t>(tf), tags->size(), tags);
565
  // Matrix
566
84
  WriteICCUint8(0, tags->size(), tags);
567
  // Full range
568
84
  WriteICCUint8(1, tags->size(), tags);
569
84
  FinalizeICCTag(tags, offset, size);
570
84
  AddToICCTagTable("cicp", *offset, *size, tagtable, offsets);
571
84
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
jxl_cms.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Line
Count
Source
537
5.84k
                                  std::vector<size_t>* offsets) {
538
5.84k
  if (c.color_space != JXL_COLOR_SPACE_RGB) {
539
0
    return;
540
0
  }
541
5.84k
  uint8_t primaries = 0;
542
5.84k
  if (c.primaries == JXL_PRIMARIES_P3) {
543
6
    if (c.white_point == JXL_WHITE_POINT_D65) {
544
0
      primaries = 12;
545
6
    } else if (c.white_point == JXL_WHITE_POINT_DCI) {
546
0
      primaries = 11;
547
6
    } else {
548
6
      return;
549
6
    }
550
5.83k
  } else if (c.primaries != JXL_PRIMARIES_CUSTOM &&
551
306
             c.white_point == JXL_WHITE_POINT_D65) {
552
75
    primaries = static_cast<uint8_t>(c.primaries);
553
5.76k
  } else {
554
5.76k
    return;
555
5.76k
  }
556
75
  JxlTransferFunction tf = c.transfer_function;
557
75
  if (tf == JXL_TRANSFER_FUNCTION_UNKNOWN ||
558
75
      tf == JXL_TRANSFER_FUNCTION_GAMMA) {
559
3
    return;
560
3
  }
561
72
  WriteICCTag("cicp", tags->size(), tags);
562
72
  WriteICCUint32(0, tags->size(), tags);
563
72
  WriteICCUint8(primaries, tags->size(), tags);
564
72
  WriteICCUint8(static_cast<uint8_t>(tf), tags->size(), tags);
565
  // Matrix
566
72
  WriteICCUint8(0, tags->size(), tags);
567
  // Full range
568
72
  WriteICCUint8(1, tags->size(), tags);
569
72
  FinalizeICCTag(tags, offset, size);
570
72
  AddToICCTagTable("cicp", *offset, *size, tagtable, offsets);
571
72
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
color_encoding_internal.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Line
Count
Source
537
469k
                                  std::vector<size_t>* offsets) {
538
469k
  if (c.color_space != JXL_COLOR_SPACE_RGB) {
539
0
    return;
540
0
  }
541
469k
  uint8_t primaries = 0;
542
469k
  if (c.primaries == JXL_PRIMARIES_P3) {
543
60
    if (c.white_point == JXL_WHITE_POINT_D65) {
544
22
      primaries = 12;
545
38
    } else if (c.white_point == JXL_WHITE_POINT_DCI) {
546
10
      primaries = 11;
547
28
    } else {
548
28
      return;
549
28
    }
550
469k
  } else if (c.primaries != JXL_PRIMARIES_CUSTOM &&
551
468k
             c.white_point == JXL_WHITE_POINT_D65) {
552
468k
    primaries = static_cast<uint8_t>(c.primaries);
553
468k
  } else {
554
790
    return;
555
790
  }
556
468k
  JxlTransferFunction tf = c.transfer_function;
557
468k
  if (tf == JXL_TRANSFER_FUNCTION_UNKNOWN ||
558
468k
      tf == JXL_TRANSFER_FUNCTION_GAMMA) {
559
87
    return;
560
87
  }
561
468k
  WriteICCTag("cicp", tags->size(), tags);
562
468k
  WriteICCUint32(0, tags->size(), tags);
563
468k
  WriteICCUint8(primaries, tags->size(), tags);
564
468k
  WriteICCUint8(static_cast<uint8_t>(tf), tags->size(), tags);
565
  // Matrix
566
468k
  WriteICCUint8(0, tags->size(), tags);
567
  // Full range
568
468k
  WriteICCUint8(1, tags->size(), tags);
569
468k
  FinalizeICCTag(tags, offset, size);
570
468k
  AddToICCTagTable("cicp", *offset, *size, tagtable, offsets);
571
468k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: blending.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: decode.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: epf.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::MaybeCreateICCCICPTag(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned long*, unsigned long*, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*)
572
573
static void CreateICCCurvCurvTag(const std::vector<uint16_t>& curve,
574
2.09k
                                 std::vector<uint8_t>* tags) {
575
2.09k
  size_t pos = tags->size();
576
2.09k
  tags->resize(tags->size() + 12 + curve.size() * 2, 0);
577
2.09k
  WriteICCTag("curv", pos, tags);
578
2.09k
  WriteICCUint32(0, pos + 4, tags);
579
2.09k
  WriteICCUint32(curve.size(), pos + 8, tags);
580
136k
  for (size_t i = 0; i < curve.size(); i++) {
581
134k
    WriteICCUint16(curve[i], pos + 12 + i * 2, tags);
582
134k
  }
583
2.09k
}
Unexecuted instantiation: encode.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
574
1.59k
                                 std::vector<uint8_t>* tags) {
575
1.59k
  size_t pos = tags->size();
576
1.59k
  tags->resize(tags->size() + 12 + curve.size() * 2, 0);
577
1.59k
  WriteICCTag("curv", pos, tags);
578
1.59k
  WriteICCUint32(0, pos + 4, tags);
579
1.59k
  WriteICCUint32(curve.size(), pos + 8, tags);
580
103k
  for (size_t i = 0; i < curve.size(); i++) {
581
102k
    WriteICCUint16(curve[i], pos + 12 + i * 2, tags);
582
102k
  }
583
1.59k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
574
503
                                 std::vector<uint8_t>* tags) {
575
503
  size_t pos = tags->size();
576
503
  tags->resize(tags->size() + 12 + curve.size() * 2, 0);
577
503
  WriteICCTag("curv", pos, tags);
578
503
  WriteICCUint32(0, pos + 4, tags);
579
503
  WriteICCUint32(curve.size(), pos + 8, tags);
580
32.6k
  for (size_t i = 0; i < curve.size(); i++) {
581
32.1k
    WriteICCUint16(curve[i], pos + 12 + i * 2, tags);
582
32.1k
  }
583
503
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCCurvCurvTag(std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
584
585
// Writes 12 + 4*params.size() bytes
586
static Status CreateICCCurvParaTag(const std::vector<float>& params,
587
                                   size_t curve_type,
588
476k
                                   std::vector<uint8_t>* tags) {
589
476k
  WriteICCTag("para", tags->size(), tags);
590
476k
  WriteICCUint32(0, tags->size(), tags);
591
476k
  WriteICCUint16(curve_type, tags->size(), tags);
592
476k
  WriteICCUint16(0, tags->size(), tags);
593
2.37M
  for (float param : params) {
594
2.37M
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(param, tags->size(), tags));
595
2.37M
  }
596
476k
  return true;
597
476k
}
encode.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
588
99
                                   std::vector<uint8_t>* tags) {
589
99
  WriteICCTag("para", tags->size(), tags);
590
99
  WriteICCUint32(0, tags->size(), tags);
591
99
  WriteICCUint16(curve_type, tags->size(), tags);
592
99
  WriteICCUint16(0, tags->size(), tags);
593
495
  for (float param : params) {
594
495
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(param, tags->size(), tags));
595
495
  }
596
99
  return true;
597
99
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
588
4.12k
                                   std::vector<uint8_t>* tags) {
589
4.12k
  WriteICCTag("para", tags->size(), tags);
590
4.12k
  WriteICCUint32(0, tags->size(), tags);
591
4.12k
  WriteICCUint16(curve_type, tags->size(), tags);
592
4.12k
  WriteICCUint16(0, tags->size(), tags);
593
19.6k
  for (float param : params) {
594
19.6k
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(param, tags->size(), tags));
595
19.6k
  }
596
4.12k
  return true;
597
4.12k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
588
472k
                                   std::vector<uint8_t>* tags) {
589
472k
  WriteICCTag("para", tags->size(), tags);
590
472k
  WriteICCUint32(0, tags->size(), tags);
591
472k
  WriteICCUint16(curve_type, tags->size(), tags);
592
472k
  WriteICCUint16(0, tags->size(), tags);
593
2.35M
  for (float param : params) {
594
2.35M
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(param, tags->size(), tags));
595
2.35M
  }
596
472k
  return true;
597
472k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCCurvParaTag(std::__1::vector<float, std::__1::allocator<float> > const&, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
598
599
177
static Status CreateICCLutAtoBTagForXYB(std::vector<uint8_t>* tags) {
600
177
  WriteICCTag("mAB ", tags->size(), tags);
601
  // 4 reserved bytes set to 0
602
177
  WriteICCUint32(0, tags->size(), tags);
603
  // number of input channels
604
177
  WriteICCUint8(3, tags->size(), tags);
605
  // number of output channels
606
177
  WriteICCUint8(3, tags->size(), tags);
607
  // 2 reserved bytes for padding
608
177
  WriteICCUint16(0, tags->size(), tags);
609
  // offset to first B curve
610
177
  WriteICCUint32(32, tags->size(), tags);
611
  // offset to matrix
612
177
  WriteICCUint32(244, tags->size(), tags);
613
  // offset to first M curve
614
177
  WriteICCUint32(148, tags->size(), tags);
615
  // offset to CLUT
616
177
  WriteICCUint32(80, tags->size(), tags);
617
  // offset to first A curve
618
  // (reuse linear B curves)
619
177
  WriteICCUint32(32, tags->size(), tags);
620
621
  // offset = 32
622
  // no-op curves
623
177
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
624
177
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
625
177
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
626
  // offset = 80
627
  // number of grid points for each input channel
628
3.00k
  for (int i = 0; i < 16; ++i) {
629
2.83k
    WriteICCUint8(i < 3 ? 2 : 0, tags->size(), tags);
630
2.83k
  }
631
  // precision = 2
632
177
  WriteICCUint8(2, tags->size(), tags);
633
  // 3 bytes of padding
634
177
  WriteICCUint8(0, tags->size(), tags);
635
177
  WriteICCUint16(0, tags->size(), tags);
636
  // 2*2*2*3 entries of 2 bytes each = 48 bytes
637
177
  const jxl::cms::ColorCube3D& cube = jxl::cms::UnscaledA2BCube();
638
531
  for (size_t ix = 0; ix < 2; ++ix) {
639
1.06k
    for (size_t iy = 0; iy < 2; ++iy) {
640
2.12k
      for (size_t ib = 0; ib < 2; ++ib) {
641
1.41k
        const jxl::cms::ColorCube0D& out_f = cube[ix][iy][ib];
642
5.66k
        for (int i = 0; i < 3; ++i) {
643
4.24k
          int32_t val = static_cast<int32_t>(std::lroundf(65535 * out_f[i]));
644
4.24k
          JXL_DASSERT(val >= 0 && val <= 65535);
645
4.24k
          WriteICCUint16(val, tags->size(), tags);
646
4.24k
        }
647
1.41k
      }
648
708
    }
649
354
  }
650
  // offset = 148
651
  // 3 curves with 5 parameters = 3 * (12 + 5 * 4) = 96 bytes
652
708
  for (size_t i = 0; i < 3; ++i) {
653
531
    const float b = -jxl::cms::kXYBOffset[i] -
654
531
                    std::cbrt(jxl::cms::kNegOpsinAbsorbanceBiasRGB[i]);
655
531
    std::vector<float> params = {
656
531
        3,
657
531
        1.0f / jxl::cms::kXYBScale[i],
658
531
        b,
659
531
        0,                                           // unused
660
531
        std::max(0.f, -b * jxl::cms::kXYBScale[i]),  // make skcms happy
661
531
    };
662
531
    JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(params, 3, tags));
663
531
  }
664
  // offset = 244
665
177
  const double matrix[] = {1.5170095, -1.1065225, 0.071623,
666
177
                           -0.050022, 0.5683655,  -0.018344,
667
177
                           -1.387676, 1.1145555,  0.6857255};
668
  // 12 * 4 = 48 bytes
669
1.59k
  for (double v : matrix) {
670
1.59k
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(v, tags->size(), tags));
671
1.59k
  }
672
708
  for (size_t i = 0; i < 3; ++i) {
673
531
    float intercept = 0;
674
2.12k
    for (size_t j = 0; j < 3; ++j) {
675
1.59k
      intercept += matrix[i * 3 + j] * jxl::cms::kNegOpsinAbsorbanceBiasRGB[j];
676
1.59k
    }
677
531
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(intercept, tags->size(), tags));
678
531
  }
679
177
  return true;
680
177
}
Unexecuted instantiation: encode.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: jxl_cms.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
599
177
static Status CreateICCLutAtoBTagForXYB(std::vector<uint8_t>* tags) {
600
177
  WriteICCTag("mAB ", tags->size(), tags);
601
  // 4 reserved bytes set to 0
602
177
  WriteICCUint32(0, tags->size(), tags);
603
  // number of input channels
604
177
  WriteICCUint8(3, tags->size(), tags);
605
  // number of output channels
606
177
  WriteICCUint8(3, tags->size(), tags);
607
  // 2 reserved bytes for padding
608
177
  WriteICCUint16(0, tags->size(), tags);
609
  // offset to first B curve
610
177
  WriteICCUint32(32, tags->size(), tags);
611
  // offset to matrix
612
177
  WriteICCUint32(244, tags->size(), tags);
613
  // offset to first M curve
614
177
  WriteICCUint32(148, tags->size(), tags);
615
  // offset to CLUT
616
177
  WriteICCUint32(80, tags->size(), tags);
617
  // offset to first A curve
618
  // (reuse linear B curves)
619
177
  WriteICCUint32(32, tags->size(), tags);
620
621
  // offset = 32
622
  // no-op curves
623
177
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
624
177
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
625
177
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
626
  // offset = 80
627
  // number of grid points for each input channel
628
3.00k
  for (int i = 0; i < 16; ++i) {
629
2.83k
    WriteICCUint8(i < 3 ? 2 : 0, tags->size(), tags);
630
2.83k
  }
631
  // precision = 2
632
177
  WriteICCUint8(2, tags->size(), tags);
633
  // 3 bytes of padding
634
177
  WriteICCUint8(0, tags->size(), tags);
635
177
  WriteICCUint16(0, tags->size(), tags);
636
  // 2*2*2*3 entries of 2 bytes each = 48 bytes
637
177
  const jxl::cms::ColorCube3D& cube = jxl::cms::UnscaledA2BCube();
638
531
  for (size_t ix = 0; ix < 2; ++ix) {
639
1.06k
    for (size_t iy = 0; iy < 2; ++iy) {
640
2.12k
      for (size_t ib = 0; ib < 2; ++ib) {
641
1.41k
        const jxl::cms::ColorCube0D& out_f = cube[ix][iy][ib];
642
5.66k
        for (int i = 0; i < 3; ++i) {
643
4.24k
          int32_t val = static_cast<int32_t>(std::lroundf(65535 * out_f[i]));
644
4.24k
          JXL_DASSERT(val >= 0 && val <= 65535);
645
4.24k
          WriteICCUint16(val, tags->size(), tags);
646
4.24k
        }
647
1.41k
      }
648
708
    }
649
354
  }
650
  // offset = 148
651
  // 3 curves with 5 parameters = 3 * (12 + 5 * 4) = 96 bytes
652
708
  for (size_t i = 0; i < 3; ++i) {
653
531
    const float b = -jxl::cms::kXYBOffset[i] -
654
531
                    std::cbrt(jxl::cms::kNegOpsinAbsorbanceBiasRGB[i]);
655
531
    std::vector<float> params = {
656
531
        3,
657
531
        1.0f / jxl::cms::kXYBScale[i],
658
531
        b,
659
531
        0,                                           // unused
660
531
        std::max(0.f, -b * jxl::cms::kXYBScale[i]),  // make skcms happy
661
531
    };
662
531
    JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(params, 3, tags));
663
531
  }
664
  // offset = 244
665
177
  const double matrix[] = {1.5170095, -1.1065225, 0.071623,
666
177
                           -0.050022, 0.5683655,  -0.018344,
667
177
                           -1.387676, 1.1145555,  0.6857255};
668
  // 12 * 4 = 48 bytes
669
1.59k
  for (double v : matrix) {
670
1.59k
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(v, tags->size(), tags));
671
1.59k
  }
672
708
  for (size_t i = 0; i < 3; ++i) {
673
531
    float intercept = 0;
674
2.12k
    for (size_t j = 0; j < 3; ++j) {
675
1.59k
      intercept += matrix[i * 3 + j] * jxl::cms::kNegOpsinAbsorbanceBiasRGB[j];
676
1.59k
    }
677
531
    JXL_RETURN_IF_ERROR(WriteICCS15Fixed16(intercept, tags->size(), tags));
678
531
  }
679
177
  return true;
680
177
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCLutAtoBTagForXYB(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
681
682
static Status CreateICCLutAtoBTagForHDR(JxlColorEncoding color_encoding,
683
62
                                        std::vector<uint8_t>* tags) {
684
62
  static constexpr size_t k3DLutDim = 9;
685
62
  WriteICCTag("mft1", tags->size(), tags);
686
  // 4 reserved bytes set to 0
687
62
  WriteICCUint32(0, tags->size(), tags);
688
  // number of input channels
689
62
  WriteICCUint8(3, tags->size(), tags);
690
  // number of output channels
691
62
  WriteICCUint8(3, tags->size(), tags);
692
  // number of CLUT grid points
693
62
  WriteICCUint8(k3DLutDim, tags->size(), tags);
694
  // 1 reserved bytes for padding
695
62
  WriteICCUint8(0, tags->size(), tags);
696
697
  // Matrix (per specification, must be identity if input is not XYZ)
698
248
  for (size_t i = 0; i < 3; ++i) {
699
744
    for (size_t j = 0; j < 3; ++j) {
700
558
      JXL_RETURN_IF_ERROR(
701
558
          WriteICCS15Fixed16(i == j ? 1.f : 0.f, tags->size(), tags));
702
558
    }
703
186
  }
704
705
  // Input tables
706
248
  for (size_t c = 0; c < 3; ++c) {
707
47.8k
    for (size_t i = 0; i < 256; ++i) {
708
47.6k
      WriteICCUint8(i, tags->size(), tags);
709
47.6k
    }
710
186
  }
711
712
620
  for (size_t ix = 0; ix < k3DLutDim; ++ix) {
713
5.58k
    for (size_t iy = 0; iy < k3DLutDim; ++iy) {
714
50.2k
      for (size_t ib = 0; ib < k3DLutDim; ++ib) {
715
45.1k
        float f[3] = {ix * (1.0f / (k3DLutDim - 1)),
716
45.1k
                      iy * (1.0f / (k3DLutDim - 1)),
717
45.1k
                      ib * (1.0f / (k3DLutDim - 1))};
718
45.1k
        uint8_t pcslab_out[3];
719
45.1k
        JXL_RETURN_IF_ERROR(ToneMapPixel(color_encoding, f, pcslab_out));
720
135k
        for (uint8_t val : pcslab_out) {
721
135k
          WriteICCUint8(val, tags->size(), tags);
722
135k
        }
723
45.1k
      }
724
5.02k
    }
725
558
  }
726
727
  // Output tables
728
248
  for (size_t c = 0; c < 3; ++c) {
729
47.8k
    for (size_t i = 0; i < 256; ++i) {
730
47.6k
      WriteICCUint8(i, tags->size(), tags);
731
47.6k
    }
732
186
  }
733
734
62
  return true;
735
62
}
Unexecuted instantiation: encode.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
683
24
                                        std::vector<uint8_t>* tags) {
684
24
  static constexpr size_t k3DLutDim = 9;
685
24
  WriteICCTag("mft1", tags->size(), tags);
686
  // 4 reserved bytes set to 0
687
24
  WriteICCUint32(0, tags->size(), tags);
688
  // number of input channels
689
24
  WriteICCUint8(3, tags->size(), tags);
690
  // number of output channels
691
24
  WriteICCUint8(3, tags->size(), tags);
692
  // number of CLUT grid points
693
24
  WriteICCUint8(k3DLutDim, tags->size(), tags);
694
  // 1 reserved bytes for padding
695
24
  WriteICCUint8(0, tags->size(), tags);
696
697
  // Matrix (per specification, must be identity if input is not XYZ)
698
96
  for (size_t i = 0; i < 3; ++i) {
699
288
    for (size_t j = 0; j < 3; ++j) {
700
216
      JXL_RETURN_IF_ERROR(
701
216
          WriteICCS15Fixed16(i == j ? 1.f : 0.f, tags->size(), tags));
702
216
    }
703
72
  }
704
705
  // Input tables
706
96
  for (size_t c = 0; c < 3; ++c) {
707
18.5k
    for (size_t i = 0; i < 256; ++i) {
708
18.4k
      WriteICCUint8(i, tags->size(), tags);
709
18.4k
    }
710
72
  }
711
712
240
  for (size_t ix = 0; ix < k3DLutDim; ++ix) {
713
2.16k
    for (size_t iy = 0; iy < k3DLutDim; ++iy) {
714
19.4k
      for (size_t ib = 0; ib < k3DLutDim; ++ib) {
715
17.4k
        float f[3] = {ix * (1.0f / (k3DLutDim - 1)),
716
17.4k
                      iy * (1.0f / (k3DLutDim - 1)),
717
17.4k
                      ib * (1.0f / (k3DLutDim - 1))};
718
17.4k
        uint8_t pcslab_out[3];
719
17.4k
        JXL_RETURN_IF_ERROR(ToneMapPixel(color_encoding, f, pcslab_out));
720
52.4k
        for (uint8_t val : pcslab_out) {
721
52.4k
          WriteICCUint8(val, tags->size(), tags);
722
52.4k
        }
723
17.4k
      }
724
1.94k
    }
725
216
  }
726
727
  // Output tables
728
96
  for (size_t c = 0; c < 3; ++c) {
729
18.5k
    for (size_t i = 0; i < 256; ++i) {
730
18.4k
      WriteICCUint8(i, tags->size(), tags);
731
18.4k
    }
732
72
  }
733
734
24
  return true;
735
24
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
683
38
                                        std::vector<uint8_t>* tags) {
684
38
  static constexpr size_t k3DLutDim = 9;
685
38
  WriteICCTag("mft1", tags->size(), tags);
686
  // 4 reserved bytes set to 0
687
38
  WriteICCUint32(0, tags->size(), tags);
688
  // number of input channels
689
38
  WriteICCUint8(3, tags->size(), tags);
690
  // number of output channels
691
38
  WriteICCUint8(3, tags->size(), tags);
692
  // number of CLUT grid points
693
38
  WriteICCUint8(k3DLutDim, tags->size(), tags);
694
  // 1 reserved bytes for padding
695
38
  WriteICCUint8(0, tags->size(), tags);
696
697
  // Matrix (per specification, must be identity if input is not XYZ)
698
152
  for (size_t i = 0; i < 3; ++i) {
699
456
    for (size_t j = 0; j < 3; ++j) {
700
342
      JXL_RETURN_IF_ERROR(
701
342
          WriteICCS15Fixed16(i == j ? 1.f : 0.f, tags->size(), tags));
702
342
    }
703
114
  }
704
705
  // Input tables
706
152
  for (size_t c = 0; c < 3; ++c) {
707
29.2k
    for (size_t i = 0; i < 256; ++i) {
708
29.1k
      WriteICCUint8(i, tags->size(), tags);
709
29.1k
    }
710
114
  }
711
712
380
  for (size_t ix = 0; ix < k3DLutDim; ++ix) {
713
3.42k
    for (size_t iy = 0; iy < k3DLutDim; ++iy) {
714
30.7k
      for (size_t ib = 0; ib < k3DLutDim; ++ib) {
715
27.7k
        float f[3] = {ix * (1.0f / (k3DLutDim - 1)),
716
27.7k
                      iy * (1.0f / (k3DLutDim - 1)),
717
27.7k
                      ib * (1.0f / (k3DLutDim - 1))};
718
27.7k
        uint8_t pcslab_out[3];
719
27.7k
        JXL_RETURN_IF_ERROR(ToneMapPixel(color_encoding, f, pcslab_out));
720
83.1k
        for (uint8_t val : pcslab_out) {
721
83.1k
          WriteICCUint8(val, tags->size(), tags);
722
83.1k
        }
723
27.7k
      }
724
3.07k
    }
725
342
  }
726
727
  // Output tables
728
152
  for (size_t c = 0; c < 3; ++c) {
729
29.2k
    for (size_t i = 0; i < 256; ++i) {
730
29.1k
      WriteICCUint8(i, tags->size(), tags);
731
29.1k
    }
732
114
  }
733
734
38
  return true;
735
38
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCLutAtoBTagForHDR(JxlColorEncoding, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
736
737
// Some software (Apple Safari, Preview) requires this.
738
239
static Status CreateICCNoOpBToATag(std::vector<uint8_t>* tags) {
739
239
  WriteICCTag("mBA ", tags->size(), tags);  // notypo
740
  // 4 reserved bytes set to 0
741
239
  WriteICCUint32(0, tags->size(), tags);
742
  // number of input channels
743
239
  WriteICCUint8(3, tags->size(), tags);
744
  // number of output channels
745
239
  WriteICCUint8(3, tags->size(), tags);
746
  // 2 reserved bytes for padding
747
239
  WriteICCUint16(0, tags->size(), tags);
748
  // offset to first B curve
749
239
  WriteICCUint32(32, tags->size(), tags);
750
  // offset to matrix
751
239
  WriteICCUint32(0, tags->size(), tags);
752
  // offset to first M curve
753
239
  WriteICCUint32(0, tags->size(), tags);
754
  // offset to CLUT
755
239
  WriteICCUint32(0, tags->size(), tags);
756
  // offset to first A curve
757
239
  WriteICCUint32(0, tags->size(), tags);
758
759
239
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
760
239
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
761
239
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
762
763
239
  return true;
764
239
}
Unexecuted instantiation: encode.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fields.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
738
24
static Status CreateICCNoOpBToATag(std::vector<uint8_t>* tags) {
739
24
  WriteICCTag("mBA ", tags->size(), tags);  // notypo
740
  // 4 reserved bytes set to 0
741
24
  WriteICCUint32(0, tags->size(), tags);
742
  // number of input channels
743
24
  WriteICCUint8(3, tags->size(), tags);
744
  // number of output channels
745
24
  WriteICCUint8(3, tags->size(), tags);
746
  // 2 reserved bytes for padding
747
24
  WriteICCUint16(0, tags->size(), tags);
748
  // offset to first B curve
749
24
  WriteICCUint32(32, tags->size(), tags);
750
  // offset to matrix
751
24
  WriteICCUint32(0, tags->size(), tags);
752
  // offset to first M curve
753
24
  WriteICCUint32(0, tags->size(), tags);
754
  // offset to CLUT
755
24
  WriteICCUint32(0, tags->size(), tags);
756
  // offset to first A curve
757
24
  WriteICCUint32(0, tags->size(), tags);
758
759
24
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
760
24
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
761
24
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
762
763
24
  return true;
764
24
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
738
215
static Status CreateICCNoOpBToATag(std::vector<uint8_t>* tags) {
739
215
  WriteICCTag("mBA ", tags->size(), tags);  // notypo
740
  // 4 reserved bytes set to 0
741
215
  WriteICCUint32(0, tags->size(), tags);
742
  // number of input channels
743
215
  WriteICCUint8(3, tags->size(), tags);
744
  // number of output channels
745
215
  WriteICCUint8(3, tags->size(), tags);
746
  // 2 reserved bytes for padding
747
215
  WriteICCUint16(0, tags->size(), tags);
748
  // offset to first B curve
749
215
  WriteICCUint32(32, tags->size(), tags);
750
  // offset to matrix
751
215
  WriteICCUint32(0, tags->size(), tags);
752
  // offset to first M curve
753
215
  WriteICCUint32(0, tags->size(), tags);
754
  // offset to CLUT
755
215
  WriteICCUint32(0, tags->size(), tags);
756
  // offset to first A curve
757
215
  WriteICCUint32(0, tags->size(), tags);
758
759
215
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
760
215
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
761
215
  JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({1.0f}, 0, tags));
762
763
215
  return true;
764
215
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CreateICCNoOpBToATag(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
765
766
// These strings are baked into Description - do not change.
767
768
10.3k
static std::string ToString(JxlColorSpace color_space) {
769
10.3k
  switch (color_space) {
770
7.27k
    case JXL_COLOR_SPACE_RGB:
771
7.27k
      return "RGB";
772
2.85k
    case JXL_COLOR_SPACE_GRAY:
773
2.85k
      return "Gra";
774
177
    case JXL_COLOR_SPACE_XYB:
775
177
      return "XYB";
776
0
    case JXL_COLOR_SPACE_UNKNOWN:
777
0
      return "CS?";
778
0
    default:
779
      // Should not happen - visitor fails if enum is invalid.
780
0
      JXL_DEBUG_ABORT("Invalid ColorSpace %u",
781
0
                      static_cast<uint32_t>(color_space));
782
0
      return "Invalid";
783
10.3k
  }
784
10.3k
}
encode.cc:jxl::detail::ToString(JxlColorSpace)
Line
Count
Source
768
20
static std::string ToString(JxlColorSpace color_space) {
769
20
  switch (color_space) {
770
5
    case JXL_COLOR_SPACE_RGB:
771
5
      return "RGB";
772
15
    case JXL_COLOR_SPACE_GRAY:
773
15
      return "Gra";
774
0
    case JXL_COLOR_SPACE_XYB:
775
0
      return "XYB";
776
0
    case JXL_COLOR_SPACE_UNKNOWN:
777
0
      return "CS?";
778
0
    default:
779
      // Should not happen - visitor fails if enum is invalid.
780
0
      JXL_DEBUG_ABORT("Invalid ColorSpace %u",
781
0
                      static_cast<uint32_t>(color_space));
782
0
      return "Invalid";
783
20
  }
784
20
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_group.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ToString(JxlColorSpace)
jxl_cms.cc:jxl::detail::ToString(JxlColorSpace)
Line
Count
Source
768
7.41k
static std::string ToString(JxlColorSpace color_space) {
769
7.41k
  switch (color_space) {
770
6.23k
    case JXL_COLOR_SPACE_RGB:
771
6.23k
      return "RGB";
772
1.18k
    case JXL_COLOR_SPACE_GRAY:
773
1.18k
      return "Gra";
774
0
    case JXL_COLOR_SPACE_XYB:
775
0
      return "XYB";
776
0
    case JXL_COLOR_SPACE_UNKNOWN:
777
0
      return "CS?";
778
0
    default:
779
      // Should not happen - visitor fails if enum is invalid.
780
0
      JXL_DEBUG_ABORT("Invalid ColorSpace %u",
781
0
                      static_cast<uint32_t>(color_space));
782
0
      return "Invalid";
783
7.41k
  }
784
7.41k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ToString(JxlColorSpace)
color_encoding_internal.cc:jxl::detail::ToString(JxlColorSpace)
Line
Count
Source
768
2.86k
static std::string ToString(JxlColorSpace color_space) {
769
2.86k
  switch (color_space) {
770
1.03k
    case JXL_COLOR_SPACE_RGB:
771
1.03k
      return "RGB";
772
1.65k
    case JXL_COLOR_SPACE_GRAY:
773
1.65k
      return "Gra";
774
177
    case JXL_COLOR_SPACE_XYB:
775
177
      return "XYB";
776
0
    case JXL_COLOR_SPACE_UNKNOWN:
777
0
      return "CS?";
778
0
    default:
779
      // Should not happen - visitor fails if enum is invalid.
780
0
      JXL_DEBUG_ABORT("Invalid ColorSpace %u",
781
0
                      static_cast<uint32_t>(color_space));
782
0
      return "Invalid";
783
2.86k
  }
784
2.86k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: blending.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_group.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: decode.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: epf.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: frame_header.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: luminance.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: passes_state.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_write.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ToString(JxlColorSpace)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ToString(JxlColorSpace)
785
786
5.26k
static std::string ToString(JxlWhitePoint white_point) {
787
5.26k
  switch (white_point) {
788
3.26k
    case JXL_WHITE_POINT_D65:
789
3.26k
      return "D65";
790
0
    case JXL_WHITE_POINT_CUSTOM:
791
0
      return "Cst";
792
1.81k
    case JXL_WHITE_POINT_E:
793
1.81k
      return "EER";
794
184
    case JXL_WHITE_POINT_DCI:
795
184
      return "DCI";
796
0
    default:
797
      // Should not happen - visitor fails if enum is invalid.
798
0
      JXL_DEBUG_ABORT("Invalid WhitePoint %u",
799
0
                      static_cast<uint32_t>(white_point));
800
0
      return "Invalid";
801
5.26k
  }
802
5.26k
}
encode.cc:jxl::detail::ToString(JxlWhitePoint)
Line
Count
Source
786
20
static std::string ToString(JxlWhitePoint white_point) {
787
20
  switch (white_point) {
788
20
    case JXL_WHITE_POINT_D65:
789
20
      return "D65";
790
0
    case JXL_WHITE_POINT_CUSTOM:
791
0
      return "Cst";
792
0
    case JXL_WHITE_POINT_E:
793
0
      return "EER";
794
0
    case JXL_WHITE_POINT_DCI:
795
0
      return "DCI";
796
0
    default:
797
      // Should not happen - visitor fails if enum is invalid.
798
0
      JXL_DEBUG_ABORT("Invalid WhitePoint %u",
799
0
                      static_cast<uint32_t>(white_point));
800
0
      return "Invalid";
801
20
  }
802
20
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_group.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ToString(JxlWhitePoint)
jxl_cms.cc:jxl::detail::ToString(JxlWhitePoint)
Line
Count
Source
786
3.53k
static std::string ToString(JxlWhitePoint white_point) {
787
3.53k
  switch (white_point) {
788
1.86k
    case JXL_WHITE_POINT_D65:
789
1.86k
      return "D65";
790
0
    case JXL_WHITE_POINT_CUSTOM:
791
0
      return "Cst";
792
1.63k
    case JXL_WHITE_POINT_E:
793
1.63k
      return "EER";
794
39
    case JXL_WHITE_POINT_DCI:
795
39
      return "DCI";
796
0
    default:
797
      // Should not happen - visitor fails if enum is invalid.
798
0
      JXL_DEBUG_ABORT("Invalid WhitePoint %u",
799
0
                      static_cast<uint32_t>(white_point));
800
0
      return "Invalid";
801
3.53k
  }
802
3.53k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ToString(JxlWhitePoint)
color_encoding_internal.cc:jxl::detail::ToString(JxlWhitePoint)
Line
Count
Source
786
1.71k
static std::string ToString(JxlWhitePoint white_point) {
787
1.71k
  switch (white_point) {
788
1.38k
    case JXL_WHITE_POINT_D65:
789
1.38k
      return "D65";
790
0
    case JXL_WHITE_POINT_CUSTOM:
791
0
      return "Cst";
792
182
    case JXL_WHITE_POINT_E:
793
182
      return "EER";
794
145
    case JXL_WHITE_POINT_DCI:
795
145
      return "DCI";
796
0
    default:
797
      // Should not happen - visitor fails if enum is invalid.
798
0
      JXL_DEBUG_ABORT("Invalid WhitePoint %u",
799
0
                      static_cast<uint32_t>(white_point));
800
0
      return "Invalid";
801
1.71k
  }
802
1.71k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: blending.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_group.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: decode.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: epf.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: frame_header.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: luminance.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: passes_state.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_write.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ToString(JxlWhitePoint)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ToString(JxlWhitePoint)
803
804
695
static std::string ToString(JxlPrimaries primaries) {
805
695
  switch (primaries) {
806
617
    case JXL_PRIMARIES_SRGB:
807
617
      return "SRG";
808
14
    case JXL_PRIMARIES_2100:
809
14
      return "202";
810
64
    case JXL_PRIMARIES_P3:
811
64
      return "DCI";
812
0
    case JXL_PRIMARIES_CUSTOM:
813
0
      return "Cst";
814
0
    default:
815
      // Should not happen - visitor fails if enum is invalid.
816
0
      JXL_DEBUG_ABORT("Invalid Primaries %u", static_cast<uint32_t>(primaries));
817
0
      return "Invalid";
818
695
  }
819
695
}
encode.cc:jxl::detail::ToString(JxlPrimaries)
Line
Count
Source
804
5
static std::string ToString(JxlPrimaries primaries) {
805
5
  switch (primaries) {
806
5
    case JXL_PRIMARIES_SRGB:
807
5
      return "SRG";
808
0
    case JXL_PRIMARIES_2100:
809
0
      return "202";
810
0
    case JXL_PRIMARIES_P3:
811
0
      return "DCI";
812
0
    case JXL_PRIMARIES_CUSTOM:
813
0
      return "Cst";
814
0
    default:
815
      // Should not happen - visitor fails if enum is invalid.
816
0
      JXL_DEBUG_ABORT("Invalid Primaries %u", static_cast<uint32_t>(primaries));
817
0
      return "Invalid";
818
5
  }
819
5
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_group.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ToString(JxlPrimaries)
jxl_cms.cc:jxl::detail::ToString(JxlPrimaries)
Line
Count
Source
804
300
static std::string ToString(JxlPrimaries primaries) {
805
300
  switch (primaries) {
806
294
    case JXL_PRIMARIES_SRGB:
807
294
      return "SRG";
808
0
    case JXL_PRIMARIES_2100:
809
0
      return "202";
810
6
    case JXL_PRIMARIES_P3:
811
6
      return "DCI";
812
0
    case JXL_PRIMARIES_CUSTOM:
813
0
      return "Cst";
814
0
    default:
815
      // Should not happen - visitor fails if enum is invalid.
816
0
      JXL_DEBUG_ABORT("Invalid Primaries %u", static_cast<uint32_t>(primaries));
817
0
      return "Invalid";
818
300
  }
819
300
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ToString(JxlPrimaries)
color_encoding_internal.cc:jxl::detail::ToString(JxlPrimaries)
Line
Count
Source
804
390
static std::string ToString(JxlPrimaries primaries) {
805
390
  switch (primaries) {
806
318
    case JXL_PRIMARIES_SRGB:
807
318
      return "SRG";
808
14
    case JXL_PRIMARIES_2100:
809
14
      return "202";
810
58
    case JXL_PRIMARIES_P3:
811
58
      return "DCI";
812
0
    case JXL_PRIMARIES_CUSTOM:
813
0
      return "Cst";
814
0
    default:
815
      // Should not happen - visitor fails if enum is invalid.
816
0
      JXL_DEBUG_ABORT("Invalid Primaries %u", static_cast<uint32_t>(primaries));
817
0
      return "Invalid";
818
390
  }
819
390
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: blending.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_group.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: decode.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: epf.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: frame_header.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: luminance.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: passes_state.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_write.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ToString(JxlPrimaries)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ToString(JxlPrimaries)
820
821
9.13k
static std::string ToString(JxlTransferFunction transfer_function) {
822
9.13k
  switch (transfer_function) {
823
1.44k
    case JXL_TRANSFER_FUNCTION_SRGB:
824
1.44k
      return "SRG";
825
1.62k
    case JXL_TRANSFER_FUNCTION_LINEAR:
826
1.62k
      return "Lin";
827
2.01k
    case JXL_TRANSFER_FUNCTION_709:
828
2.01k
      return "709";
829
1.27k
    case JXL_TRANSFER_FUNCTION_PQ:
830
1.27k
      return "PeQ";
831
1.47k
    case JXL_TRANSFER_FUNCTION_HLG:
832
1.47k
      return "HLG";
833
1.31k
    case JXL_TRANSFER_FUNCTION_DCI:
834
1.31k
      return "DCI";
835
0
    case JXL_TRANSFER_FUNCTION_UNKNOWN:
836
0
      return "TF?";
837
0
    case JXL_TRANSFER_FUNCTION_GAMMA:
838
0
      JXL_DEBUG_ABORT("Invalid TransferFunction: gamma");
839
0
      return "Invalid";
840
0
    default:
841
      // Should not happen - visitor fails if enum is invalid.
842
0
      JXL_DEBUG_ABORT("Invalid TransferFunction %u",
843
0
                      static_cast<uint32_t>(transfer_function));
844
0
      return "Invalid";
845
9.13k
  }
846
9.13k
}
encode.cc:jxl::detail::ToString(JxlTransferFunction)
Line
Count
Source
821
20
static std::string ToString(JxlTransferFunction transfer_function) {
822
20
  switch (transfer_function) {
823
15
    case JXL_TRANSFER_FUNCTION_SRGB:
824
15
      return "SRG";
825
5
    case JXL_TRANSFER_FUNCTION_LINEAR:
826
5
      return "Lin";
827
0
    case JXL_TRANSFER_FUNCTION_709:
828
0
      return "709";
829
0
    case JXL_TRANSFER_FUNCTION_PQ:
830
0
      return "PeQ";
831
0
    case JXL_TRANSFER_FUNCTION_HLG:
832
0
      return "HLG";
833
0
    case JXL_TRANSFER_FUNCTION_DCI:
834
0
      return "DCI";
835
0
    case JXL_TRANSFER_FUNCTION_UNKNOWN:
836
0
      return "TF?";
837
0
    case JXL_TRANSFER_FUNCTION_GAMMA:
838
0
      JXL_DEBUG_ABORT("Invalid TransferFunction: gamma");
839
0
      return "Invalid";
840
0
    default:
841
      // Should not happen - visitor fails if enum is invalid.
842
0
      JXL_DEBUG_ABORT("Invalid TransferFunction %u",
843
0
                      static_cast<uint32_t>(transfer_function));
844
0
      return "Invalid";
845
20
  }
846
20
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_group.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ToString(JxlTransferFunction)
jxl_cms.cc:jxl::detail::ToString(JxlTransferFunction)
Line
Count
Source
821
7.24k
static std::string ToString(JxlTransferFunction transfer_function) {
822
7.24k
  switch (transfer_function) {
823
1.15k
    case JXL_TRANSFER_FUNCTION_SRGB:
824
1.15k
      return "SRG";
825
1.41k
    case JXL_TRANSFER_FUNCTION_LINEAR:
826
1.41k
      return "Lin";
827
1.31k
    case JXL_TRANSFER_FUNCTION_709:
828
1.31k
      return "709";
829
1.10k
    case JXL_TRANSFER_FUNCTION_PQ:
830
1.10k
      return "PeQ";
831
1.09k
    case JXL_TRANSFER_FUNCTION_HLG:
832
1.09k
      return "HLG";
833
1.14k
    case JXL_TRANSFER_FUNCTION_DCI:
834
1.14k
      return "DCI";
835
0
    case JXL_TRANSFER_FUNCTION_UNKNOWN:
836
0
      return "TF?";
837
0
    case JXL_TRANSFER_FUNCTION_GAMMA:
838
0
      JXL_DEBUG_ABORT("Invalid TransferFunction: gamma");
839
0
      return "Invalid";
840
0
    default:
841
      // Should not happen - visitor fails if enum is invalid.
842
0
      JXL_DEBUG_ABORT("Invalid TransferFunction %u",
843
0
                      static_cast<uint32_t>(transfer_function));
844
0
      return "Invalid";
845
7.24k
  }
846
7.24k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ToString(JxlTransferFunction)
color_encoding_internal.cc:jxl::detail::ToString(JxlTransferFunction)
Line
Count
Source
821
1.87k
static std::string ToString(JxlTransferFunction transfer_function) {
822
1.87k
  switch (transfer_function) {
823
272
    case JXL_TRANSFER_FUNCTION_SRGB:
824
272
      return "SRG";
825
208
    case JXL_TRANSFER_FUNCTION_LINEAR:
826
208
      return "Lin";
827
698
    case JXL_TRANSFER_FUNCTION_709:
828
698
      return "709";
829
164
    case JXL_TRANSFER_FUNCTION_PQ:
830
164
      return "PeQ";
831
375
    case JXL_TRANSFER_FUNCTION_HLG:
832
375
      return "HLG";
833
161
    case JXL_TRANSFER_FUNCTION_DCI:
834
161
      return "DCI";
835
0
    case JXL_TRANSFER_FUNCTION_UNKNOWN:
836
0
      return "TF?";
837
0
    case JXL_TRANSFER_FUNCTION_GAMMA:
838
0
      JXL_DEBUG_ABORT("Invalid TransferFunction: gamma");
839
0
      return "Invalid";
840
0
    default:
841
      // Should not happen - visitor fails if enum is invalid.
842
0
      JXL_DEBUG_ABORT("Invalid TransferFunction %u",
843
0
                      static_cast<uint32_t>(transfer_function));
844
0
      return "Invalid";
845
1.87k
  }
846
1.87k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: blending.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_group.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: decode.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: epf.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: frame_header.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: luminance.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: passes_state.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_write.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ToString(JxlTransferFunction)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ToString(JxlTransferFunction)
847
848
10.3k
static std::string ToString(JxlRenderingIntent rendering_intent) {
849
10.3k
  switch (rendering_intent) {
850
8.81k
    case JXL_RENDERING_INTENT_PERCEPTUAL:
851
8.81k
      return "Per";
852
1.33k
    case JXL_RENDERING_INTENT_RELATIVE:
853
1.33k
      return "Rel";
854
64
    case JXL_RENDERING_INTENT_SATURATION:
855
64
      return "Sat";
856
84
    case JXL_RENDERING_INTENT_ABSOLUTE:
857
84
      return "Abs";
858
10.3k
  }
859
  // Should not happen - visitor fails if enum is invalid.
860
0
  JXL_DEBUG_ABORT("Invalid RenderingIntent %u",
861
0
                  static_cast<uint32_t>(rendering_intent));
862
0
  return "Invalid";
863
10.3k
}
encode.cc:jxl::detail::ToString(JxlRenderingIntent)
Line
Count
Source
848
20
static std::string ToString(JxlRenderingIntent rendering_intent) {
849
20
  switch (rendering_intent) {
850
0
    case JXL_RENDERING_INTENT_PERCEPTUAL:
851
0
      return "Per";
852
20
    case JXL_RENDERING_INTENT_RELATIVE:
853
20
      return "Rel";
854
0
    case JXL_RENDERING_INTENT_SATURATION:
855
0
      return "Sat";
856
0
    case JXL_RENDERING_INTENT_ABSOLUTE:
857
0
      return "Abs";
858
20
  }
859
  // Should not happen - visitor fails if enum is invalid.
860
0
  JXL_DEBUG_ABORT("Invalid RenderingIntent %u",
861
0
                  static_cast<uint32_t>(rendering_intent));
862
0
  return "Invalid";
863
20
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_group.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ToString(JxlRenderingIntent)
jxl_cms.cc:jxl::detail::ToString(JxlRenderingIntent)
Line
Count
Source
848
7.41k
static std::string ToString(JxlRenderingIntent rendering_intent) {
849
7.41k
  switch (rendering_intent) {
850
6.76k
    case JXL_RENDERING_INTENT_PERCEPTUAL:
851
6.76k
      return "Per";
852
620
    case JXL_RENDERING_INTENT_RELATIVE:
853
620
      return "Rel";
854
12
    case JXL_RENDERING_INTENT_SATURATION:
855
12
      return "Sat";
856
21
    case JXL_RENDERING_INTENT_ABSOLUTE:
857
21
      return "Abs";
858
7.41k
  }
859
  // Should not happen - visitor fails if enum is invalid.
860
0
  JXL_DEBUG_ABORT("Invalid RenderingIntent %u",
861
0
                  static_cast<uint32_t>(rendering_intent));
862
0
  return "Invalid";
863
7.41k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ToString(JxlRenderingIntent)
color_encoding_internal.cc:jxl::detail::ToString(JxlRenderingIntent)
Line
Count
Source
848
2.86k
static std::string ToString(JxlRenderingIntent rendering_intent) {
849
2.86k
  switch (rendering_intent) {
850
2.04k
    case JXL_RENDERING_INTENT_PERCEPTUAL:
851
2.04k
      return "Per";
852
699
    case JXL_RENDERING_INTENT_RELATIVE:
853
699
      return "Rel";
854
52
    case JXL_RENDERING_INTENT_SATURATION:
855
52
      return "Sat";
856
63
    case JXL_RENDERING_INTENT_ABSOLUTE:
857
63
      return "Abs";
858
2.86k
  }
859
  // Should not happen - visitor fails if enum is invalid.
860
0
  JXL_DEBUG_ABORT("Invalid RenderingIntent %u",
861
0
                  static_cast<uint32_t>(rendering_intent));
862
0
  return "Invalid";
863
2.86k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: blending.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_group.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: decode.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: epf.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: frame_header.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: luminance.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: passes_state.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_write.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ToString(JxlRenderingIntent)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ToString(JxlRenderingIntent)
864
865
5.40k
static inline bool CloseEnough(double a, double b) {
866
5.40k
  return std::abs(a - b) < 3e-5;
867
5.40k
}
Unexecuted instantiation: encode.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_fields.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_ans.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_frame.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_modular.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_cache.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_group.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::CloseEnough(double, double)
jxl_cms.cc:jxl::detail::CloseEnough(double, double)
Line
Count
Source
865
4.64k
static inline bool CloseEnough(double a, double b) {
866
4.64k
  return std::abs(a - b) < 3e-5;
867
4.64k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::CloseEnough(double, double)
color_encoding_internal.cc:jxl::detail::CloseEnough(double, double)
Line
Count
Source
865
757
static inline bool CloseEnough(double a, double b) {
866
757
  return std::abs(a - b) < 3e-5;
867
757
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_cache.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: blending.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_frame.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_group.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_modular.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_noise.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: decode.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: epf.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: frame_header.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: image_bundle.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: image_metadata.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: luminance.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: passes_state.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: quant_weights.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_blending.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_cms.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_epf.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_noise.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_patches.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_splines.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_spot.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_write.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::CloseEnough(double, double)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::CloseEnough(double, double)
868
869
static std::string ColorEncodingDescriptionImpl(const JxlColorEncoding& c,
870
478k
                                                bool uniquename) {
871
  // Return short names for the most common color spaces.
872
  // These names are returned regardless of rendering intent, and also there is
873
  // some tolerance regarding primaries and transfer function, so different
874
  // ColorEncodings can return the same short name.
875
478k
  if (c.color_space == JXL_COLOR_SPACE_RGB && !uniquename) {
876
475k
    if (c.white_point == JXL_WHITE_POINT_D65) {
877
470k
      if (c.transfer_function == JXL_TRANSFER_FUNCTION_SRGB) {
878
468k
        if (c.primaries == JXL_PRIMARIES_SRGB) return "sRGB";
879
213
        if (c.primaries == JXL_PRIMARIES_P3) return "DisplayP3";
880
213
      }
881
2.11k
      if (c.primaries == JXL_PRIMARIES_2100) {
882
20
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_PQ) return "Rec2100PQ";
883
18
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_HLG)
884
6
          return "Rec2100HLG";
885
18
      }
886
887
2.10k
      if (c.primaries == JXL_PRIMARIES_CUSTOM &&
888
1.87k
          CloseEnough(c.primaries_red_xy[0], 0.6400) &&
889
0
          CloseEnough(c.primaries_red_xy[1], 0.3300) &&
890
0
          CloseEnough(c.primaries_green_xy[0], 0.2100) &&
891
0
          CloseEnough(c.primaries_green_xy[1], 0.7100) &&
892
0
          CloseEnough(c.primaries_blue_xy[0], 0.1500) &&
893
0
          CloseEnough(c.primaries_blue_xy[1], 0.0600) &&
894
0
          c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
895
0
          CloseEnough(c.gamma, 256.0 / 563.0)) {
896
0
        return "Adobe98";
897
0
      }
898
2.10k
    }
899
900
    // Apple's ROMM profile:
901
    // White point:       Red:               Green:             Blue:
902
    // 0.345669;0.358502  0.734698;0.265298  0.159585;0.840432 0.036650;0.000126
903
    // Adobe's ProPhoto profile:
904
    // 0.345705;0.358540  0.734699;0.265302  0.159600;0.840399 0.036597;0.000106
905
    // CSS definition of prophoto-rgb:
906
    // (https://drafts.csswg.org/css-color-4/#predefined-prophoto-rgb)
907
    // 0.345700;0.358500  0.734699;0.265301  0.159597;0.840403 0.036598;0.000105
908
7.27k
    if (c.white_point == JXL_WHITE_POINT_CUSTOM &&
909
3.52k
        CloseEnough(c.white_point_xy[0], 0.345669) &&
910
0
        CloseEnough(c.white_point_xy[1], 0.358496) &&
911
0
        c.primaries == JXL_PRIMARIES_CUSTOM &&
912
0
        CloseEnough(c.primaries_red_xy[0], 0.734699) &&
913
0
        CloseEnough(c.primaries_red_xy[1], 0.265301) &&
914
0
        CloseEnough(c.primaries_green_xy[0], 0.159597) &&
915
0
        CloseEnough(c.primaries_green_xy[1], 0.840403) &&
916
0
        CloseEnough(c.primaries_blue_xy[0], 0.036598) &&
917
0
        CloseEnough(c.primaries_blue_xy[1], 0.000105) &&
918
        // Adobe's ProPhoto profile uses a simple gamma curve (g0.555315)
919
        // Others have a small linear segment near black
920
0
        c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
921
0
        CloseEnough(c.gamma, 1.0 / 1.8)) {
922
0
      return "ProPhoto";
923
0
    }
924
7.27k
  }
925
926
10.3k
  std::string d = ToString(c.color_space);
927
928
10.3k
  bool explicit_wp_tf = (c.color_space != JXL_COLOR_SPACE_XYB);
929
10.3k
  if (explicit_wp_tf) {
930
10.1k
    d += '_';
931
10.1k
    if (c.white_point == JXL_WHITE_POINT_CUSTOM) {
932
4.85k
      d += jxl::ToString(c.white_point_xy[0]) + ';';
933
4.85k
      d += jxl::ToString(c.white_point_xy[1]);
934
5.26k
    } else {
935
5.26k
      d += ToString(c.white_point);
936
5.26k
    }
937
10.1k
  }
938
939
10.3k
  if ((c.color_space != JXL_COLOR_SPACE_GRAY) &&
940
7.44k
      (c.color_space != JXL_COLOR_SPACE_XYB)) {
941
7.27k
    d += '_';
942
7.27k
    if (c.primaries == JXL_PRIMARIES_CUSTOM) {
943
6.57k
      d += jxl::ToString(c.primaries_red_xy[0]) + ';';
944
6.57k
      d += jxl::ToString(c.primaries_red_xy[1]) + ';';
945
6.57k
      d += jxl::ToString(c.primaries_green_xy[0]) + ';';
946
6.57k
      d += jxl::ToString(c.primaries_green_xy[1]) + ';';
947
6.57k
      d += jxl::ToString(c.primaries_blue_xy[0]) + ';';
948
6.57k
      d += jxl::ToString(c.primaries_blue_xy[1]);
949
6.57k
    } else {
950
695
      d += ToString(c.primaries);
951
695
    }
952
7.27k
  }
953
954
10.3k
  d += '_';
955
10.3k
  d += ToString(c.rendering_intent);
956
957
10.3k
  if (explicit_wp_tf) {
958
10.1k
    JxlTransferFunction tf = c.transfer_function;
959
10.1k
    d += '_';
960
10.1k
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
961
986
      d += 'g';
962
986
      d += jxl::ToString(c.gamma);
963
9.13k
    } else {
964
9.13k
      d += ToString(tf);
965
9.13k
    }
966
10.1k
  }
967
10.3k
  return d;
968
478k
}
encode.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Line
Count
Source
870
99
                                                bool uniquename) {
871
  // Return short names for the most common color spaces.
872
  // These names are returned regardless of rendering intent, and also there is
873
  // some tolerance regarding primaries and transfer function, so different
874
  // ColorEncodings can return the same short name.
875
99
  if (c.color_space == JXL_COLOR_SPACE_RGB && !uniquename) {
876
84
    if (c.white_point == JXL_WHITE_POINT_D65) {
877
84
      if (c.transfer_function == JXL_TRANSFER_FUNCTION_SRGB) {
878
79
        if (c.primaries == JXL_PRIMARIES_SRGB) return "sRGB";
879
0
        if (c.primaries == JXL_PRIMARIES_P3) return "DisplayP3";
880
0
      }
881
5
      if (c.primaries == JXL_PRIMARIES_2100) {
882
0
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_PQ) return "Rec2100PQ";
883
0
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_HLG)
884
0
          return "Rec2100HLG";
885
0
      }
886
887
5
      if (c.primaries == JXL_PRIMARIES_CUSTOM &&
888
0
          CloseEnough(c.primaries_red_xy[0], 0.6400) &&
889
0
          CloseEnough(c.primaries_red_xy[1], 0.3300) &&
890
0
          CloseEnough(c.primaries_green_xy[0], 0.2100) &&
891
0
          CloseEnough(c.primaries_green_xy[1], 0.7100) &&
892
0
          CloseEnough(c.primaries_blue_xy[0], 0.1500) &&
893
0
          CloseEnough(c.primaries_blue_xy[1], 0.0600) &&
894
0
          c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
895
0
          CloseEnough(c.gamma, 256.0 / 563.0)) {
896
0
        return "Adobe98";
897
0
      }
898
5
    }
899
900
    // Apple's ROMM profile:
901
    // White point:       Red:               Green:             Blue:
902
    // 0.345669;0.358502  0.734698;0.265298  0.159585;0.840432 0.036650;0.000126
903
    // Adobe's ProPhoto profile:
904
    // 0.345705;0.358540  0.734699;0.265302  0.159600;0.840399 0.036597;0.000106
905
    // CSS definition of prophoto-rgb:
906
    // (https://drafts.csswg.org/css-color-4/#predefined-prophoto-rgb)
907
    // 0.345700;0.358500  0.734699;0.265301  0.159597;0.840403 0.036598;0.000105
908
5
    if (c.white_point == JXL_WHITE_POINT_CUSTOM &&
909
0
        CloseEnough(c.white_point_xy[0], 0.345669) &&
910
0
        CloseEnough(c.white_point_xy[1], 0.358496) &&
911
0
        c.primaries == JXL_PRIMARIES_CUSTOM &&
912
0
        CloseEnough(c.primaries_red_xy[0], 0.734699) &&
913
0
        CloseEnough(c.primaries_red_xy[1], 0.265301) &&
914
0
        CloseEnough(c.primaries_green_xy[0], 0.159597) &&
915
0
        CloseEnough(c.primaries_green_xy[1], 0.840403) &&
916
0
        CloseEnough(c.primaries_blue_xy[0], 0.036598) &&
917
0
        CloseEnough(c.primaries_blue_xy[1], 0.000105) &&
918
        // Adobe's ProPhoto profile uses a simple gamma curve (g0.555315)
919
        // Others have a small linear segment near black
920
0
        c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
921
0
        CloseEnough(c.gamma, 1.0 / 1.8)) {
922
0
      return "ProPhoto";
923
0
    }
924
5
  }
925
926
20
  std::string d = ToString(c.color_space);
927
928
20
  bool explicit_wp_tf = (c.color_space != JXL_COLOR_SPACE_XYB);
929
20
  if (explicit_wp_tf) {
930
20
    d += '_';
931
20
    if (c.white_point == JXL_WHITE_POINT_CUSTOM) {
932
0
      d += jxl::ToString(c.white_point_xy[0]) + ';';
933
0
      d += jxl::ToString(c.white_point_xy[1]);
934
20
    } else {
935
20
      d += ToString(c.white_point);
936
20
    }
937
20
  }
938
939
20
  if ((c.color_space != JXL_COLOR_SPACE_GRAY) &&
940
5
      (c.color_space != JXL_COLOR_SPACE_XYB)) {
941
5
    d += '_';
942
5
    if (c.primaries == JXL_PRIMARIES_CUSTOM) {
943
0
      d += jxl::ToString(c.primaries_red_xy[0]) + ';';
944
0
      d += jxl::ToString(c.primaries_red_xy[1]) + ';';
945
0
      d += jxl::ToString(c.primaries_green_xy[0]) + ';';
946
0
      d += jxl::ToString(c.primaries_green_xy[1]) + ';';
947
0
      d += jxl::ToString(c.primaries_blue_xy[0]) + ';';
948
0
      d += jxl::ToString(c.primaries_blue_xy[1]);
949
5
    } else {
950
5
      d += ToString(c.primaries);
951
5
    }
952
5
  }
953
954
20
  d += '_';
955
20
  d += ToString(c.rendering_intent);
956
957
20
  if (explicit_wp_tf) {
958
20
    JxlTransferFunction tf = c.transfer_function;
959
20
    d += '_';
960
20
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
961
0
      d += 'g';
962
0
      d += jxl::ToString(c.gamma);
963
20
    } else {
964
20
      d += ToString(tf);
965
20
    }
966
20
  }
967
20
  return d;
968
99
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_ans.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_frame.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_modular.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_cache.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_group.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
jxl_cms.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Line
Count
Source
870
7.43k
                                                bool uniquename) {
871
  // Return short names for the most common color spaces.
872
  // These names are returned regardless of rendering intent, and also there is
873
  // some tolerance regarding primaries and transfer function, so different
874
  // ColorEncodings can return the same short name.
875
7.43k
  if (c.color_space == JXL_COLOR_SPACE_RGB && !uniquename) {
876
6.24k
    if (c.white_point == JXL_WHITE_POINT_D65) {
877
1.37k
      if (c.transfer_function == JXL_TRANSFER_FUNCTION_SRGB) {
878
215
        if (c.primaries == JXL_PRIMARIES_SRGB) return "sRGB";
879
203
        if (c.primaries == JXL_PRIMARIES_P3) return "DisplayP3";
880
203
      }
881
1.36k
      if (c.primaries == JXL_PRIMARIES_2100) {
882
0
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_PQ) return "Rec2100PQ";
883
0
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_HLG)
884
0
          return "Rec2100HLG";
885
0
      }
886
887
1.36k
      if (c.primaries == JXL_PRIMARIES_CUSTOM &&
888
1.30k
          CloseEnough(c.primaries_red_xy[0], 0.6400) &&
889
0
          CloseEnough(c.primaries_red_xy[1], 0.3300) &&
890
0
          CloseEnough(c.primaries_green_xy[0], 0.2100) &&
891
0
          CloseEnough(c.primaries_green_xy[1], 0.7100) &&
892
0
          CloseEnough(c.primaries_blue_xy[0], 0.1500) &&
893
0
          CloseEnough(c.primaries_blue_xy[1], 0.0600) &&
894
0
          c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
895
0
          CloseEnough(c.gamma, 256.0 / 563.0)) {
896
0
        return "Adobe98";
897
0
      }
898
1.36k
    }
899
900
    // Apple's ROMM profile:
901
    // White point:       Red:               Green:             Blue:
902
    // 0.345669;0.358502  0.734698;0.265298  0.159585;0.840432 0.036650;0.000126
903
    // Adobe's ProPhoto profile:
904
    // 0.345705;0.358540  0.734699;0.265302  0.159600;0.840399 0.036597;0.000106
905
    // CSS definition of prophoto-rgb:
906
    // (https://drafts.csswg.org/css-color-4/#predefined-prophoto-rgb)
907
    // 0.345700;0.358500  0.734699;0.265301  0.159597;0.840403 0.036598;0.000105
908
6.23k
    if (c.white_point == JXL_WHITE_POINT_CUSTOM &&
909
3.34k
        CloseEnough(c.white_point_xy[0], 0.345669) &&
910
0
        CloseEnough(c.white_point_xy[1], 0.358496) &&
911
0
        c.primaries == JXL_PRIMARIES_CUSTOM &&
912
0
        CloseEnough(c.primaries_red_xy[0], 0.734699) &&
913
0
        CloseEnough(c.primaries_red_xy[1], 0.265301) &&
914
0
        CloseEnough(c.primaries_green_xy[0], 0.159597) &&
915
0
        CloseEnough(c.primaries_green_xy[1], 0.840403) &&
916
0
        CloseEnough(c.primaries_blue_xy[0], 0.036598) &&
917
0
        CloseEnough(c.primaries_blue_xy[1], 0.000105) &&
918
        // Adobe's ProPhoto profile uses a simple gamma curve (g0.555315)
919
        // Others have a small linear segment near black
920
0
        c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
921
0
        CloseEnough(c.gamma, 1.0 / 1.8)) {
922
0
      return "ProPhoto";
923
0
    }
924
6.23k
  }
925
926
7.41k
  std::string d = ToString(c.color_space);
927
928
7.41k
  bool explicit_wp_tf = (c.color_space != JXL_COLOR_SPACE_XYB);
929
7.41k
  if (explicit_wp_tf) {
930
7.41k
    d += '_';
931
7.41k
    if (c.white_point == JXL_WHITE_POINT_CUSTOM) {
932
3.88k
      d += jxl::ToString(c.white_point_xy[0]) + ';';
933
3.88k
      d += jxl::ToString(c.white_point_xy[1]);
934
3.88k
    } else {
935
3.53k
      d += ToString(c.white_point);
936
3.53k
    }
937
7.41k
  }
938
939
7.41k
  if ((c.color_space != JXL_COLOR_SPACE_GRAY) &&
940
6.23k
      (c.color_space != JXL_COLOR_SPACE_XYB)) {
941
6.23k
    d += '_';
942
6.23k
    if (c.primaries == JXL_PRIMARIES_CUSTOM) {
943
5.93k
      d += jxl::ToString(c.primaries_red_xy[0]) + ';';
944
5.93k
      d += jxl::ToString(c.primaries_red_xy[1]) + ';';
945
5.93k
      d += jxl::ToString(c.primaries_green_xy[0]) + ';';
946
5.93k
      d += jxl::ToString(c.primaries_green_xy[1]) + ';';
947
5.93k
      d += jxl::ToString(c.primaries_blue_xy[0]) + ';';
948
5.93k
      d += jxl::ToString(c.primaries_blue_xy[1]);
949
5.93k
    } else {
950
300
      d += ToString(c.primaries);
951
300
    }
952
6.23k
  }
953
954
7.41k
  d += '_';
955
7.41k
  d += ToString(c.rendering_intent);
956
957
7.41k
  if (explicit_wp_tf) {
958
7.41k
    JxlTransferFunction tf = c.transfer_function;
959
7.41k
    d += '_';
960
7.41k
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
961
178
      d += 'g';
962
178
      d += jxl::ToString(c.gamma);
963
7.24k
    } else {
964
7.24k
      d += ToString(tf);
965
7.24k
    }
966
7.41k
  }
967
7.41k
  return d;
968
7.43k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
color_encoding_internal.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Line
Count
Source
870
471k
                                                bool uniquename) {
871
  // Return short names for the most common color spaces.
872
  // These names are returned regardless of rendering intent, and also there is
873
  // some tolerance regarding primaries and transfer function, so different
874
  // ColorEncodings can return the same short name.
875
471k
  if (c.color_space == JXL_COLOR_SPACE_RGB && !uniquename) {
876
469k
    if (c.white_point == JXL_WHITE_POINT_D65) {
877
469k
      if (c.transfer_function == JXL_TRANSFER_FUNCTION_SRGB) {
878
468k
        if (c.primaries == JXL_PRIMARIES_SRGB) return "sRGB";
879
10
        if (c.primaries == JXL_PRIMARIES_P3) return "DisplayP3";
880
10
      }
881
745
      if (c.primaries == JXL_PRIMARIES_2100) {
882
20
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_PQ) return "Rec2100PQ";
883
18
        if (c.transfer_function == JXL_TRANSFER_FUNCTION_HLG)
884
6
          return "Rec2100HLG";
885
18
      }
886
887
737
      if (c.primaries == JXL_PRIMARIES_CUSTOM &&
888
572
          CloseEnough(c.primaries_red_xy[0], 0.6400) &&
889
0
          CloseEnough(c.primaries_red_xy[1], 0.3300) &&
890
0
          CloseEnough(c.primaries_green_xy[0], 0.2100) &&
891
0
          CloseEnough(c.primaries_green_xy[1], 0.7100) &&
892
0
          CloseEnough(c.primaries_blue_xy[0], 0.1500) &&
893
0
          CloseEnough(c.primaries_blue_xy[1], 0.0600) &&
894
0
          c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
895
0
          CloseEnough(c.gamma, 256.0 / 563.0)) {
896
0
        return "Adobe98";
897
0
      }
898
737
    }
899
900
    // Apple's ROMM profile:
901
    // White point:       Red:               Green:             Blue:
902
    // 0.345669;0.358502  0.734698;0.265298  0.159585;0.840432 0.036650;0.000126
903
    // Adobe's ProPhoto profile:
904
    // 0.345705;0.358540  0.734699;0.265302  0.159600;0.840399 0.036597;0.000106
905
    // CSS definition of prophoto-rgb:
906
    // (https://drafts.csswg.org/css-color-4/#predefined-prophoto-rgb)
907
    // 0.345700;0.358500  0.734699;0.265301  0.159597;0.840403 0.036598;0.000105
908
1.03k
    if (c.white_point == JXL_WHITE_POINT_CUSTOM &&
909
185
        CloseEnough(c.white_point_xy[0], 0.345669) &&
910
0
        CloseEnough(c.white_point_xy[1], 0.358496) &&
911
0
        c.primaries == JXL_PRIMARIES_CUSTOM &&
912
0
        CloseEnough(c.primaries_red_xy[0], 0.734699) &&
913
0
        CloseEnough(c.primaries_red_xy[1], 0.265301) &&
914
0
        CloseEnough(c.primaries_green_xy[0], 0.159597) &&
915
0
        CloseEnough(c.primaries_green_xy[1], 0.840403) &&
916
0
        CloseEnough(c.primaries_blue_xy[0], 0.036598) &&
917
0
        CloseEnough(c.primaries_blue_xy[1], 0.000105) &&
918
        // Adobe's ProPhoto profile uses a simple gamma curve (g0.555315)
919
        // Others have a small linear segment near black
920
0
        c.transfer_function == JXL_TRANSFER_FUNCTION_GAMMA &&
921
0
        CloseEnough(c.gamma, 1.0 / 1.8)) {
922
0
      return "ProPhoto";
923
0
    }
924
1.03k
  }
925
926
2.86k
  std::string d = ToString(c.color_space);
927
928
2.86k
  bool explicit_wp_tf = (c.color_space != JXL_COLOR_SPACE_XYB);
929
2.86k
  if (explicit_wp_tf) {
930
2.68k
    d += '_';
931
2.68k
    if (c.white_point == JXL_WHITE_POINT_CUSTOM) {
932
972
      d += jxl::ToString(c.white_point_xy[0]) + ';';
933
972
      d += jxl::ToString(c.white_point_xy[1]);
934
1.71k
    } else {
935
1.71k
      d += ToString(c.white_point);
936
1.71k
    }
937
2.68k
  }
938
939
2.86k
  if ((c.color_space != JXL_COLOR_SPACE_GRAY) &&
940
1.20k
      (c.color_space != JXL_COLOR_SPACE_XYB)) {
941
1.03k
    d += '_';
942
1.03k
    if (c.primaries == JXL_PRIMARIES_CUSTOM) {
943
641
      d += jxl::ToString(c.primaries_red_xy[0]) + ';';
944
641
      d += jxl::ToString(c.primaries_red_xy[1]) + ';';
945
641
      d += jxl::ToString(c.primaries_green_xy[0]) + ';';
946
641
      d += jxl::ToString(c.primaries_green_xy[1]) + ';';
947
641
      d += jxl::ToString(c.primaries_blue_xy[0]) + ';';
948
641
      d += jxl::ToString(c.primaries_blue_xy[1]);
949
641
    } else {
950
390
      d += ToString(c.primaries);
951
390
    }
952
1.03k
  }
953
954
2.86k
  d += '_';
955
2.86k
  d += ToString(c.rendering_intent);
956
957
2.86k
  if (explicit_wp_tf) {
958
2.68k
    JxlTransferFunction tf = c.transfer_function;
959
2.68k
    d += '_';
960
2.68k
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
961
808
      d += 'g';
962
808
      d += jxl::ToString(c.gamma);
963
1.87k
    } else {
964
1.87k
      d += ToString(tf);
965
1.87k
    }
966
2.68k
  }
967
2.86k
  return d;
968
471k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_cache.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: blending.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_frame.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_group.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_modular.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_noise.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: decode.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: epf.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: frame_header.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: image_bundle.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: image_metadata.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: luminance.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: passes_state.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: quant_weights.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_blending.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_cms.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_epf.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_noise.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_patches.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_splines.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_spot.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_write.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::ColorEncodingDescriptionImpl(JxlColorEncoding const&, bool)
969
970
static Status MaybeCreateProfileImpl(const JxlColorEncoding& c,
971
479k
                                     std::vector<uint8_t>* icc) {
972
479k
  std::vector<uint8_t> header;
973
479k
  std::vector<uint8_t> tagtable;
974
479k
  std::vector<uint8_t> tags;
975
479k
  JxlTransferFunction tf = c.transfer_function;
976
479k
  if (c.color_space == JXL_COLOR_SPACE_UNKNOWN ||
977
479k
      tf == JXL_TRANSFER_FUNCTION_UNKNOWN) {
978
334
    return false;  // Not an error
979
334
  }
980
981
478k
  switch (c.color_space) {
982
475k
    case JXL_COLOR_SPACE_RGB:
983
478k
    case JXL_COLOR_SPACE_GRAY:
984
478k
    case JXL_COLOR_SPACE_XYB:
985
478k
      break;  // OK
986
0
    default:
987
0
      return JXL_FAILURE("Invalid CS %u",
988
478k
                         static_cast<unsigned int>(c.color_space));
989
478k
  }
990
991
478k
  if (c.color_space == JXL_COLOR_SPACE_XYB &&
992
185
      c.rendering_intent != JXL_RENDERING_INTENT_PERCEPTUAL) {
993
8
    return JXL_FAILURE(
994
8
        "Only perceptual rendering intent implemented for XYB "
995
8
        "ICC profile.");
996
8
  }
997
998
478k
  JXL_RETURN_IF_ERROR(CreateICCHeader(c, &header));
999
1000
478k
  std::vector<size_t> offsets;
1001
  // tag count, deferred to later
1002
478k
  WriteICCUint32(0, tagtable.size(), &tagtable);
1003
1004
478k
  size_t tag_offset = 0;
1005
478k
  size_t tag_size = 0;
1006
1007
478k
  CreateICCMlucTag(ColorEncodingDescriptionImpl(c, false), &tags);
1008
478k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1009
478k
  AddToICCTagTable("desc", tag_offset, tag_size, &tagtable, &offsets);
1010
1011
478k
  const std::string copyright = "CC0";
1012
478k
  CreateICCMlucTag(copyright, &tags);
1013
478k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1014
478k
  AddToICCTagTable("cprt", tag_offset, tag_size, &tagtable, &offsets);
1015
1016
  // TODO(eustas): isn't it the other way round: gray image has d50 WhitePoint?
1017
478k
  if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1018
2.85k
    Color wtpt;
1019
2.85k
    JXL_RETURN_IF_ERROR(
1020
2.85k
        CIEXYZFromWhiteCIExy(c.white_point_xy[0], c.white_point_xy[1], wtpt));
1021
2.84k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(wtpt, &tags));
1022
475k
  } else {
1023
475k
    Color d50{0.964203, 1.0, 0.824905};
1024
475k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(d50, &tags));
1025
475k
  }
1026
478k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1027
478k
  AddToICCTagTable("wtpt", tag_offset, tag_size, &tagtable, &offsets);
1028
1029
478k
  if (c.color_space != JXL_COLOR_SPACE_GRAY) {
1030
    // Chromatic adaptation matrix
1031
475k
    Matrix3x3 chad;
1032
475k
    JXL_RETURN_IF_ERROR(
1033
475k
        CreateICCChadMatrix(c.white_point_xy[0], c.white_point_xy[1], chad));
1034
1035
475k
    JXL_RETURN_IF_ERROR(CreateICCChadTag(chad, &tags));
1036
475k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1037
475k
    AddToICCTagTable("chad", tag_offset, tag_size, &tagtable, &offsets);
1038
475k
  }
1039
1040
478k
  if (c.color_space == JXL_COLOR_SPACE_RGB) {
1041
475k
    MaybeCreateICCCICPTag(c, &tags, &tag_offset, &tag_size, &tagtable,
1042
475k
                          &offsets);
1043
1044
475k
    Matrix3x3 m;
1045
475k
    JXL_RETURN_IF_ERROR(CreateICCRGBMatrix(
1046
475k
        c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
1047
475k
        c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
1048
475k
        c.white_point_xy[0], c.white_point_xy[1], m));
1049
474k
    Color r{m[0][0], m[1][0], m[2][0]};
1050
474k
    Color g{m[0][1], m[1][1], m[2][1]};
1051
474k
    Color b{m[0][2], m[1][2], m[2][2]};
1052
1053
474k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(r, &tags));
1054
473k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1055
473k
    AddToICCTagTable("rXYZ", tag_offset, tag_size, &tagtable, &offsets);
1056
1057
473k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(g, &tags));
1058
473k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1059
473k
    AddToICCTagTable("gXYZ", tag_offset, tag_size, &tagtable, &offsets);
1060
1061
473k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(b, &tags));
1062
473k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1063
473k
    AddToICCTagTable("bXYZ", tag_offset, tag_size, &tagtable, &offsets);
1064
473k
  }
1065
1066
476k
  if (c.color_space == JXL_COLOR_SPACE_XYB) {
1067
177
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForXYB(&tags));
1068
177
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1069
177
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1070
177
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1071
177
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1072
177
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1073
476k
  } else if (kEnable3DToneMapping && CanToneMap(c)) {
1074
62
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForHDR(c, &tags));
1075
62
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1076
62
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1077
62
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1078
62
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1079
62
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1080
476k
  } else {
1081
476k
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
1082
950
      float gamma = 1.0 / c.gamma;
1083
950
      JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({gamma}, 0, &tags));
1084
475k
    } else if (c.color_space != JXL_COLOR_SPACE_XYB) {
1085
475k
      switch (tf) {
1086
1.15k
        case JXL_TRANSFER_FUNCTION_HLG:
1087
1.15k
          CreateICCCurvCurvTag(
1088
1.15k
              CreateTableCurve<64, ExtraTF::kHLG>(CanToneMap(c)), &tags);
1089
1.15k
          break;
1090
947
        case JXL_TRANSFER_FUNCTION_PQ:
1091
947
          CreateICCCurvCurvTag(
1092
947
              CreateTableCurve<64, ExtraTF::kPQ>(CanToneMap(c)), &tags);
1093
947
          break;
1094
469k
        case JXL_TRANSFER_FUNCTION_SRGB:
1095
469k
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1096
469k
              {2.4, 1.0 / 1.055, 0.055 / 1.055, 1.0 / 12.92, 0.04045}, 3,
1097
469k
              &tags));
1098
469k
          break;
1099
469k
        case JXL_TRANSFER_FUNCTION_709:
1100
1.67k
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1101
1.67k
              {1.0 / 0.45, 1.0 / 1.099, 0.099 / 1.099, 1.0 / 4.5, 0.081}, 3,
1102
1.67k
              &tags));
1103
1.67k
          break;
1104
1.67k
        case JXL_TRANSFER_FUNCTION_LINEAR:
1105
1.32k
          JXL_RETURN_IF_ERROR(
1106
1.32k
              CreateICCCurvParaTag({1.0, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1107
1.32k
          break;
1108
1.32k
        case JXL_TRANSFER_FUNCTION_DCI:
1109
1.01k
          JXL_RETURN_IF_ERROR(
1110
1.01k
              CreateICCCurvParaTag({2.6, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1111
1.01k
          break;
1112
1.01k
        default:
1113
0
          return JXL_UNREACHABLE("unknown TF %u",
1114
475k
                                 static_cast<unsigned int>(tf));
1115
475k
      }
1116
475k
    }
1117
476k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1118
476k
    if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1119
2.83k
      AddToICCTagTable("kTRC", tag_offset, tag_size, &tagtable, &offsets);
1120
473k
    } else {
1121
473k
      AddToICCTagTable("rTRC", tag_offset, tag_size, &tagtable, &offsets);
1122
473k
      AddToICCTagTable("gTRC", tag_offset, tag_size, &tagtable, &offsets);
1123
473k
      AddToICCTagTable("bTRC", tag_offset, tag_size, &tagtable, &offsets);
1124
473k
    }
1125
476k
  }
1126
1127
  // Tag count
1128
476k
  WriteICCUint32(offsets.size(), 0, &tagtable);
1129
5.69M
  for (size_t i = 0; i < offsets.size(); i++) {
1130
5.21M
    WriteICCUint32(offsets[i] + header.size() + tagtable.size(), 4 + 12 * i + 4,
1131
5.21M
                   &tagtable);
1132
5.21M
  }
1133
1134
  // ICC profile size
1135
476k
  WriteICCUint32(header.size() + tagtable.size() + tags.size(), 0, &header);
1136
1137
476k
  *icc = header;
1138
476k
  Bytes(tagtable).AppendTo(*icc);
1139
476k
  Bytes(tags).AppendTo(*icc);
1140
1141
  // The MD5 checksum must be computed on the profile with profile flags,
1142
  // rendering intent, and region of the checksum itself, set to 0.
1143
  // TODO(lode): manually verify with a reliable tool that this creates correct
1144
  // signature (profile id) for ICC profiles.
1145
476k
  std::vector<uint8_t> icc_sum = *icc;
1146
476k
  if (icc_sum.size() >= 64 + 4) {
1147
476k
    memset(icc_sum.data() + 44, 0, 4);
1148
476k
    memset(icc_sum.data() + 64, 0, 4);
1149
476k
  }
1150
476k
  uint8_t checksum[16];
1151
476k
  detail::ICCComputeMD5(icc_sum, checksum);
1152
1153
476k
  memcpy(icc->data() + 84, checksum, sizeof(checksum));
1154
1155
476k
  return true;
1156
476k
}
encode.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
971
99
                                     std::vector<uint8_t>* icc) {
972
99
  std::vector<uint8_t> header;
973
99
  std::vector<uint8_t> tagtable;
974
99
  std::vector<uint8_t> tags;
975
99
  JxlTransferFunction tf = c.transfer_function;
976
99
  if (c.color_space == JXL_COLOR_SPACE_UNKNOWN ||
977
99
      tf == JXL_TRANSFER_FUNCTION_UNKNOWN) {
978
0
    return false;  // Not an error
979
0
  }
980
981
99
  switch (c.color_space) {
982
84
    case JXL_COLOR_SPACE_RGB:
983
99
    case JXL_COLOR_SPACE_GRAY:
984
99
    case JXL_COLOR_SPACE_XYB:
985
99
      break;  // OK
986
0
    default:
987
0
      return JXL_FAILURE("Invalid CS %u",
988
99
                         static_cast<unsigned int>(c.color_space));
989
99
  }
990
991
99
  if (c.color_space == JXL_COLOR_SPACE_XYB &&
992
0
      c.rendering_intent != JXL_RENDERING_INTENT_PERCEPTUAL) {
993
0
    return JXL_FAILURE(
994
0
        "Only perceptual rendering intent implemented for XYB "
995
0
        "ICC profile.");
996
0
  }
997
998
99
  JXL_RETURN_IF_ERROR(CreateICCHeader(c, &header));
999
1000
99
  std::vector<size_t> offsets;
1001
  // tag count, deferred to later
1002
99
  WriteICCUint32(0, tagtable.size(), &tagtable);
1003
1004
99
  size_t tag_offset = 0;
1005
99
  size_t tag_size = 0;
1006
1007
99
  CreateICCMlucTag(ColorEncodingDescriptionImpl(c, false), &tags);
1008
99
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1009
99
  AddToICCTagTable("desc", tag_offset, tag_size, &tagtable, &offsets);
1010
1011
99
  const std::string copyright = "CC0";
1012
99
  CreateICCMlucTag(copyright, &tags);
1013
99
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1014
99
  AddToICCTagTable("cprt", tag_offset, tag_size, &tagtable, &offsets);
1015
1016
  // TODO(eustas): isn't it the other way round: gray image has d50 WhitePoint?
1017
99
  if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1018
15
    Color wtpt;
1019
15
    JXL_RETURN_IF_ERROR(
1020
15
        CIEXYZFromWhiteCIExy(c.white_point_xy[0], c.white_point_xy[1], wtpt));
1021
15
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(wtpt, &tags));
1022
84
  } else {
1023
84
    Color d50{0.964203, 1.0, 0.824905};
1024
84
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(d50, &tags));
1025
84
  }
1026
99
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1027
99
  AddToICCTagTable("wtpt", tag_offset, tag_size, &tagtable, &offsets);
1028
1029
99
  if (c.color_space != JXL_COLOR_SPACE_GRAY) {
1030
    // Chromatic adaptation matrix
1031
84
    Matrix3x3 chad;
1032
84
    JXL_RETURN_IF_ERROR(
1033
84
        CreateICCChadMatrix(c.white_point_xy[0], c.white_point_xy[1], chad));
1034
1035
84
    JXL_RETURN_IF_ERROR(CreateICCChadTag(chad, &tags));
1036
84
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1037
84
    AddToICCTagTable("chad", tag_offset, tag_size, &tagtable, &offsets);
1038
84
  }
1039
1040
99
  if (c.color_space == JXL_COLOR_SPACE_RGB) {
1041
84
    MaybeCreateICCCICPTag(c, &tags, &tag_offset, &tag_size, &tagtable,
1042
84
                          &offsets);
1043
1044
84
    Matrix3x3 m;
1045
84
    JXL_RETURN_IF_ERROR(CreateICCRGBMatrix(
1046
84
        c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
1047
84
        c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
1048
84
        c.white_point_xy[0], c.white_point_xy[1], m));
1049
84
    Color r{m[0][0], m[1][0], m[2][0]};
1050
84
    Color g{m[0][1], m[1][1], m[2][1]};
1051
84
    Color b{m[0][2], m[1][2], m[2][2]};
1052
1053
84
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(r, &tags));
1054
84
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1055
84
    AddToICCTagTable("rXYZ", tag_offset, tag_size, &tagtable, &offsets);
1056
1057
84
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(g, &tags));
1058
84
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1059
84
    AddToICCTagTable("gXYZ", tag_offset, tag_size, &tagtable, &offsets);
1060
1061
84
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(b, &tags));
1062
84
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1063
84
    AddToICCTagTable("bXYZ", tag_offset, tag_size, &tagtable, &offsets);
1064
84
  }
1065
1066
99
  if (c.color_space == JXL_COLOR_SPACE_XYB) {
1067
0
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForXYB(&tags));
1068
0
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1069
0
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1070
0
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1071
0
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1072
0
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1073
99
  } else if (kEnable3DToneMapping && CanToneMap(c)) {
1074
0
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForHDR(c, &tags));
1075
0
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1076
0
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1077
0
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1078
0
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1079
0
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1080
99
  } else {
1081
99
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
1082
0
      float gamma = 1.0 / c.gamma;
1083
0
      JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({gamma}, 0, &tags));
1084
99
    } else if (c.color_space != JXL_COLOR_SPACE_XYB) {
1085
99
      switch (tf) {
1086
0
        case JXL_TRANSFER_FUNCTION_HLG:
1087
0
          CreateICCCurvCurvTag(
1088
0
              CreateTableCurve<64, ExtraTF::kHLG>(CanToneMap(c)), &tags);
1089
0
          break;
1090
0
        case JXL_TRANSFER_FUNCTION_PQ:
1091
0
          CreateICCCurvCurvTag(
1092
0
              CreateTableCurve<64, ExtraTF::kPQ>(CanToneMap(c)), &tags);
1093
0
          break;
1094
94
        case JXL_TRANSFER_FUNCTION_SRGB:
1095
94
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1096
94
              {2.4, 1.0 / 1.055, 0.055 / 1.055, 1.0 / 12.92, 0.04045}, 3,
1097
94
              &tags));
1098
94
          break;
1099
94
        case JXL_TRANSFER_FUNCTION_709:
1100
0
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1101
0
              {1.0 / 0.45, 1.0 / 1.099, 0.099 / 1.099, 1.0 / 4.5, 0.081}, 3,
1102
0
              &tags));
1103
0
          break;
1104
5
        case JXL_TRANSFER_FUNCTION_LINEAR:
1105
5
          JXL_RETURN_IF_ERROR(
1106
5
              CreateICCCurvParaTag({1.0, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1107
5
          break;
1108
5
        case JXL_TRANSFER_FUNCTION_DCI:
1109
0
          JXL_RETURN_IF_ERROR(
1110
0
              CreateICCCurvParaTag({2.6, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1111
0
          break;
1112
0
        default:
1113
0
          return JXL_UNREACHABLE("unknown TF %u",
1114
99
                                 static_cast<unsigned int>(tf));
1115
99
      }
1116
99
    }
1117
99
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1118
99
    if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1119
15
      AddToICCTagTable("kTRC", tag_offset, tag_size, &tagtable, &offsets);
1120
84
    } else {
1121
84
      AddToICCTagTable("rTRC", tag_offset, tag_size, &tagtable, &offsets);
1122
84
      AddToICCTagTable("gTRC", tag_offset, tag_size, &tagtable, &offsets);
1123
84
      AddToICCTagTable("bTRC", tag_offset, tag_size, &tagtable, &offsets);
1124
84
    }
1125
99
  }
1126
1127
  // Tag count
1128
99
  WriteICCUint32(offsets.size(), 0, &tagtable);
1129
1.08k
  for (size_t i = 0; i < offsets.size(); i++) {
1130
984
    WriteICCUint32(offsets[i] + header.size() + tagtable.size(), 4 + 12 * i + 4,
1131
984
                   &tagtable);
1132
984
  }
1133
1134
  // ICC profile size
1135
99
  WriteICCUint32(header.size() + tagtable.size() + tags.size(), 0, &header);
1136
1137
99
  *icc = header;
1138
99
  Bytes(tagtable).AppendTo(*icc);
1139
99
  Bytes(tags).AppendTo(*icc);
1140
1141
  // The MD5 checksum must be computed on the profile with profile flags,
1142
  // rendering intent, and region of the checksum itself, set to 0.
1143
  // TODO(lode): manually verify with a reliable tool that this creates correct
1144
  // signature (profile id) for ICC profiles.
1145
99
  std::vector<uint8_t> icc_sum = *icc;
1146
99
  if (icc_sum.size() >= 64 + 4) {
1147
99
    memset(icc_sum.data() + 44, 0, 4);
1148
99
    memset(icc_sum.data() + 64, 0, 4);
1149
99
  }
1150
99
  uint8_t checksum[16];
1151
99
  detail::ICCComputeMD5(icc_sum, checksum);
1152
1153
99
  memcpy(icc->data() + 84, checksum, sizeof(checksum));
1154
1155
99
  return true;
1156
99
}
Unexecuted instantiation: enc_fields.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
971
7.43k
                                     std::vector<uint8_t>* icc) {
972
7.43k
  std::vector<uint8_t> header;
973
7.43k
  std::vector<uint8_t> tagtable;
974
7.43k
  std::vector<uint8_t> tags;
975
7.43k
  JxlTransferFunction tf = c.transfer_function;
976
7.43k
  if (c.color_space == JXL_COLOR_SPACE_UNKNOWN ||
977
7.43k
      tf == JXL_TRANSFER_FUNCTION_UNKNOWN) {
978
0
    return false;  // Not an error
979
0
  }
980
981
7.43k
  switch (c.color_space) {
982
6.24k
    case JXL_COLOR_SPACE_RGB:
983
7.43k
    case JXL_COLOR_SPACE_GRAY:
984
7.43k
    case JXL_COLOR_SPACE_XYB:
985
7.43k
      break;  // OK
986
0
    default:
987
0
      return JXL_FAILURE("Invalid CS %u",
988
7.43k
                         static_cast<unsigned int>(c.color_space));
989
7.43k
  }
990
991
7.43k
  if (c.color_space == JXL_COLOR_SPACE_XYB &&
992
0
      c.rendering_intent != JXL_RENDERING_INTENT_PERCEPTUAL) {
993
0
    return JXL_FAILURE(
994
0
        "Only perceptual rendering intent implemented for XYB "
995
0
        "ICC profile.");
996
0
  }
997
998
7.43k
  JXL_RETURN_IF_ERROR(CreateICCHeader(c, &header));
999
1000
7.43k
  std::vector<size_t> offsets;
1001
  // tag count, deferred to later
1002
7.43k
  WriteICCUint32(0, tagtable.size(), &tagtable);
1003
1004
7.43k
  size_t tag_offset = 0;
1005
7.43k
  size_t tag_size = 0;
1006
1007
7.43k
  CreateICCMlucTag(ColorEncodingDescriptionImpl(c, false), &tags);
1008
7.43k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1009
7.43k
  AddToICCTagTable("desc", tag_offset, tag_size, &tagtable, &offsets);
1010
1011
7.43k
  const std::string copyright = "CC0";
1012
7.43k
  CreateICCMlucTag(copyright, &tags);
1013
7.43k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1014
7.43k
  AddToICCTagTable("cprt", tag_offset, tag_size, &tagtable, &offsets);
1015
1016
  // TODO(eustas): isn't it the other way round: gray image has d50 WhitePoint?
1017
7.43k
  if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1018
1.18k
    Color wtpt;
1019
1.18k
    JXL_RETURN_IF_ERROR(
1020
1.18k
        CIEXYZFromWhiteCIExy(c.white_point_xy[0], c.white_point_xy[1], wtpt));
1021
1.18k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(wtpt, &tags));
1022
6.24k
  } else {
1023
6.24k
    Color d50{0.964203, 1.0, 0.824905};
1024
6.24k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(d50, &tags));
1025
6.24k
  }
1026
7.43k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1027
7.43k
  AddToICCTagTable("wtpt", tag_offset, tag_size, &tagtable, &offsets);
1028
1029
7.43k
  if (c.color_space != JXL_COLOR_SPACE_GRAY) {
1030
    // Chromatic adaptation matrix
1031
6.24k
    Matrix3x3 chad;
1032
6.24k
    JXL_RETURN_IF_ERROR(
1033
6.24k
        CreateICCChadMatrix(c.white_point_xy[0], c.white_point_xy[1], chad));
1034
1035
5.84k
    JXL_RETURN_IF_ERROR(CreateICCChadTag(chad, &tags));
1036
5.84k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1037
5.84k
    AddToICCTagTable("chad", tag_offset, tag_size, &tagtable, &offsets);
1038
5.84k
  }
1039
1040
7.02k
  if (c.color_space == JXL_COLOR_SPACE_RGB) {
1041
5.84k
    MaybeCreateICCCICPTag(c, &tags, &tag_offset, &tag_size, &tagtable,
1042
5.84k
                          &offsets);
1043
1044
5.84k
    Matrix3x3 m;
1045
5.84k
    JXL_RETURN_IF_ERROR(CreateICCRGBMatrix(
1046
5.84k
        c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
1047
5.84k
        c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
1048
5.84k
        c.white_point_xy[0], c.white_point_xy[1], m));
1049
4.88k
    Color r{m[0][0], m[1][0], m[2][0]};
1050
4.88k
    Color g{m[0][1], m[1][1], m[2][1]};
1051
4.88k
    Color b{m[0][2], m[1][2], m[2][2]};
1052
1053
4.88k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(r, &tags));
1054
4.52k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1055
4.52k
    AddToICCTagTable("rXYZ", tag_offset, tag_size, &tagtable, &offsets);
1056
1057
4.52k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(g, &tags));
1058
4.50k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1059
4.50k
    AddToICCTagTable("gXYZ", tag_offset, tag_size, &tagtable, &offsets);
1060
1061
4.50k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(b, &tags));
1062
4.48k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1063
4.48k
    AddToICCTagTable("bXYZ", tag_offset, tag_size, &tagtable, &offsets);
1064
4.48k
  }
1065
1066
5.67k
  if (c.color_space == JXL_COLOR_SPACE_XYB) {
1067
0
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForXYB(&tags));
1068
0
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1069
0
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1070
0
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1071
0
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1072
0
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1073
5.67k
  } else if (kEnable3DToneMapping && CanToneMap(c)) {
1074
24
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForHDR(c, &tags));
1075
24
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1076
24
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1077
24
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1078
24
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1079
24
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1080
5.64k
  } else {
1081
5.64k
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
1082
178
      float gamma = 1.0 / c.gamma;
1083
178
      JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({gamma}, 0, &tags));
1084
5.46k
    } else if (c.color_space != JXL_COLOR_SPACE_XYB) {
1085
5.46k
      switch (tf) {
1086
791
        case JXL_TRANSFER_FUNCTION_HLG:
1087
791
          CreateICCCurvCurvTag(
1088
791
              CreateTableCurve<64, ExtraTF::kHLG>(CanToneMap(c)), &tags);
1089
791
          break;
1090
803
        case JXL_TRANSFER_FUNCTION_PQ:
1091
803
          CreateICCCurvCurvTag(
1092
803
              CreateTableCurve<64, ExtraTF::kPQ>(CanToneMap(c)), &tags);
1093
803
          break;
1094
874
        case JXL_TRANSFER_FUNCTION_SRGB:
1095
874
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1096
874
              {2.4, 1.0 / 1.055, 0.055 / 1.055, 1.0 / 12.92, 0.04045}, 3,
1097
874
              &tags));
1098
874
          break;
1099
1.02k
        case JXL_TRANSFER_FUNCTION_709:
1100
1.02k
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1101
1.02k
              {1.0 / 0.45, 1.0 / 1.099, 0.099 / 1.099, 1.0 / 4.5, 0.081}, 3,
1102
1.02k
              &tags));
1103
1.02k
          break;
1104
1.11k
        case JXL_TRANSFER_FUNCTION_LINEAR:
1105
1.11k
          JXL_RETURN_IF_ERROR(
1106
1.11k
              CreateICCCurvParaTag({1.0, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1107
1.11k
          break;
1108
1.11k
        case JXL_TRANSFER_FUNCTION_DCI:
1109
857
          JXL_RETURN_IF_ERROR(
1110
857
              CreateICCCurvParaTag({2.6, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1111
857
          break;
1112
857
        default:
1113
0
          return JXL_UNREACHABLE("unknown TF %u",
1114
5.46k
                                 static_cast<unsigned int>(tf));
1115
5.46k
      }
1116
5.46k
    }
1117
5.64k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1118
5.64k
    if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1119
1.18k
      AddToICCTagTable("kTRC", tag_offset, tag_size, &tagtable, &offsets);
1120
4.46k
    } else {
1121
4.46k
      AddToICCTagTable("rTRC", tag_offset, tag_size, &tagtable, &offsets);
1122
4.46k
      AddToICCTagTable("gTRC", tag_offset, tag_size, &tagtable, &offsets);
1123
4.46k
      AddToICCTagTable("bTRC", tag_offset, tag_size, &tagtable, &offsets);
1124
4.46k
    }
1125
5.64k
  }
1126
1127
  // Tag count
1128
5.67k
  WriteICCUint32(offsets.size(), 0, &tagtable);
1129
55.3k
  for (size_t i = 0; i < offsets.size(); i++) {
1130
49.6k
    WriteICCUint32(offsets[i] + header.size() + tagtable.size(), 4 + 12 * i + 4,
1131
49.6k
                   &tagtable);
1132
49.6k
  }
1133
1134
  // ICC profile size
1135
5.67k
  WriteICCUint32(header.size() + tagtable.size() + tags.size(), 0, &header);
1136
1137
5.67k
  *icc = header;
1138
5.67k
  Bytes(tagtable).AppendTo(*icc);
1139
5.67k
  Bytes(tags).AppendTo(*icc);
1140
1141
  // The MD5 checksum must be computed on the profile with profile flags,
1142
  // rendering intent, and region of the checksum itself, set to 0.
1143
  // TODO(lode): manually verify with a reliable tool that this creates correct
1144
  // signature (profile id) for ICC profiles.
1145
5.67k
  std::vector<uint8_t> icc_sum = *icc;
1146
5.67k
  if (icc_sum.size() >= 64 + 4) {
1147
5.67k
    memset(icc_sum.data() + 44, 0, 4);
1148
5.67k
    memset(icc_sum.data() + 64, 0, 4);
1149
5.67k
  }
1150
5.67k
  uint8_t checksum[16];
1151
5.67k
  detail::ICCComputeMD5(icc_sum, checksum);
1152
1153
5.67k
  memcpy(icc->data() + 84, checksum, sizeof(checksum));
1154
1155
5.67k
  return true;
1156
5.67k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
971
471k
                                     std::vector<uint8_t>* icc) {
972
471k
  std::vector<uint8_t> header;
973
471k
  std::vector<uint8_t> tagtable;
974
471k
  std::vector<uint8_t> tags;
975
471k
  JxlTransferFunction tf = c.transfer_function;
976
471k
  if (c.color_space == JXL_COLOR_SPACE_UNKNOWN ||
977
471k
      tf == JXL_TRANSFER_FUNCTION_UNKNOWN) {
978
334
    return false;  // Not an error
979
334
  }
980
981
471k
  switch (c.color_space) {
982
469k
    case JXL_COLOR_SPACE_RGB:
983
471k
    case JXL_COLOR_SPACE_GRAY:
984
471k
    case JXL_COLOR_SPACE_XYB:
985
471k
      break;  // OK
986
0
    default:
987
0
      return JXL_FAILURE("Invalid CS %u",
988
471k
                         static_cast<unsigned int>(c.color_space));
989
471k
  }
990
991
471k
  if (c.color_space == JXL_COLOR_SPACE_XYB &&
992
185
      c.rendering_intent != JXL_RENDERING_INTENT_PERCEPTUAL) {
993
8
    return JXL_FAILURE(
994
8
        "Only perceptual rendering intent implemented for XYB "
995
8
        "ICC profile.");
996
8
  }
997
998
471k
  JXL_RETURN_IF_ERROR(CreateICCHeader(c, &header));
999
1000
471k
  std::vector<size_t> offsets;
1001
  // tag count, deferred to later
1002
471k
  WriteICCUint32(0, tagtable.size(), &tagtable);
1003
1004
471k
  size_t tag_offset = 0;
1005
471k
  size_t tag_size = 0;
1006
1007
471k
  CreateICCMlucTag(ColorEncodingDescriptionImpl(c, false), &tags);
1008
471k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1009
471k
  AddToICCTagTable("desc", tag_offset, tag_size, &tagtable, &offsets);
1010
1011
471k
  const std::string copyright = "CC0";
1012
471k
  CreateICCMlucTag(copyright, &tags);
1013
471k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1014
471k
  AddToICCTagTable("cprt", tag_offset, tag_size, &tagtable, &offsets);
1015
1016
  // TODO(eustas): isn't it the other way round: gray image has d50 WhitePoint?
1017
471k
  if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1018
1.65k
    Color wtpt;
1019
1.65k
    JXL_RETURN_IF_ERROR(
1020
1.65k
        CIEXYZFromWhiteCIExy(c.white_point_xy[0], c.white_point_xy[1], wtpt));
1021
1.64k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(wtpt, &tags));
1022
469k
  } else {
1023
469k
    Color d50{0.964203, 1.0, 0.824905};
1024
469k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(d50, &tags));
1025
469k
  }
1026
471k
  FinalizeICCTag(&tags, &tag_offset, &tag_size);
1027
471k
  AddToICCTagTable("wtpt", tag_offset, tag_size, &tagtable, &offsets);
1028
1029
471k
  if (c.color_space != JXL_COLOR_SPACE_GRAY) {
1030
    // Chromatic adaptation matrix
1031
469k
    Matrix3x3 chad;
1032
469k
    JXL_RETURN_IF_ERROR(
1033
469k
        CreateICCChadMatrix(c.white_point_xy[0], c.white_point_xy[1], chad));
1034
1035
469k
    JXL_RETURN_IF_ERROR(CreateICCChadTag(chad, &tags));
1036
469k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1037
469k
    AddToICCTagTable("chad", tag_offset, tag_size, &tagtable, &offsets);
1038
469k
  }
1039
1040
471k
  if (c.color_space == JXL_COLOR_SPACE_RGB) {
1041
469k
    MaybeCreateICCCICPTag(c, &tags, &tag_offset, &tag_size, &tagtable,
1042
469k
                          &offsets);
1043
1044
469k
    Matrix3x3 m;
1045
469k
    JXL_RETURN_IF_ERROR(CreateICCRGBMatrix(
1046
469k
        c.primaries_red_xy[0], c.primaries_red_xy[1], c.primaries_green_xy[0],
1047
469k
        c.primaries_green_xy[1], c.primaries_blue_xy[0], c.primaries_blue_xy[1],
1048
469k
        c.white_point_xy[0], c.white_point_xy[1], m));
1049
469k
    Color r{m[0][0], m[1][0], m[2][0]};
1050
469k
    Color g{m[0][1], m[1][1], m[2][1]};
1051
469k
    Color b{m[0][2], m[1][2], m[2][2]};
1052
1053
469k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(r, &tags));
1054
469k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1055
469k
    AddToICCTagTable("rXYZ", tag_offset, tag_size, &tagtable, &offsets);
1056
1057
469k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(g, &tags));
1058
469k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1059
469k
    AddToICCTagTable("gXYZ", tag_offset, tag_size, &tagtable, &offsets);
1060
1061
469k
    JXL_RETURN_IF_ERROR(CreateICCXYZTag(b, &tags));
1062
469k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1063
469k
    AddToICCTagTable("bXYZ", tag_offset, tag_size, &tagtable, &offsets);
1064
469k
  }
1065
1066
471k
  if (c.color_space == JXL_COLOR_SPACE_XYB) {
1067
177
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForXYB(&tags));
1068
177
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1069
177
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1070
177
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1071
177
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1072
177
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1073
470k
  } else if (kEnable3DToneMapping && CanToneMap(c)) {
1074
38
    JXL_RETURN_IF_ERROR(CreateICCLutAtoBTagForHDR(c, &tags));
1075
38
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1076
38
    AddToICCTagTable("A2B0", tag_offset, tag_size, &tagtable, &offsets);
1077
38
    JXL_RETURN_IF_ERROR(CreateICCNoOpBToATag(&tags));
1078
38
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1079
38
    AddToICCTagTable("B2A0", tag_offset, tag_size, &tagtable, &offsets);
1080
470k
  } else {
1081
470k
    if (tf == JXL_TRANSFER_FUNCTION_GAMMA) {
1082
772
      float gamma = 1.0 / c.gamma;
1083
772
      JXL_RETURN_IF_ERROR(CreateICCCurvParaTag({gamma}, 0, &tags));
1084
470k
    } else if (c.color_space != JXL_COLOR_SPACE_XYB) {
1085
470k
      switch (tf) {
1086
359
        case JXL_TRANSFER_FUNCTION_HLG:
1087
359
          CreateICCCurvCurvTag(
1088
359
              CreateTableCurve<64, ExtraTF::kHLG>(CanToneMap(c)), &tags);
1089
359
          break;
1090
144
        case JXL_TRANSFER_FUNCTION_PQ:
1091
144
          CreateICCCurvCurvTag(
1092
144
              CreateTableCurve<64, ExtraTF::kPQ>(CanToneMap(c)), &tags);
1093
144
          break;
1094
468k
        case JXL_TRANSFER_FUNCTION_SRGB:
1095
468k
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1096
468k
              {2.4, 1.0 / 1.055, 0.055 / 1.055, 1.0 / 12.92, 0.04045}, 3,
1097
468k
              &tags));
1098
468k
          break;
1099
468k
        case JXL_TRANSFER_FUNCTION_709:
1100
646
          JXL_RETURN_IF_ERROR(CreateICCCurvParaTag(
1101
646
              {1.0 / 0.45, 1.0 / 1.099, 0.099 / 1.099, 1.0 / 4.5, 0.081}, 3,
1102
646
              &tags));
1103
646
          break;
1104
646
        case JXL_TRANSFER_FUNCTION_LINEAR:
1105
206
          JXL_RETURN_IF_ERROR(
1106
206
              CreateICCCurvParaTag({1.0, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1107
206
          break;
1108
206
        case JXL_TRANSFER_FUNCTION_DCI:
1109
161
          JXL_RETURN_IF_ERROR(
1110
161
              CreateICCCurvParaTag({2.6, 1.0, 0.0, 1.0, 0.0}, 3, &tags));
1111
161
          break;
1112
161
        default:
1113
0
          return JXL_UNREACHABLE("unknown TF %u",
1114
470k
                                 static_cast<unsigned int>(tf));
1115
470k
      }
1116
470k
    }
1117
470k
    FinalizeICCTag(&tags, &tag_offset, &tag_size);
1118
470k
    if (c.color_space == JXL_COLOR_SPACE_GRAY) {
1119
1.63k
      AddToICCTagTable("kTRC", tag_offset, tag_size, &tagtable, &offsets);
1120
469k
    } else {
1121
469k
      AddToICCTagTable("rTRC", tag_offset, tag_size, &tagtable, &offsets);
1122
469k
      AddToICCTagTable("gTRC", tag_offset, tag_size, &tagtable, &offsets);
1123
469k
      AddToICCTagTable("bTRC", tag_offset, tag_size, &tagtable, &offsets);
1124
469k
    }
1125
470k
  }
1126
1127
  // Tag count
1128
471k
  WriteICCUint32(offsets.size(), 0, &tagtable);
1129
5.64M
  for (size_t i = 0; i < offsets.size(); i++) {
1130
5.16M
    WriteICCUint32(offsets[i] + header.size() + tagtable.size(), 4 + 12 * i + 4,
1131
5.16M
                   &tagtable);
1132
5.16M
  }
1133
1134
  // ICC profile size
1135
471k
  WriteICCUint32(header.size() + tagtable.size() + tags.size(), 0, &header);
1136
1137
471k
  *icc = header;
1138
471k
  Bytes(tagtable).AppendTo(*icc);
1139
471k
  Bytes(tags).AppendTo(*icc);
1140
1141
  // The MD5 checksum must be computed on the profile with profile flags,
1142
  // rendering intent, and region of the checksum itself, set to 0.
1143
  // TODO(lode): manually verify with a reliable tool that this creates correct
1144
  // signature (profile id) for ICC profiles.
1145
471k
  std::vector<uint8_t> icc_sum = *icc;
1146
471k
  if (icc_sum.size() >= 64 + 4) {
1147
471k
    memset(icc_sum.data() + 44, 0, 4);
1148
471k
    memset(icc_sum.data() + 64, 0, 4);
1149
471k
  }
1150
471k
  uint8_t checksum[16];
1151
471k
  detail::ICCComputeMD5(icc_sum, checksum);
1152
1153
471k
  memcpy(icc->data() + 84, checksum, sizeof(checksum));
1154
1155
471k
  return true;
1156
471k
}
Unexecuted instantiation: compressed_dc.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::detail::MaybeCreateProfileImpl(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
1157
1158
}  // namespace detail
1159
1160
// Returns a representation of the ColorEncoding fields (not icc).
1161
// Example description: "RGB_D65_SRG_Rel_Lin"
1162
static JXL_MAYBE_UNUSED std::string ColorEncodingDescription(
1163
0
    const JxlColorEncoding& c, bool uniquename = true) {
1164
0
  return detail::ColorEncodingDescriptionImpl(c, uniquename);
1165
0
}
Unexecuted instantiation: encode.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_fields.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_ans.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_frame.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_modular.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_debug_image.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_detect_dots.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_quant_weights.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_xyb.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_image_bundle.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_external_image.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_heuristics.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_cache.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_group.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_progressive_split.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: jxl_cms.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_jpeg_data.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: enc_encoding.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: color_encoding_internal.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: compressed_dc.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_cache.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: blending.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_external_image.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_frame.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_group.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_modular.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_noise.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: dec_xyb.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: decode.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: epf.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: frame_header.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: image_bundle.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: image_metadata.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: luminance.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: passes_state.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: quant_weights.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: render_pipeline.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_blending.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_cms.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_epf.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_from_linear.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_gaborish.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_noise.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_patches.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_splines.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_spot.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_to_linear.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_upsampling.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_write.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_xyb.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: stage_ycbcr.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::ColorEncodingDescription(JxlColorEncoding const&, bool)
1166
1167
// NOTE: for XYB colorspace, the created profile can be used to transform a
1168
// *scaled* XYB image (created by ScaleXYB()) to another colorspace.
1169
static JXL_MAYBE_UNUSED Status MaybeCreateProfile(const JxlColorEncoding& c,
1170
479k
                                                  std::vector<uint8_t>* icc) {
1171
479k
  return detail::MaybeCreateProfileImpl(c, icc);
1172
479k
}
encode.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
1170
99
                                                  std::vector<uint8_t>* icc) {
1171
99
  return detail::MaybeCreateProfileImpl(c, icc);
1172
99
}
Unexecuted instantiation: enc_fields.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ans.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_frame.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_modular.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_debug_image.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_detect_dots.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_quant_weights.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_xyb.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_image_bundle.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_external_image.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_heuristics.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_cache.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_group.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_progressive_split.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
jxl_cms.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
1170
7.43k
                                                  std::vector<uint8_t>* icc) {
1171
7.43k
  return detail::MaybeCreateProfileImpl(c, icc);
1172
7.43k
}
Unexecuted instantiation: enc_jpeg_data.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: enc_encoding.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
color_encoding_internal.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Line
Count
Source
1170
471k
                                                  std::vector<uint8_t>* icc) {
1171
471k
  return detail::MaybeCreateProfileImpl(c, icc);
1172
471k
}
Unexecuted instantiation: compressed_dc.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_cache.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: blending.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_external_image.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_frame.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_group.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_modular.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_noise.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: dec_xyb.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: epf.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: frame_header.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_bundle.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: image_metadata.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: luminance.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: passes_state.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: quant_weights.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_blending.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_cms.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_epf.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_from_linear.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_gaborish.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_noise.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_patches.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_splines.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_spot.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_to_linear.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_upsampling.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_write.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_xyb.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: stage_ycbcr.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::MaybeCreateProfile(JxlColorEncoding const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)
1173
1174
}  // namespace jxl
1175
1176
#endif  // LIB_JXL_CMS_JXL_CMS_INTERNAL_H_