summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-02-28 17:37:23 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-06 18:10:41 +0200
commit427c37f671a91473f1b0495929daa28b712595e9 (patch)
tree7d590698f112612af3dd6aa62d6e280e92842dca
parent1716d4e86f58f7827786f03290bcbec7d9415a29 (diff)
libcamera: ipa: Support array controls in ipa_control_value_entry
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@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--include/ipa/ipa_controls.h6
-rw-r--r--src/libcamera/ipa_controls.cpp4
2 files changed, 8 insertions, 2 deletions
diff --git a/include/ipa/ipa_controls.h b/include/ipa/ipa_controls.h
index 6371e345..37f97d6a 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 fc5ccd42..da4724b1 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,