libcamera: control_serializer: Save serialized ControlInfoMap in a cache

The ControlSerializer saves all ControlInfoMaps that it has already
(de)serialized, in order to (de)serialize ControlLists that contain the
ControlInfoMaps. Leverage this to cache ControlInfoMaps, such that the
ControlSerializer will not re-(de)serialize a ControlInfoMap that it has
previously (de)serialized.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Paul Elder
2020-12-23 12:34:42 +09:00
parent a119d75530
commit 892c0f4c19
2 changed files with 28 additions and 0 deletions
@@ -33,6 +33,8 @@ public:
template<typename T>
T deserialize(ByteStreamBuffer &buffer);
bool isCached(const ControlInfoMap &infoMap);
private:
static size_t binarySize(const ControlValue &value);
static size_t binarySize(const ControlInfo &info);