libcamera: software_isp: Move configure to worker thread
OpenGL requires both configure() and process() to operate on the same thread. As preparation for that, move current CPU configure into the WorkerThread with a ConnectionTypeBlocking invocation of &DebayerCpu::configure. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
This commit is contained in:
parent
87ccbc69ca
commit
355fd41dfd
1 changed files with 10 additions and 2 deletions
|
@ -263,7 +263,15 @@ int SoftwareIsp::configure(const StreamConfiguration &inputCfg,
|
||||||
debayer_->moveToThread(&ispWorkerThread_);
|
debayer_->moveToThread(&ispWorkerThread_);
|
||||||
ispWorkerThread_.start();
|
ispWorkerThread_.start();
|
||||||
|
|
||||||
return debayer_->configure(inputCfg, outputCfgs, ccmEnabled_);
|
ret = debayer_->invokeMethod(&Debayer::configure,
|
||||||
|
ConnectionTypeBlocking, inputCfg,
|
||||||
|
outputCfgs, ccmEnabled_);
|
||||||
|
if (ret) {
|
||||||
|
ispWorkerThread_.exit();
|
||||||
|
ispWorkerThread_.wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -386,7 +394,7 @@ void SoftwareIsp::stop()
|
||||||
void SoftwareIsp::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output)
|
void SoftwareIsp::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output)
|
||||||
{
|
{
|
||||||
ipa_->computeParams(frame);
|
ipa_->computeParams(frame);
|
||||||
debayer_->invokeMethod(&DebayerCpu::process,
|
debayer_->invokeMethod(&Debayer::process,
|
||||||
ConnectionTypeQueued, frame, input, output, debayerParams_);
|
ConnectionTypeQueued, frame, input, output, debayerParams_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue