/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2021, Google Inc.
 * Copyright (C) 2024 Red Hat Inc.
 *
 * Software ISP IPA Context
 */

#include "ipa_context.h"

/**
 * \file ipa_context.h
 * \brief Context and state information shared between the algorithms
 */

namespace libcamera::ipa::soft {

/**
 * \struct IPASessionConfiguration
 * \brief Session configuration for the IPA module
 *
 * The session configuration contains all IPA configuration parameters that
 * remain constant during the capture session, from IPA module start to stop.
 * It is typically set during the configure() operation of the IPA module, but
 * may also be updated in the start() operation.
 */

/**
 * \struct IPAActiveState
 * \brief The active state of the IPA algorithms
 *
 * The IPA is fed with the statistics generated from the latest frame processed.
 * The statistics are then processed by the IPA algorithms to compute parameters
 * required for the next frame capture and processing. The current state of the
 * algorithms is reflected through the IPAActiveState to store the values most
 * recently computed by the IPA algorithms.
 */

/**
 * \struct IPAContext
 * \brief Global IPA context data shared between all algorithms
 *
 * \var IPAContext::configuration
 * \brief The IPA session configuration, immutable during the session
 *
 * \var IPAContext::frameContexts
 * \brief Ring buffer of the IPAFrameContext(s)
 *
 * \var IPAContext::activeState
 * \brief The current state of IPA algorithms
 */

/**
 * \var IPASessionConfiguration::gamma
 * \brief Gamma value to be used in the raw image processing
 */

/**
 * \var IPAActiveState::black
 * \brief Context for the Black Level algorithm
 *
 * \var IPAActiveState::black.level
 * \brief Current determined black level
 */

/**
 * \var IPAActiveState::gains
 * \brief Context for gains in the Colors algorithm
 *
 * \var IPAActiveState::gains.red
 * \brief Gain of red color
 *
 * \var IPAActiveState::gains.green
 * \brief Gain of green color
 *
 * \var IPAActiveState::gains.blue
 * \brief Gain of blue color
 */

/**
 * \var IPAActiveState::agc
 * \brief Context for the AGC algorithm
 *
 * \var IPAActiveState::agc.exposure
 * \brief Current exposure value
 *
 * \var IPAActiveState::agc.again
 * \brief Current analog gain value
 */

/**
 * \var IPAActiveState::gamma
 * \brief Context for gamma in the Colors algorithm
 *
 * \var IPAActiveState::gamma.gammaTable
 * \brief Computed gamma table
 *
 * \var IPAActiveState::gamma.blackLevel
 * \brief Black level used for the gamma table computation
 */

} /* namespace libcamera::ipa::soft */