[libcamera-devel,v5,2/5] libcamera: Add SensorCropMaximum property
diff mbox series

Message ID 20201023102159.26274-3-david.plowman@raspberrypi.com
State Accepted
Headers show
Series
  • Digital zoom
Related show

Commit Message

David Plowman Oct. 23, 2020, 10:21 a.m. UTC
The SensorCropMaximum camera property reports the location of that
part of the image sensor array that is scaled to produce the output
images, given in native sensor pixels. It will normally change when a
new camera mode is selected, and can be used to implement digital
zoom.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
---
 src/libcamera/property_ids.yaml | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Laurent Pinchart Oct. 23, 2020, 10:47 p.m. UTC | #1
Hi David,

Thank you for the patch.

On Fri, Oct 23, 2020 at 11:21:56AM +0100, David Plowman wrote:
> The SensorCropMaximum camera property reports the location of that
> part of the image sensor array that is scaled to produce the output

s/is scaled/can be scaled/ as the SensorCrop control will select which
part is actually scaled ?

> images, given in native sensor pixels. It will normally change when a
> new camera mode is selected, and can be used to implement digital
> zoom.
> 
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
> ---
>  src/libcamera/property_ids.yaml | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
> index 7261263a..a306a422 100644
> --- a/src/libcamera/property_ids.yaml
> +++ b/src/libcamera/property_ids.yaml
> @@ -663,4 +663,18 @@ controls:
>          \todo Rename this property to ActiveAreas once we will have property
>                categories (i.e. Properties::PixelArray::ActiveAreas)
>  
> +  - ScalerCropMaximum:
> +      type: Rectangle
> +      description: |
> +        The maximum valid rectangle for the controls::ScalerCrop control. This
> +        reflects the minimum mandatory cropping applied in the camera sensor and
> +        the rest of the pipeline.
> +
> +        This property is valid only after the camera has been successfully
> +        configured and its value changes whenever a new configuration is

s/changes/may change/

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> +        applied.
> +
> +        \todo Turn this property into a "maximum control value" for the
> +        ScalerCrop control once "dynamic" controls have been implemented.
> +
>  ...
Jacopo Mondi Oct. 24, 2020, 4:43 p.m. UTC | #2
On Fri, Oct 23, 2020 at 11:21:56AM +0100, David Plowman wrote:
> The SensorCropMaximum camera property reports the location of that

s/that/the ?

> part of the image sensor array that is scaled to produce the output
> images, given in native sensor pixels. It will normally change when a
> new camera mode is selected, and can be used to implement digital
> zoom.
>
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>

Nice work! Thank you and Laurent for pushing this forward!

Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

> ---
>  src/libcamera/property_ids.yaml | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
> index 7261263a..a306a422 100644
> --- a/src/libcamera/property_ids.yaml
> +++ b/src/libcamera/property_ids.yaml
> @@ -663,4 +663,18 @@ controls:
>          \todo Rename this property to ActiveAreas once we will have property
>                categories (i.e. Properties::PixelArray::ActiveAreas)
>
> +  - ScalerCropMaximum:
> +      type: Rectangle
> +      description: |
> +        The maximum valid rectangle for the controls::ScalerCrop control. This
> +        reflects the minimum mandatory cropping applied in the camera sensor and
> +        the rest of the pipeline.
> +
> +        This property is valid only after the camera has been successfully
> +        configured and its value changes whenever a new configuration is
> +        applied.
> +
> +        \todo Turn this property into a "maximum control value" for the
> +        ScalerCrop control once "dynamic" controls have been implemented.
> +
>  ...
> --
> 2.20.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Jacopo Mondi Oct. 24, 2020, 7:17 p.m. UTC | #3
Hi again,

On Sat, Oct 24, 2020 at 06:43:44PM +0200, Jacopo Mondi wrote:
> On Fri, Oct 23, 2020 at 11:21:56AM +0100, David Plowman wrote:
> > The SensorCropMaximum camera property reports the location of that
>
> s/that/the ?
>
> > part of the image sensor array that is scaled to produce the output
> > images, given in native sensor pixels. It will normally change when a
> > new camera mode is selected, and can be used to implement digital
> > zoom.
> >
> > Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
>
> Nice work! Thank you and Laurent for pushing this forward!
>
> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
>
> Thanks
>   j
>
> > ---
> >  src/libcamera/property_ids.yaml | 14 ++++++++++++++
> >  1 file changed, 14 insertions(+)
> >
> > diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
> > index 7261263a..a306a422 100644
> > --- a/src/libcamera/property_ids.yaml
> > +++ b/src/libcamera/property_ids.yaml
> > @@ -663,4 +663,18 @@ controls:
> >          \todo Rename this property to ActiveAreas once we will have property
> >                categories (i.e. Properties::PixelArray::ActiveAreas)
> >
> > +  - ScalerCropMaximum:
> > +      type: Rectangle
> > +      description: |
> > +        The maximum valid rectangle for the controls::ScalerCrop control. This
> > +        reflects the minimum mandatory cropping applied in the camera sensor and
> > +        the rest of the pipeline.

