Coverage Report

Created: 2025-11-14 07:32

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libjxl/lib/jxl/chroma_from_luma.cc
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
#include "lib/jxl/chroma_from_luma.h"
7
8
#include <jxl/memory_manager.h>
9
10
#include <cstddef>
11
#include <cstdint>
12
#include <cstdlib>  // abs
13
#include <limits>
14
15
#include "lib/jxl/base/common.h"
16
#include "lib/jxl/base/status.h"
17
#include "lib/jxl/dec_bit_reader.h"
18
#include "lib/jxl/fields.h"
19
#include "lib/jxl/image.h"
20
#include "lib/jxl/image_ops.h"
21
22
namespace jxl {
23
24
6.28k
Status ColorCorrelation::DecodeDC(BitReader* br) {
25
6.28k
  if (br->ReadFixedBits<1>() == 1) {
26
    // All default.
27
1.88k
    return true;
28
1.88k
  }
29
4.40k
  SetColorFactor(U32Coder::Read(kColorFactorDist, br));
30
4.40k
  JXL_RETURN_IF_ERROR(F16Coder::Read(br, &base_correlation_x_));
31
4.40k
  if (std::abs(base_correlation_x_) > 4.0f) {
32
2
    return JXL_FAILURE("Base X correlation is out of range");
33
2
  }
34
4.40k
  JXL_RETURN_IF_ERROR(F16Coder::Read(br, &base_correlation_b_));
35
4.40k
  if (std::abs(base_correlation_b_) > 4.0f) {
36
2
    return JXL_FAILURE("Base B correlation is out of range");
37
2
  }
38
4.40k
  ytox_dc_ = static_cast<int>(br->ReadFixedBits<kBitsPerByte>()) +
39
4.40k
             std::numeric_limits<int8_t>::min();
40
4.40k
  ytob_dc_ = static_cast<int>(br->ReadFixedBits<kBitsPerByte>()) +
41
4.40k
             std::numeric_limits<int8_t>::min();
42
4.40k
  RecomputeDCFactors();
43
4.40k
  return true;
44
4.40k
}
45
46
StatusOr<ColorCorrelationMap> ColorCorrelationMap::Create(
47
42.0k
    JxlMemoryManager* memory_manager, size_t xsize, size_t ysize, bool XYB) {
48
42.0k
  ColorCorrelationMap result;
49
42.0k
  size_t xblocks = DivCeil(xsize, kColorTileDim);
50
42.0k
  size_t yblocks = DivCeil(ysize, kColorTileDim);
51
42.0k
  JXL_ASSIGN_OR_RETURN(result.ytox_map,
52
42.0k
                       ImageSB::Create(memory_manager, xblocks, yblocks));
53
42.0k
  JXL_ASSIGN_OR_RETURN(result.ytob_map,
54
42.0k
                       ImageSB::Create(memory_manager, xblocks, yblocks));
55
42.0k
  ZeroFillImage(&result.ytox_map);
56
42.0k
  ZeroFillImage(&result.ytob_map);
57
42.0k
  if (!XYB) {
58
0
    result.base_.base_correlation_b_ = 0;
59
0
  }
60
42.0k
  result.base_.RecomputeDCFactors();
61
42.0k
  return result;
62
42.0k
}
63
64
}  // namespace jxl