summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/rkisp1/rkisp1.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/rkisp1/rkisp1.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/rkisp1/rkisp1.cpp')
-rw-r--r--src/libcamera/pipeline/rkisp1/rkisp1.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index ec6980b0..c8d217ab 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -34,9 +34,9 @@ public:
PipelineHandlerRkISP1(CameraManager *manager);
~PipelineHandlerRkISP1();
- CameraConfiguration generateConfiguration(Camera *camera,
+ CameraConfiguration *generateConfiguration(Camera *camera,
const StreamRoles &roles) override;
- int configure(Camera *camera, CameraConfiguration &config) override;
+ int configure(Camera *camera, CameraConfiguration *config) override;
int allocateBuffers(Camera *camera,
const std::set<Stream *> &streams) override;
@@ -105,26 +105,29 @@ PipelineHandlerRkISP1::~PipelineHandlerRkISP1()
* Pipeline Operations
*/
-CameraConfiguration PipelineHandlerRkISP1::generateConfiguration(Camera *camera,
+CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera,
const StreamRoles &roles)
{
RkISP1CameraData *data = cameraData(camera);
- CameraConfiguration config;
- StreamConfiguration cfg{};
+ CameraConfiguration *config = new CameraConfiguration();
+
+ if (roles.empty())
+ return config;
+ StreamConfiguration cfg{};
cfg.pixelFormat = V4L2_PIX_FMT_NV12;
cfg.size = data->sensor_->resolution();
cfg.bufferCount = RKISP1_BUFFER_COUNT;
- config.addConfiguration(cfg);
+ config->addConfiguration(cfg);
return config;
}
-int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration &config)
+int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *config)
{
RkISP1CameraData *data = cameraData(camera);
- StreamConfiguration &cfg = config[0];
+ StreamConfiguration &cfg = config->at(0);
CameraSensor *sensor = data->sensor_;
int ret;