[libcamera-devel] [PATCH 6/6] libcamera: control_serializer: Serialize info::def()
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Sep 3 14:00:22 CEST 2021
On Fri, Sep 03, 2021 at 02:42:28PM +0900, paul.elder at ideasonboard.com wrote:
> On Wed, Sep 01, 2021 at 04:38:00PM +0200, Jacopo Mondi wrote:
> > The ControlInfo class was originally designed to only transport
> > the control's minimum and maximum values which represent the control's
> > valid limits.
> >
> > Later the default value of the control has been added to the ControlInfo
> > class, but the control serializer implementation has not been updated
> > accordingly.
> >
> > This causes issues to IPA modules making use of ControlInfo::def() as,
>
> s/to/in/
>
> > when running in isolation, they would receive a 0 value as default.
>
> s/ as default//
>
> There's no way to turn off receiving the "default" :D
>
> > Fix that by serializing and deserializing the additional ControlValue
> > and update the protocol description accordingly.
> >
> > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > ---
> > src/libcamera/control_serializer.cpp | 6 ++++--
> > src/libcamera/ipa_controls.cpp | 14 ++++++++------
> > 2 files changed, 12 insertions(+), 8 deletions(-)
> >
> > diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp
> > index 7eef041a16ee..4e8045251938 100644
> > --- a/src/libcamera/control_serializer.cpp
> > +++ b/src/libcamera/control_serializer.cpp
> > @@ -105,7 +105,7 @@ size_t ControlSerializer::binarySize(const ControlValue &value)
> >
> > size_t ControlSerializer::binarySize(const ControlInfo &info)
> > {
> > - return binarySize(info.min()) + binarySize(info.max());
> > + return binarySize(info.min()) + binarySize(info.max()) + binarySize(info.def());
> > }
> >
> > /**
> > @@ -158,6 +158,7 @@ void ControlSerializer::store(const ControlInfo &info, ByteStreamBuffer &buffer)
> > {
> > store(info.min(), buffer);
> > store(info.max(), buffer);
> > + store(info.def(), buffer);
> > }
> >
> > /**
> > @@ -346,8 +347,9 @@ ControlInfo ControlSerializer::loadControlInfo(ControlType type,
> >
> > ControlValue min = loadControlValue(type, b);
> > ControlValue max = loadControlValue(type, b);
> > + ControlValue def = loadControlValue(type, b);
> >
> > - return ControlInfo(min, max);
> > + return ControlInfo(min, max, def);
> > }
> >
> > /**
> > diff --git a/src/libcamera/ipa_controls.cpp b/src/libcamera/ipa_controls.cpp
> > index fb98cda30ede..3d172d66b30f 100644
> > --- a/src/libcamera/ipa_controls.cpp
> > +++ b/src/libcamera/ipa_controls.cpp
> > @@ -108,17 +108,19 @@
> > * +-------------------------+ .
> > * / | ... | | entry[n].offset
> > * | +-------------------------+ <-----´
> > - * Data | | minimum value (#n) | \
> > - * section | +-------------------------+ | Entry #n
> > - * | | maximum value (#n) | /
> > + * | | minimum value (#n) | \
> > + * Data | +-------------------------+ |
> > + * section | | maximum value (#n) | | Entry #n
> > + * | +-------------------------+ |
> > + * | | default value (#n) | /
> > * | +-------------------------+
> > * \ | ... |
> > * +-------------------------+
> > * ~~~~
> > *
> > - * The minimum and maximum value are stored in the platform's native data
> > - * format. The ipa_control_info_entry::offset field stores the offset from the
> > - * beginning of the data section to the info data.
> > + * The minimum, maximum and default value are stored in the platform's native
>
> s/maximum/maximum,/
Oxford commas https://en.wikipedia.org/wiki/Serial_comma :-) (I would
have gone without it here, or have kept value as a singular to only
refer to default.)
> s/value/values/
Agreed.
> Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > + * data format. The ipa_control_info_entry::offset field stores the offset from
> > + * the beginning of the data section to the info data.
> > *
> > * Info data in the data section shall be stored in the same order as the
> > * entries array, shall be aligned to a multiple of 8 bytes, and shall be
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list