libcamera: camera: Ensure correct id maps are always set
`Camera::Private::properties_` is a default constructed `ControlList`, therefore it does not have an associated `ControlIdMap`. `controlInfo_` is in a similar situation. Extend the `Camera::Private` constructor to initialize the control id map of both properly. Multiple pipeline handlers copy the sensor's property list and set that as camera properties, and since the `CameraSensor{Legacy,Raw}` classes set the proper id map, the camera properties will have it too. However, some pipelines, e.g. `uvcvideo` or `virtual`, do not do so, and thus there will be no id map set. To fix this, extend the `Camera::Private` constructor to set `properties::properties`. As for `controlInfo_`, all pipeline handlers overwrite it during camera initialization (and thus it will have the correct id map), but still initialize the id map so that it is set at all times. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
12931e304a
commit
22dcaeacd0
1 changed files with 3 additions and 1 deletions
|
@ -21,6 +21,7 @@
|
||||||
#include <libcamera/color_space.h>
|
#include <libcamera/color_space.h>
|
||||||
#include <libcamera/control_ids.h>
|
#include <libcamera/control_ids.h>
|
||||||
#include <libcamera/framebuffer_allocator.h>
|
#include <libcamera/framebuffer_allocator.h>
|
||||||
|
#include <libcamera/property_ids.h>
|
||||||
#include <libcamera/request.h>
|
#include <libcamera/request.h>
|
||||||
#include <libcamera/stream.h>
|
#include <libcamera/stream.h>
|
||||||
|
|
||||||
|
@ -587,7 +588,8 @@ CameraConfiguration::Status CameraConfiguration::validateColorSpaces(ColorSpaceF
|
||||||
* \param[in] pipe The pipeline handler responsible for the camera device
|
* \param[in] pipe The pipeline handler responsible for the camera device
|
||||||
*/
|
*/
|
||||||
Camera::Private::Private(PipelineHandler *pipe)
|
Camera::Private::Private(PipelineHandler *pipe)
|
||||||
: requestSequence_(0), pipe_(pipe->shared_from_this()),
|
: controlInfo_({}, controls::controls), properties_(properties::properties),
|
||||||
|
requestSequence_(0), pipe_(pipe->shared_from_this()),
|
||||||
disconnected_(false), state_(CameraAvailable)
|
disconnected_(false), state_(CameraAvailable)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue