[libcamera-devel] [RFC PATCH 2/4] libcamera: Add SensorCrop control
David Plowman
david.plowman at raspberrypi.com
Mon Sep 21 15:37:02 CEST 2020
Hi Jacopo
Thanks for the reply.
On Mon, 21 Sep 2020 at 14:02, Jacopo Mondi <jacopo at jmondi.org> wrote:
> Hi David,
> super nit: in Subject: "libcamera: controls: Add SensorCrop"
>
> On Mon, Sep 07, 2020 at 05:44:48PM +0100, David Plowman wrote:
> > The SensorCrop control selects how much of the sensor's output image
> > will be scaled to form the output image. It can be used to implement
> > digital zoom.
> > ---
> > src/libcamera/control_ids.yaml | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/src/libcamera/control_ids.yaml
> b/src/libcamera/control_ids.yaml
> > index 3560d4a..cebaa25 100644
> > --- a/src/libcamera/control_ids.yaml
> > +++ b/src/libcamera/control_ids.yaml
> > @@ -273,4 +273,13 @@ controls:
> > order in an array of 9 floating point values.
> >
> > size: [3x3]
> > +
> > + - SensorCrop:
>
> I wonder, is this a Sensor related property ? Roughly speaking that's
> a selection on the input frame that is provided to the ISP for
> processing, if I think about the possibly forthcoming namespacing of
> the controls IDs I don't see this being well placed as Sensor::Crop
> (but rather as ISP::Crop possibly ?)
>
> I recall you had 'PipelineCrop' in previous version, am I wrong ?
>
Hehe. Every time I come back to the topic of digital zoom it seems to
change its name! Yes, it was PipelineCrop before, now it's SensorCrop but I
can go with IspCrop (becoming ISP::Crop) too. :)
>
> > + type: Rectangle
> > + description: |
> > + Sets the portion of the full sensor image, in pixels, that will
> be
> > + scaled up to form the whole of the final output image. This
> control
>
> As a suggestion, take whatever you like in:
>
> Selection rectangle (in pixel units) that defines the
> portion of the image that will be scaled up to form the
> final output image. This control can be used to implement
> digital zoom.
>
> > + can be used to implement digital zoom. The size of the full
> sensor
> > + image within which an application can crop is available from the
> > + SensorOutputSize property.
>
> The rectangle is defined in respect to the size of the
> image which is processed by the ISP to produce the output
> streams, whose size is reported by the SensorOutputSize
> property.
>
> \sa properties::SensorOutputSize
>
> How bad is it in your opinion that this will apply to all streams ? I
> don't see many ways around and to me it's fine, but maybe we have
> different expectations ?
>
Well, I'm OK with it too, I think it makes life really quite complicated if
different output streams have different FOVs. I certainly know of ISPs that
can do this, but I don't think I've ever found myself working on a camera
application and thinking "I really need this feature". Generally speaking I
think you want the same image - just in a different resolution, or colour
space or format, something like that.
>
> How does it work if the Rectangle sizes are larger than the input
> frame sizes ? Should we enforce a behaviour like always clamping the
> SensorCrop size to the SensorOutputSize ones ?
>
In the Raspberry Pi pipeline handler I always use the Rectangle::clamp
method, so it forces it to fit whatever the application passes in. This
seems fair behaviour to me - application gives you rubbish, coerce it to
the nearest reasonable thing and report what you did - and is, I think,
more helpful than reporting an error and failing.
Thanks also for the other suggestions!
Best regards
David
>
> Thanks
> j
>
>
> > ...
> > --
> > 2.20.1
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel at lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20200921/89174f60/attachment.htm>
More information about the libcamera-devel
mailing list