fcf56b9716
Introduce a new algorithm to manage the tone mapping handling of the IPU3. The initial algorithm is chosen to configure the gamma contrast curve which moves the implementation out of AWB for simplicity. As it is initialised with a default gamma value of 1.1, there is no need to use the default table at initialisation anymore. This demonstrates the way to use process() call when the EventStatReady comes in. The function calculates the LUT in the context of a frame, and when prepare() is called, the parameters are filled with the updated values. AGC is modified to take the new process interface into account. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
42 lines
746 B
C++
42 lines
746 B
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2021, Google Inc.
|
|
*
|
|
* ipu3_ipa_context.h - IPU3 IPA Context
|
|
*
|
|
*/
|
|
#ifndef __LIBCAMERA_IPU3_IPA_CONTEXT_H__
|
|
#define __LIBCAMERA_IPU3_IPA_CONTEXT_H__
|
|
|
|
#include <linux/intel-ipu3.h>
|
|
|
|
#include <libcamera/geometry.h>
|
|
|
|
namespace libcamera {
|
|
|
|
namespace ipa::ipu3 {
|
|
|
|
struct IPASessionConfiguration {
|
|
struct {
|
|
ipu3_uapi_grid_config bdsGrid;
|
|
Size bdsOutputSize;
|
|
} grid;
|
|
};
|
|
|
|
struct IPAFrameContext {
|
|
struct {
|
|
struct ipu3_uapi_gamma_corr_lut gammaCorrection;
|
|
} toneMapping;
|
|
};
|
|
|
|
struct IPAContext {
|
|
IPASessionConfiguration configuration;
|
|
IPAFrameContext frameContext;
|
|
};
|
|
|
|
} /* namespace ipa::ipu3 */
|
|
|
|
} /* namespace libcamera*/
|
|
|
|
#endif /* __LIBCAMERA_IPU3_IPA_CONTEXT_H__ */
|