[libcamera-devel] [PATCH 21/31] libcamera: ipa: Support array controls in ipa_control_value_entry

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Feb 29 17:42:44 CET 2020


Report in a new field of the ipa_control_value_entry structure if the
value contains an array. Reorganize the other fields of the structure to
avoid increasing its size.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 include/ipa/ipa_controls.h     | 6 ++++--
 src/libcamera/ipa_controls.cpp | 4 ++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/include/ipa/ipa_controls.h b/include/ipa/ipa_controls.h
index 6371e34575f2..37f97d6ad2a4 100644
--- a/include/ipa/ipa_controls.h
+++ b/include/ipa/ipa_controls.h
@@ -26,9 +26,11 @@ struct ipa_controls_header {
 
 struct ipa_control_value_entry {
 	uint32_t id;
-	uint32_t type;
-	uint32_t count;
+	uint8_t type;
+	uint8_t is_array;
+	uint16_t count;
 	uint32_t offset;
+	uint32_t padding[1];
 };
 
 struct ipa_control_range_entry {
diff --git a/src/libcamera/ipa_controls.cpp b/src/libcamera/ipa_controls.cpp
index 25f38bab3dd9..cfb5c59dd028 100644
--- a/src/libcamera/ipa_controls.cpp
+++ b/src/libcamera/ipa_controls.cpp
@@ -163,11 +163,15 @@ static_assert(sizeof(ipa_controls_header) == 32,
  * The numerical ID of the control
  * \var ipa_control_value_entry::type
  * The type of the control (defined by enum ControlType)
+ * \var ipa_control_value_entry::is_array
+ * True if the control value stores an array, false otherwise
  * \var ipa_control_value_entry::count
  * The number of control array entries for array controls (1 otherwise)
  * \var ipa_control_value_entry::offset
  * The offset in bytes from the beginning of the data section to the control
  * value data (shall be a multiple of 8 bytes).
+ * \var ipa_control_value_entry::padding
+ * Padding bytes (shall be set to 0)
  */
 
 static_assert(sizeof(ipa_control_value_entry) == 16,
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list