Module: JXL::Headers::CustomTransform

Defined in:
lib/jxl/headers/custom_transform.rb

Defined Under Namespace

Classes: Opsin, TransformData

Constant Summary collapse

WEIGHT_COUNTS =
[15, 55, 210].freeze
DEFAULT_MATRIX =
[11.031566901960783, -9.866943921568629, -0.16462299647058826,
-3.254147380392157, 4.418770392156863, -0.16462299647058826,
-3.6588512862745097, 2.7129230470588235, 1.9459282392156863].freeze
DEFAULT_BIASES =
Array.new(3, -0.0037930732552754493).freeze
DEFAULT_QUANT_BIASES =
[0.945349926692846, 0.9299455010825141, 0.9500648966626564, 0.145].freeze

Class Method Summary collapse

Class Method Details

.read(reader, xyb_encoded:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/jxl/headers/custom_transform.rb', line 17

def read(reader, xyb_encoded:)
  return defaults if Bit::Field.read_bool(reader)

  opsin = xyb_encoded ? read_opsin(reader) : nil
  mask = reader.read(3)
  weights = WEIGHT_COUNTS.each_with_index.map do |count, index|
    mask[index].zero? ? nil : Array.new(count) { Bit::Field.f16(reader) }
  end
  TransformData.new(opsin:, weights:)
end