ipa: libipa: Provide a common base for frame contexts

Provide a common FrameContext as a base for IPA modules to inherit from.

This will allow having a common set of parameters for every frame
context managed by the FCQueue implementation.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Kieran Bingham
2022-07-21 13:13:04 +01:00
committed by Laurent Pinchart
parent b612496fc4
commit ef447647b6
2 changed files with 32 additions and 0 deletions

View File

@@ -20,6 +20,24 @@ namespace ipa {
* \brief Queue of per-frame contexts
*/
/**
* \struct FrameContext
* \brief Context for a frame
*
* The frame context stores data specific to a single frame processed by the
* IPA module. Each frame processed by the IPA module has a context associated
* with it, accessible through the Frame Context Queue.
*
* Fields in the frame context should reflect values and controls associated
* with the specific frame as requested by the application, and as configured by
* the hardware. Fields can be read by algorithms to determine if they should
* update any specific action for this frame, and finally to update the metadata
* control lists when the frame is fully completed.
*
* \var FrameContext::frame
* \brief The frame number
*/
/**
* \class FCQueue
* \brief A support class for managing FrameContext instances in IPA modules
@@ -65,6 +83,10 @@ namespace ipa {
* allowed to overflow, which must be ensured by pipeline handlers never
* queuing more in-flight requests to the IPA module than the queue size. If an
* overflow condition is detected, the queue will log a fatal error.
*
* IPA module-specific frame context implementations shall inherit from the
* FrameContext base class to support the minimum required features for a
* FrameContext.
*/
/**

View File

@@ -7,6 +7,7 @@
#pragma once
#include <stdint.h>
#include <vector>
#include <libcamera/base/log.h>
@@ -17,6 +18,15 @@ LOG_DECLARE_CATEGORY(FCQueue)
namespace ipa {
template<typename FrameContext>
class FCQueue;
struct FrameContext {
private:
template<typename T> friend class FCQueue;
uint32_t frame;
};
template<typename FrameContext>
class FCQueue
{