From 762f38811b696cdf7b43f580f18f9c98c209f5ff Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 26 Nov 2021 15:35:37 +0000 Subject: pipeline: raspberrypi: Split out device enumeration and camera registration Split out PipelineHandlerRPi::match() so that media device enumeration and acquisition is separated from camera registration. The former logic remains in PipelineHandlerRPi::match(), whereas the latter logic is moved into a new PipelineHandlerRPi::registerCamera() member function. Signed-off-by: Naushir Patuck Reviewed-by: Laurent Pinchart Reviewed-by: Kieran Bingham Signed-off-by: Kieran Bingham --- src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/libcamera') diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index ad526a8b..5a6dfa4e 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -314,6 +314,7 @@ private: return static_cast(camera->_d()); } + bool registerCamera(); int queueAllBuffers(Camera *camera); int prepareBuffers(Camera *camera); void freeBuffers(Camera *camera); @@ -1013,6 +1014,11 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator) if (!isp_) return false; + return registerCamera(); +} + +bool PipelineHandlerRPi::registerCamera() +{ std::unique_ptr data = std::make_unique(this); if (!data->dmaHeap_.isValid()) return false; @@ -1173,7 +1179,7 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator) const std::string &id = data->sensor_->id(); std::shared_ptr camera = Camera::create(std::move(data), id, streams); - registerCamera(std::move(camera)); + PipelineHandler::registerCamera(std::move(camera)); return true; } -- cgit v1.2.1