[libcamera-devel,v3,6/7] libcamera: pipeline: vimc: Call IPA start() and stop()

Message ID 20200411001911.1143155-7-niklas.soderlund@ragnatech.se
State Superseded
Headers show
Series
  • libcamera: ipa_manager: Proxy open-source IPAs to a thread
Related show

Commit Message

Niklas Söderlund April 11, 2020, 12:19 a.m. UTC
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>
---
 src/libcamera/pipeline/vimc/vimc.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

Patch

diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index b04a9726efa5ade6..c5eea3a01b0e9446 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -274,8 +274,15 @@  int PipelineHandlerVimc::start(Camera *camera)
 	if (ret < 0)
 		return ret;
 
+	ret = data->ipa_->start();
+	if (ret) {
+		data->video_->releaseBuffers();
+		return ret;
+	}
+
 	ret = data->video_->streamOn();
 	if (ret < 0) {
+		data->ipa_->stop();
 		data->video_->releaseBuffers();
 		return ret;
 	}
@@ -287,6 +294,7 @@  void PipelineHandlerVimc::stop(Camera *camera)
 {
 	VimcCameraData *data = cameraData(camera);
 	data->video_->streamOff();
+	data->ipa_->stop();
 	data->video_->releaseBuffers();
 }