utils: raspberrypi: Add tuning file conversion script
Add a script to convert the Raspberry Pi camera tuning file format from version 1.0 to 2.0. This script also adds a root level version key set to 2.0 to the config file, allowing the controller to distinguish between the two formats. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Naushir Patuck <naush@raspberrypi.com>
This commit is contained in:
parent
73c1a1d697
commit
20bdc7ee88
1 changed files with 46 additions and 0 deletions
46
utils/raspberrypi/ctt/convert_tuning.py
Executable file
46
utils/raspberrypi/ctt/convert_tuning.py
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
# Script to convert version 1.0 Raspberry Pi camera tuning files to version 2.0.
|
||||||
|
#
|
||||||
|
# Copyright 2022 Raspberry Pi Ltd
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from ctt_pretty_print_json import pretty_print
|
||||||
|
|
||||||
|
|
||||||
|
def convert_v2(in_json: dict) -> str:
|
||||||
|
|
||||||
|
if 'version' in in_json.keys() and in_json['version'] != 1.0:
|
||||||
|
print(f'The JSON config reports version {in_json["version"]} that is incompatible with this tool.')
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
converted = {
|
||||||
|
'version': 2.0,
|
||||||
|
'target': 'bcm2835',
|
||||||
|
'algorithms': [{algo: config} for algo, config in in_json.items()]
|
||||||
|
}
|
||||||
|
|
||||||
|
return pretty_print(converted)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, description=
|
||||||
|
'Convert the format of the Raspberry Pi camera tuning file from v1.0 to v2.0.\n')
|
||||||
|
parser.add_argument('input', type=str, help='Input tuning file.')
|
||||||
|
parser.add_argument('output', type=str, nargs='?',
|
||||||
|
help='Output converted tuning file. If not provided, the input file will be updated in-place.',
|
||||||
|
default=None)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
with open(args.input, 'r') as f:
|
||||||
|
in_json = json.load(f)
|
||||||
|
|
||||||
|
out_json = convert_v2(in_json)
|
||||||
|
|
||||||
|
with open(args.output if args.output is not None else args.input, 'w') as f:
|
||||||
|
f.write(out_json)
|
Loading…
Add table
Add a link
Reference in a new issue