[v2,4/4] ipa: rpi: pisp: vc4: Update tuning files for new AWB
diff mbox series

Message ID 20251211142824.26635-5-david.plowman@raspberrypi.com
State Superseded
Headers show
Series
  • Raspberry Pi AWB using neural networks
Related show

Commit Message

David Plowman Dec. 11, 2025, 2:26 p.m. UTC
From: Peter Bailey <peter.bailey@raspberrypi.com>

Update the tuning files to include the new AWB algorithm. It is
enabled by setting "enabled" to true for the AWB algorithm that you
want, and the same field to false for the one you don't want. Note
that you may enable only one of the two algorithms!

The AWB models themselves are not included with libcamera. They will
be supplied from the Raspberry Pi software repositories.

Signed-off-by: Peter Bailey <peter.bailey@raspberrypi.com>
---
 src/ipa/rpi/pisp/data/imx219.json            | 67 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx296.json            | 66 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx296_16mm.json       | 66 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx296_6mm.json        | 66 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx477.json            | 65 ++++++++++++++++
 src/ipa/rpi/pisp/data/imx477_16mm.json       | 67 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx477_6mm.json        | 67 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx477_scientific.json | 81 +++++++++++++++++++-
 src/ipa/rpi/pisp/data/imx500.json            | 69 +++++++++++++++++
 src/ipa/rpi/pisp/data/imx708.json            | 66 +++++++++++++++-
 src/ipa/rpi/pisp/data/imx708_wide.json       | 64 ++++++++++++++++
 src/ipa/rpi/pisp/data/ov5647.json            | 65 ++++++++++++++++
 src/ipa/rpi/vc4/data/imx219.json             | 66 ++++++++++++++++
 src/ipa/rpi/vc4/data/imx296.json             | 66 ++++++++++++++++
 src/ipa/rpi/vc4/data/imx477.json             | 71 +++++++++++++++++
 src/ipa/rpi/vc4/data/imx500.json             | 69 +++++++++++++++++
 src/ipa/rpi/vc4/data/imx708.json             | 74 ++++++++++++++++++
 src/ipa/rpi/vc4/data/imx708_wide.json        | 64 ++++++++++++++++
 src/ipa/rpi/vc4/data/ov5647.json             | 66 ++++++++++++++++
 19 files changed, 1277 insertions(+), 8 deletions(-)

Patch
diff mbox series

