[libcamera-devel] [PATCH v5 0/3] Python bindings

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Thu Mar 17 10:55:14 CET 2022


On 17/03/2022 11:44, David Plowman wrote:
> Hi everyone
> 
> Thanks for the update!
> 
> On Mon, 14 Mar 2022 at 15:46, Tomi Valkeinen
> <tomi.valkeinen at ideasonboard.com> wrote:
>>
>> Hi,
>>
>> This is v5 of the series. The changes to v4:
>>
>> - Changed to pybind11 'smart_holders' branch which allows us to drop the
>>    HACK for Camera public destructor
>> - Changed Request.set_control() so that we can drop the HACK for
>>    exposing Camera from Request
>> - Moved Python enum defs to a separate file for clarity
>> - "Forward" declare Python classes to fix docstring issues.
>>
>> The set_control change breaks the current users of that function.
>> Previously you could do this:
>>
>> req.set_control("Brightness", 1)
>>
>> Now you need to do:
>>
>> cid = camera.find_control("Brightness")
>> req.set_control(cid, 1)
>>
> 
> I see the need for this, and I guess it's fine - obviously we'll hide
> that under our Picamera2 API as we wouldn't want our users to have to
> do that!

Yes, it's not very nice. Then again, having to do a string search every 
time we call set_control is not good either, at least if we can avoid it 
(and we can, as above). But I agree that in a higher level API things 
should be easy. Of course, it would be nice to have both versions even 
in this low level API, but... if Request doesn't expose camera, I don't 
think we can do it in a simple way.

> There is one further thing I wanted to raise in relation to the Python
> bindings for controls, now that a few folks are trying out Picamera2.
> 
> I've had feedback that they don't like the fact that all the "enum"
> control values (exposure modes, AWB modes, that kind of thing) are
> simple integers up in the Python world. They complain that this makes
> them quite unfriendly to use, and I'm inclined to agree! We could
> always create Python-level definitions for them, and possibly add code
> to convert stuff on the fly, but I wonder if Pybind11 can do anything
> more automatic for us?

Can you elaborate? Which enums are these?

  Tomi


More information about the libcamera-devel mailing list