libcamera: pipeline: rkisp1: Call IPA start() and stop()

Call the IPA start()/stop() functions before/after the camera is
started. This makes sure the IPA functions properly once thread
management is moved into the start/stop interface.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund 2020-03-26 14:47:22 +01:00
parent 871d182cef
commit 6d7a66dc4e

View file

@ -779,10 +779,19 @@ int PipelineHandlerRkISP1::start(Camera *camera)
if (ret) if (ret)
return ret; return ret;
ret = data->ipa_->start();
if (ret) {
freeBuffers(camera);
LOG(RkISP1, Error)
<< "Failed to start IPA " << camera->name();
return ret;
}
data->frame_ = 0; data->frame_ = 0;
ret = param_->streamOn(); ret = param_->streamOn();
if (ret) { if (ret) {
data->ipa_->stop();
freeBuffers(camera); freeBuffers(camera);
LOG(RkISP1, Error) LOG(RkISP1, Error)
<< "Failed to start parameters " << camera->name(); << "Failed to start parameters " << camera->name();
@ -792,6 +801,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)
ret = stat_->streamOn(); ret = stat_->streamOn();
if (ret) { if (ret) {
param_->streamOff(); param_->streamOff();
data->ipa_->stop();
freeBuffers(camera); freeBuffers(camera);
LOG(RkISP1, Error) LOG(RkISP1, Error)
<< "Failed to start statistics " << camera->name(); << "Failed to start statistics " << camera->name();
@ -802,6 +812,7 @@ int PipelineHandlerRkISP1::start(Camera *camera)
if (ret) { if (ret) {
param_->streamOff(); param_->streamOff();
stat_->streamOff(); stat_->streamOff();
data->ipa_->stop();
freeBuffers(camera); freeBuffers(camera);
LOG(RkISP1, Error) LOG(RkISP1, Error)
@ -845,6 +856,8 @@ void PipelineHandlerRkISP1::stop(Camera *camera)
LOG(RkISP1, Warning) LOG(RkISP1, Warning)
<< "Failed to stop parameters " << camera->name(); << "Failed to stop parameters " << camera->name();
data->ipa_->stop();
data->timeline_.reset(); data->timeline_.reset();
data->frameInfo_.clear(); data->frameInfo_.clear();