diff --git a/src/ipa/rpi/pisp/data/imx219.json b/src/ipa/rpi/pisp/data/imx219.json
index df620b0f..c8dc65a3 100644
--- a/src/ipa/rpi/pisp/data/imx219.json
+++ b/src/ipa/rpi/pisp/data/imx219.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -195,6 +196,70 @@ 
                 "transverse_neg": 0.034
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2860.0, 0.9514, 0.4156,
+                    2960.0, 0.9289, 0.4372,
+                    3603.0, 0.8305, 0.5251,
+                    4650.0, 0.6756, 0.6433,
+                    5858.0, 0.6193, 0.6807,
+                    7580.0, 0.5019, 0.7495
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.03392,
+                "transverse_neg": 0.034,
+                "ccm":
+                [
+                    2.2229345364238413, -0.7596721523178808, -0.46326238410596027,
+                    -0.6834893874172185, 2.7118816887417223, -1.02839940397351,
+                    -0.2613746357615894, -0.668015927152318, 1.9293905629139072
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1205,6 +1270,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296.json b/src/ipa/rpi/pisp/data/imx296.json
index 9ea9a69b..3cfda121 100644
--- a/src/ipa/rpi/pisp/data/imx296.json
+++ b/src/ipa/rpi/pisp/data/imx296.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -194,6 +195,69 @@ 
                 "transverse_neg": 0.02154
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2875.0, 0.4699, 0.3209,
+                    3610.0, 0.4089, 0.4265,
+                    4640.0, 0.3281, 0.5417,
+                    5912.0, 0.2992, 0.5771,
+                    7630.0, 0.2285, 0.6524
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.01783,
+                "transverse_neg": 0.02154,
+                "ccm":
+                [
+                    2.1073753846153847, -0.8054946153846154, -0.30188076923076923,
+                    -0.43306999999999995, 2.162828076923077, -0.7297680769230768,
+                    -0.126655, -0.5027626923076922, 1.6294176923076922
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1212,6 +1276,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296_16mm.json b/src/ipa/rpi/pisp/data/imx296_16mm.json
index 0c95d81e..c64bcb65 100644
--- a/src/ipa/rpi/pisp/data/imx296_16mm.json
+++ b/src/ipa/rpi/pisp/data/imx296_16mm.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -194,6 +195,69 @@ 
                 "transverse_neg": 0.02154
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2875.0, 0.4699, 0.3209,
+                    3610.0, 0.4089, 0.4265,
+                    4640.0, 0.3281, 0.5417,
+                    5912.0, 0.2992, 0.5771,
+                    7630.0, 0.2285, 0.6524
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.01783,
+                "transverse_neg": 0.02154,
+                "ccm":
+                [
+                    2.1073753846153847, -0.8054946153846154, -0.30188076923076923,
+                    -0.43306999999999995, 2.162828076923077, -0.7297680769230768,
+                    -0.126655, -0.5027626923076922, 1.6294176923076922
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1265,6 +1329,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296_6mm.json b/src/ipa/rpi/pisp/data/imx296_6mm.json
index 37ca85fb..b980221f 100644
--- a/src/ipa/rpi/pisp/data/imx296_6mm.json
+++ b/src/ipa/rpi/pisp/data/imx296_6mm.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -194,6 +195,69 @@ 
                 "transverse_neg": 0.02154
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2875.0, 0.4699, 0.3209,
+                    3610.0, 0.4089, 0.4265,
+                    4640.0, 0.3281, 0.5417,
+                    5912.0, 0.2992, 0.5771,
+                    7630.0, 0.2285, 0.6524
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.01783,
+                "transverse_neg": 0.02154,
+                "ccm":
+                [
+                    2.1073753846153847, -0.8054946153846154, -0.30188076923076923,
+                    -0.43306999999999995, 2.162828076923077, -0.7297680769230768,
+                    -0.126655, -0.5027626923076922, 1.6294176923076922
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1265,6 +1329,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477.json b/src/ipa/rpi/pisp/data/imx477.json
index 4806cdb1..829f5e9f 100644
--- a/src/ipa/rpi/pisp/data/imx477.json
+++ b/src/ipa/rpi/pisp/data/imx477.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -195,6 +196,70 @@ 
                 "transverse_neg": 0.02255
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2850.0, 0.4307, 0.3957,
+                    2960.0, 0.4159, 0.4313,
+                    3580.0, 0.3771, 0.5176,
+                    4559.0, 0.3031, 0.6573,
+                    5881.0, 0.2809, 0.6942,
+                    7600.0, 0.2263, 0.7762
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.02634,
+                "transverse_neg": 0.02255,
+                "ccm":
+                [
+                    2.1643743343419066, -0.972589984871407, -0.19177768532526474,
+                    -0.3769567095310136, 2.0993768608169443, -0.722416815431165,
+                    -0.11786965204236007, -0.4893621633888049, 1.607231815431165
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/pisp/data/imx477_16mm.json b/src/ipa/rpi/pisp/data/imx477_16mm.json
index 65f73bf3..72161ff5 100644
--- a/src/ipa/rpi/pisp/data/imx477_16mm.json
+++ b/src/ipa/rpi/pisp/data/imx477_16mm.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -195,6 +196,70 @@ 
                 "transverse_neg": 0.02255
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2850.0, 0.4307, 0.3957,
+                    2960.0, 0.4159, 0.4313,
+                    3580.0, 0.3771, 0.5176,
+                    4559.0, 0.3031, 0.6573,
+                    5881.0, 0.2809, 0.6942,
+                    7600.0, 0.2263, 0.7762
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.02634,
+                "transverse_neg": 0.02255,
+                "ccm":
+                [
+                    2.1643743343419066, -0.972589984871407, -0.19177768532526474,
+                    -0.3769567095310136, 2.0993768608169443, -0.722416815431165,
+                    -0.11786965204236007, -0.4893621633888049, 1.607231815431165
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1258,6 +1323,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477_6mm.json b/src/ipa/rpi/pisp/data/imx477_6mm.json
index 2c9c65a1..d7a42443 100644
--- a/src/ipa/rpi/pisp/data/imx477_6mm.json
+++ b/src/ipa/rpi/pisp/data/imx477_6mm.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -195,6 +196,70 @@ 
                 "transverse_neg": 0.02255
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2850.0, 0.4307, 0.3957,
+                    2960.0, 0.4159, 0.4313,
+                    3580.0, 0.3771, 0.5176,
+                    4559.0, 0.3031, 0.6573,
+                    5881.0, 0.2809, 0.6942,
+                    7600.0, 0.2263, 0.7762
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.02634,
+                "transverse_neg": 0.02255,
+                "ccm":
+                [
+                    2.1643743343419066, -0.972589984871407, -0.19177768532526474,
+                    -0.3769567095310136, 2.0993768608169443, -0.722416815431165,
+                    -0.11786965204236007, -0.4893621633888049, 1.607231815431165
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1258,6 +1323,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477_scientific.json b/src/ipa/rpi/pisp/data/imx477_scientific.json
index 3b7e7e31..a57b3f3c 100644
--- a/src/ipa/rpi/pisp/data/imx477_scientific.json
+++ b/src/ipa/rpi/pisp/data/imx477_scientific.json
@@ -64,6 +64,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -164,6 +165,84 @@ 
                 "coarse_step": 0.1
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2000.0, 0.6331025775790707, 0.27424225990946915,
+                    2200.0, 0.5696117366212947, 0.3116091368689487,
+                    2400.0, 0.5204264653110015, 0.34892179554105873,
+                    2600.0, 0.48148675531667223, 0.38565229719076793,
+                    2800.0, 0.450085403501908, 0.42145684622485047,
+                    3000.0, 0.42436130159169017, 0.45611835670028816,
+                    3200.0, 0.40300023695527337, 0.48950766215198593,
+                    3400.0, 0.3850520052612984, 0.5215567075837261,
+                    3600.0, 0.36981508088230314, 0.5522397906415475,
+                    4100.0, 0.333468007836758, 0.5909770465167908,
+                    4600.0, 0.31196097364221376, 0.6515706327327178,
+                    5100.0, 0.2961860409294588, 0.7068178946570284,
+                    5600.0, 0.2842607232745885, 0.7564837749584288,
+                    6100.0, 0.2750265787051251, 0.8006183524920533,
+                    6600.0, 0.2677057225584924, 0.8398879225373039,
+                    7100.0, 0.2617955199757274, 0.8746456080032436,
+                    7600.0, 0.25693714288250125, 0.905569559506562,
+                    8100.0, 0.25287531441063316, 0.9331696750390895,
+                    8600.0, 0.24946601483331993, 0.9576820904825795
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.0238,
+                "transverse_neg": 0.04429,
+                "coarse_step": 0.1,
+                "ccm":
+                [
+                    2.003815467921944, -1.0081613204143252, 0.005840157117467748,
+                    -0.18090523909630973, 1.597736399205449, -0.4326323675585491,
+                    0.05055066369087284, -0.6057020512156361, 1.5577256973300102
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -546,6 +625,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
\ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx500.json b/src/ipa/rpi/pisp/data/imx500.json
index 59a2aac5..878a597e 100644
--- a/src/ipa/rpi/pisp/data/imx500.json
+++ b/src/ipa/rpi/pisp/data/imx500.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -199,6 +200,74 @@ 
                 "transverse_neg": 0.02678
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2800,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2800,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 7600
+                    }
+                },
+                "ct_curve":
+                [
+                    2800.0, 0.7115, 0.3579,
+                    2860.0, 0.6671, 0.4058,
+                    2880.0, 0.6641, 0.4089,
+                    3580.0, 0.5665, 0.5113,
+                    3650.0, 0.5621, 0.5159,
+                    4500.0, 0.4799, 0.5997,
+                    4570.0, 0.4752, 0.6046,
+                    5648.0, 0.4139, 0.6657,
+                    5717.0, 0.4118, 0.6678,
+                    7600.0, 0.3625, 0.7162
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.02822,
+                "transverse_neg": 0.02678,
+                "ccm":
+                [
+                    1.6753287012987015, -0.4685774582560297, -0.20675124304267162,
+                    -0.3610687012987013, 1.906408293135436, -0.5453335807050093,
+                    -0.057295510204081634, -0.48813066790352505, 1.5454261781076069
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/pisp/data/imx708.json b/src/ipa/rpi/pisp/data/imx708.json
index f720926a..5483690f 100644
--- a/src/ipa/rpi/pisp/data/imx708.json
+++ b/src/ipa/rpi/pisp/data/imx708.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -194,6 +195,69 @@ 
                 "transverse_neg": 0.01831
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2964.0, 0.7451, 0.3213,
+                    3610.0, 0.6119, 0.4443,
+                    4640.0, 0.5168, 0.5419,
+                    5910.0, 0.4436, 0.6229,
+                    7590.0, 0.3847, 0.6921
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.01752,
+                "transverse_neg": 0.01831,
+                "ccm":
+                [
+                    1.5407949606299214, -0.3714970078740158, -0.16929511811023623,
+                    -0.2801589763779528, 1.649028503937008, -0.36886236220472446,
+                    0.004032519685039371, -0.5251851181102363, 1.521162598425197
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
@@ -1305,6 +1369,6 @@ 
             "rpi.sync":
             {
             }
-	    }
+        }
     ]
 }
diff --git a/src/ipa/rpi/pisp/data/imx708_wide.json b/src/ipa/rpi/pisp/data/imx708_wide.json
index 61eae816..dad774ec 100644
--- a/src/ipa/rpi/pisp/data/imx708_wide.json
+++ b/src/ipa/rpi/pisp/data/imx708_wide.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -194,6 +195,69 @@ 
                 "transverse_neg": 0.01376
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2868.0, 0.6419, 0.3613,
+                    3603.0, 0.5374, 0.4787,
+                    4620.0, 0.4482, 0.5813,
+                    5901.0, 0.3883, 0.6514,
+                    7610.0, 0.3279, 0.7232
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.01908,
+                "transverse_neg": 0.01376,
+                "ccm":
+                [
+                    1.5820866588602653, -0.39406808743169397, -0.1880145042935207,
+                    -0.3101711553473849, 1.756938087431694, -0.44677099921935987,
+                    -0.018062732240437158, -0.5139293442622951, 1.5319991100702577
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/pisp/data/ov5647.json b/src/ipa/rpi/pisp/data/ov5647.json
index b2ea8a89..dded3f84 100644
--- a/src/ipa/rpi/pisp/data/ov5647.json
+++ b/src/ipa/rpi/pisp/data/ov5647.json
@@ -109,6 +109,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -195,6 +196,70 @@ 
                 "transverse_neg": 0.03906
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7700
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8000
+                    }
+                },
+                "ct_curve":
+                [
+                    2873.0, 1.0463, 0.5142,
+                    2965.0, 1.0233, 0.5284,
+                    3606.0, 0.8947, 0.6314,
+                    4700.0, 0.7665, 0.7897,
+                    5890.0, 0.7055, 0.8933,
+                    7600.0, 0.6482, 1.0119
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.04072,
+                "transverse_neg": 0.03906,
+                "ccm":
+                [
+                    2.041588151260504, -0.5494553781512606, -0.49214025210084034,
+                    -0.5116488235294118, 1.9901442857142857, -0.47849546218487393,
+                    -0.10519773109243696, -0.641700168067227, 1.7468953781512604
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json
index c2ed49a0..6ff5cec4 100644
--- a/src/ipa/rpi/vc4/data/imx219.json
+++ b/src/ipa/rpi/vc4/data/imx219.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -128,6 +129,71 @@ 
                 "transverse_neg": 0.04881
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 8000
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8600
+                    }
+                },
+                "ct_curve":
+                [
+                    2498.0, 0.9309, 0.3599,
+                    2911.0, 0.8682, 0.4283,
+                    2919.0, 0.8358, 0.4621,
+                    3627.0, 0.7646, 0.5327,
+                    4600.0, 0.6079, 0.6721,
+                    5716.0, 0.5712, 0.7017,
+                    8575.0, 0.4331, 0.8037
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.04791,
+                "transverse_neg": 0.04881,
+                "ccm":
+                [
+                    2.2229345364238413, -0.7596721523178808, -0.46326238410596027,
+                    -0.6834893874172185, 2.7118816887417223, -1.02839940397351,
+                    -0.2613746357615894, -0.668015927152318, 1.9293905629139072
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json
index 905de887..63f4e7af 100644
--- a/src/ipa/rpi/vc4/data/imx296.json
+++ b/src/ipa/rpi/vc4/data/imx296.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -128,6 +129,71 @@ 
                 "transverse_neg": 0.02374
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 7600
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 7600
+                    }
+                },
+                "ct_curve":
+                [
+                    2500.0, 0.5386, 0.2458,
+                    2800.0, 0.4883, 0.3303,
+                    2900.0, 0.4855, 0.3349,
+                    3620.0, 0.4203, 0.4367,
+                    4560.0, 0.3455, 0.5444,
+                    5600.0, 0.2948, 0.6124,
+                    7400.0, 0.2336, 0.6894
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.03093,
+                "transverse_neg": 0.02374,
+                "ccm":
+                [
+                    2.1073753846153847, -0.8054946153846154, -0.30188076923076923,
+                    -0.43306999999999995, 2.162828076923077, -0.7297680769230768,
+                    -0.126655, -0.5027626923076922, 1.6294176923076922
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json
index 02f910dd..c14ee5cd 100644
--- a/src/ipa/rpi/vc4/data/imx477.json
+++ b/src/ipa/rpi/vc4/data/imx477.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -133,6 +134,76 @@ 
                 "transverse_neg": 0.04429
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 8000
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8600
+                    }
+                },
+                "ct_curve":
+                [
+                    2360.0, 0.6009, 0.3093,
+                    2848.0, 0.5071, 0.4,
+                    2903.0, 0.4905, 0.4392,
+                    3628.0, 0.4261, 0.5564,
+                    3643.0, 0.4228, 0.5623,
+                    4660.0, 0.3529, 0.68,
+                    5579.0, 0.3227, 0.7,
+                    6125.0, 0.3129, 0.71,
+                    6671.0, 0.3065, 0.72,
+                    7217.0, 0.3014, 0.73,
+                    7763.0, 0.295, 0.74,
+                    9505.0, 0.2524, 0.7856
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.0238,
+                "transverse_neg": 0.04429,
+                "ccm":
+                [
+                    2.1643743343419066, -0.972589984871407, -0.19177768532526474,
+                    -0.3769567095310136, 2.0993768608169443, -0.722416815431165,
+                    -0.11786965204236007, -0.4893621633888049, 1.607231815431165
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/imx500.json b/src/ipa/rpi/vc4/data/imx500.json
index 224ffb92..303a882f 100644
--- a/src/ipa/rpi/vc4/data/imx500.json
+++ b/src/ipa/rpi/vc4/data/imx500.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -131,6 +132,74 @@ 
                 "transverse_neg": 0.02626
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2800,
+                        "hi": 8000
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2800,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 7600
+                    }
+                },
+                "ct_curve":
+                [
+                    2800.0, 0.7126, 0.3567,
+                    2860.0, 0.6681, 0.4042,
+                    2880.0, 0.6651, 0.4074,
+                    3580.0, 0.5674, 0.5091,
+                    3650.0, 0.5629, 0.5137,
+                    4500.0, 0.4792, 0.5982,
+                    4570.0, 0.4752, 0.6022,
+                    5648.0, 0.4137, 0.6628,
+                    5717.0, 0.4116, 0.6648,
+                    7600.0, 0.3609, 0.7138
+                ],
+                "sensitivity_r": 1.0,
+                "sensitivity_b": 1.0,
+                "transverse_pos": 0.02798,
+                "transverse_neg": 0.02626,
+                "ccm":
+                [
+                    1.6856933395176252, -0.4760917810760668, -0.20960155844155848,
+                    -0.3666382560296846, 1.9130496103896104, -0.5464153432282004,
+                    -0.060413803339517624, -0.4878164935064935, 1.5482282745825604
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json
index 430e1250..02c88433 100644
--- a/src/ipa/rpi/vc4/data/imx708.json
+++ b/src/ipa/rpi/vc4/data/imx708.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -136,6 +137,79 @@ 
                 "transverse_neg": 0.03061
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 8000
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8600
+                    }
+                },
+                "ct_curve":
+                [
+                    2498.0, 0.8733, 0.2606,
+                    2821.0, 0.7707, 0.3245,
+                    2925.0, 0.7338, 0.3499,
+                    2926.0, 0.7193, 0.3603,
+                    2951.0, 0.7144, 0.3639,
+                    2954.0, 0.7111, 0.3663,
+                    3578.0, 0.6038, 0.4516,
+                    3717.0, 0.5861, 0.4669,
+                    3784.0, 0.5786, 0.4737,
+                    4485.0, 0.5113, 0.5368,
+                    4615.0, 0.4994, 0.5486,
+                    4671.0, 0.4927, 0.5554,
+                    5753.0, 0.4274, 0.6246,
+                    5773.0, 0.4265, 0.6256,
+                    7433.0, 0.3723, 0.6881
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.03148,
+                "transverse_neg": 0.03061,
+                "ccm":
+                [
+                    1.5407949606299214, -0.3714970078740158, -0.16929511811023623,
+                    -0.2801589763779528, 1.649028503937008, -0.36886236220472446,
+                    0.004032519685039371, -0.5251851181102363, 1.521162598425197
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json
index f9077332..86e1d2dc 100644
--- a/src/ipa/rpi/vc4/data/imx708_wide.json
+++ b/src/ipa/rpi/vc4/data/imx708_wide.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -126,6 +127,69 @@ 
                 "transverse_neg": 0.01601
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 8000
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8600
+                    }
+                },
+                "ct_curve":
+                [
+                    2750.0, 0.7881, 0.2849,
+                    2940.0, 0.7559, 0.3103,
+                    3650.0, 0.6291, 0.4206,
+                    4625.0, 0.5336, 0.5161,
+                    5715.0, 0.4668, 0.5898
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.01165,
+                "transverse_neg": 0.01601,
+                "ccm":
+                [
+                    1.5820866588602653, -0.39406808743169397, -0.1880145042935207,
+                    -0.3101711553473849, 1.756938087431694, -0.44677099921935987,
+                    -0.018062732240437158, -0.5139293442622951, 1.5319991100702577
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {
diff --git a/src/ipa/rpi/vc4/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json
index 80b18907..ca5972d1 100644
--- a/src/ipa/rpi/vc4/data/ov5647.json
+++ b/src/ipa/rpi/vc4/data/ov5647.json
@@ -41,6 +41,7 @@ 
         {
             "rpi.awb":
             {
+                "enabled": true,
                 "priors": [
                     {
                         "lux": 0,
@@ -128,6 +129,71 @@ 
                 "transverse_neg": 0.04313
             }
         },
+        {
+            "rpi.nn.awb":
+            {
+                "enabled": false,
+                "modes":
+                {
+                    "auto":
+                    {
+                        "lo": 2500,
+                        "hi": 8000
+                    },
+                    "incandescent":
+                    {
+                        "lo": 2500,
+                        "hi": 3000
+                    },
+                    "tungsten":
+                    {
+                        "lo": 3000,
+                        "hi": 3500
+                    },
+                    "fluorescent":
+                    {
+                        "lo": 4000,
+                        "hi": 4700
+                    },
+                    "indoor":
+                    {
+                        "lo": 3000,
+                        "hi": 5000
+                    },
+                    "daylight":
+                    {
+                        "lo": 5500,
+                        "hi": 6500
+                    },
+                    "cloudy":
+                    {
+                        "lo": 7000,
+                        "hi": 8600
+                    }
+                },
+                "ct_curve":
+                [
+                    2500.0, 1.0289, 0.4503,
+                    2803.0, 0.9428, 0.5108,
+                    2914.0, 0.9406, 0.5127,
+                    3605.0, 0.8261, 0.6249,
+                    4540.0, 0.7331, 0.7533,
+                    5699.0, 0.6715, 0.8627,
+                    8625.0, 0.6081, 1.0012
+                ],
+                "sensitivity_r": 1.05,
+                "sensitivity_b": 1.05,
+                "transverse_pos": 0.0321,
+                "transverse_neg": 0.04313,
+                "ccm":
+                [
+                    2.041588151260504, -0.5494553781512606, -0.49214025210084034,
+                    -0.5116488235294118, 1.9901442857142857, -0.47849546218487393,
+                    -0.10519773109243696, -0.641700168067227, 1.7468953781512604
+                ],
+                "enable_nn": 1
+            }
+        },
         {
             "rpi.agc":
             {