@@ -658,9 +658,8 @@ void IPAIPU3::queueRequest(const uint32_t frame, const ControlList &controls)
/* \todo Start processing for 'frame' based on 'controls'. */
IPU3FrameContext &frameContext = context_.frameContexts.initialise(frame);
- /* \todo Implement queueRequest to each algorithm. */
- (void)frameContext;
- (void)controls;
+ for (auto const &algo : algorithms())
+ algo->queueRequest(context_, frame, frameContext, controls);
}
/**
@@ -88,6 +88,7 @@ namespace ipa {
* \brief Provide control values to the algorithm
* \param[in] context The shared IPA context
* \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
*
* This function is called for each request queued to the camera. It provides
@@ -46,6 +46,7 @@ public:
virtual void queueRequest([[maybe_unused]] typename Module::Context &context,
[[maybe_unused]] const uint32_t frame,
+ [[maybe_unused]] typename Module::FrameContext &frameContext,
[[maybe_unused]] const ControlList &controls)
{
}
@@ -38,6 +38,7 @@ LOG_DEFINE_CATEGORY(RkISP1CProc)
*/
void ColorProcessing::queueRequest(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
+ [[maybe_unused]] RKISP1FrameContext &frameContext,
const ControlList &controls)
{
auto &cproc = context.activeState.cproc;
@@ -22,6 +22,7 @@ public:
~ColorProcessing() = default;
void queueRequest(IPAContext &context, const uint32_t frame,
+ RKISP1FrameContext &frameContext,
const ControlList &controls) override;
void prepare(IPAContext &context, unsigned int frame,
RKISP1FrameContext &frameContext,
@@ -44,6 +44,7 @@ static constexpr uint32_t kFiltModeDefault = 0x000004f2;
*/
void Filter::queueRequest(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
+ [[maybe_unused]] RKISP1FrameContext &frameContext,
const ControlList &controls)
{
auto &filter = context.activeState.filter;
@@ -22,6 +22,7 @@ public:
~Filter() = default;
void queueRequest(IPAContext &context, const uint32_t frame,
+ RKISP1FrameContext &frameContext,
const ControlList &controls) override;
void prepare(IPAContext &context, unsigned int frame,
RKISP1FrameContext &frameContext,
@@ -295,8 +295,10 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)
void IPARkISP1::queueRequest(const uint32_t frame, const ControlList &controls)
{
+ RKISP1FrameContext &frameContext = context_.frameContexts.initialise(frame);
+
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)