From ef447647b6b71fc19a9560352afe4665711150ac Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Thu, 21 Jul 2022 13:13:04 +0100 Subject: 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 Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham Reviewed-by: Jacopo Mondi --- src/ipa/libipa/fc_queue.cpp | 22 ++++++++++++++++++++++ src/ipa/libipa/fc_queue.h | 10 ++++++++++ 2 files changed, 32 insertions(+) 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 @@ -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. */ /** 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 #include #include @@ -17,6 +18,15 @@ LOG_DECLARE_CATEGORY(FCQueue) namespace ipa { +template +class FCQueue; + +struct FrameContext { +private: + template friend class FCQueue; + uint32_t frame; +}; + template class FCQueue { -- cgit v1.2.1