From 10d05404eb5b3941ef34dbdd901c61d302b421e0 Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Tue, 30 Jun 2020 21:32:41 +0900 Subject: libcamera: pipeline: raspberrypi: Acquire media devices with acquireMediaDevice Media devices should be acquired by pipeline handlers via PipelineHandler::acquireMediaDevice so that the media devices can be registered in the pipeline handler so that they can be automatically added to the devnum map for the v4l2 compatibility layer to use. Make the raspberrypi pipeline handler do this. Signed-off-by: Paul Elder Reviewed-by: Laurent Pinchart --- src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'src/libcamera/pipeline/raspberrypi') diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 1c0000bc..cbb6f1c1 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -374,7 +374,6 @@ class PipelineHandlerRPi : public PipelineHandler { public: PipelineHandlerRPi(CameraManager *manager); - ~PipelineHandlerRPi(); CameraConfiguration *generateConfiguration(Camera *camera, const StreamRoles &roles) override; int configure(Camera *camera, CameraConfiguration *config) override; @@ -401,8 +400,8 @@ private: int prepareBuffers(Camera *camera); void freeBuffers(Camera *camera); - std::shared_ptr unicam_; - std::shared_ptr isp_; + MediaDevice *unicam_; + MediaDevice *isp_; }; RPiCameraConfiguration::RPiCameraConfiguration(const RPiCameraData *data) @@ -502,15 +501,6 @@ PipelineHandlerRPi::PipelineHandlerRPi(CameraManager *manager) { } -PipelineHandlerRPi::~PipelineHandlerRPi() -{ - if (unicam_) - unicam_->release(); - - if (isp_) - isp_->release(); -} - CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera, const StreamRoles &roles) { @@ -895,17 +885,14 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator) isp.add("bcm2835-isp0-capture2"); /* Output 1 */ isp.add("bcm2835-isp0-capture3"); /* Stats */ - unicam_ = enumerator->search(unicam); + unicam_ = acquireMediaDevice(enumerator, unicam); if (!unicam_) return false; - isp_ = enumerator->search(isp); + isp_ = acquireMediaDevice(enumerator, isp); if (!isp_) return false; - unicam_->acquire(); - isp_->acquire(); - std::unique_ptr data = std::make_unique(this); /* Locate and open the unicam video streams. */ -- cgit v1.2.1