summaryrefslogtreecommitdiff
path: root/src/ipa/ipu3/ipa_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/ipu3/ipa_context.h')
-rw-r--r--src/ipa/ipu3/ipa_context.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/ipa/ipu3/ipa_context.h b/src/ipa/ipu3/ipa_context.h
index 8d681131..42e11141 100644
--- a/src/ipa/ipu3/ipa_context.h
+++ b/src/ipa/ipu3/ipa_context.h
@@ -8,16 +8,22 @@
#pragma once
+#include <array>
+
#include <linux/intel-ipu3.h>
#include <libcamera/base/utils.h>
+#include <libcamera/controls.h>
#include <libcamera/geometry.h>
namespace libcamera {
namespace ipa::ipu3 {
+/* Maximum number of frame contexts to be held */
+static constexpr uint32_t kMaxFrameContexts = 16;
+
struct IPASessionConfiguration {
struct {
ipu3_uapi_grid_config bdsGrid;
@@ -71,17 +77,23 @@ struct IPAActiveState {
};
struct IPAFrameContext {
+ IPAFrameContext();
+ IPAFrameContext(uint32_t id, const ControlList &reqControls);
+
struct {
uint32_t exposure;
double gain;
} sensor;
+
+ uint32_t frame;
+ ControlList frameControls;
};
struct IPAContext {
IPASessionConfiguration configuration;
IPAActiveState activeState;
- IPAFrameContext frameContext;
+ std::array<IPAFrameContext, kMaxFrameContexts> frameContexts;
};
} /* namespace ipa::ipu3 */