[libcamera-devel] [RFC PATCH v3 0/4] Replace boost JSON parser with libyaml in Raspberry Pi IPA

Naushir Patuck naush at raspberrypi.com
Tue Jul 12 10:16:01 CEST 2022


Hi Laurent,


On Mon, 11 Jul 2022 at 21:18, Laurent Pinchart <
laurent.pinchart at ideasonboard.com> wrote:

> Hi Naush,
>
> Would you be able to review this ? And could I volunteer you to handle
> the items listed below to make this a non-RFC series ? :-) That would be
>
> - Adding support for a new tuning data format that doesn't rely on YAML
>   mapping ordering (it's really just about turning the mapping into a
>   list of single-entry mappings, and while at it, adding a top-level
>   version number element).
>
> - Update ctt to generate the new format.
>
> - Add a tool (Python seems to be the best option) to convert tuning
>   files from the existing format to the new format.
>

Sure, I'll get to that as soon as I can.

Regards,
Naush


>
> On Thu, Jun 16, 2022 at 06:05:31PM +0300, Laurent Pinchart via
> libcamera-devel wrote:
> > Hello,
> >
> > As mentioned in the subject, this patch series replaces the boost JSON
> > parser with the YamlParser implementation based on libyaml for the
> > Raspberry Pi IPA module.
> >
> > Compared to v2, the base work that introduces the iterator API has been
> > sent separately in "[PATCH 0/7] libcamera: yaml_parser: Add iterator
> > API". This series then addresses the specific needs of the Raspberry Pi
> > IPA module.
> >
> > The Raspberry Pi IPA tuning data contains a list of algorithms stored in
> > a mapping. Both the JSON and the YAML specifications explicitly state
> > that mappings are not ordered, but the IPA relies on the JSON data order
> > being preserved by the parser. This is an implementation-specific
> > behaviour that happens to be match the boost JSON parser implementation,
> > but not the YamlParser class.
> >
> > While in a perfect world we would update the tuning data format to avoid
> > this problem, we don't want to break every tuning file out there, and
> > thus need to ensure backward compatibility. This is why patches 1/4 and
> > 2/4 update the parser and iterator implementation to preserve the data
> > order, and patches 3/4 and 4/4 then move the Raspberry Pi IPA from boost
> > to YamlParser.
> >
> > If this approach is deemed reasonable, then the next non-RFC version of
> > the series should also include a new format for the Raspberry Pi IPA
> > tuning data that would be compliant with the JSON specification, an
> > update to the camera tuning tool to generate tuning files in that
> > format, and possibly a Python script to convert existing files to the
> > new format.
> >
> > Laurent Pinchart (4):
> >   test: yaml-parser: Test dictionary items ordering
> >   libcamera: yaml_parser: Preserve order of items in dictionary
> >   ipa: raspberrypi: Replace tabs with spaces in tuning data files
> >   ipa: raspberrypi: Use YamlParser to replace dependency on boost
> >
> >  README.rst                                    |  6 --
> >  include/libcamera/internal/yaml_parser.h      | 37 +++++---
> >  src/ipa/raspberrypi/controller/algorithm.cpp  |  2 +-
> >  src/ipa/raspberrypi/controller/algorithm.hpp  |  6 +-
> >  src/ipa/raspberrypi/controller/controller.cpp | 27 ++++--
> >  src/ipa/raspberrypi/controller/pwl.cpp        | 12 ++-
> >  src/ipa/raspberrypi/controller/pwl.hpp        |  5 +-
> >  src/ipa/raspberrypi/controller/rpi/agc.cpp    | 94 +++++++++----------
> >  src/ipa/raspberrypi/controller/rpi/agc.hpp    | 10 +-
> >  src/ipa/raspberrypi/controller/rpi/alsc.cpp   | 94 +++++++++----------
> >  src/ipa/raspberrypi/controller/rpi/alsc.hpp   |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/awb.cpp    | 89 +++++++++---------
> >  src/ipa/raspberrypi/controller/rpi/awb.hpp    |  8 +-
> >  .../controller/rpi/black_level.cpp            | 12 +--
> >  .../controller/rpi/black_level.hpp            |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/ccm.cpp    | 28 +++---
> >  src/ipa/raspberrypi/controller/rpi/ccm.hpp    |  4 +-
> >  .../raspberrypi/controller/rpi/contrast.cpp   | 18 ++--
> >  .../raspberrypi/controller/rpi/contrast.hpp   |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/dpc.cpp    |  4 +-
> >  src/ipa/raspberrypi/controller/rpi/dpc.hpp    |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/geq.cpp    | 10 +-
> >  src/ipa/raspberrypi/controller/rpi/geq.hpp    |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/lux.cpp    | 12 +--
> >  src/ipa/raspberrypi/controller/rpi/lux.hpp    |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/noise.cpp  |  6 +-
> >  src/ipa/raspberrypi/controller/rpi/noise.hpp  |  2 +-
> >  src/ipa/raspberrypi/controller/rpi/sdn.cpp    |  6 +-
> >  src/ipa/raspberrypi/controller/rpi/sdn.hpp    |  2 +-
> >  .../raspberrypi/controller/rpi/sharpen.cpp    |  8 +-
> >  .../raspberrypi/controller/rpi/sharpen.hpp    |  2 +-
> >  src/ipa/raspberrypi/data/imx219.json          |  8 +-
> >  src/ipa/raspberrypi/data/imx219_noir.json     | 10 +-
> >  src/ipa/raspberrypi/data/imx290.json          | 18 ++--
> >  src/ipa/raspberrypi/data/imx477.json          |  8 +-
> >  src/ipa/raspberrypi/data/imx477_noir.json     | 10 +-
> >  src/ipa/raspberrypi/data/ov5647.json          | 10 +-
> >  src/ipa/raspberrypi/data/ov5647_noir.json     | 12 +--
> >  src/ipa/raspberrypi/data/se327m12.json        |  6 +-
> >  src/ipa/raspberrypi/meson.build               |  1 -
> >  src/ipa/raspberrypi/raspberrypi.cpp           |  1 +
> >  src/libcamera/yaml_parser.cpp                 | 35 ++++---
> >  test/yaml-parser.cpp                          | 17 ++--
> >  43 files changed, 334 insertions(+), 318 deletions(-)
> >
> >
> > base-commit: c5ab0f3b64280733a10b2da39e522fe87d0d51f0
> > --
> > Regards,
> >
> > Laurent Pinchart
> >
>
> --
> Regards,
>
> Laurent Pinchart
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20220712/6d723c6a/attachment.htm>


More information about the libcamera-devel mailing list