summaryrefslogtreecommitdiff
path: root/src/libcamera/control_serializer.cpp
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2021-09-01 15:46:32 +0200
committerJacopo Mondi <jacopo@jmondi.org>2021-09-27 14:37:45 +0200
commit23c2b8a9cacad72c405fbeea77d6b3f8cb865c98 (patch)
treee26a3023e18198e349a571d40480c2013e6f23a5 /src/libcamera/control_serializer.cpp
parentb516ffb3bd9be3ae40b4d979ae4cdff01e816db7 (diff)
libcamera: control_serializer: Serialize info::def()
The ControlInfo class was originally designed to only transport the control's minimum and maximum values which represent the control's valid limits. Later the default value of the control has been added to the ControlInfo class, but the control serializer implementation has not been updated accordingly. This causes issues in IPA modules making use of ControlInfo::def() as, when running in isolation, they would receive 0. Fix that by serializing and deserializing the additional ControlValue and update the protocol description accordingly. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/control_serializer.cpp')
-rw-r--r--src/libcamera/control_serializer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp
index 317b5a75..e1ba6d14 100644
--- a/src/libcamera/control_serializer.cpp
+++ b/src/libcamera/control_serializer.cpp
@@ -105,7 +105,7 @@ size_t ControlSerializer::binarySize(const ControlValue &value)
size_t ControlSerializer::binarySize(const ControlInfo &info)
{
- return binarySize(info.min()) + binarySize(info.max());
+ return binarySize(info.min()) + binarySize(info.max()) + binarySize(info.def());
}
/**
@@ -158,6 +158,7 @@ void ControlSerializer::store(const ControlInfo &info, ByteStreamBuffer &buffer)
{
store(info.min(), buffer);
store(info.max(), buffer);
+ store(info.def(), buffer);
}
/**
@@ -346,8 +347,9 @@ ControlInfo ControlSerializer::loadControlInfo(ControlType type,
ControlValue min = loadControlValue(type, b);
ControlValue max = loadControlValue(type, b);
+ ControlValue def = loadControlValue(type, b);
- return ControlInfo(min, max);
+ return ControlInfo(min, max, def);
}
/**