[libcamera-devel] [RFC v3 0/5] Python bindings

David Plowman david.plowman at raspberrypi.com
Thu Dec 9 11:32:17 CET 2021


Hi Tomi, everyone

Thanks for submitting this set, very pleased to see this moving again!

I've actually been using these bindings extensively over the last
several weeks, so we could add:

Tested-by: David Plowman <david.plowman at raspberrypi.com>

to all of them.

A couple of points:

* For my Picamera2 use cases (which are not remarkable) I had to add
support for array controls, controls in the camera start() method, and
an implementation of the transforms. I can submit those changes on top
of this patch set at a later date, though they probably lack the
requisite loveliness at the moment.

* About the name "pycamera". Could we use "pylibcamera" instead? I
worry that "pycamera" would cause more confusion with "picamera",
which is of course our legacy stack Python library that Picamera2 is
replacing.

Thanks!
David

On Thu, 9 Dec 2021 at 09:29, Tomi Valkeinen
<tomi.valkeinen at ideasonboard.com> wrote:
>
> Hi,
>
> Third RFC of the python bindings. I believe it's over a year since the
> last version, and I've been tinkering with the bindings every now and
> then.
>
> This version includes cam.py, which mimics 'cam' tool. The idea is not
> to try to replace 'cam', but to test the bindings in a real use case,
> rather than artificial tests.
>
> There are a few clear items that should be done to make this more
> usable:
>
> - Fix the ControlValue handling, as arrays are not handled at all.
>   Possibly other types are not handled correctly.
> - Add ControlList parameter to Camera.start()
> - Add Transform
>
>  Tomi
>
> Tomi Valkeinen (5):
>   HACK: Camera public destructor
>   libcamera: Request: expose Camera from Request
>   gitignore: add .cache
>   Add Python bindings
>   py: Add cam.py
>
>  .gitignore                  |   2 +
>  include/libcamera/camera.h  |   2 +-
>  include/libcamera/request.h |   2 +
>  meson.build                 |   1 +
>  meson_options.txt           |   5 +
>  src/libcamera/request.cpp   |   5 +
>  src/meson.build             |   1 +
>  src/py/meson.build          |   1 +
>  src/py/pycamera/__init__.py |  10 +
>  src/py/pycamera/meson.build |  43 ++++
>  src/py/pycamera/pymain.cpp  | 424 ++++++++++++++++++++++++++++++++
>  src/py/test/cam.py          | 464 ++++++++++++++++++++++++++++++++++++
>  src/py/test/cam_kms.py      | 185 ++++++++++++++
>  src/py/test/cam_null.py     |  46 ++++
>  src/py/test/cam_qt.py       | 355 +++++++++++++++++++++++++++
>  src/py/test/cam_qtgl.py     | 385 ++++++++++++++++++++++++++++++
>  src/py/test/gl_helpers.py   |  67 ++++++
>  subprojects/pybind11.wrap   |  12 +
>  18 files changed, 2009 insertions(+), 1 deletion(-)
>  create mode 100644 src/py/meson.build
>  create mode 100644 src/py/pycamera/__init__.py
>  create mode 100644 src/py/pycamera/meson.build
>  create mode 100644 src/py/pycamera/pymain.cpp
>  create mode 100755 src/py/test/cam.py
>  create mode 100644 src/py/test/cam_kms.py
>  create mode 100644 src/py/test/cam_null.py
>  create mode 100644 src/py/test/cam_qt.py
>  create mode 100644 src/py/test/cam_qtgl.py
>  create mode 100644 src/py/test/gl_helpers.py
>  create mode 100644 subprojects/pybind11.wrap
>
> --
> 2.25.1
>


More information about the libcamera-devel mailing list