libcamera: controls: Add support for querying direction information
Add support to ControlId for querying direction information. This allows applications to query whether a ControlId is meant for being set in controls or to be returned in metadata or both. This also has a side effect of properly encoding this information, as previously it was only mentioned losely and inconsistently in the control id definition. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
@@ -281,6 +281,7 @@ int ControlSerializer::serialize(const ControlInfoMap &infoMap,
|
||||
entry.id = id->id();
|
||||
entry.type = id->type();
|
||||
entry.offset = values.offset();
|
||||
entry.direction = static_cast<ControlId::DirectionFlags::Type>(id->direction());
|
||||
entries.write(&entry);
|
||||
|
||||
store(info, values);
|
||||
@@ -493,12 +494,17 @@ ControlInfoMap ControlSerializer::deserialize<ControlInfoMap>(ByteStreamBuffer &
|
||||
|
||||
/* If we're using a local id map, populate it. */
|
||||
if (localIdMap) {
|
||||
ControlId::DirectionFlags flags{
|
||||
static_cast<ControlId::Direction>(entry->direction)
|
||||
};
|
||||
|
||||
/**
|
||||
* \todo Find a way to preserve the control name for
|
||||
* debugging purpose.
|
||||
*/
|
||||
controlIds_.emplace_back(std::make_unique<ControlId>(entry->id,
|
||||
"", "local", type));
|
||||
"", "local", type,
|
||||
flags));
|
||||
(*localIdMap)[entry->id] = controlIds_.back().get();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user