ipa: libipa: algorithm: queueRequest(): Pass frame context

IPA modules have access to incoming Request's controls list and need to
store them in the frame context at queueRequest() time. Pass the frame
context to the Algorithm::queueRequest() function.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Kieran Bingham 2022-07-21 13:13:10 +01:00 committed by Laurent Pinchart
parent 494662f082
commit 80cfe8f0f7
11 changed files with 14 additions and 1 deletions

View file

@ -88,6 +88,7 @@ namespace ipa {
* \brief Provide control values to the algorithm * \brief Provide control values to the algorithm
* \param[in] context The shared IPA context * \param[in] context The shared IPA context
* \param[in] frame The frame number to apply the control values * \param[in] frame The frame number to apply the control values
* \param[in] frameContext The current frame's context
* \param[in] controls The list of user controls * \param[in] controls The list of user controls
* *
* This function is called for each request queued to the camera. It provides * This function is called for each request queued to the camera. It provides

View file

@ -47,6 +47,7 @@ public:
virtual void queueRequest([[maybe_unused]] typename Module::Context &context, virtual void queueRequest([[maybe_unused]] typename Module::Context &context,
[[maybe_unused]] const uint32_t frame, [[maybe_unused]] const uint32_t frame,
[[maybe_unused]] typename Module::FrameContext &frameContext,
[[maybe_unused]] const ControlList &controls) [[maybe_unused]] const ControlList &controls)
{ {
} }

View file

@ -128,6 +128,7 @@ void Awb::prepare(IPAContext &context,
*/ */
void Awb::queueRequest(IPAContext &context, void Awb::queueRequest(IPAContext &context,
[[maybe_unused]] const uint32_t frame, [[maybe_unused]] const uint32_t frame,
[[maybe_unused]] IPAFrameContext &frameContext,
const ControlList &controls) const ControlList &controls)
{ {
auto &awb = context.frameContext.awb; auto &awb = context.frameContext.awb;

View file

@ -24,6 +24,7 @@ public:
IPAFrameContext &frameContext, IPAFrameContext &frameContext,
rkisp1_params_cfg *params) override; rkisp1_params_cfg *params) override;
void queueRequest(IPAContext &context, const uint32_t frame, void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override; const ControlList &controls) override;
void process(IPAContext &context, const uint32_t frame, void process(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameCtx, IPAFrameContext &frameCtx,

View file

@ -38,6 +38,7 @@ LOG_DEFINE_CATEGORY(RkISP1CProc)
*/ */
void ColorProcessing::queueRequest(IPAContext &context, void ColorProcessing::queueRequest(IPAContext &context,
[[maybe_unused]] const uint32_t frame, [[maybe_unused]] const uint32_t frame,
[[maybe_unused]] IPAFrameContext &frameContext,
const ControlList &controls) const ControlList &controls)
{ {
auto &cproc = context.frameContext.cproc; auto &cproc = context.frameContext.cproc;

View file

@ -22,6 +22,7 @@ public:
~ColorProcessing() = default; ~ColorProcessing() = default;
void queueRequest(IPAContext &context, const uint32_t frame, void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override; const ControlList &controls) override;
void prepare(IPAContext &context, const uint32_t frame, void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext, IPAFrameContext &frameContext,

View file

@ -176,6 +176,7 @@ int Dpf::init([[maybe_unused]] IPAContext &context,
*/ */
void Dpf::queueRequest(IPAContext &context, void Dpf::queueRequest(IPAContext &context,
[[maybe_unused]] const uint32_t frame, [[maybe_unused]] const uint32_t frame,
[[maybe_unused]] IPAFrameContext &frameContext,
const ControlList &controls) const ControlList &controls)
{ {
auto &dpf = context.frameContext.dpf; auto &dpf = context.frameContext.dpf;

View file

@ -23,6 +23,7 @@ public:
int init(IPAContext &context, const YamlObject &tuningData) override; int init(IPAContext &context, const YamlObject &tuningData) override;
void queueRequest(IPAContext &context, const uint32_t frame, void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override; const ControlList &controls) override;
void prepare(IPAContext &context, const uint32_t frame, void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext, IPAFrameContext &frameContext,

View file

@ -44,6 +44,7 @@ static constexpr uint32_t kFiltModeDefault = 0x000004f2;
*/ */
void Filter::queueRequest(IPAContext &context, void Filter::queueRequest(IPAContext &context,
[[maybe_unused]] const uint32_t frame, [[maybe_unused]] const uint32_t frame,
[[maybe_unused]] IPAFrameContext &frameContext,
const ControlList &controls) const ControlList &controls)
{ {
auto &filter = context.frameContext.filter; auto &filter = context.frameContext.filter;

View file

@ -22,6 +22,7 @@ public:
~Filter() = default; ~Filter() = default;
void queueRequest(IPAContext &context, const uint32_t frame, void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override; const ControlList &controls) override;
void prepare(IPAContext &context, const uint32_t frame, void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext, IPAFrameContext &frameContext,

View file

@ -291,8 +291,11 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)
void IPARkISP1::queueRequest(const uint32_t frame, const ControlList &controls) void IPARkISP1::queueRequest(const uint32_t frame, const ControlList &controls)
{ {
/* \todo Obtain the frame context to pass to process from the FCQueue */
IPAFrameContext frameContext;
for (auto const &algo : algorithms()) for (auto const &algo : algorithms())
algo->queueRequest(context_, frame, controls); algo->queueRequest(context_, frame, frameContext, controls);
} }
void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId) void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)