[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