Looking at the RPi implementation I had to get back here to check what
the reference of the property is and found it only mentioned in the
commit message. Should we mention it is relative to the full pixel
array as it's done for ScalerCrop ?

> > +
> > +        This property is valid only after the camera has been successfully
> > +        configured and its value changes whenever a new configuration is
> > +        applied.
> > +
> > +        \todo Turn this property into a "maximum control value" for the
> > +        ScalerCrop control once "dynamic" controls have been implemented.
> > +
> >  ...
> > --
> > 2.20.1
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel@lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
Laurent Pinchart Oct. 24, 2020, 10:25 p.m. UTC | #4
Hi Jacopo,
On Sat, Oct 24, 2020 at 09:17:15PM +0200, Jacopo Mondi wrote:
> On Sat, Oct 24, 2020 at 06:43:44PM +0200, Jacopo Mondi wrote:
> > On Fri, Oct 23, 2020 at 11:21:56AM +0100, David Plowman wrote:
> > > The SensorCropMaximum camera property reports the location of that
> >
> > s/that/the ?
> >
> > > part of the image sensor array that is scaled to produce the output
> > > images, given in native sensor pixels. It will normally change when a
> > > new camera mode is selected, and can be used to implement digital
> > > zoom.
> > >
> > > Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
> >
> > Nice work! Thank you and Laurent for pushing this forward!
> >
> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
> >
> > > ---
> > >  src/libcamera/property_ids.yaml | 14 ++++++++++++++
> > >  1 file changed, 14 insertions(+)
> > >
> > > diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
> > > index 7261263a..a306a422 100644
> > > --- a/src/libcamera/property_ids.yaml
> > > +++ b/src/libcamera/property_ids.yaml
> > > @@ -663,4 +663,18 @@ controls:
> > >          \todo Rename this property to ActiveAreas once we will have property
> > >                categories (i.e. Properties::PixelArray::ActiveAreas)
> > >
> > > +  - ScalerCropMaximum:
> > > +      type: Rectangle
> > > +      description: |
> > > +        The maximum valid rectangle for the controls::ScalerCrop control. This
> > > +        reflects the minimum mandatory cropping applied in the camera sensor and
> > > +        the rest of the pipeline.
> 
> Looking at the RPi implementation I had to get back here to check what
> the reference of the property is and found it only mentioned in the
> commit message. Should we mention it is relative to the full pixel
> array as it's done for ScalerCrop ?

I think it's important to document it clearly for the ScalerCrop
property. ScalerCropMaximum is then defined based on the ScalerCrop
definition, so I don't consider it necessary to duplicate the
information here. I don't mind much though (and this property is meant
to be temporary anyway).

> > > +
> > > +        This property is valid only after the camera has been successfully
> > > +        configured and its value changes whenever a new configuration is
> > > +        applied.
> > > +
> > > +        \todo Turn this property into a "maximum control value" for the
> > > +        ScalerCrop control once "dynamic" controls have been implemented.
> > > +
> > >  ...

Patch
diff mbox series

diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
index 7261263a..a306a422 100644
--- a/src/libcamera/property_ids.yaml
+++ b/src/libcamera/property_ids.yaml
@@ -663,4 +663,18 @@  controls:
         \todo Rename this property to ActiveAreas once we will have property
               categories (i.e. Properties::PixelArray::ActiveAreas)
 
+  - ScalerCropMaximum:
+      type: Rectangle
+      description: |
+        The maximum valid rectangle for the controls::ScalerCrop control. This
+        reflects the minimum mandatory cropping applied in the camera sensor and
+        the rest of the pipeline.
+
+        This property is valid only after the camera has been successfully
+        configured and its value changes whenever a new configuration is
+        applied.
+
+        \todo Turn this property into a "maximum control value" for the
+        ScalerCrop control once "dynamic" controls have been implemented.
+
 ...