From c497d5b5b1ca359cd015baf14d9be75c45cf7b29 Mon Sep 17 00:00:00 2001 From: Michalis Date: Fri, 13 Sep 2024 15:52:11 +0200 Subject: [PATCH 1/2] COM-10976: Add checksum handling function in H266 test suite generator - tweaked utils.find_by_ext() - added _fill_checksum_h266() in gen_jvet.py - minor corrections throughout --- fluster/utils.py | 56 ++++++--------- scripts/gen_av1_aom.py | 2 +- scripts/gen_av1_chromium.py | 2 +- scripts/gen_jct_vc.py | 1 - scripts/gen_jvet.py | 38 +++++++--- test_suites/h265/JCT-VC-3D-HEVC.json | 2 +- test_suites/h266/JVET-VVC_draft6.json | 100 +++++++++++++------------- 7 files changed, 104 insertions(+), 97 deletions(-) mode change 100644 => 100755 scripts/gen_jvet.py diff --git a/fluster/utils.py b/fluster/utils.py index 77c014d..7b4b29f 100644 --- a/fluster/utils.py +++ b/fluster/utils.py @@ -104,7 +104,7 @@ def run_command_with_output( def is_extractable(filepath: str) -> bool: - """Checks is a file can be extracted from the its extension""" + """Checks is a file can be extracted, based on its extension""" return filepath.endswith(TARBALL_EXTS) or filepath.endswith(".zip") @@ -162,43 +162,29 @@ def find_by_ext( if not excluded: candidates.append(filepath) - for candidate in candidates: - # Prioritize files with 'L0' in the name (for JCT-VC-SHVC) - if "L0" in candidate.upper(): - return candidate - # Prioritize files with 'norpt' in the name (for JVT-AVC_V1) - # Special case only for CVSEFDFT3_Sony_E.zip and CVSE3_Sony_H.zip - if "norpt" in candidate.lower(): - return candidate - - # If none of the above 2 cases is fulfilled, return the first candidate + if len(candidates) > 1: + for candidate in candidates: + # Prioritize files with 'L0' in the name (for JCT-VC-SHVC) + if "L0" in candidate.upper(): + return candidate + # Prioritize files with 'norpt' in the name (for JVT-AVC_V1) + # Special case only for CVSEFDFT3_Sony_E.zip and CVSE3_Sony_H.zip + if "norpt" in candidate.lower(): + return candidate + # Prioritize files with 'layer0' in the name (for JVET-VVC_draft6 + # checksum files) + if "layer0" in candidate.lower(): + return candidate + # Files with 'first_picture' in the name are kicked out of the list + # (for JVET-VVC_draft6 checksum files) + # Reverse logic (with not in and return) does not produce desired value + if "first_picture" in candidate.lower(): + candidates.remove(candidate) + + # If none of the above cases is fulfilled, return the first candidate return candidates[0] if candidates else None -def find_by_ext_multiple( - dest_dir: str, exts: List[str], excludes: Optional[List[str]] = None -) -> List[str]: - """Return multiple names by file extension""" - excludes = excludes or [] - found_files = [] - - # Respect the priority for extensions - for ext in exts: - for subdir, _, files in os.walk(dest_dir): - for filename in files: - excluded = False - filepath = os.path.join(subdir, filename) - if not filepath.endswith(ext) or "__MACOSX" in filepath: - continue - for excl in excludes: - if excl in filepath: - excluded = True - break - if not excluded: - found_files.append(filepath) - return found_files - - def _linux_user_data_dir(appname: str) -> str: """Return data directory tied to the user""" path = os.environ.get("XDG_DATA_HOME", "") diff --git a/scripts/gen_av1_aom.py b/scripts/gen_av1_aom.py index 2cdaf80..3484bb1 100644 --- a/scripts/gen_av1_aom.py +++ b/scripts/gen_av1_aom.py @@ -116,7 +116,7 @@ def generate(self, download, jobs): out420 = f"{dest_path}.i420" # Run the libaom av1 decoder to get the checksum as the .md5 files are per-frame test_vector.result = self.decoder.decode( - dest_path, out420, test_vector.output_format, 30, False) + dest_path, out420, test_vector.output_format, 30, False, False) os.remove(out420) test_suite.to_json_file(output_filepath) diff --git a/scripts/gen_av1_chromium.py b/scripts/gen_av1_chromium.py index dee02a5..fece574 100644 --- a/scripts/gen_av1_chromium.py +++ b/scripts/gen_av1_chromium.py @@ -152,7 +152,7 @@ def generate(self, download, jobs): out420 = f"{dest_path}.i420" # Run the libaom av1 decoder to get the checksum as the .md5 in the JSONs are per-frame test_vector.result = self.decoder.decode( - dest_path, out420, test_vector.output_format, 30, False) + dest_path, out420, test_vector.output_format, 30, False, False) os.remove(out420) test_suite.to_json_file(output_filepath) diff --git a/scripts/gen_jct_vc.py b/scripts/gen_jct_vc.py index 64653d9..a2934b4 100644 --- a/scripts/gen_jct_vc.py +++ b/scripts/gen_jct_vc.py @@ -43,7 +43,6 @@ ) MD5_EXTS = ("yuv_2.md5", "yuv.md5", ".md5", ".MD5", "md5.txt", "md5sum.txt") MD5_EXCLUDES = (".bin.md5", "bit.md5") -RAW_EXTS = ("nogray.yuv", ".yuv", ".qcif") class HREFParser(HTMLParser): diff --git a/scripts/gen_jvet.py b/scripts/gen_jvet.py old mode 100644 new mode 100755 index 769c364..7e6dcaf --- a/scripts/gen_jvet.py +++ b/scripts/gen_jvet.py @@ -20,6 +20,7 @@ import argparse from html.parser import HTMLParser import os +import re import sys import urllib.request import multiprocessing @@ -35,12 +36,11 @@ BASE_URL = "https://www.itu.int/" H266_URL = BASE_URL + "wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/" -BITSTREAM_EXTS = ( - ".bit", -) -MD5_EXTS = ("yuv_2.md5", "yuv.md5", ".md5", "md5.txt", "md5sum.txt") -MD5_EXCLUDES = (".bin.md5", "bit.md5") -RAW_EXTS = ("nogray.yuv", ".yuv", ".qcif") +# When there is only 1 element in below variables there must be a ", " at the end. +# Otherwise utils.find_by_ext() considers each character of the string as an individual +# element in the list +BITSTREAM_EXTS = (".bit", ) +MD5_EXTS = (".yuv.md5", ) class HREFParser(HTMLParser): @@ -158,7 +158,7 @@ def generate(self, download, jobs): raise key_err except CalledProcessError as proc_err: exceptions = { - # All below test vectors need cause ffprobe to crash + # All below test vectors cause ffprobe to crash "MNUT_A_Nokia_3": OutputFormat.NONE, "MNUT_B_Nokia_2": OutputFormat.NONE, "SUBPIC_C_ERICSSON_1": OutputFormat.NONE, @@ -169,9 +169,30 @@ def generate(self, download, jobs): else: raise proc_err + self._fill_checksum_h266(test_vector, dest_dir) + test_suite.to_json_file(output_filepath) print("Generate new test suite: " + test_suite.name + ".json") + @staticmethod + def _fill_checksum_h266(test_vector, dest_dir): + checksum_file = utils.find_by_ext(dest_dir, MD5_EXTS) + if checksum_file is None: + raise Exception("MD5 not found") + with open(checksum_file, "r") as checksum_file: + regex = re.compile(rf"([a-fA-F0-9]{{32,}}).*(?:\.(yuv|rgb|gbr))?") + lines = checksum_file.readlines() + # Filter out empty lines + filtered_lines = [line.strip() for line in lines if line.strip()] + # Prefer lines matching the regex pattern + match = next((regex.match(line) for line in filtered_lines if regex.match(line)), None) + if match: + test_vector.result = match.group(1).lower() + # Assert that we have extracted a valid MD5 from the file + assert len(test_vector.result) == 32 and re.search( + r"^[a-fA-F0-9]{32}$", + test_vector.result) is not None, f"{test_vector.result} is not a valid MD5 hash" + if __name__ == "__main__": parser = argparse.ArgumentParser() @@ -194,6 +215,7 @@ def generate(self, download, jobs): 'JVET-VVC_draft6', Codec.H266, 'JVET VVC draft6', - H266_URL + H266_URL, + True, ) generator.generate(not args.skip_download, args.jobs) diff --git a/test_suites/h265/JCT-VC-3D-HEVC.json b/test_suites/h265/JCT-VC-3D-HEVC.json index 456654b..18f8039 100644 --- a/test_suites/h265/JCT-VC-3D-HEVC.json +++ b/test_suites/h265/JCT-VC-3D-HEVC.json @@ -1,7 +1,7 @@ { "name": "JCT-VC-3D-HEVC", "codec": "H.265", - "description": "JCT-VC 3D-HEVC 3D Extension", + "description": "JCT-VC HEVC 3D Extension", "test_vectors": [ { "name": "3DHC_C_A_HHI_3", diff --git a/test_suites/h266/JVET-VVC_draft6.json b/test_suites/h266/JVET-VVC_draft6.json index fb0381e..ca272f9 100644 --- a/test_suites/h266/JVET-VVC_draft6.json +++ b/test_suites/h266/JVET-VVC_draft6.json @@ -8,7 +8,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/10b400_A_Bytedance_2.zip", "source_checksum": "36b6db0ef4992c4f1c00d5f43e7fb405", "input_file": "10b400_A_Bytedance_2.bit", - "output_format": "gray", + "output_format": "gray10le", "result": "9607a0890e78ad7b3ca728356e919670" }, { @@ -16,7 +16,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/10b400_B_Bytedance_2.zip", "source_checksum": "fe845074ca1771ce480956d434bb049c", "input_file": "10b400_B_Bytedance_2.bit", - "output_format": "gray", + "output_format": "gray10le", "result": "b5fcc1c52de8ed51844a9bd2895bda75" }, { @@ -25,7 +25,7 @@ "source_checksum": "743f6e4fb9a7c58964122baa1dcc8193", "input_file": "10b422_A_Sony_4.bit", "output_format": "yuv422p10le", - "result": "d533b392ba919081dfe18b05d7486577" + "result": "179092dd2c8729e6fbc1284ae902fd1b" }, { "name": "10b422_B_Sony_4", @@ -41,7 +41,7 @@ "source_checksum": "5713f5b64c58a1b2c41e145ddaaf5787", "input_file": "10b422_C_Sony_4.bit", "output_format": "yuv422p10le", - "result": "72e8cb16b5c7fe0bd4afe8b559a76a2b" + "result": "2f979d2b3e300004aa18dd61d3274e8c" }, { "name": "10b422_D_Sony_4", @@ -49,7 +49,7 @@ "source_checksum": "2a9b822aab285dc821eff0982c9cee71", "input_file": "10b422_D_Sony_4.bit", "output_format": "yuv422p10le", - "result": "5dd0001c69c72aad6d36147dcbc12306" + "result": "84eef631e8b33455a50416cbbe4c70c3" }, { "name": "10b422_E_Sony_4", @@ -57,7 +57,7 @@ "source_checksum": "328605f71000ce0df12630dc37c5c8fc", "input_file": "10b422_E_Sony_4.bit", "output_format": "yuv422p10le", - "result": "ec6598bf2b2a0911839cd05abd556d6d" + "result": "ade920a8986574d709b7b300d028f61d" }, { "name": "10b422_F_Sony_4", @@ -65,7 +65,7 @@ "source_checksum": "fdf918d6dcc1b9e955420c520a8007fc", "input_file": "10b422_F_Sony_4.bit", "output_format": "yuv422p10le", - "result": "bac3571fa37265eb33d2db2ce50764c3" + "result": "899b5e48624fe3e332aa00f924f40eee" }, { "name": "10b422_G_Sony_4", @@ -73,7 +73,7 @@ "source_checksum": "efb2cafdca2ac62a818c45ad2a80a160", "input_file": "10b422_G_Sony_4.bit", "output_format": "yuv422p10le", - "result": "a0c2214bb4314e6988265644a8d04dd" + "result": "a0c2214bb4314e6988265644a8d04dd2" }, { "name": "10b422_H_Sony_4", @@ -81,7 +81,7 @@ "source_checksum": "6c7dfe197c7c745fd492668c5276f6b7", "input_file": "10b422_H_Sony_4.bit", "output_format": "yuv422p10le", - "result": "94bf2c6a9b6fbe44cdac60f9e0f4546" + "result": "94bf2c6a9b6fbe44cdac60f9e0f4546e" }, { "name": "10b422_I_Sony_4", @@ -89,7 +89,7 @@ "source_checksum": "4e9066a9861d9d4e86037294478f6d8b", "input_file": "10b422_I_Sony_4.bit", "output_format": "yuv422p10le", - "result": "df80063e016f93e1c38f6c19e662523" + "result": "df80063e016f93e1c38f6c19e662523d" }, { "name": "10b422_J_Sony_4", @@ -97,7 +97,7 @@ "source_checksum": "73f72770e36a50ca0ffb31205de95d1e", "input_file": "10b422_J_Sony_4.bit", "output_format": "yuv422p10le", - "result": "36023e5941125bbd22427579b781167" + "result": "36023e5941125bbd22427579b7811672" }, { "name": "10b422_K_Sony_4", @@ -105,7 +105,7 @@ "source_checksum": "a9762f8c5a65e002b7fa02dd4b5638d0", "input_file": "10b422_K_Sony_4.bit", "output_format": "yuv422p10le", - "result": "e43e9e77af39e642116affc270aa861" + "result": "e43e9e77af39e642116affc270aa8611" }, { "name": "10b422_L_Sony_4", @@ -113,7 +113,7 @@ "source_checksum": "ecaa38dd80610be0c779a7663f0892c2", "input_file": "10b422_L_Sony_4.bit", "output_format": "yuv422p10le", - "result": "64006ce220defda7d56162a663eba68" + "result": "64006ce220defda7d56162a663eba68c" }, { "name": "10b444_A_Kwai_3", @@ -169,7 +169,7 @@ "source_checksum": "74dae5cdb6e517b0a2f0013a0bf6d405", "input_file": "8b422_A_Sony_4.bit", "output_format": "yuv422p10le", - "result": "f64390cbd838aa2946bed2f7ab80b501" + "result": "1430be17fea43efb16c30d24930378f3" }, { "name": "8b422_B_Sony_4", @@ -185,7 +185,7 @@ "source_checksum": "96c2f6b3294998255a15765c11d3ea67", "input_file": "8b422_C_Sony_4.bit", "output_format": "yuv422p10le", - "result": "4046611e823c3676de77743195780350" + "result": "66da389668c0a17362bc702d1813cee5" }, { "name": "8b422_D_Sony_4", @@ -193,7 +193,7 @@ "source_checksum": "fab5de9ae6cb167f5d4ea295639d4865", "input_file": "8b422_D_Sony_4.bit", "output_format": "yuv422p10le", - "result": "6de6008cfcf7d56bfb63716a5a799547" + "result": "904c25a92006ec82a766f83043d44a82" }, { "name": "8b422_E_Sony_4", @@ -201,7 +201,7 @@ "source_checksum": "7f1d5082adc0fcbf63dc97e4a26c9dc2", "input_file": "8b422_E_Sony_4.bit", "output_format": "yuv422p10le", - "result": "12a912d71fcb006412e1ff15b86bf6d9" + "result": "133cf3c870a900ef823074cfc8758021" }, { "name": "8b422_F_Sony_4", @@ -209,7 +209,7 @@ "source_checksum": "0234226b96753983c12dc0d27d29bde9", "input_file": "8b422_F_Sony_4.bit", "output_format": "yuv422p10le", - "result": "23c2413cf3e2d5f432e328cbd766155b" + "result": "e9729197e8f9f695e453e4f692e500a1" }, { "name": "8b422_G_Sony_4", @@ -217,7 +217,7 @@ "source_checksum": "2c65e721d95eb2fcede38998f2a7cc8c", "input_file": "8b422_G_Sony_4.bit", "output_format": "yuv422p10le", - "result": "a9c89f267dd7e12a1de2edbd4402f90" + "result": "a9c89f267dd7e12a1de2edbd4402f90c" }, { "name": "8b422_H_Sony_4", @@ -225,7 +225,7 @@ "source_checksum": "7a433e7cb5a3ca5ffbc59430d108dd90", "input_file": "8b422_H_Sony_4.bit", "output_format": "yuv422p10le", - "result": "e578d185867ec608ee7b2870097a987" + "result": "e578d185867ec608ee7b2870097a9876" }, { "name": "8b422_I_Sony_4", @@ -233,7 +233,7 @@ "source_checksum": "ac2b779443f9b7a30772e6606027c4bc", "input_file": "8b422_I_Sony_4.bit", "output_format": "yuv422p10le", - "result": "932b829861b061d02eb05a3daf6839e" + "result": "932b829861b061d02eb05a3daf6839e8" }, { "name": "8b422_J_Sony_4", @@ -241,7 +241,7 @@ "source_checksum": "2fb2f5b67847eefdbe29609ed74ee5da", "input_file": "8b422_J_Sony_4.bit", "output_format": "yuv422p10le", - "result": "c19a6128a9b3a8bb0d9a43e5c003bba" + "result": "c19a6128a9b3a8bb0d9a43e5c003bba6" }, { "name": "8b422_K_Sony_4", @@ -249,7 +249,7 @@ "source_checksum": "092db552d66bb14db9189e096f57f012", "input_file": "8b422_K_Sony_4.bit", "output_format": "yuv422p10le", - "result": "71cdb0d3a1092a39058fd760c140c40" + "result": "71cdb0d3a1092a39058fd760c140c40a" }, { "name": "8b422_L_Sony_4", @@ -257,7 +257,7 @@ "source_checksum": "c8694d127161080da961e961595995e8", "input_file": "8b422_L_Sony_4.bit", "output_format": "yuv422p10le", - "result": "be226c5b19556208329b3a05a987ecd" + "result": "be226c5b19556208329b3a05a987ecda" }, { "name": "8b444_A_Kwai_2", @@ -265,7 +265,7 @@ "source_checksum": "42cf3592bbc7fc2b7ea16f397220c0ea", "input_file": "8b444_A_Kwai_2.bit", "output_format": "yuv444p", - "result": "a09794d71c019f39ec2e8c24a7ddd66" + "result": "a09794d71c019f39ec2e8c24a7ddd662" }, { "name": "8b444_B_Kwai_2", @@ -273,23 +273,23 @@ "source_checksum": "22d22a3c7c4d5e68963b2a4f0247e41b", "input_file": "8b444_B_Kwai_2.bit", "output_format": "yuv444p", - "result": "9eed80777631a3ddb465962a9540f8f" + "result": "9eed80777631a3ddb465962a9540f8ff" }, { "name": "ACT_A_Kwai_3", "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/ACT_A_Kwai_3.zip", "source_checksum": "76482612ce25776c5fb8f7aebea7b5b8", "input_file": "ACT_A_Kwai_3.bit", - "output_format": "yuv420p10le", - "result": "01e987b04081c75215a5c1f7d64ffd5" + "output_format": "yuv444p10le", + "result": "01e987b04081c75215a5c1f7d64ffd56" }, { "name": "ACT_B_Kwai_3", "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/ACT_B_Kwai_3.zip", "source_checksum": "62238d991341e3e671db799bdda87b98", "input_file": "ACT_B_Kwai_3.bit", - "output_format": "yuv420p10le", - "result": "86a2a29e40369937c64bb567ed702e0" + "output_format": "yuv444p10le", + "result": "86a2a29e40369937c64bb567ed702e03" }, { "name": "ACTPIC_A_Huawei_3", @@ -1073,7 +1073,7 @@ "source_checksum": "39303261921828d3a60823520230e544", "input_file": "ILRPL_A_Huawei_2.bit", "output_format": "yuv420p10le", - "result": "6dcef29e83c3a7d2c024c259976f6c9" + "result": "6dcef29e83c3a7d2c024c259976f6c95" }, { "name": "IP_A_Huawei_2", @@ -1344,7 +1344,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/MNUT_A_Nokia_3.zip", "source_checksum": "e26d46c79970021742f0696016220a3a", "input_file": "MNUT_A_Nokia_3.bit", - "output_format": "yuv420p10le", + "output_format": "None", "result": "9efb8eeb6095c361bf6f092e4bb145f8" }, { @@ -1352,7 +1352,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/MNUT_B_Nokia_2.zip", "source_checksum": "2b6394fdefdf620245daf84a514d6867", "input_file": "MNUT_B_Nokia_2.bit", - "output_format": "yuv420p10le", + "output_format": "None", "result": "e90ab172fc157094ef4c78f80a3771da" }, { @@ -1425,7 +1425,7 @@ "source_checksum": "f1246ae73a2e5a9ce1fe0140f155042f", "input_file": "OLS_A_Tencent_4.bit", "output_format": "yuv420p10le", - "result": "0DD8FADF466DC68466AF7848B7CC85F0" + "result": "0dd8fadf466dc68466af7848b7cc85f0" }, { "name": "OLS_B_Tencent_4", @@ -1433,7 +1433,7 @@ "source_checksum": "963139b3f1b0d9021815543fa1d1d6e3", "input_file": "OLS_B_Tencent_4.bit", "output_format": "yuv420p10le", - "result": "0DD8FADF466DC68466AF7848B7CC85F" + "result": "0dd8fadf466dc68466af7848b7cc85f0" }, { "name": "OLS_C_Tencent_4", @@ -1441,7 +1441,7 @@ "source_checksum": "ee38a835bfc85ba23a02afb06a40ac0d", "input_file": "OLS_C_Tencent_4.bit", "output_format": "yuv420p10le", - "result": "3664F81912A6DC0849AB761C11504F9" + "result": "0dd8fadf466dc68466af7848b7cc85f0" }, { "name": "OPI_A_Nokia_1", @@ -1464,7 +1464,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/PALETTE_A_Alibaba_2.zip", "source_checksum": "3c7b04f21cdc8aa11c3db0f4e4ce4982", "input_file": "PALETTE_A_Alibaba_2.bit", - "output_format": "yuv420p10le", + "output_format": "yuv444p10le", "result": "310fb033d67098a3babd6b9a95305338" }, { @@ -1472,7 +1472,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/PALETTE_B_Alibaba_2.zip", "source_checksum": "5c0ab4e1ee6fd5e34a23018e2c96a4e6", "input_file": "PALETTE_B_Alibaba_2.bit", - "output_format": "yuv420p10le", + "output_format": "yuv444p10le", "result": "692872850ff1cd8fece4a19ca833749f" }, { @@ -1480,7 +1480,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/PALETTE_C_Alibaba_2.zip", "source_checksum": "eb0a2f291992cf4f832e5595f6027e7f", "input_file": "PALETTE_C_Alibaba_2.bit", - "output_format": "yuv420p10le", + "output_format": "yuv444p10le", "result": "3e71927c00237b0728fa9d3f7a065544" }, { @@ -1488,7 +1488,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/PALETTE_D_Alibaba_2.zip", "source_checksum": "05439580e357779606b0a8dcbaead707", "input_file": "PALETTE_D_Alibaba_2.bit", - "output_format": "yuv420p10le", + "output_format": "yuv444p10le", "result": "2449232d09b1e4845f1358464dde6d5e" }, { @@ -1497,7 +1497,7 @@ "source_checksum": "8d5af2d36848e916d094fd98a0d5b419", "input_file": "PALETTE_E_Alibaba_2.bit", "output_format": "yuv420p10le", - "result": "540b198ac47d2021139006014cd89fde " + "result": "540b198ac47d2021139006014cd89fde" }, { "name": "PDPC_A_Qualcomm_3", @@ -1824,7 +1824,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/SCALING_A_InterDigital_1.zip", "source_checksum": "1b5a690364dee391a28972ac2ec314cf", "input_file": "SCALING_A_InterDigital_1.bit", - "output_format": "yuv420p10le", + "output_format": "gray10le", "result": "f990d21ef21896b64d0ba2dfbca1b338" }, { @@ -1872,7 +1872,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/SPATSCAL444_A_Qualcomm_2.zip", "source_checksum": "5d8cc69ee7a76c278ac83b297efd4a30", "input_file": "SPATSCAL444_A_Qualcomm_2.bit", - "output_format": "yuv420p10le", + "output_format": "yuv444p10le", "result": "54f2f1769ef87fcfa1989ee8b5ecb893" }, { @@ -1960,7 +1960,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/SUBPIC_C_ERICSSON_1.zip", "source_checksum": "c7f52bfadc93cc418b6f426669541cbb", "input_file": "SUBPIC_C_ERICSSON_1.bit", - "output_format": "yuv420p10le", + "output_format": "None", "result": "cab9bc6ae7f0bb6045b4b4d533a97495" }, { @@ -1968,7 +1968,7 @@ "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/SUBPIC_D_ERICSSON_1.zip", "source_checksum": "2a42772ab65ac31fb84cd370eaa571cd", "input_file": "SUBPIC_D_ERICSSON_1.bit", - "output_format": "yuv420p10le", + "output_format": "None", "result": "4b7461f334c4711fa2f5e8b60a3c31c8" }, { @@ -2177,7 +2177,7 @@ "source_checksum": "61aa914c529d3e4c2f8b73a82289e006", "input_file": "VPS_A_INTEL_3.bit", "output_format": "yuv420p10le", - "result": "688e5c047e1979a7f61c51c744c6d0e" + "result": "083ba0039cf01e461abb990b0965ae50" }, { "name": "VPS_B_ERICSSON_1", @@ -2185,15 +2185,15 @@ "source_checksum": "d1b2a924605e9ab3b20552add17c4f87", "input_file": "VPS_B_ERICSSON_1.bit", "output_format": "yuv420p10le", - "result": "71f312807953304f6bec1d4b568de17" + "result": "71f312807953304f6bec1d4b568de172" }, { "name": "VPS_C_ERICSSON_1", "source": "https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/VPS_C_ERICSSON_1.zip", "source_checksum": "4a7a2f3a42ed96e0f313ad17bcedc1b7", "input_file": "VPS_C_ERICSSON_1.bit", - "output_format": "yuv420p10le", - "result": "bb0ace58ab48edf36d3ebbcaf5e5a39" + "output_format": "None", + "result": "10f5abbddce19b9290ff73567757f0a0" }, { "name": "WP_A_InterDigital_3", @@ -2260,4 +2260,4 @@ "result": "e369f002a46e92338db1271dd6166157" } ] -} +} \ No newline at end of file From 92c973d2b7f1a479867aaa71931e0fe45b7ef728 Mon Sep 17 00:00:00 2001 From: Michalis Date: Fri, 13 Sep 2024 16:42:56 +0200 Subject: [PATCH 2/2] fixup! COM-10976: Add checksum handling function in H266 test suite generator --- fluster/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/fluster/utils.py b/fluster/utils.py index 7b4b29f..13c8856 100644 --- a/fluster/utils.py +++ b/fluster/utils.py @@ -163,17 +163,15 @@ def find_by_ext( candidates.append(filepath) if len(candidates) > 1: - for candidate in candidates: + for candidate in candidates.copy(): # Prioritize files with 'L0' in the name (for JCT-VC-SHVC) if "L0" in candidate.upper(): return candidate # Prioritize files with 'norpt' in the name (for JVT-AVC_V1) # Special case only for CVSEFDFT3_Sony_E.zip and CVSE3_Sony_H.zip - if "norpt" in candidate.lower(): - return candidate # Prioritize files with 'layer0' in the name (for JVET-VVC_draft6 # checksum files) - if "layer0" in candidate.lower(): + if "norpt" in candidate.lower() or "layer0" in candidate.lower(): return candidate # Files with 'first_picture' in the name are kicked out of the list # (for JVET-VVC_draft6 checksum files)