libcamera/test
Jacopo Mondi b48db3c489 libcamera: controls: Create ControlInfoMap with ControlIdMap
ControlInfoMap does not have a ControlId map associated, but rather
creates one with the generateIdMap() function at creation time.

As a consequence, when in the need to de-serialize a ControlInfoMap all
the ControlId it contains are created by the deserializer instance, not
being able to discern if the controls the ControlIdMap refers to are the
global libcamera controls (and properties) or instances local to the
V4L2 device that has first initialized the controls.

As a consequence the ControlId stored in a de-serialized map will always
be newly created entities, preventing lookup by ControlId reference on a
de-serialized ControlInfoMap.

In order to make it possible to use globally available ControlId
instances whenever possible, create ControlInfoMap with a reference to
an externally allocated ControlIdMap instead of generating one
internally.

As a consequence the class constructors take and additional argument,
which might be not pleasant to type in, but enforces the concepts that
ControlInfoMap should be created with controls part of the same id map.

As the ControlIdMap the ControlInfoMap refers to needs to be allocated
externally:
- Use the globally available controls::controls (or
  properties::properties) id map when referring to libcamera controls
- The V4L2 device that creates ControlInfoMap by parsing the device's
  controls has to allocate a ControlIdMap
- The ControlSerializer that de-serializes a ControlInfoMap has to
  create and store the ControlIdMap the de-serialized info map refers to

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2021-08-12 10:06:25 +02:00
..
camera libcamera: camera: Make stop() idempotent 2021-07-06 12:40:41 +02:00
controls controls: Add boolean constructors for ControlInfo 2021-08-02 18:07:16 +09:00
ipa libcamera/base: Validate internal headers as private 2021-06-25 16:11:11 +01:00
ipc libcamera/base: Validate internal headers as private 2021-06-25 16:11:11 +01:00
libtest libcamera/base: Validate internal headers as private 2021-06-25 16:11:11 +01:00
log libcamera/base: Validate internal headers as private 2021-06-25 16:11:11 +01:00
media_device libcamera: Rename 'method' to 'function' 2021-08-09 15:40:32 +03:00
pipeline libcamera/base: Validate internal headers as private 2021-06-25 16:11:11 +01:00
process libcamera/base: Validate internal headers as private 2021-06-25 16:11:11 +01:00
serialization libcamera: controls: Create ControlInfoMap with ControlIdMap 2021-08-12 10:06:25 +02:00
stream libcamera: rename public libcamera dependency 2021-06-25 16:11:11 +01:00
v4l2_compat tests: v4l2_compat: Fix v4l2-compliance and v4l2-ctl version parsing 2020-07-17 18:50:10 +09:00
v4l2_subdevice libcamera: buffer: Rename buffer.h to framebuffer.h 2021-07-11 17:42:02 +03:00
v4l2_videodevice libcamera: buffer: Rename buffer.h to framebuffer.h 2021-07-11 17:42:02 +03:00
bayer-format.cpp test: bayer-format: Rectify internal header's #include path 2021-05-05 10:32:33 +02:00
byte-stream-buffer.cpp test: byte-stream-buffer: Initialize data array 2021-05-26 10:24:15 +02:00
camera-sensor.cpp libcamera/base: Move utils to the base library 2021-06-25 16:11:02 +01:00
delayed_controls.cpp test: delayed_controls: Rename delayed_contols.cpp to delayed_controls.cpp 2021-03-12 14:20:51 +00:00
event-dispatcher.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
event-thread.cpp libcamera/base: Move event_notifier to base 2021-06-25 16:11:10 +01:00
event.cpp libcamera/base: Move event_notifier to base 2021-06-25 16:11:10 +01:00
file-descriptor.cpp libcamera/base: Move utils to the base library 2021-06-25 16:11:02 +01:00
file.cpp libcamera: file: Turn MapFlag and OpenModeFlag into enum class 2021-08-03 10:55:33 +03:00
flags.cpp test: Add tests for the Flags class 2021-08-03 10:55:21 +03:00
geometry.cpp test: geometry: Add unit tests for new geometry helper functions 2020-10-27 14:06:51 +02:00
hotplug-cameras.cpp libcamera/base: Move File to base library 2021-06-25 16:11:10 +01:00
mapped-buffer.cpp libcamera: MappedFrameBuffer: Use typed Flags<MapModes> 2021-08-10 10:57:04 +01:00
meson.build test: Add tests for the Flags class 2021-08-03 10:55:21 +03:00
message.cpp test: message: Test recursive Thread::dispatchMessages() calls 2021-07-11 17:41:59 +03:00
object-delete.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
object-invoke.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
object.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
pixel-format.cpp libcamera/base: Move utils to the base library 2021-06-25 16:11:02 +01:00
public-api.cpp test: Ensure LIBCAMERA_BASE_PRIVATE isn't public 2021-06-25 16:11:11 +01:00
signal-threads.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
signal.cpp libcamera: Rename 'method' to 'function' 2021-08-09 15:40:32 +03:00
span.cpp libcamera/base: Move span to base library 2021-06-25 16:11:11 +01:00
threads.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
timer-thread.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
timer.cpp libcamera/base: Move extended base functionality 2021-06-25 16:11:08 +01:00
utils.cpp libcamera/base: Move span to base library 2021-06-25 16:11:11 +01:00