[{"id":27669,"web_url":"https://patchwork.libcamera.org/comment/27669/","msgid":"<CAEmqJPpEWQQVvaRHDdO8m_xow9gmkDQQJ+5L6st+4jBhM1qNFg@mail.gmail.com>","date":"2023-08-21T09:01:06","subject":"Re: [libcamera-devel] [PATCH 2/2] ipa: rpi: vc4: data: Update\n\ttuning files for HDR","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi David,\n\nThank you for your patch.\n\nOn Mon, 31 Jul 2023 at 14:48, David Plowman via libcamera-devel\n<libcamera-devel@lists.libcamera.org> wrote:\n>\n> All the Raspberry Pi official camera tuning files are updated for\n> HDR. As stated previously, there is no mechanism in the hardware for\n> combining images so all this does is enable multi-channel AGC to\n> produce short and long exposure frames. It will be up to the\n> application to deal with them.\n>\n> The changes are identical in every tuning file.\n>\n> 1. The existing AGC tuning is duplicated twice so that we have 3 AGC\n> channels.\n>\n> 2. The first is left alone (the default AGC channel), the second is\n> tweaked to under-expose significantly (ev -3) and the final one is\n> tweaked to over-exposure slightly (ev +0.5)\n>\n> 3. Control parameters are provided to the \"rpi.hdr\" algorithm to\n> associate these AGC channels correctly with the HDR modes.\n>\n> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>\n> ---\n>  src/ipa/rpi/vc4/data/imx219.json           | 388 +++++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx219_noir.json      | 388 +++++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx477.json           | 386 +++++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx477_noir.json      | 388 +++++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx708.json           | 350 +++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx708_noir.json      | 350 +++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx708_wide.json      | 350 +++++++++++++-----\n>  src/ipa/rpi/vc4/data/imx708_wide_noir.json | 350 +++++++++++++-----\n>  src/ipa/rpi/vc4/data/ov5647.json           | 392 ++++++++++++++++-----\n>  9 files changed, 2563 insertions(+), 779 deletions(-)\n>\n> diff --git a/src/ipa/rpi/vc4/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json\n> index efe7210a..a4e457c0 100644\n> --- a/src/ipa/rpi/vc4/data/imx219.json\n> +++ b/src/ipa/rpi/vc4/data/imx219.json\n> @@ -131,95 +131,282 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.5,\n> -                                1000, 0.5\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.5,\n> -                                1000, 0.5\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"shadows\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.0,\n> -                            \"q_hi\": 0.5,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.17,\n> -                                1000, 0.17\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ]\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -481,6 +668,25 @@\n>          },\n>          {\n>              \"rpi.sharpen\": { }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n\nPerhaps \"Off\" could be implicit in the config read code? Or could it be possible\nwe use \"Cadence\" != [ 0 ] in the \"Off\" case for reasons?\n\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n> -}\n> \\ No newline at end of file\n> +}\n> diff --git a/src/ipa/rpi/vc4/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json\n> index cfedb943..cba1905c 100644\n> --- a/src/ipa/rpi/vc4/data/imx219_noir.json\n> +++ b/src/ipa/rpi/vc4/data/imx219_noir.json\n> @@ -47,95 +47,282 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.5,\n> -                                1000, 0.5\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.5,\n> -                                1000, 0.5\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"shadows\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.0,\n> -                            \"q_hi\": 0.5,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.17,\n> -                                1000, 0.17\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ]\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -397,6 +584,25 @@\n>          },\n>          {\n>              \"rpi.sharpen\": { }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n> -}\n> \\ No newline at end of file\n> +}\n> diff --git a/src/ipa/rpi/vc4/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json\n> index bbe6da0d..fbefb0a9 100644\n> --- a/src/ipa/rpi/vc4/data/imx477.json\n> +++ b/src/ipa/rpi/vc4/data/imx477.json\n> @@ -136,95 +136,282 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.3,\n> -                                1000, 0.3\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.3,\n> -                                1000, 0.3\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"shadows\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.0,\n> -                            \"q_hi\": 0.5,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.17,\n> -                                1000, 0.17\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ]\n> -            }\n> +               \"channels\":\n> +               [\n> +                    {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                    {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                    {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -513,7 +700,26 @@\n>          },\n>          {\n>              \"rpi.sharpen\": { }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n>  }\n>\n> diff --git a/src/ipa/rpi/vc4/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json\n> index 52d7f072..53b7b492 100644\n> --- a/src/ipa/rpi/vc4/data/imx477_noir.json\n> +++ b/src/ipa/rpi/vc4/data/imx477_noir.json\n> @@ -47,95 +47,282 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.3,\n> -                                1000, 0.3\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.3,\n> -                                1000, 0.3\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"shadows\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.0,\n> -                            \"q_hi\": 0.5,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.17,\n> -                                1000, 0.17\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ]\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.3,\n> +                                       1000, 0.3\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ]\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -424,6 +611,25 @@\n>          },\n>          {\n>              \"rpi.sharpen\": { }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n> -}\n> \\ No newline at end of file\n> +}\n> diff --git a/src/ipa/rpi/vc4/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json\n> index 6b26d0a1..bfa78b72 100644\n> --- a/src/ipa/rpi/vc4/data/imx708.json\n> +++ b/src/ipa/rpi/vc4/data/imx708.json\n> @@ -139,86 +139,255 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ],\n> -                \"startup_frames\": 5,\n> -                \"convergence_frames\": 6,\n> -                \"speed\": 0.15\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -556,6 +725,25 @@\n>                  \"skip_frames\": 5,\n>                  \"map\": [ 0.0, 445, 15.0, 925 ]\n>              }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n>  }\n> diff --git a/src/ipa/rpi/vc4/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json\n> index 8d498153..eb0c7a95 100644\n> --- a/src/ipa/rpi/vc4/data/imx708_noir.json\n> +++ b/src/ipa/rpi/vc4/data/imx708_noir.json\n> @@ -139,86 +139,255 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ],\n> -                \"startup_frames\": 5,\n> -                \"convergence_frames\": 6,\n> -                \"speed\": 0.15\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -556,6 +725,25 @@\n>                  \"skip_frames\": 5,\n>                  \"map\": [ 0.0, 445, 15.0, 925 ]\n>              }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n>  }\n> diff --git a/src/ipa/rpi/vc4/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json\n> index 14bc918e..cefaaaeb 100644\n> --- a/src/ipa/rpi/vc4/data/imx708_wide.json\n> +++ b/src/ipa/rpi/vc4/data/imx708_wide.json\n> @@ -129,86 +129,255 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ],\n> -                \"startup_frames\": 5,\n> -                \"convergence_frames\": 6,\n> -                \"speed\": 0.15\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -459,6 +628,25 @@\n>                  \"skip_frames\": 5,\n>                  \"map\": [ 0.0, 420, 35.0, 920 ]\n>              }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n>  }\n> diff --git a/src/ipa/rpi/vc4/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json\n> index 49442c0f..de222f52 100644\n> --- a/src/ipa/rpi/vc4/data/imx708_wide_noir.json\n> +++ b/src/ipa/rpi/vc4/data/imx708_wide_noir.json\n> @@ -129,86 +129,255 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.2,\n> -                                1000, 0.2\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ],\n> -                \"startup_frames\": 5,\n> -                \"convergence_frames\": 6,\n> -                \"speed\": 0.15\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.2,\n> +                                       1000, 0.2\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"startup_frames\": 5,\n> +                       \"convergence_frames\": 6,\n> +                       \"speed\": 0.15\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -459,6 +628,25 @@\n>                  \"skip_frames\": 5,\n>                  \"map\": [ 0.0, 420, 35.0, 920 ]\n>              }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n>  }\n> diff --git a/src/ipa/rpi/vc4/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json\n> index d770e44f..ac9f3f30 100644\n> --- a/src/ipa/rpi/vc4/data/ov5647.json\n> +++ b/src/ipa/rpi/vc4/data/ov5647.json\n> @@ -131,96 +131,285 @@\n>          {\n>              \"rpi.agc\":\n>              {\n> -                \"metering_modes\":\n> -                {\n> -                    \"centre-weighted\":\n> -                    {\n> -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"spot\":\n> -                    {\n> -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> -                    },\n> -                    \"matrix\":\n> -                    {\n> -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> -                    }\n> -                },\n> -                \"exposure_modes\":\n> -                {\n> -                    \"normal\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"short\":\n> -                    {\n> -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> -                    },\n> -                    \"long\":\n> -                    {\n> -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> -                    }\n> -                },\n> -                \"constraint_modes\":\n> -                {\n> -                    \"normal\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.5,\n> -                                1000, 0.5\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"highlight\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.5,\n> -                                1000, 0.5\n> -                            ]\n> -                        },\n> -                        {\n> -                            \"bound\": \"UPPER\",\n> -                            \"q_lo\": 0.98,\n> -                            \"q_hi\": 1.0,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.8,\n> -                                1000, 0.8\n> -                            ]\n> -                        }\n> -                    ],\n> -                    \"shadows\": [\n> -                        {\n> -                            \"bound\": \"LOWER\",\n> -                            \"q_lo\": 0.0,\n> -                            \"q_hi\": 0.5,\n> -                            \"y_target\":\n> -                            [\n> -                                0, 0.17,\n> -                                1000, 0.17\n> -                            ]\n> -                        }\n> -                    ]\n> -                },\n> -                \"y_target\":\n> -                [\n> -                    0, 0.16,\n> -                    1000, 0.165,\n> -                    10000, 0.17\n> -                ],\n> -                \"base_ev\": 1.25\n> -            }\n> +               \"channels\":\n> +               [\n> +                   {\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"base_ev\": 1.25\n> +                   },\n> +                   {\n> +                       \"base_ev\": 0.125,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"base_ev\": 1.25\n> +                   },\n> +                   {\n> +                       \"base_ev\": 1.5,\n> +                       \"metering_modes\":\n> +                       {\n> +                           \"centre-weighted\":\n> +                           {\n> +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"spot\":\n> +                           {\n> +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> +                           },\n> +                           \"matrix\":\n> +                           {\n> +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> +                           }\n> +                       },\n> +                       \"exposure_modes\":\n> +                       {\n> +                           \"normal\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"short\":\n> +                           {\n> +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                           },\n> +                           \"long\":\n> +                           {\n> +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                           }\n> +                       },\n> +                       \"constraint_modes\":\n> +                       {\n> +                           \"normal\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"highlight\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.5,\n> +                                       1000, 0.5\n> +                                   ]\n> +                               },\n> +                               {\n> +                                   \"bound\": \"UPPER\",\n> +                                   \"q_lo\": 0.98,\n> +                                   \"q_hi\": 1.0,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.8,\n> +                                       1000, 0.8\n> +                                   ]\n> +                               }\n> +                           ],\n> +                           \"shadows\": [\n> +                               {\n> +                                   \"bound\": \"LOWER\",\n> +                                   \"q_lo\": 0.0,\n> +                                   \"q_hi\": 0.5,\n> +                                   \"y_target\":\n> +                                   [\n> +                                       0, 0.17,\n> +                                       1000, 0.17\n> +                                   ]\n> +                               }\n> +                           ]\n> +                       },\n> +                       \"y_target\":\n> +                       [\n> +                           0, 0.16,\n> +                           1000, 0.165,\n> +                           10000, 0.17\n> +                       ],\n> +                       \"base_ev\": 1.25\n> +                   }\n> +               ]\n> +           }\n>          },\n>          {\n>              \"rpi.alsc\":\n> @@ -482,6 +671,25 @@\n>          },\n>          {\n>              \"rpi.sharpen\": { }\n> -        }\n> +        },\n> +       {\n> +           \"rpi.hdr\":\n> +           {\n> +               \"Off\":\n> +               {\n> +                   \"cadence\": [ 0 ]\n> +               },\n> +               \"MultiExposure\":\n> +               {\n> +                   \"cadence\": [ 1, 2 ],\n> +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> +               },\n> +               \"SingleExposure\":\n> +               {\n> +                   \"cadence\": [ 1 ],\n> +                   \"channel_map\": { \"short\": 1 }\n> +               }\n> +           }\n> +       }\n>      ]\n> -}\n> \\ No newline at end of file\n> +}\n> --\n> 2.30.2\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 2C499BDE17\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Aug 2023 09:00:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6DB25627E0;\n\tMon, 21 Aug 2023 11:00:58 +0200 (CEST)","from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com\n\t[IPv6:2607:f8b0:4864:20::112f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 73BB460379\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Aug 2023 11:00:57 +0200 (CEST)","by mail-yw1-x112f.google.com with SMTP id\n\t00721157ae682-58d40c2debeso34234947b3.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Aug 2023 02:00:57 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1692608458;\n\tbh=EavRsY/Q++rHfn4o6isjZqQqHVDP7Puw0Mqj+c/+SoM=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=pSg1XMZCL3mGSL17w1p6//GS+9oDrUGWF8S7uQdJKskfOQaOkmFkJX3Ws0JcB7i25\n\tlKVYf1GxX/4QqQTR1RdUkLGGD9MZdYCSPoFlCzYT9yGq/dmBY2t4ul1oLVjEIbTxXt\n\tM8Y6otq9AJtpUUC6Ucd0o/nNtQt+lFUcKsKorgXYAqtcMSE1fXV2T25W9yAUwV/vCX\n\tgijP4uq/MsHt0q/9XwkFx4X5EqrRZdpzhQT3bCrL5ZgQ7kb9trbIBzdT9E5/sxtR5Q\n\tiHrvcKMZANPMsM2f9qTaP6eGfKvFRPHd0wYMtRjICVX4dNCcEX3nZcRl5bp5UdpGtQ\n\teBB/EqWjlV+jQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1692608456; x=1693213256;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=8i5Qp0JZV8wMjaz84rd2Q6BnreB6Xr5TPIglHSV5jLI=;\n\tb=LyDP1KzMmRWURxAeQEb0ZiUsXWgqw4u1t1unyCqgL20ifgWC4wYB3Vo+TssjVX7gOW\n\t2WbNINSZleKTLviXaDFuvj3VpAZs3VE8iD/zismC+Sv+BHpRHFqXUfOUOnApRKDrvS6Y\n\t9TbrtKHqoVpbzhWJiLtep5MUcVo4bb/5B5SFUm41unYsYwPV57hbvJRIBZeE7lRX6yDP\n\tAozmSSWtRt1/8RC7btI26yyPAs/PHr6DQNF8rmZxyepiQkFJ/YMJxTe9jvmdAGLmVviX\n\tjJhBeDSzA4Pu4BaodjGI2wT23EmpK/8/pkgkfMRmru7bh0N3VlAlaYWoanAmL1DQ7bXC\n\tvuVQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"LyDP1KzM\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1692608456; x=1693213256;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=8i5Qp0JZV8wMjaz84rd2Q6BnreB6Xr5TPIglHSV5jLI=;\n\tb=bXvcDGsY5ueWciI30MJYQ9XugktPKrqNZvq0ufkNy7xxdF7kVxfNJc6oHDqN5qCn5J\n\tD/X9hugaM38p8uY/QirrcWc7JqYAZMe+u5z28hZ4CI+MZDmPuHrdGUrwuFmM5Q0jmgdF\n\t2LbTtS6ogs8EaY1kBKFNguy3cXiU7pkAjsTsy0tuPJf+pjWlNdDOEhvl4sWZujJgWzA3\n\tqWTC0GKy2py4x2lUL7RB8NqLOhAjgTmNurfHlJtFp3RY3x7cFtfOjWlVDWCrfdBGM9p6\n\t/JR5v/aZm9gOfo0mQ8wsU25ZQjhquibFSlu+Tbi1RFynciUrUhXpqLjfh3jSY5A8a8Pw\n\tWu8w==","X-Gm-Message-State":"AOJu0YwqX1jDySDfKGh0/inBMRUhZEzjeWhMflRIkyncCjD+rLkmmtdG\n\tL1GW2CzPlOqeDIr+HDOHB+WFvIXPHtj8xHK30Tzjlny+7nGT5PumiCD9ig==","X-Google-Smtp-Source":"AGHT+IF74l7MCg+6XXy22cBbAvJw9Pw/swJTC9w7D7MaOcjEc4PuKEGRIdvhGAbU4xfoxTMNXMjbO9H/YQubpZ2BwB0=","X-Received":"by 2002:a0d:ebd6:0:b0:54f:9cd0:990 with SMTP id\n\tu205-20020a0debd6000000b0054f9cd00990mr5929969ywe.18.1692608455915;\n\tMon, 21 Aug 2023 02:00:55 -0700 (PDT)","MIME-Version":"1.0","References":"<20230731134833.79687-1-david.plowman@raspberrypi.com>\n\t<20230731134833.79687-3-david.plowman@raspberrypi.com>","In-Reply-To":"<20230731134833.79687-3-david.plowman@raspberrypi.com>","Date":"Mon, 21 Aug 2023 10:01:06 +0100","Message-ID":"<CAEmqJPpEWQQVvaRHDdO8m_xow9gmkDQQJ+5L6st+4jBhM1qNFg@mail.gmail.com>","To":"David Plowman <david.plowman@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH 2/2] ipa: rpi: vc4: data: Update\n\ttuning files for HDR","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27674,"web_url":"https://patchwork.libcamera.org/comment/27674/","msgid":"<CAHW6GYJ+qYYJ7mK_hySLcC19ZwsVU6xr4c82J-vP5=ekXSc74w@mail.gmail.com>","date":"2023-08-21T09:35:18","subject":"Re: [libcamera-devel] [PATCH 2/2] ipa: rpi: vc4: data: Update\n\ttuning files for HDR","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Naush\n\nThanks for the review.\n\nOn Mon, 21 Aug 2023 at 10:00, Naushir Patuck <naush@raspberrypi.com> wrote:\n>\n> Hi David,\n>\n> Thank you for your patch.\n>\n> On Mon, 31 Jul 2023 at 14:48, David Plowman via libcamera-devel\n> <libcamera-devel@lists.libcamera.org> wrote:\n> >\n> > All the Raspberry Pi official camera tuning files are updated for\n> > HDR. As stated previously, there is no mechanism in the hardware for\n> > combining images so all this does is enable multi-channel AGC to\n> > produce short and long exposure frames. It will be up to the\n> > application to deal with them.\n> >\n> > The changes are identical in every tuning file.\n> >\n> > 1. The existing AGC tuning is duplicated twice so that we have 3 AGC\n> > channels.\n> >\n> > 2. The first is left alone (the default AGC channel), the second is\n> > tweaked to under-expose significantly (ev -3) and the final one is\n> > tweaked to over-exposure slightly (ev +0.5)\n> >\n> > 3. Control parameters are provided to the \"rpi.hdr\" algorithm to\n> > associate these AGC channels correctly with the HDR modes.\n> >\n> > Signed-off-by: David Plowman <david.plowman@raspberrypi.com>\n> > ---\n> >  src/ipa/rpi/vc4/data/imx219.json           | 388 +++++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx219_noir.json      | 388 +++++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx477.json           | 386 +++++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx477_noir.json      | 388 +++++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx708.json           | 350 +++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx708_noir.json      | 350 +++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx708_wide.json      | 350 +++++++++++++-----\n> >  src/ipa/rpi/vc4/data/imx708_wide_noir.json | 350 +++++++++++++-----\n> >  src/ipa/rpi/vc4/data/ov5647.json           | 392 ++++++++++++++++-----\n> >  9 files changed, 2563 insertions(+), 779 deletions(-)\n> >\n> > diff --git a/src/ipa/rpi/vc4/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json\n> > index efe7210a..a4e457c0 100644\n> > --- a/src/ipa/rpi/vc4/data/imx219.json\n> > +++ b/src/ipa/rpi/vc4/data/imx219.json\n> > @@ -131,95 +131,282 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.5,\n> > -                                1000, 0.5\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.5,\n> > -                                1000, 0.5\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"shadows\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.0,\n> > -                            \"q_hi\": 0.5,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.17,\n> > -                                1000, 0.17\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ]\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -481,6 +668,25 @@\n> >          },\n> >          {\n> >              \"rpi.sharpen\": { }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n>\n> Perhaps \"Off\" could be implicit in the config read code? Or could it be possible\n> we use \"Cadence\" != [ 0 ] in the \"Off\" case for reasons?\n\nYes, I wonder a little bit about that. Is there any circumstance where\nyou might want \"Off\" to be something different? Probably not. At which\npoint hard-coding the \"Off\" configuration could make sense, at least\nit gets rid of the \"you didn't configure anything\" error. I'll give\nthat a go.\n\nThanks\nDavid\n\n>\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> > -}\n> > \\ No newline at end of file\n> > +}\n> > diff --git a/src/ipa/rpi/vc4/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json\n> > index cfedb943..cba1905c 100644\n> > --- a/src/ipa/rpi/vc4/data/imx219_noir.json\n> > +++ b/src/ipa/rpi/vc4/data/imx219_noir.json\n> > @@ -47,95 +47,282 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.5,\n> > -                                1000, 0.5\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.5,\n> > -                                1000, 0.5\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"shadows\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.0,\n> > -                            \"q_hi\": 0.5,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.17,\n> > -                                1000, 0.17\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ]\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -397,6 +584,25 @@\n> >          },\n> >          {\n> >              \"rpi.sharpen\": { }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> > -}\n> > \\ No newline at end of file\n> > +}\n> > diff --git a/src/ipa/rpi/vc4/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json\n> > index bbe6da0d..fbefb0a9 100644\n> > --- a/src/ipa/rpi/vc4/data/imx477.json\n> > +++ b/src/ipa/rpi/vc4/data/imx477.json\n> > @@ -136,95 +136,282 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.3,\n> > -                                1000, 0.3\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.3,\n> > -                                1000, 0.3\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"shadows\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.0,\n> > -                            \"q_hi\": 0.5,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.17,\n> > -                                1000, 0.17\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ]\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                    {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                    {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                    {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -513,7 +700,26 @@\n> >          },\n> >          {\n> >              \"rpi.sharpen\": { }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> >  }\n> >\n> > diff --git a/src/ipa/rpi/vc4/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json\n> > index 52d7f072..53b7b492 100644\n> > --- a/src/ipa/rpi/vc4/data/imx477_noir.json\n> > +++ b/src/ipa/rpi/vc4/data/imx477_noir.json\n> > @@ -47,95 +47,282 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.3,\n> > -                                1000, 0.3\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.3,\n> > -                                1000, 0.3\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"shadows\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.0,\n> > -                            \"q_hi\": 0.5,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.17,\n> > -                                1000, 0.17\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ]\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.3,\n> > +                                       1000, 0.3\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ]\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -424,6 +611,25 @@\n> >          },\n> >          {\n> >              \"rpi.sharpen\": { }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> > -}\n> > \\ No newline at end of file\n> > +}\n> > diff --git a/src/ipa/rpi/vc4/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json\n> > index 6b26d0a1..bfa78b72 100644\n> > --- a/src/ipa/rpi/vc4/data/imx708.json\n> > +++ b/src/ipa/rpi/vc4/data/imx708.json\n> > @@ -139,86 +139,255 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ],\n> > -                \"startup_frames\": 5,\n> > -                \"convergence_frames\": 6,\n> > -                \"speed\": 0.15\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -556,6 +725,25 @@\n> >                  \"skip_frames\": 5,\n> >                  \"map\": [ 0.0, 445, 15.0, 925 ]\n> >              }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> >  }\n> > diff --git a/src/ipa/rpi/vc4/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json\n> > index 8d498153..eb0c7a95 100644\n> > --- a/src/ipa/rpi/vc4/data/imx708_noir.json\n> > +++ b/src/ipa/rpi/vc4/data/imx708_noir.json\n> > @@ -139,86 +139,255 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ],\n> > -                \"startup_frames\": 5,\n> > -                \"convergence_frames\": 6,\n> > -                \"speed\": 0.15\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -556,6 +725,25 @@\n> >                  \"skip_frames\": 5,\n> >                  \"map\": [ 0.0, 445, 15.0, 925 ]\n> >              }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> >  }\n> > diff --git a/src/ipa/rpi/vc4/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json\n> > index 14bc918e..cefaaaeb 100644\n> > --- a/src/ipa/rpi/vc4/data/imx708_wide.json\n> > +++ b/src/ipa/rpi/vc4/data/imx708_wide.json\n> > @@ -129,86 +129,255 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ],\n> > -                \"startup_frames\": 5,\n> > -                \"convergence_frames\": 6,\n> > -                \"speed\": 0.15\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -459,6 +628,25 @@\n> >                  \"skip_frames\": 5,\n> >                  \"map\": [ 0.0, 420, 35.0, 920 ]\n> >              }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> >  }\n> > diff --git a/src/ipa/rpi/vc4/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json\n> > index 49442c0f..de222f52 100644\n> > --- a/src/ipa/rpi/vc4/data/imx708_wide_noir.json\n> > +++ b/src/ipa/rpi/vc4/data/imx708_wide_noir.json\n> > @@ -129,86 +129,255 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.2,\n> > -                                1000, 0.2\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ],\n> > -                \"startup_frames\": 5,\n> > -                \"convergence_frames\": 6,\n> > -                \"speed\": 0.15\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 1.0, 2.0, 4.0, 6.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 6.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.2,\n> > +                                       1000, 0.2\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"startup_frames\": 5,\n> > +                       \"convergence_frames\": 6,\n> > +                       \"speed\": 0.15\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -459,6 +628,25 @@\n> >                  \"skip_frames\": 5,\n> >                  \"map\": [ 0.0, 420, 35.0, 920 ]\n> >              }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> >  }\n> > diff --git a/src/ipa/rpi/vc4/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json\n> > index d770e44f..ac9f3f30 100644\n> > --- a/src/ipa/rpi/vc4/data/ov5647.json\n> > +++ b/src/ipa/rpi/vc4/data/ov5647.json\n> > @@ -131,96 +131,285 @@\n> >          {\n> >              \"rpi.agc\":\n> >              {\n> > -                \"metering_modes\":\n> > -                {\n> > -                    \"centre-weighted\":\n> > -                    {\n> > -                        \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"spot\":\n> > -                    {\n> > -                        \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > -                    },\n> > -                    \"matrix\":\n> > -                    {\n> > -                        \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > -                    }\n> > -                },\n> > -                \"exposure_modes\":\n> > -                {\n> > -                    \"normal\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"short\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > -                    },\n> > -                    \"long\":\n> > -                    {\n> > -                        \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > -                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > -                    }\n> > -                },\n> > -                \"constraint_modes\":\n> > -                {\n> > -                    \"normal\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.5,\n> > -                                1000, 0.5\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"highlight\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.5,\n> > -                                1000, 0.5\n> > -                            ]\n> > -                        },\n> > -                        {\n> > -                            \"bound\": \"UPPER\",\n> > -                            \"q_lo\": 0.98,\n> > -                            \"q_hi\": 1.0,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.8,\n> > -                                1000, 0.8\n> > -                            ]\n> > -                        }\n> > -                    ],\n> > -                    \"shadows\": [\n> > -                        {\n> > -                            \"bound\": \"LOWER\",\n> > -                            \"q_lo\": 0.0,\n> > -                            \"q_hi\": 0.5,\n> > -                            \"y_target\":\n> > -                            [\n> > -                                0, 0.17,\n> > -                                1000, 0.17\n> > -                            ]\n> > -                        }\n> > -                    ]\n> > -                },\n> > -                \"y_target\":\n> > -                [\n> > -                    0, 0.16,\n> > -                    1000, 0.165,\n> > -                    10000, 0.17\n> > -                ],\n> > -                \"base_ev\": 1.25\n> > -            }\n> > +               \"channels\":\n> > +               [\n> > +                   {\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"base_ev\": 1.25\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 0.125,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"base_ev\": 1.25\n> > +                   },\n> > +                   {\n> > +                       \"base_ev\": 1.5,\n> > +                       \"metering_modes\":\n> > +                       {\n> > +                           \"centre-weighted\":\n> > +                           {\n> > +                               \"weights\": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"spot\":\n> > +                           {\n> > +                               \"weights\": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n> > +                           },\n> > +                           \"matrix\":\n> > +                           {\n> > +                               \"weights\": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]\n> > +                           }\n> > +                       },\n> > +                       \"exposure_modes\":\n> > +                       {\n> > +                           \"normal\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 66666 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"short\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 5000, 10000, 20000, 33333 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                           },\n> > +                           \"long\":\n> > +                           {\n> > +                               \"shutter\": [ 100, 10000, 30000, 60000, 120000 ],\n> > +                               \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                           }\n> > +                       },\n> > +                       \"constraint_modes\":\n> > +                       {\n> > +                           \"normal\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"highlight\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.5,\n> > +                                       1000, 0.5\n> > +                                   ]\n> > +                               },\n> > +                               {\n> > +                                   \"bound\": \"UPPER\",\n> > +                                   \"q_lo\": 0.98,\n> > +                                   \"q_hi\": 1.0,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.8,\n> > +                                       1000, 0.8\n> > +                                   ]\n> > +                               }\n> > +                           ],\n> > +                           \"shadows\": [\n> > +                               {\n> > +                                   \"bound\": \"LOWER\",\n> > +                                   \"q_lo\": 0.0,\n> > +                                   \"q_hi\": 0.5,\n> > +                                   \"y_target\":\n> > +                                   [\n> > +                                       0, 0.17,\n> > +                                       1000, 0.17\n> > +                                   ]\n> > +                               }\n> > +                           ]\n> > +                       },\n> > +                       \"y_target\":\n> > +                       [\n> > +                           0, 0.16,\n> > +                           1000, 0.165,\n> > +                           10000, 0.17\n> > +                       ],\n> > +                       \"base_ev\": 1.25\n> > +                   }\n> > +               ]\n> > +           }\n> >          },\n> >          {\n> >              \"rpi.alsc\":\n> > @@ -482,6 +671,25 @@\n> >          },\n> >          {\n> >              \"rpi.sharpen\": { }\n> > -        }\n> > +        },\n> > +       {\n> > +           \"rpi.hdr\":\n> > +           {\n> > +               \"Off\":\n> > +               {\n> > +                   \"cadence\": [ 0 ]\n> > +               },\n> > +               \"MultiExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1, 2 ],\n> > +                   \"channel_map\": { \"short\": 1, \"long\": 2 }\n> > +               },\n> > +               \"SingleExposure\":\n> > +               {\n> > +                   \"cadence\": [ 1 ],\n> > +                   \"channel_map\": { \"short\": 1 }\n> > +               }\n> > +           }\n> > +       }\n> >      ]\n> > -}\n> > \\ No newline at end of file\n> > +}\n> > --\n> > 2.30.2\n> >","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id BAFA9BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Aug 2023 09:35:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 40473627E1;\n\tMon, 21 Aug 2023 11:35:33 +0200 (CEST)","from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com\n\t[IPv6:2607:f8b0:4864:20::f2b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 92A8F60379\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Aug 2023 11:35:31 +0200 (CEST)","by mail-qv1-xf2b.google.com with SMTP id\n\t6a1803df08f44-64f37b2dfa6so4762336d6.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Aug 2023 02:35:31 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1692610533;\n\tbh=uu0cqNBzSuFiv2ZQkjInJQ8+ghKb/YOLdXzhqLhzspg=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=lBV5QpgA5SAu9vVwS8kZ9z+4xXPj+tNtOLT6ZZfgBhOAfvC9LFqeQvYnWQsAGx1Yv\n\t1LwhaCFkAs+9+QNZgWIaioyJ5VVKRjJhqCoIQESDWSjDd63B0mrIuo+pZ2xYw+QOQX\n\tSalRHQA2tDHKCRO/ySc5ehAH/x5S7Nu/JPlIBm5vk4x46P+NWmmnH68qS6foWaoqZh\n\tZOqoJwpCxkojr8LiRj+n1A9y3COdGxRPxi86jaZOatJvE5if5jN2i1UkQ+EN7v/trb\n\tgl6M7mHbUFsH0gTjHQvOCErd/vA9FTKVYuHMIY2ouuhbgejdatgxvkf0ZD9vrd4qN9\n\tTgIGs8Gqxd0zw==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1692610530; x=1693215330;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=tkYOkZt2H8OQHRI8Ox6S5t83I7quX+tWOsYZxTQX4pU=;\n\tb=PtoNkOuDC7u8qjnOCD6zAgWWSZIb4mXTI9ztEZrElngwsOrE99WjBctkfwv9ji6hA9\n\tK4BvZz1cv7krQ5B3bgV95yZRNIsVQ3QyBOBq/betsjodGHb4SqzySNGMQDYGnZvxDMO2\n\tzFP7vJtGcp7ByPvZGxWJl0Rz2sONXHz/PYwFOOFTOAUalxollBXxk78O5+TXzkhBAGb9\n\tdA8Lq1cbDSPCrwURWdVSmZJb7vrUR+SVQZlyIQzu/HipY4eNPH3olbKbMDTqlV0vWZho\n\t9MKCsE29jHG+BCTcmV2Kk6RUeNYm2pR7l/iu2CeIRaEv5ppUEK2whHolfdI0W3M4mrqy\n\t8u/g=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"PtoNkOuD\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1692610530; x=1693215330;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=tkYOkZt2H8OQHRI8Ox6S5t83I7quX+tWOsYZxTQX4pU=;\n\tb=TIRnBjKG8NGsLg0JHBbDVeM9kkTvtHM6MkINnBDqXlBo9cPKu7o/cMUbTLvUvFqlI4\n\t7A0hUCP6PZU5iDBSpi5/GdQRB4HxJ4YtNsL1BVTo2DLPSnz28FUcW2YEn+UZAo7V1nHV\n\tlCu12RX+/u0gPLONkwWb2f4tzDn4EhxVVjPK7MiaaUL1Kng/IXTkVZdwtnMcRxFDbvoc\n\t+KcjZcGWbw4refpf87r0RlN/ct/xuAcHdLxbM78+hZ6jq+JhXCqHZ5ArBe1HNeH26d7M\n\tUBFJP26ESiYBCVUtEc3Wf5OQYhFEzFCambJlBEnkRs3dpplRAAdWR1bwJxwXMAX8MmvO\n\tflhA==","X-Gm-Message-State":"AOJu0YyTgdxy+YG8I1yedAbDS8CQYtmVNB8kWounJPyCpyGT9OFEc74K\n\tFhGEZzydNkKWHAMCyDVaFg8gq/k/l4giy0Hmrnv/3c8xTsoccysg","X-Google-Smtp-Source":"AGHT+IFZQlYcS5CgUirw3qyz1q+E0w8zKEl/fJcRV+/5E739LhjOSZ3uX6FJlokiYQZl//FRteIBaT5u5DTbr7DzGjM=","X-Received":"by 2002:a05:6214:2124:b0:63c:7b04:6dfd with SMTP id\n\tr4-20020a056214212400b0063c7b046dfdmr8728466qvc.30.1692610530033;\n\tMon, 21 Aug 2023 02:35:30 -0700 (PDT)","MIME-Version":"1.0","References":"<20230731134833.79687-1-david.plowman@raspberrypi.com>\n\t<20230731134833.79687-3-david.plowman@raspberrypi.com>\n\t<CAEmqJPpEWQQVvaRHDdO8m_xow9gmkDQQJ+5L6st+4jBhM1qNFg@mail.gmail.com>","In-Reply-To":"<CAEmqJPpEWQQVvaRHDdO8m_xow9gmkDQQJ+5L6st+4jBhM1qNFg@mail.gmail.com>","Date":"Mon, 21 Aug 2023 10:35:18 +0100","Message-ID":"<CAHW6GYJ+qYYJ7mK_hySLcC19ZwsVU6xr4c82J-vP5=ekXSc74w@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH 2/2] ipa: rpi: vc4: data: Update\n\ttuning files for HDR","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"David Plowman via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"David Plowman <david.plowman@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]