{"id":20468,"url":"https://patchwork.libcamera.org/api/patches/20468/?format=json","web_url":"https://patchwork.libcamera.org/patch/20468/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20240628104828.2928109-10-stefan.klug@ideasonboard.com>","date":"2024-06-28T10:47:02","name":"[v2,09/25] libtuning: Improve filename parsing","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"caedbb814a9d559c15f71484b9b4df6be6fd373e","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/20468/mbox/","series":[{"id":4430,"url":"https://patchwork.libcamera.org/api/series/4430/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4430","date":"2024-06-28T10:46:53","name":"Add ccm calibration to libtuning","version":2,"mbox":"https://patchwork.libcamera.org/series/4430/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/20468/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/20468/checks/","tags":{},"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 C1D51BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 28 Jun 2024 10:49:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 79E1E632EA;\n\tFri, 28 Jun 2024 12:49:06 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6E3EF62E20\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 28 Jun 2024 12:49:05 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:82ab:924:d918:cd24])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E540F735;\n\tFri, 28 Jun 2024 12:48:40 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"RhPtsDxe\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1719571721;\n\tbh=d+PzrNau6Xyvqw+lFy74cJTuCDDwoOAnmAIC49lEavg=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=RhPtsDxe3h4YlTEkePUWl1/wfFYBAv1mlKuB9g+787szgvKJXfIp7d9Qmv1JQJeWZ\n\tQdErstp3CIkpeFtV8ikKDDxKy2HYAR7yjMHiHYXLtjBYc6RiNt0zngsj2pXBrU87h+\n\tLRCmmasjQXQf3ODuPxZ+iioiU3bwvWQnbPB2+BAg=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>","Subject":"[PATCH v2 09/25] libtuning: Improve filename parsing","Date":"Fri, 28 Jun 2024 12:47:02 +0200","Message-ID":"<20240628104828.2928109-10-stefan.klug@ideasonboard.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20240628104828.2928109-1-stefan.klug@ideasonboard.com>","References":"<20240628104828.2928109-1-stefan.klug@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"In the tuning datasets, the files had names like\n'imx335_1600l_3000k_1.dng'. That failed on the old filename parsing\nfunction. As there is no need to dictate the order of the tags, split\nthe big regex into chunks and parse them one by one. This also makes\nthe code easier to digest.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n utils/tuning/libtuning/utils.py | 30 ++++++++++++++++++++++--------\n 1 file changed, 22 insertions(+), 8 deletions(-)","diff":"diff --git a/utils/tuning/libtuning/utils.py b/utils/tuning/libtuning/utils.py\nindex 178c6957c581..00cf5a57512f 100644\n--- a/utils/tuning/libtuning/utils.py\n+++ b/utils/tuning/libtuning/utils.py\n@@ -43,14 +43,28 @@ def _list_image_files(directory):\n \n \n def _parse_image_filename(fn: Path):\n-    result = re.search(r'^(alsc_)?(\\d+)[kK]_(\\d+)?[lLuU]?.\\w{3,4}$', fn.name)\n-    if result is None:\n-        logger.error(f'The file name of {fn.name} is incorrectly formatted')\n-        return None, None, None\n-\n-    color = int(result.group(2))\n-    lsc_only = result.group(1) is not None\n-    lux = None if lsc_only else int(result.group(3))\n+    lsc_only = False\n+    color = None\n+    lux = None\n+\n+    parts = fn.stem.split('_')\n+    for part in parts:\n+        if part == 'alsc':\n+            lsc_only = True\n+            continue\n+        r = re.match(r'(\\d+)[kK]', part)\n+        if r:\n+            color = int(r.group(1))\n+            continue\n+        r = re.match(r'(\\d+)[lLuU]', part)\n+        if r:\n+            lux = int(r.group(1))\n+\n+    if color is None:\n+        logger.error(f'The file name of {fn.name} does not contain a color temperature')\n+\n+    if lux is None and lsc_only is False:\n+        logger.error(f'The file name of {fn.name} must either contain alsc or a lux level')\n \n     return color, lux, lsc_only\n \n","prefixes":["v2","09/25"]}