diff options
author | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2022-07-21 13:13:04 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-09-28 05:41:03 +0300 |
commit | ef447647b6b71fc19a9560352afe4665711150ac (patch) | |
tree | ad8f9eb2df36f465738b08346dfb3ca627fbc752 /src | |
parent | b612496fc4f96677cde61d6a65247335ea0185c2 (diff) |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/ipa/libipa/fc_queue.cpp | 22 | ||||
-rw-r--r-- | src/ipa/libipa/fc_queue.h | 10 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/ipa/libipa/fc_queue.cpp b/src/ipa/libipa/fc_queue.cpp index 57a36951..e812faa5 100644 --- a/src/ipa/libipa/fc_queue.cpp +++ b/src/ipa/libipa/fc_queue.cpp @@ -21,6 +21,24 @@ namespace ipa { */ /** + * \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 * \tparam FrameContext The IPA module-specific FrameContext derived class type @@ -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. */ /** diff --git a/src/ipa/libipa/fc_queue.h b/src/ipa/libipa/fc_queue.h index 4f5cb5d3..a589e7e1 100644 --- a/src/ipa/libipa/fc_queue.h +++ b/src/ipa/libipa/fc_queue.h @@ -7,6 +7,7 @@ #pragma once +#include <stdint.h> #include <vector> #include <libcamera/base/log.h> @@ -18,6 +19,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 { public: |