Commit graph

12 commits

Author SHA1 Message Date
Paul Elder
c7bbe0ca3a utils: tuning: Add tuning script for rkisp1
Add a tuning script for rkisp1 that uses libtuning. So far it only
supports LSC.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:38:17 +09:00
Paul Elder
4af9f81802 utils: tuning: Add alsc-only libtuning raspberrypi tuning script
Add a tuning script for raspberrypi for alsc only, that uses libtuning.
Since there will also be a tuning script for raspberrypi that has more
modules, put the libtuning alsc module definition in a separate file so
that it can be reused later.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:38:13 +09:00
Paul Elder
d62f2acce4 utils: libtuning: generators: Add yaml output
Add a generator to libtuning for writing tuning output to a yaml file.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:38:03 +09:00
Paul Elder
0f89bf3efd utils: libtuning: parsers: Add yaml parser
Add a parser to libtuning for parsing configuration files in yaml
format.

At the moment it doesn't parse anything and simply returns an empty
config. This is fine for the time being, as the only user of it is the
rkisp1 tuning script, which only has an LSC module which doesn't consume
anything from the configuration file. When a module comes around that
requires the yaml parser, it can be implemented then.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:50 +09:00
Paul Elder
b44ee5c348 utils: libtuning: generators: Add raspberrypi output
Add a generator to libtuning for writing tuning output to a json file
formatted the same way that raspberrypi's ctt formats them.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:47 +09:00
Paul Elder
49dfb9ae43 utils: libtuning: parsers: Add raspberrypi parser
Add a parser to libtuning for parsing configuration files that are the
same format as raspberrypi's ctt's configuration files.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:44 +09:00
Paul Elder
f715a75843 utils: libtuning: modules: alsc: Add rkisp1 LSC module
Add an LSC module for RkISP1.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:41 +09:00
Paul Elder
280e4acf94 utils: libtuning: modules: alsc: Add raspberrypi ALSC module
Add an ALSC module for Raspberry Pi.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:38 +09:00
Paul Elder
288cfb9b8b utils: libtuning: modules: Add base LSC module
Add a base LSC module to libtuning's collection of modules. It is based
on raspberrypi's ctt's ALSC, but customizable for different lens shading
table sizes, among other things. It alone is insufficient as a module,
but it provides utilities that are useful for and which will simplify
implementing LSC modules.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:34 +09:00
Paul Elder
b8af2500fa utils: tuning: libtuning: Implement extensible components of libtuning
Implement the extensible components of libtuning. This includes:
- Parsers, for supporting different types of input config file formats
- Generators, for supporting different types of output tuning file
  formats
- Modules, for supporting different tuning modules for different
  algorithms and platforms

No parsers, generators, or modules are actually implemented. Only the
base classes are implemented.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:30 +09:00
Paul Elder
db99d96663 utils: tuning: libtuning: Implement math helpers
Implement math helpers for libtuning. This includes:
- Average, a wrapper class for numpy averaging functions
- Gradient, a class that represents gradients, for distributing and
  mapping
- Smoothing, a wrapper class for cv2 smoothing functions

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:26 +09:00
Paul Elder
19dc8c28f6 utils: tuning: libtuning: Implement the core of libtuning
Implement the core of libtuning, our new tuning tool infrastructure. It
leverages components from raspberrypi's ctt that could be reused for
tuning tools for other platforms.

The core components include:
- The Image class
- libtuning (entry point and other core functions)
- macbeth-related tools, including the macbeth reference image
- utils

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-11-25 15:37:22 +09:00