summaryrefslogtreecommitdiff
path: root/include/ipa/ipa_interface.h
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-10-08 02:45:31 +0200
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-10-11 14:32:51 +0200
commit5c35fa04d01f6b8505a0ba37a0d8c3e259004576 (patch)
tree8d17995298b234410306a0f7d2f4155e56635a89 /include/ipa/ipa_interface.h
parentf3022d91dca4a32e8faa3759e4b113a928602ba2 (diff)
libcamera: ipa: Extend to support IPA interactions
The IPA interface needs to support interactions with the pipeline; add interfaces to control the sensor and handling of request ISP parameters and statistics. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
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 */