[libcamera-devel] [PATCH v3 1/4] libcamera: controls: Define size of array controls as a shape vector
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Apr 19 22:44:25 CEST 2022
Hi Christian,
Thank you for the patch.
On Fri, Apr 08, 2022 at 02:42:28AM +0100, Christian Rauch via libcamera-devel wrote:
> This follows the convention in other Tensor APIs. Since all tensors are
> represented as a Span with a single dimension, values provided in 'size'
> are interpreted as fixed-size Spans, while an empty array ("[]") will be
> interpreted as variable-sized Span.
I like this, but it causes a compilation failure:
In file included from ../../src/libcamera/camera_sensor.cpp:8:
In file included from ../../include/libcamera/internal/camera_sensor.h:17:
In file included from include/libcamera/control_ids.h:15:
../../include/libcamera/controls.h:402:8: error: no matching member function for call to 'set'
val->set<T>(Span<const typename std::remove_cv_t<V>>{ value.begin(), value.size() });
~~~~~^~~~~~
../../src/libcamera/camera_sensor.cpp:421:14: note: in instantiation of function template specialization 'libcamera::ControlList::set<libcamera::Rectangle, libcamera::Rectangle>' requested here
properties_.set(properties::PixelArrayActiveAreas, { activeArea_ });
^
../../include/libcamera/controls.h:177:7: note: candidate function template not viable: no known conversion from 'Span<const typename std::remove_cv_t<Rectangle>>' (aka 'Span<const libcamera::Rectangle>') to 'const libcamera::Rectangle' for 1st argument
void set(const T &value)
^
../../include/libcamera/controls.h:189:7: note: candidate template ignored: requirement 'details::is_span<libcamera::Rectangle>::value || std::is_same<std::string, libcamera::Rectangle>::value' was not satisfied [with T = libcamera::Rectangle]
void set(const T &value)
^
1 error generated.
I think you'll have to update the gen-controls.py script in the same
patch to take the change into account. Patch 2/4 can then move to
fixed-extent spans.
> Signed-off-by: Christian Rauch <Rauch.Christian at gmx.de>
> ---
> src/libcamera/control_ids.yaml | 2 +-
> src/libcamera/property_ids.yaml | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml
> index 9d4638ae..c3f593a1 100644
> --- a/src/libcamera/control_ids.yaml
> +++ b/src/libcamera/control_ids.yaml
> @@ -291,7 +291,7 @@ controls:
> transformation. The 3x3 matrix is stored in conventional reading
> order in an array of 9 floating point values.
>
> - size: [3x3]
> + size: [3,3]
>
> - ScalerCrop:
> type: Rectangle
> diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml
> index 12ecbce5..47c350ed 100644
> --- a/src/libcamera/property_ids.yaml
> +++ b/src/libcamera/property_ids.yaml
> @@ -497,7 +497,7 @@ controls:
>
> - PixelArrayOpticalBlackRectangles:
> type: Rectangle
> - size: [n]
> + size: []
> description: |
> The pixel array region(s) which contain optical black pixels
> considered valid for calibration purposes.
> @@ -592,7 +592,7 @@ controls:
>
> - PixelArrayActiveAreas:
> type: Rectangle
> - size: [n]
> + size: []
> description: |
> The PixelArrayActiveAreas property defines the (possibly multiple and
> overlapping) portions of the camera sensor readable pixel matrix
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list