[libcamera-devel] [PATCH v4 12/12] utils: tuning: Add tuning script for rkisp1

Paul Elder paul.elder at ideasonboard.com
Thu Nov 24 12:35:50 CET 2022


Add a tuning script for rkisp1 that uses libtuning. So far it only
supports LSC.

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

---
Changes in v4:
- s/ALSC/LSC/
- Remove the debug parameter from the tuning script, as it will be moved
  to cli argument

Changes in v3:
- cosmetic changes / fix style
- add __main__ guard
- rename ALSC to LSC

Changes in v2:
- add SPDX and copyright
- s/average_functions/average/
- update the script to work with the new rkisp1 alsc module

v1:
This won't run as we're missing the necessary parser and generator for
yaml, parabolic gradient support, and multiple green support in the LSC
module, hence the DNI. As soon as those are added though, this *should*
work.
---
 utils/tuning/rkisp1.py | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100755 utils/tuning/rkisp1.py

diff --git a/utils/tuning/rkisp1.py b/utils/tuning/rkisp1.py
new file mode 100755
index 00000000..1cea6ddb
--- /dev/null
+++ b/utils/tuning/rkisp1.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (C) 2022, Paul Elder <paul.elder at ideasonboard.com>
+#
+# rkisp1.py - Tuning script for rkisp1
+
+import sys
+
+import libtuning as lt
+from libtuning.parsers import YamlParser
+from libtuning.generators import YamlOutput
+from libtuning.modules.lsc import LSCRkISP1
+
+tuner = lt.Tuner('RkISP1')
+tuner.add(LSCRkISP1(
+          debug=[lt.Debug.Plot],
+          # This is for the actual LSC tuning, and is part of the base LSC
+          # module. rkisp1's table sector sizes (16x16 programmed as mirrored
+          # 8x8) are separate, and is hardcoded in its specific LSC tuning
+          # module.
+          sector_shape=(17, 17),
+
+          sector_x_gradient=lt.gradient.Linear(lt.Remainder.DistributeFront),
+          sector_y_gradient=lt.gradient.Linear(lt.Remainder.DistributeFront),
+
+          # This is the function that will be used to average the pixels in
+          # each sector. This can also be a custom function.
+          sector_average_function=lt.average.Mean(),
+
+          # This is the function that will be used to smooth the color ratio
+          # values.  This can also be a custom function.
+          smoothing_function=lt.smoothing.MedianBlur(3),
+          ))
+tuner.set_input_parser(YamlParser())
+tuner.set_output_formatter(YamlOutput())
+tuner.set_output_order([LSCRkISP1])
+
+if __name__ == '__main__':
+    sys.exit(tuner.run(sys.argv))
-- 
2.35.1



More information about the libcamera-devel mailing list