summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/vimc.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-04-29 20:58:34 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-05-23 01:07:21 +0300
commit75de3bff9e165e512be5f53e19f31c7388dc08b1 (patch)
treebc91c3263a613fc492820af4d753147e971df65d /src/libcamera/pipeline/vimc.cpp
parent77ae64eb24bf6c2fe241b6f7b841315b1ee15707 (diff)
libcamera: camera: Return a pointer from generateConfiguration()
To prepare for specialising the CameraConfiguration class in pipeline handlers, return a pointer to a camera configuration instead of a reference from Camera::generateConfiguration(). The camera configuration always needs to be allocated from the pipeline handler, and its ownership is passed to the application. For symmetry, change Camera::configure() to take a CameraConfiguration pointer instead of a reference. This aligns with our coding practice of passing parameters that are modified by the callee by pointer. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/libcamera/pipeline/vimc.cpp')
-rw-r--r--src/libcamera/pipeline/vimc.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp
index af6b6f21..f6aa3268 100644
--- a/src/libcamera/pipeline/vimc.cpp
+++ b/src/libcamera/pipeline/vimc.cpp
@@ -25,9 +25,9 @@ class PipelineHandlerVimc : public PipelineHandler
public:
PipelineHandlerVimc(CameraManager *manager);
- CameraConfiguration
- generateConfiguration(Camera *camera, const StreamRoles &roles) override;
- int configure(Camera *camera, CameraConfiguration &config) override;
+ CameraConfiguration *generateConfiguration(Camera *camera,
+ const StreamRoles &roles) override;
+ int configure(Camera *camera, CameraConfiguration *config) override;
int allocateBuffers(Camera *camera,
const std::set<Stream *> &streams) override;
@@ -73,26 +73,28 @@ PipelineHandlerVimc::PipelineHandlerVimc(CameraManager *manager)
{
}
-CameraConfiguration
-PipelineHandlerVimc::generateConfiguration(Camera *camera,
- const StreamRoles &roles)
+CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,
+ const StreamRoles &roles)
{
- CameraConfiguration config;
- StreamConfiguration cfg;
+ CameraConfiguration *config = new CameraConfiguration();
+ if (roles.empty())
+ return config;
+
+ StreamConfiguration cfg{};
cfg.pixelFormat = V4L2_PIX_FMT_RGB24;
cfg.size = { 640, 480 };
cfg.bufferCount = 4;
- config.addConfiguration(cfg);
+ config->addConfiguration(cfg);
return config;
}
-int PipelineHandlerVimc::configure(Camera *camera, CameraConfiguration &config)
+int PipelineHandlerVimc::configure(Camera *camera, CameraConfiguration *config)
{
VimcCameraData *data = cameraData(camera);
- StreamConfiguration &cfg = config[0];
+ StreamConfiguration &cfg = config->at(0);
int ret;
V4L2DeviceFormat format = {};