[PATCH v3 09/23] libtuning: Improve filename parsing
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Thu Jul 4 12:24:19 CEST 2024
Hi Stefan,
Thank you for the patch.
On Wed, Jul 03, 2024 at 04:16:58PM +0200, Stefan Klug wrote:
> In the tuning datasets, the files had names like
> 'imx335_1600l_3000k_1.dng'. That failed on the old filename parsing
> function. As there is no need to dictate the order of the tags, split
> the big regex into chunks and parse them one by one. This also makes
> the code easier to digest.
>
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> utils/tuning/libtuning/utils.py | 30 ++++++++++++++++++++++--------
> 1 file changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/utils/tuning/libtuning/utils.py b/utils/tuning/libtuning/utils.py
> index 90fd7072a0fd..c70dfae049bc 100644
> --- a/utils/tuning/libtuning/utils.py
> +++ b/utils/tuning/libtuning/utils.py
> @@ -43,16 +43,30 @@ def _list_image_files(directory):
>
>
> def _parse_image_filename(fn: Path):
> - result = re.search(r'^(alsc_)?(\d+)[kK]_(\d+)?[lLuU]?.\w{3,4}$', fn.name)
> - if result is None:
> - logger.error(f'The file name of {fn.name} is incorrectly formatted')
> - return None, None, None
> + lsc_only = False
> + color_temperature = None
> + lux = None
> +
> + parts = fn.stem.split('_')
> + for part in parts:
> + if part == 'alsc':
> + lsc_only = True
> + continue
> + r = re.match(r'(\d+)[kK]', part)
> + if r:
> + color_temperature = int(r.group(1))
> + continue
> + r = re.match(r'(\d+)[lLuU]', part)
> + if r:
> + lux = int(r.group(1))
> +
> + if color_temperature is None:
> + logger.error(f'The file name of "{fn.name}" does not contain a color temperature')
>
> - color = int(result.group(2))
> - lsc_only = result.group(1) is not None
> - lux = None if lsc_only else int(result.group(3))
> + if lux is None and lsc_only is False:
> + logger.error(f'The file name of "{fn.name}" must either contain alsc or a lux level')
>
> - return color, lux, lsc_only
> + return color_temperature, lux, lsc_only
>
>
> # \todo Implement this from check_imgs() in ctt.py
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list