summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-02-28 12:29:13 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-03-01 15:45:07 +0200
commit61a62ddbd8cda88f20ea26f110aa7041b47b0de7 (patch)
tree040de563aa04fe8cb0bde4e484b08647e591b674 /src/libcamera/pipeline
parent40439a933fa7fe0c968a5ea502aeff23e079934d (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.cpp9
-rw-r--r--src/libcamera/pipeline/uvcvideo.cpp6
-rw-r--r--src/libcamera/pipeline/vimc.cpp5
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"));