update CTC script for CTC v6.0 update CTC script for CTC v6.0 with the following changes: - CWG-D148, “Optional sequences runtime reduction”, Nil (Netflix). enable 2x2 tiling for class E and G1 in RA configuration - CWG-D169, a proposal to use an updated version of libvmaf for CTC v6. (Netflix) - CWG-D088, bitdepth setting for CTCv6 (Apple). enable 10bit encoding for class A2, A4, B1. - CWG-D082, there are two decisions also related to ctc changes: 1), enable "--tune-content=screen" for b2 testset only; 2), for other testsets except b2, keep the screen content detector, but disable the global search range in IBC by specifying “--enable-intrabc-ext=2”.
diff --git a/tools/convexhull_framework/src/AV2CTCVideo.py b/tools/convexhull_framework/src/AV2CTCVideo.py index eec1c2b..7d68603 100644 --- a/tools/convexhull_framework/src/AV2CTCVideo.py +++ b/tools/convexhull_framework/src/AV2CTCVideo.py
@@ -14,7 +14,7 @@ Python file for definition of AV2 CTC testing clips/sets """ -CTC_VERSION = '5.0' +CTC_VERSION = '6.0' CTC_TEST_SET = { "AI": ["A1", "A2", "A3", "A4", "A5", "B1", "B2", "G1", "G2", "E"], @@ -33,7 +33,7 @@ "PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m", "Tango_3840x2160_5994fps_10bit_420.y4m", "TimeLapse_3840x2160_5994fps_10bit_420.y4m"] - if (CTC_VERSION in ["4.0", "5.0"]) else + if (CTC_VERSION in ["4.0", "5.0", "6.0"]) else ["BoxingPractice_3840x2160_5994fps_10bit_420.y4m", "Crosswalk_3840x2160_5994fps_10bit_420.y4m", "FoodMarket2_3840x2160_5994fps_10bit_420.y4m", @@ -61,7 +61,7 @@ "TunnelFlag_1920x1080_5994_10bit_420.y4m", "Vertical_bees_1080x1920_2997.y4m", "WorldCup_1920x1080_30p.y4m"] - if (CTC_VERSION in ["5.0"]) else + if (CTC_VERSION in ["5.0", "6.0"]) else ["Aerial3200_1920x1080_5994_10bit_420.y4m", "Boat_1920x1080_5994_10bit_420.y4m", "CrowdRun_1920x1080p50.y4m", @@ -98,7 +98,7 @@ "SpeedBag_640x360_2997.y4m", "Stockholm_640x360_5994.y4m", "TouchdownPass_640x360_2997.y4m"] - if (CTC_VERSION in ["4.0", "5.0"]) else + if (CTC_VERSION in ["4.0", "5.0", "6.0"]) else ["BlueSky_360p25.y4m", "RedKayak_360_2997.y4m", "SnowMountain_640x360_2997.y4m", @@ -119,7 +119,7 @@ "SolLevanteFace_sdr_1920x1080_24_10bit.y4m", "STARCRAFT_1080p60.y4m", "WITCHER3_1920x1080_60_8bit_420.y4m"] - if (CTC_VERSION in ["4.0", "5.0"]) else + if (CTC_VERSION in ["4.0", "5.0", "6.0"]) else ["CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m", "DOTA2_1920x1080_60_8bit_420.y4m", "EuroTruckSimulator2_1920x1080p60.y4m", @@ -165,7 +165,7 @@ "Slides2r_1920x1080_30fps_8bit_420.y4m", "Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m", "Wikipedia_1920x1080p30.y4m"] - if (CTC_VERSION in ["5.0"]) else + if (CTC_VERSION in ["5.0", "6.0"]) else ["BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m", "Debugging_1920x1080_30fps_8bit_420.y4m", "MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m", @@ -261,7 +261,7 @@ "Vertical_Carnaby_1080x1920_5994.y4m", "WalkingInStreet_1920x1080_30fps.y4m", "WorldCup_far_1920x1080_30p.y4m"] - if (CTC_VERSION in ["5.0"]) else + if (CTC_VERSION in ["5.0", "6.0"]) else ["Artistic_Concert_1920x1080_25fps.y4m", "Artistic_Intro_1920x1080_2997fps.y4m", "MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m", @@ -307,7 +307,7 @@ "/A1_4k_720p/PierSeaSide_1280x720_2997fps_10bit_420_v2.y4m", "/A1_4k_540p/PierSeaSide_960x540_2997fps_10bit_420_v2.y4m", "/A1_4k_360p/PierSeaSide_640x360_2997fps_10bit_420_v2.y4m"] - if (CTC_VERSION in ["4.0", "5.0"]) else + if (CTC_VERSION in ["4.0", "5.0", "6.0"]) else ["/A1_4k_1440p/PierSeaSide_2560x1440_2997fps_10bit_420.y4m", "/A1_4k_1080p/PierSeaSide_1920x1080_2997fps_10bit_420.y4m", "/A1_4k_720p/PierSeaSide_1280x720_2997fps_10bit_420.y4m", @@ -323,4 +323,4 @@ "/A1_4k_720p/TimeLapse_1280x720_5994fps_10bit_420.y4m", "/A1_4k_540p/TimeLapse_960x540_5994fps_10bit_420.y4m", "/A1_4k_360p/TimeLapse_640x360_5994fps_10bit_420.y4m"] -} \ No newline at end of file +}
diff --git a/tools/convexhull_framework/src/CalcQtyWithVmafTool.py b/tools/convexhull_framework/src/CalcQtyWithVmafTool.py index 510dd05..a9fcf42 100644 --- a/tools/convexhull_framework/src/CalcQtyWithVmafTool.py +++ b/tools/convexhull_framework/src/CalcQtyWithVmafTool.py
@@ -127,8 +127,10 @@ args = " -r %s -d %s -q --threads 4 -o %s" \ % (origfile, recfile, vmaf_log) - if CTC_VERSION in ['3.0', '4.0', '5.0']: - args += " --aom_ctc v2.0 --feature cambi" + if CTC_VERSION in ['6.0']: + args += " --aom_ctc v6.0" + elif CTC_VERSION in ['3.0', '4.0', '5.0']: + args += " --aom_ctc v3.0" else: args += " --aom_ctc v1.0"
diff --git a/tools/convexhull_framework/src/Config.py b/tools/convexhull_framework/src/Config.py index ad9836b..5b587b0 100644 --- a/tools/convexhull_framework/src/Config.py +++ b/tools/convexhull_framework/src/Config.py
@@ -45,9 +45,9 @@ APSNR_U_WEIGHT = 1.0 APSNR_V_WEIGHT = 1.0 -if CTC_VERSION == '5.0': +if CTC_VERSION in ['5.0', '6.0']: CTC_RegularXLSTemplate = os.path.join(BinPath, 'AOM_CWG_Regular_CTCv4_v7.4.5.xlsm') - CTC_ASXLSTemplate = os.path.join(BinPath, 'AOM_CWG_AS_CTC_v9.9.xlsm') + CTC_ASXLSTemplate = os.path.join(BinPath, 'AOM_CWG_AS_CTC_v10.0.xlsm') elif CTC_VERSION == '4.0': CTC_RegularXLSTemplate = os.path.join(BinPath, 'AOM_CWG_Regular_CTCv4_v7.3.2.xlsm') CTC_ASXLSTemplate = os.path.join(BinPath, 'AOM_CWG_AS_CTC_v9.7.1.xlsm') @@ -93,7 +93,7 @@ VMAF = os.path.join(BinPath, 'vmaf') HEVCCfgFile = os.path.join(BinPath, "s2-hm-01.cfg") -if CTC_VERSION in ["2.0", "3.0", "4.0", "5.0"]: +if CTC_VERSION in ["2.0", "3.0", "4.0", "5.0", "6.0"]: QPs = { "LD": [110, 135, 160, 185, 210, 235], "RA": [110, 135, 160, 185, 210, 235],
diff --git a/tools/convexhull_framework/src/VideoEncoder.py b/tools/convexhull_framework/src/VideoEncoder.py index cee6ef1..afc3784 100644 --- a/tools/convexhull_framework/src/VideoEncoder.py +++ b/tools/convexhull_framework/src/VideoEncoder.py
@@ -34,12 +34,17 @@ args = " --verbose --codec=av1 -v --psnr --obu --frame-parallel=0" \ " --cpu-used=%s --limit=%d --passes=1 --end-usage=q --i%s " \ " --use-fixed-qp-offsets=1 --deltaq-mode=0 " \ - " --enable-tpl-model=0 --fps=%d/%d " \ - " --input-bit-depth=%d --bit-depth=%d -w %d -h %d" \ - % (preset, framenum, clip.fmt, clip.fps_num, clip.fps_denom, - clip.bit_depth, clip.bit_depth, clip.width, clip.height) + " --enable-tpl-model=0 --fps=%d/%d -w %d -h %d" \ + % (preset, framenum, clip.fmt, clip.fps_num, clip.fps_denom, clip.width, clip.height) - if CTC_VERSION in ['2.0', '3.0', '4.0', '5.0']: + # config enoding bitdepth + if ((CTC_VERSION in ['6.0']) and (clip.file_class in ['A2', 'A4', 'B1'])): + # CWG-D088 + args += " --input-bit-depth=%d --bit-depth=10" % (clip.bit_depth) + else: + args += " --input-bit-depth=%d --bit-depth=%d" % (clip.bit_depth, clip.bit_depth) + + if CTC_VERSION in ['2.0', '3.0', '4.0', '5.0', '6.0']: args += " --qp=%d" % QP else: args += " --use-16bit-internal --cq-level=%d" % QP @@ -50,7 +55,9 @@ args += " --tile-columns=1 --threads=2 --row-mt=0 " elif ((CTC_VERSION in ['4.0']) and (clip.file_class in ['A2', 'B1']) and (test_cfg == "LD")): args += " --tile-rows=1 --threads=2 --row-mt=0 " - elif ((CTC_VERSION in ['5.0']) and (clip.file_class in ['A2', 'B1']) and (test_cfg == "LD")): + elif ((CTC_VERSION in ['5.0', '6.0']) and (clip.file_class in ['A2', 'B1']) and (test_cfg == "LD")): + args += " --tile-rows=1 --tile-columns=1 --threads=4 --row-mt=0 " + elif ((CTC_VERSION in ['6.0']) and (clip.file_class in ['E', 'G1']) and (test_cfg == "RA")): args += " --tile-rows=1 --tile-columns=1 --threads=4 --row-mt=0 " else: args += " --tile-columns=0 --threads=1 " @@ -65,6 +72,13 @@ else: args += " --enable-keyframe-filtering=0 " + # CWG-D082 + if CTC_VERSION in ['6.0']: + if clip.file_class in ['B2']: + args += " --tune-content=screen" + else: + args += " --enable-intrabc-ext=2" + if test_cfg == "AI" or test_cfg == "STILL": args += " --kf-min-dist=0 --kf-max-dist=0 " elif test_cfg == "RA" or test_cfg == "AS":