diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-10-08 02:45:31 +0200 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-10-11 14:32:51 +0200 |
commit | 5c35fa04d01f6b8505a0ba37a0d8c3e259004576 (patch) | |
tree | 8d17995298b234410306a0f7d2f4155e56635a89 /include/ipa | |
parent | f3022d91dca4a32e8faa3759e4b113a928602ba2 (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')
-rw-r--r-- | include/ipa/ipa_interface.h | 36 |
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 */ |