@@ -65,7 +65,8 @@ public:
int configure(const StreamConfiguration &inputCfg,
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
- const ipa::soft::IPAConfigInfo &configInfo);
+ const ipa::soft::IPAConfigInfo &configInfo,
+ ControlInfoMap *ipaControls);
int exportBuffers(const Stream *stream, unsigned int count,
std::vector<std::unique_ptr<FrameBuffer>> *buffers);
@@ -22,7 +22,7 @@ interface IPASoftInterface {
start() => (int32 ret);
stop();
configure(IPAConfigInfo configInfo)
- => (int32 ret);
+ => (int32 ret, libcamera.ControlInfoMap ipaControls);
[async] queueRequest(uint32 frame, libcamera.ControlList sensorControls);
[async] computeParams(uint32 frame);
@@ -57,7 +57,8 @@ public:
const ControlInfoMap &sensorControls,
ControlInfoMap *ipaControls,
bool *ccmEnabled) override;
- int configure(const IPAConfigInfo &configInfo) override;
+ int configure(const IPAConfigInfo &configInfo,
+ ControlInfoMap *ipaControls) override;
int start() override;
void stop() override;
@@ -193,7 +194,8 @@ int IPASoftSimple::init(const IPASettings &settings,
return 0;
}
-int IPASoftSimple::configure(const IPAConfigInfo &configInfo)
+int IPASoftSimple::configure(const IPAConfigInfo &configInfo,
+ [[maybe_unused]] ControlInfoMap *ipaControls)
{
sensorInfoMap_ = configInfo.sensorControls;
@@ -1414,7 +1414,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
} else {
ipa::soft::IPAConfigInfo configInfo;
configInfo.sensorControls = data->sensor_->controls();
- return data->swIsp_->configure(inputCfg, outputCfgs, configInfo);
+ return data->swIsp_->configure(inputCfg, outputCfgs, configInfo, &data->controlInfo_);
}
}
@@ -255,11 +255,12 @@ SoftwareIsp::strideAndFrameSize(const PixelFormat &outputFormat, const Size &siz
*/
int SoftwareIsp::configure(const StreamConfiguration &inputCfg,
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
- const ipa::soft::IPAConfigInfo &configInfo)
+ const ipa::soft::IPAConfigInfo &configInfo,
+ ControlInfoMap *ipaControls)
{
ASSERT(ipa_ && debayer_);
- int ret = ipa_->configure(configInfo);
+ int ret = ipa_->configure(configInfo, ipaControls);
if (ret < 0)
return ret;
Extend the SoftIPA interface to support passing IPA controls during the configuration phase so that updates can be made according to the resolutions selected. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> --- include/libcamera/internal/software_isp/software_isp.h | 3 ++- include/libcamera/ipa/soft.mojom | 2 +- src/ipa/simple/soft_simple.cpp | 6 ++++-- src/libcamera/pipeline/simple/simple.cpp | 2 +- src/libcamera/software_isp/software_isp.cpp | 5 +++-- 5 files changed, 11 insertions(+), 7 deletions(-)