[v3,26/35] ipa: libipa: lsc: Document Components parsing
diff mbox series

Message ID 20260706-libipa-algorithms-v3-26-968757b038bb@ideasonboard.com
State New
Headers show
Series
  • ipa: libipa: Introduce libipa algorithms
Related show

Commit Message

Jacopo Mondi July 6, 2026, 8:01 a.m. UTC
Document with examples how different IPA modules parse the tuning
file depending on the number of colour channels they support.

Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
 src/ipa/libipa/lsc.cpp | 111 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)

Patch
diff mbox series

diff --git a/src/ipa/libipa/lsc.cpp b/src/ipa/libipa/lsc.cpp
index 9bc71e3c73ae..c860569ccee4 100644
--- a/src/ipa/libipa/lsc.cpp
+++ b/src/ipa/libipa/lsc.cpp
@@ -68,6 +68,117 @@  namespace lsc {
  * tables are organized per-colour temperature with per-colour components gain
  * vectors or polynomial coefficients.
  *
+ * The colour components names are IPA-implementation specific and depend on the
+ * ISP lsc engine design. Some lsc engine support 4 colour components (r, gr,
+ * gb, b), some only support 3 colour components (r, g, b). The name (and
+ * number) of the expected colour components shall be provided to
+ * LscAlgorithm::init() using the LscDescriptor::keys field.
+ *
+ * Example of a tabular lens shading tuning file with 'r', 'g' and 'b' colour
+ * components. The gain table has been here omitted, but the expected number
+ * of entries has to be equal to
+ * LscDescriptor::numHCells * LscDescriptor::numVCells.
+ *
+ * \code{.yaml}
+ * - Lsc:
+ *    sets:
+ *      - ct: 2500
+ *        r: [
+ *        	.. gains table omitted..
+ *        ]
+ *        g: [
+ *        	.. gains table omitted..
+ *        ]
+ *        b: [
+ *        	.. gains table omitted..
+ *        ]
+ *      - ct: 6500
+ *        r: [
+ *        	.. gains table omitted..
+ *        ]
+ *        g: [
+ *        	.. gains table omitted..
+ *        ]
+ *        b: [
+ *        	.. gains table omitted..
+ *        ]
+ * \endcode
+ *
+ * Example of a polynomial lens shading tuning file with 'r', 'gr', 'gb' and 'b'
+ * colour components:
+ *
+ * \code{.yaml}
+ * - Lsc:
+ *    type: "polynomial"
+ *    sets:
+ *      - ct: 2500
+ *        r:
+ *          cx: 0.5006571711950275
+ *          cy: 0.510093737499277
+ *          k0: 1.5393282208428813
+ *          k1: -1.1434559757908016
+ *          k2: 4.332602305814554
+ *          k3: 0.0
+ *          k4: 0.0
+ *        gr:
+ *          cx: 0.5009320529087338
+ *          cy: 0.511208038949085
+ *          k0: 1.5634738574805407
+ *          k1: -1.5623484259968348
+ *          k2: 4.846686073656501
+ *          k3: 0.0
+ *          k4: 0.0
+ *        gb:
+ *          cx: 0.5012013290343839
+ *          cy: 0.5128251541578288
+ *          k0: 1.526147944919103
+ *          k1: -1.4316976083689723
+ *          k2: 4.792604063222728
+ *          k3: 0.0
+ *          k4: 0.0
+ *        b:
+ *          cx: 0.49864139511067784
+ *          cy: 0.5162095081739346
+ *          k0: 1.0405245474038738
+ *          k1: 0.05618339879447103
+ *          k2: 1.8792813594001752
+ *          k3: 0.0
+ *          k4: 0.0
+ *      - ct: 6000
+ *        r:
+ *          cx: 0.5006202239353942
+ *          cy: 0.5099531318307661
+ *          k0: 1.4702946023945032
+ *          k1: -0.8893767547927631
+ *          k2: 3.920547732201387
+ *          k3: 0.0
+ *          k4: 0.0
+ *        gr:
+ *          cx: 0.500907874178317
+ *          cy: 0.511084916024106
+ *          k0: 1.5336172760559457
+ *          k1: -1.39964026514435
+ *          k2: 4.565487728954618
+ *          k3: 0.0
+ *          k4: 0.0
+ *        gb:
+ *          cx: 0.5011898608900477
+ *          cy: 0.5126797906745105
+ *          k0: 1.5013145790354843
+ *          k1: -1.2747407173754124
+ *          k2: 4.514682876897286
+ *          k3: 0.0
+ *          k4: 0.0
+ *        b:
+ *          cx: 0.4987561413116136
+ *          cy: 0.5159619420778772
+ *          k0: 1.0102986422191802
+ *          k1: 0.13263449763985727
+ *          k2: 1.686556107316064
+ *          k3: 0.0
+ *          k4: 0.0
+ * \endcode
+ *
  * At LscAlgorithm::configure() time the lsc tables are re-sampled on the
  * sensor's crop rectangle in use to adapt them to the configuration in use for
  * a streaming session. Polynomial lsc tables support re-sampling and can be