[libcamera-devel] [PATCH v3 12/22] libcamera: pipeline: raspberrypi: Acquire media devices with acquireMediaDevice
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sat Jul 4 23:18:09 CEST 2020
Hi Paul,
Thank you for the patch.
On Sat, Jul 04, 2020 at 10:31:30PM +0900, Paul Elder wrote:
> 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 <paul.elder at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> No change in v3
> ---
> .../pipeline/raspberrypi/raspberrypi.cpp | 21 ++++---------------
> 1 file changed, 4 insertions(+), 17 deletions(-)
>
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index 1c0000b..cbb6f1c 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<MediaDevice> unicam_;
> - std::shared_ptr<MediaDevice> 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<RPiCameraData> data = std::make_unique<RPiCameraData>(this);
>
> /* Locate and open the unicam video streams. */
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list