summaryrefslogtreecommitdiff
path: root/src/libcamera/ipa_interface.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-09-28 06:41:22 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-11-20 21:48:05 +0200
commitd7e0985ce13d094608bec9b496873ae0361ea87d (patch)
treebd79ff5b373760b2dc118066a99db93f915a7311 /src/libcamera/ipa_interface.cpp
parent8162ac164755d04425499c76dfc12a3a9057f936 (diff)
ipa: Allow short-circuiting the ipa_context_ops
When an IPA module is loaded without isolation and implements the IPAInterface internally, going through ipa_context_ops is a waste of time. Add an operation to retrieve the IPAInterface, and use it directly in the IPAContextWrapper. For debugging purpose, make it possible to forcing usage of the C API by defining the LIBCAMERA_IPA_FORCE_C_API environment variable. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/libcamera/ipa_interface.cpp')
-rw-r--r--src/libcamera/ipa_interface.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libcamera/ipa_interface.cpp b/src/libcamera/ipa_interface.cpp
index cb2767a0..715e7972 100644
--- a/src/libcamera/ipa_interface.cpp
+++ b/src/libcamera/ipa_interface.cpp
@@ -62,6 +62,12 @@
* handlers to communicate with IPA modules. IPA modules may use the
* IPAInterface API internally if they want to benefit from the data and helper
* classes offered by libcamera.
+ *
+ * When an IPA module is loaded directly into the libcamera process and uses
+ * the IPAInterface API internally, short-circuiting the path to the
+ * ipa_context_ops and back to IPAInterface is desirable. To support this, IPA
+ * modules may implement the ipa_context_ops::get_interface function to return a
+ * pointer to their internal IPAInterface.
*/
/**
@@ -210,6 +216,18 @@
*/
/**
+ * \var ipa_context_ops::get_interface
+ * \brief Retrieve the IPAInterface implemented by the ipa_context (optional)
+ * \param[in] ctx The IPA context
+ *
+ * IPA modules may implement this function to expose their internal
+ * IPAInterface, if any. When implemented, libcamera may at its sole discretion
+ * call it and then bypass the ipa_context_ops API by calling the IPAInterface
+ * methods directly. IPA modules shall still implement and support the full
+ * ipa_context_ops API.
+ */
+
+/**
* \var ipa_context_ops::init
* \brief Initialise the IPA context
* \param[in] ctx The IPA context