@@ -20,6 +20,7 @@ extern "C" {
enum ipa_controls_id_map_type {
IPA_CONTROL_ID_MAP_CONTROLS,
IPA_CONTROL_ID_MAP_PROPERTIES,
+ IPA_CONTROL_ID_MAP_INTERNAL_CONTROLS,
IPA_CONTROL_ID_MAP_V4L2,
};
@@ -21,6 +21,7 @@
#include <libcamera/ipa/ipa_controls.h>
#include "libcamera/internal/byte_stream_buffer.h"
+#include "libcamera/internal/control_ids.h"
/**
* \file control_serializer.h
@@ -335,6 +336,8 @@ int ControlSerializer::serialize(const ControlList &list,
idMapType = IPA_CONTROL_ID_MAP_CONTROLS;
else if (idmap == &properties::properties)
idMapType = IPA_CONTROL_ID_MAP_PROPERTIES;
+ else if (idmap == &controls::internal::controls)
+ idMapType = IPA_CONTROL_ID_MAP_INTERNAL_CONTROLS;
else
idMapType = IPA_CONTROL_ID_MAP_V4L2;
@@ -461,6 +464,9 @@ ControlInfoMap ControlSerializer::deserialize<ControlInfoMap>(ByteStreamBuffer &
case IPA_CONTROL_ID_MAP_PROPERTIES:
idMap = &properties::properties;
break;
+ case IPA_CONTROL_ID_MAP_INTERNAL_CONTROLS:
+ idMap = &controls::internal::controls;
+ break;
case IPA_CONTROL_ID_MAP_V4L2:
controlIdMaps_.emplace_back(std::make_unique<ControlIdMap>());
localIdMap = controlIdMaps_.back().get();
The control serializer class uses tags to identify which ControlIdMap to use to de-serialize a ControlList. Add a value for internal controls to the ipa_controls_id_map_type enumeration and use it to identify lists of internal controls. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> --- include/libcamera/ipa/ipa_controls.h | 1 + src/libcamera/control_serializer.cpp | 6 ++++++ 2 files changed, 7 insertions(+)