summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/ipu3/ipu3.cpp
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-06-01 22:02:13 +0200
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-06-26 13:32:29 +0200
commitbb82835bc59b578d055010e4abc8e5c282a505b9 (patch)
tree6682f7e113fe975777a3545dbb6d044e1f2b5b43 /src/libcamera/pipeline/ipu3/ipu3.cpp
parentd2c94456d98126ab1aa4c7672b86226c50cb869f (diff)
libcamera: ipu3: cio2: Make the V4L2 devices private
In order to make the CIO2 easier to extend with new features make the V4L2 devices (sensor, CIO2 and video device) private members. This requires a few helper functions to be added to allow for the IPU3 driver to still be able to interact with all parts of the CIO2. These helper functions will later be extended to add new features to the IPU3 pipeline. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline/ipu3/ipu3.cpp')
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index c0e727e5..2d1ec707 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -431,7 +431,7 @@ CameraConfiguration *PipelineHandlerIPU3::generateConfiguration(Camera *camera,
stream = &data->rawStream_;
- cfg.size = data->cio2_.sensor_->resolution();
+ cfg.size = data->cio2_.sensor()->resolution();
cfg = data->cio2_.generateConfiguration(cfg.size);
break;
@@ -460,7 +460,7 @@ CameraConfiguration *PipelineHandlerIPU3::generateConfiguration(Camera *camera,
* available sensor resolution and to the IPU3
* alignment constraints.
*/
- const Size &res = data->cio2_.sensor_->resolution();
+ const Size &res = data->cio2_.sensor()->resolution();
unsigned int width = std::min(1280U, res.width);
unsigned int height = std::min(720U, res.height);
cfg.size = { width & ~7, height & ~3 };
@@ -640,14 +640,11 @@ int PipelineHandlerIPU3::exportFrameBuffers(Camera *camera, Stream *stream,
IPU3CameraData *data = cameraData(camera);
IPU3Stream *ipu3stream = static_cast<IPU3Stream *>(stream);
unsigned int count = stream->configuration().bufferCount;
- V4L2VideoDevice *video;
if (ipu3stream->raw_)
- video = data->cio2_.output_;
- else
- video = ipu3stream->device_->dev;
+ return data->cio2_.exportBuffers(count, buffers);
- return video->exportBuffers(count, buffers);
+ return ipu3stream->device_->dev->exportBuffers(count, buffers);
}
/**
@@ -757,7 +754,7 @@ int PipelineHandlerIPU3::queueRequestDevice(Camera *camera, Request *request)
return -EINVAL;
buffer->setRequest(request);
- data->cio2_.output_->queueBuffer(buffer);
+ data->cio2_.queueBuffer(buffer);
for (auto it : request->buffers()) {
IPU3Stream *stream = static_cast<IPU3Stream *>(it.first);
@@ -870,7 +867,7 @@ int PipelineHandlerIPU3::registerCameras()
continue;
/* Initialize the camera properties. */
- data->properties_ = cio2->sensor_->properties();
+ data->properties_ = cio2->sensor()->properties();
/**
* \todo Dynamically assign ImgU and output devices to each
@@ -894,7 +891,7 @@ int PipelineHandlerIPU3::registerCameras()
* associated ImgU input where they get processed and
* returned through the ImgU main and secondary outputs.
*/
- data->cio2_.output_->bufferReady.connect(data.get(),
+ data->cio2_.bufferReady.connect(data.get(),
&IPU3CameraData::cio2BufferReady);
data->imgu_->input_->bufferReady.connect(data.get(),
&IPU3CameraData::imguInputBufferReady);
@@ -904,7 +901,7 @@ int PipelineHandlerIPU3::registerCameras()
&IPU3CameraData::imguOutputBufferReady);
/* Create and register the Camera instance. */
- std::string cameraName = cio2->sensor_->entity()->name();
+ std::string cameraName = cio2->sensor()->entity()->name();
std::shared_ptr<Camera> camera = Camera::create(this,
cameraName,
streams);