Add Python bindings

Add libcamera Python bindings. pybind11 is used to generate the C++ <->
Python layer.

We use pybind11 'smart_holder' version to avoid issues with private
destructors and shared_ptr. There is also an alternative solution here:

https://github.com/pybind/pybind11/pull/2067

Only a subset of libcamera classes are exposed. Implementing and testing
the wrapper classes is challenging, and as such only classes that I have
needed have been added so far.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Tomi Valkeinen 2022-05-09 13:10:20 +03:00 committed by Kieran Bingham
parent 5cb17e0c13
commit 8aa02271fd
11 changed files with 845 additions and 1 deletions

View file

@ -1,3 +1,4 @@
/googletest-release*
/libyuv
/packagecache
/packagecache
/pybind11

View file

@ -0,0 +1,7 @@
project('pybind11', 'cpp',
version : '2.9.1',
license : 'BSD-3-Clause')
pybind11_incdir = include_directories('include')
pybind11_dep = declare_dependency(include_directories : pybind11_incdir)

View file

@ -0,0 +1,9 @@
[wrap-git]
url = https://github.com/pybind/pybind11.git
# This is the head of 'smart_holder' branch
revision = aebdf00cd060b871c5a1e0c2cf4a333503dd0431
depth = 1
patch_directory = pybind11
[provide]
pybind11 = pybind11_dep