summaryrefslogtreecommitdiff
path: root/include/ipa/ipa_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ipa/ipa_interface.h')
-rw-r--r--include/ipa/ipa_interface.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/ipa/ipa_interface.h b/include/ipa/ipa_interface.h
index 2c5eb1fd..c393b64f 100644
--- a/include/ipa/ipa_interface.h
+++ b/include/ipa/ipa_interface.h
@@ -7,14 +7,50 @@
#ifndef __LIBCAMERA_IPA_INTERFACE_H__
#define __LIBCAMERA_IPA_INTERFACE_H__
+#include <map>
+#include <vector>
+
+#include <libcamera/buffer.h>
+#include <libcamera/controls.h>
+#include <libcamera/geometry.h>
+#include <libcamera/signal.h>
+
+#include "v4l2_controls.h"
+
namespace libcamera {
+struct IPAStream {
+ unsigned int pixelFormat;
+ Size size;
+};
+
+struct IPABuffer {
+ unsigned int id;
+ BufferMemory memory;
+};
+
+struct IPAOperationData {
+ unsigned int operation;
+ std::vector<uint32_t> data;
+ std::vector<ControlList> controls;
+ std::vector<V4L2ControlList> v4l2controls;
+};
+
class IPAInterface
{
public:
virtual ~IPAInterface() {}
virtual int init() = 0;
+
+ virtual void configure(const std::map<unsigned int, IPAStream> &streamConfig,
+ const std::map<unsigned int, V4L2ControlInfoMap> &entityControls) = 0;
+
+ virtual void mapBuffers(const std::vector<IPABuffer> &buffers) = 0;
+ virtual void unmapBuffers(const std::vector<unsigned int> &ids) = 0;
+
+ virtual void processEvent(const IPAOperationData &data) = 0;
+ Signal<unsigned int, const IPAOperationData &> queueFrameAction;
};
} /* namespace libcamera */