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.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/include/ipa/ipa_interface.h b/include/ipa/ipa_interface.h
index 35dc4b4e..3a423e37 100644
--- a/include/ipa/ipa_interface.h
+++ b/include/ipa/ipa_interface.h
@@ -7,6 +7,82 @@
#ifndef __LIBCAMERA_IPA_INTERFACE_H__
#define __LIBCAMERA_IPA_INTERFACE_H__
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct ipa_context {
+ const struct ipa_context_ops *ops;
+};
+
+struct ipa_stream {
+ unsigned int id;
+ unsigned int pixel_format;
+ unsigned int width;
+ unsigned int height;
+};
+
+struct ipa_control_info_map {
+ unsigned int id;
+ const uint8_t *data;
+ size_t size;
+};
+
+struct ipa_buffer_plane {
+ int dmabuf;
+ size_t length;
+};
+
+struct ipa_buffer {
+ unsigned int id;
+ unsigned int num_planes;
+ struct ipa_buffer_plane planes[3];
+};
+
+struct ipa_control_list {
+ const uint8_t *data;
+ unsigned int size;
+};
+
+struct ipa_operation_data {
+ unsigned int operation;
+ const uint32_t *data;
+ unsigned int num_data;
+ const struct ipa_control_list *lists;
+ unsigned int num_lists;
+};
+
+struct ipa_callback_ops {
+ void (*queue_frame_action)(void *cb_ctx, unsigned int frame,
+ struct ipa_operation_data &data);
+};
+
+struct ipa_context_ops {
+ void (*destroy)(struct ipa_context *ctx);
+ void (*init)(struct ipa_context *ctx);
+ void (*register_callbacks)(struct ipa_context *ctx,
+ const struct ipa_callback_ops *callbacks,
+ void *cb_ctx);
+ void (*configure)(struct ipa_context *ctx,
+ const struct ipa_stream *streams,
+ unsigned int num_streams,
+ const struct ipa_control_info_map *maps,
+ unsigned int num_maps);
+ void (*map_buffers)(struct ipa_context *ctx,
+ const struct ipa_buffer *buffers,
+ size_t num_buffers);
+ void (*unmap_buffers)(struct ipa_context *ctx, const unsigned int *ids,
+ size_t num_buffers);
+ void (*process_event)(struct ipa_context *ctx,
+ const struct ipa_operation_data *data);
+};
+
+#ifdef __cplusplus
+}
+
#include <map>
#include <vector>
@@ -53,5 +129,6 @@ public:
};
} /* namespace libcamera */
+#endif
#endif /* __LIBCAMERA_IPA_INTERFACE_H__ */