Commit Graph

5 Commits

Author SHA1 Message Date
Paul Elder
dfc9a8db09 libcamera: ipa_module_info: add license field
Add a field to IPAModuleInfo to contain the license of the module.

This license field will be used to determine whether the IPA module
should be run in an isolated process or not. If the license is open
source, then the IPA module will be allowed to run without process
isolation, if the user enables it. If the license is not open source,
then the IPA module will be run with process isolation.

Update the dummy IPA and IPA test to conform to the new struct layout.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-07-12 15:52:30 +09:00
Paul Elder
0c2f97a0ab libcamera: ipa_module_info: remove cplusplus guards
IPA modules must be implemented in C++, which means we no longer need
__cplusplus guards, so remove them.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-07-02 23:18:03 +09:00
Paul Elder
677e8e1dfe libcamera: ipa_module_info: update struct to allow IPA matching
We need a way to match pipelines with IPA modules, so add fields in
IPAModuleInfo to hold the IPA module API version number, the pipeline
name, and the pipeline version.

The module API version is used to determine the layout of struct
IPAModuleInfo.

Also update IPA module tests and Doxygen accordingly. Doxygen needs to
be updated to accomodate __attribute__((packed)).

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-06-05 10:44:51 -04:00
Paul Elder
46ae1775b0 libcamera: ipa_interface: add header
Define an IPAInterface class which will contain an IPA implementation.
The methods that the IPAInterface exposes form the interface to the IPA
implementation, hence the name. IPA module shared objects will implement
this class.

This also means that IPA module shared objects must be implemented in
C++, so remove the C test IPA module.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-06-05 10:44:51 -04:00
Paul Elder
c1bbbd3b5b libcamera: ipa_module: add IPA shared library module
Implement a class to wrap around an IPA module shared object.

For now, just load a struct IPAModuleInfo with symbol name
ipaModuleInfo from an IPA module .so shared object.

Also provide a public header file including the struct IPAModuleInfo,
structured such that both C and C++ IPA modules are supported.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-05-21 18:31:37 -04:00