<div dir="ltr"><div dir="ltr">Hi Laurent,<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 27 Jul 2022 at 03:38, Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com">laurent.pinchart@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>><br>
<br>
Add a script to convert the Raspberry Pi camera tuning file format from version<br>
1.0 to 2.0. This script also adds a root level version key set to 2.0 to the<br>
config file, allowing the controller to distinguish between the two formats.<br>
<br>
Signed-off-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>><br>
Reviewed-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br>
Signed-off-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br>
---<br>
 utils/raspberrypi/ctt/convert_tuning.py | 46 +++++++++++++++++++++++++<br>
 1 file changed, 46 insertions(+)<br>
 create mode 100755 utils/raspberrypi/ctt/convert_tuning.py<br>
<br>
diff --git a/utils/raspberrypi/ctt/convert_tuning.py b/utils/raspberrypi/ctt/convert_tuning.py<br>
new file mode 100755<br>
index 000000000000..a84dfa83b3b6<br>
--- /dev/null<br>
+++ b/utils/raspberrypi/ctt/convert_tuning.py<br>
@@ -0,0 +1,46 @@<br>
+#!/usr/bin/env python3<br>
+#<br>
+# SPDX-License-Identifier: BSD-2-Clause<br>
+#<br>
+# Script to convert version 1.0 Raspberry Pi camera tuning files to version 2.0.<br>
+#<br>
+# Copyright 2022 Raspberry Pi Ltd.<br></blockquote><div><br></div><div>Before merging, can you make a quick change here:</div><div><br></div><div>s/Raspberry Pi Ltd./Raspberry Pi Ltd/<br></div><div><br></div><div>to be consistent with the reset of our codebase.</div><div><br></div><div>Thanks,</div><div>Naush</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+<br>
+import argparse<br>
+import json<br>
+import sys<br>
+<br>
+from ctt_pretty_print_json import pretty_print<br>
+<br>
+<br>
+def convert_v2(in_json: dict) -> str:<br>
+<br>
+    if 'version' in in_json.keys() and in_json['version'] != 1.0:<br>
+        print(f'The JSON config reports version {in_json["version"]} that is incompatible with this tool.')<br>
+        sys.exit(-1)<br>
+<br>
+    converted = {<br>
+        'version': 2.0,<br>
+        'target': 'bcm2835',<br>
+        'algorithms': [{algo: config} for algo, config in in_json.items()]<br>
+    }<br>
+<br>
+    return pretty_print(converted)<br>
+<br>
+<br>
+if __name__ == "__main__":<br>
+    parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, description=<br>
+                    'Convert the format of the Raspberry Pi camera tuning file from v1.0 to v2.0.\n')<br>
+    parser.add_argument('input', type=str, help='Input tuning file.')<br>
+    parser.add_argument('output', type=str, nargs='?',<br>
+                        help='Output converted tuning file. If not provided, the input file will be updated in-place.',<br>
+                        default=None)<br>
+    args = parser.parse_args()<br>
+<br>
+    with open(args.input, 'r') as f:<br>
+        in_json = json.load(f)<br>
+<br>
+    out_json = convert_v2(in_json)<br>
+<br>
+    with open(args.output if args.output is not None else args.input, 'w') as f:<br>
+        f.write(out_json)<br>
-- <br>
Regards,<br>
<br>
Laurent Pinchart<br>
<br>
</blockquote></div></div>