control_ids.h defines the contrast type as float, let's use the same in simple IPA, instead of double. Saturation and gamma already use float, except for the knobs initializers, let's use float for the knobs too. Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Robert Mader <robert.mader@collabora.com> Signed-off-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2023-2025 Red Hat Inc.
|
|
*
|
|
* Authors:
|
|
* Hans de Goede <hdegoede@redhat.com>
|
|
*
|
|
* DebayerParams header
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <array>
|
|
#include <stdint.h>
|
|
|
|
#include "libcamera/internal/matrix.h"
|
|
#include "libcamera/internal/vector.h"
|
|
|
|
namespace libcamera {
|
|
|
|
struct DebayerParams {
|
|
static constexpr unsigned int kRGBLookupSize = 256;
|
|
|
|
struct CcmColumn {
|
|
int16_t r;
|
|
int16_t g;
|
|
int16_t b;
|
|
};
|
|
|
|
using LookupTable = std::array<uint8_t, kRGBLookupSize>;
|
|
using CcmLookupTable = std::array<CcmColumn, kRGBLookupSize>;
|
|
|
|
/*
|
|
* Color lookup tables when CCM is not used.
|
|
*
|
|
* Each color of a debayered pixel is amended by the corresponding
|
|
* value in the given table.
|
|
*/
|
|
LookupTable red;
|
|
LookupTable green;
|
|
LookupTable blue;
|
|
|
|
/*
|
|
* Color and gamma lookup tables when CCM is used.
|
|
*
|
|
* Each of the CcmLookupTable's corresponds to a CCM column; together they
|
|
* make a complete 3x3 CCM lookup table. The CCM is applied on debayered
|
|
* pixels and then the gamma lookup table is used to set the resulting
|
|
* values of all the three colors.
|
|
*/
|
|
CcmLookupTable redCcm;
|
|
CcmLookupTable greenCcm;
|
|
CcmLookupTable blueCcm;
|
|
LookupTable gammaLut;
|
|
|
|
/*
|
|
* Per frame corrections as calculated by the IPA
|
|
*/
|
|
Matrix<float, 3, 3> ccm;
|
|
RGB<float> blackLevel;
|
|
float gamma;
|
|
float contrastExp;
|
|
};
|
|
|
|
} /* namespace libcamera */
|