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>
This commit is contained in:
parent
77ae64eb24
commit
75de3bff9e
15 changed files with 184 additions and 126 deletions
|
@ -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 = {};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue