diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-02-28 12:29:13 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-03-01 15:45:07 +0200 |
commit | 61a62ddbd8cda88f20ea26f110aa7041b47b0de7 (patch) | |
tree | 040de563aa04fe8cb0bde4e484b08647e591b674 /src/libcamera/pipeline | |
parent | 40439a933fa7fe0c968a5ea502aeff23e079934d (diff) |
libcamera: pipeline_handler: Store pipe and camera in CameraData
Extend the CameraData class with two member variables pipe_ and camera_
that store pointers to the pipeline handler and camera that the
CameraData instance is related to. This will be used by pipeline
handlers to access the camera and the pipeline in member methods of
their CameraData derived classes.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/libcamera/pipeline')
-rw-r--r-- | src/libcamera/pipeline/ipu3/ipu3.cpp | 9 | ||||
-rw-r--r-- | src/libcamera/pipeline/uvcvideo.cpp | 6 | ||||
-rw-r--r-- | src/libcamera/pipeline/vimc.cpp | 5 |
3 files changed, 12 insertions, 8 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 7ab94cca..70c8db1b 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -50,8 +50,11 @@ private: class IPU3CameraData : public CameraData { public: - IPU3CameraData() - : cio2_(nullptr), csi2_(nullptr), sensor_(nullptr) {} + IPU3CameraData(PipelineHandler *pipe) + : CameraData(pipe), cio2_(nullptr), csi2_(nullptr), + sensor_(nullptr) + { + } ~IPU3CameraData() { @@ -365,7 +368,7 @@ void PipelineHandlerIPU3::registerCameras() if (link->setEnabled(true)) continue; - std::unique_ptr<IPU3CameraData> data = utils::make_unique<IPU3CameraData>(); + std::unique_ptr<IPU3CameraData> data = utils::make_unique<IPU3CameraData>(this); std::string cameraName = sensor->name() + " " + std::to_string(id); std::set<Stream *> streams{ &data->stream_ }; diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp index 2858b811..167e0533 100644 --- a/src/libcamera/pipeline/uvcvideo.cpp +++ b/src/libcamera/pipeline/uvcvideo.cpp @@ -46,8 +46,8 @@ private: class UVCCameraData : public CameraData { public: - UVCCameraData() - : video_(nullptr) + UVCCameraData(PipelineHandler *pipe) + : CameraData(pipe), video_(nullptr) { } @@ -181,7 +181,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator) media_->acquire(); - std::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(); + std::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(this); /* Locate and open the default video node. */ for (MediaEntity *entity : media_->entities()) { diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp index 97ec61ba..ad01ce49 100644 --- a/src/libcamera/pipeline/vimc.cpp +++ b/src/libcamera/pipeline/vimc.cpp @@ -46,7 +46,8 @@ private: class VimcCameraData : public CameraData { public: - VimcCameraData() + VimcCameraData(PipelineHandler *pipe) + : CameraData(pipe) { } @@ -190,7 +191,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator) media_->acquire(); - std::unique_ptr<VimcCameraData> data = utils::make_unique<VimcCameraData>(); + std::unique_ptr<VimcCameraData> data = utils::make_unique<VimcCameraData>(this); /* Locate and open the capture video node. */ data->video_ = new V4L2Device(media_->getEntityByName("Raw Capture 1")); |