diff --git a/tools/convexhull_framework/src/AV2CTCTest.py b/tools/convexhull_framework/src/AV2CTCTest.py
index 6e31e70..7302363 100644
--- a/tools/convexhull_framework/src/AV2CTCTest.py
+++ b/tools/convexhull_framework/src/AV2CTCTest.py
@@ -20,7 +20,8 @@
      GetRDResultCsvFile, GatherPerframeStat, GatherInstrCycleInfo
 import Utils
 from Config import LogLevels, FrameNum, TEST_CONFIGURATIONS, QPs, WorkPath, \
-     Path_RDResults, LoggerName, QualityList, MIN_GOP_LENGTH, UsePerfUtil
+     Path_RDResults, LoggerName, QualityList, MIN_GOP_LENGTH, UsePerfUtil, \
+     EnableTimingInfo
 from EncDecUpscale import Encode, Decode
 
 ###############################################################################
@@ -59,7 +60,7 @@
     for folder in folders:
         Cleanfolder(folder)
 
-def Run_Encode_Test(test_cfg, clip, preset, LogCmdOnly = False):
+def Run_Encode_Test(test_cfg, clip, method, preset, LogCmdOnly = False):
     Utils.Logger.info("start running %s encode tests with %s"
                       % (test_cfg, clip.file_name))
     for QP in QPs[test_cfg]:
@@ -67,12 +68,12 @@
         #encode
         if LogCmdOnly:
             Utils.CmdLogger.write("============== Job Start =================\n")
-        bsFile = Encode('aom', 'av1', preset, clip, test_cfg, QP,
+        bsFile = Encode(method, 'av1', preset, clip, test_cfg, QP,
                         FrameNum[test_cfg], Path_Bitstreams, Path_TimingLog,
                         Path_EncLog, LogCmdOnly)
         Utils.Logger.info("start decode file %s" % os.path.basename(bsFile))
         #decode
-        decodedYUV = Decode(test_cfg, 'av1', bsFile, Path_DecodedYuv, Path_TimingLog,
+        decodedYUV = Decode(method, test_cfg, 'av1', bsFile, Path_DecodedYuv, Path_TimingLog,
                             False, LogCmdOnly)
         #calcualte quality distortion
         Utils.Logger.info("start quality metric calculation")
@@ -155,9 +156,11 @@
             if UsePerfUtil:
                 enc_instr, enc_cycles, dec_instr, dec_cycles = GatherInstrCycleInfo(bs, Path_TimingLog)
                 csv.write(",%s,%s,%s,%s,\n" % (enc_instr, enc_cycles, dec_instr, dec_cycles))
-            else:
+            elif EnableTimingInfo:
                 enc_time, dec_time = GatherPerfInfo(bs, Path_TimingLog)
                 csv.write(",%.2f,%.2f,\n"%(enc_time,dec_time))
+            else:
+                csv.write(",,,\n")
 
             if (EncodeMethod == 'aom'):
                 enc_log = GetEncLogFile(bs, log_path)
@@ -191,24 +194,27 @@
                              " 3: Warning, 4: Info, 5: Debug")
     parser.add_argument('-p', "--EncodePreset", dest='EncodePreset', type=str,
                         metavar='', help="EncodePreset: 0,1,2... for aom")
+    parser.add_argument('-m', "--EncodeMethod", dest='EncodeMethod', type=str,
+                        metavar='', help="EncodeMethod: aom, svt for av1")
     if len(raw_args) == 1:
         parser.print_help()
         sys.exit(1)
     args = parser.parse_args(raw_args[1:])
 
-    global Function, SaveMemory, LogLevel, EncodePreset, LogCmdOnly
+    global Function, SaveMemory, LogLevel, EncodePreset, EncodeMethod, LogCmdOnly
     Function = args.Function
     SaveMemory = args.SaveMemory
     LogLevel = args.LogLevel
     EncodePreset = args.EncodePreset
+    EncodeMethod = args.EncodeMethod
     LogCmdOnly = args.LogCmdOnly
 
 ######################################
 # main
 ######################################
 if __name__ == "__main__":
-    #sys.argv = ["", "-f", "encode", "-p","1"]
-    #sys.argv = ["", "-f", "summary", "-p","1"]
+    #sys.argv = ["", "-f", "encode", "-m", "aom", "-p", "6"]
+    #sys.argv = ["", "-f", "summary", "-m", "aom", "-p", "6"]
     ParseArguments(sys.argv)
 
     # preparation for executing functions
@@ -223,11 +229,11 @@
         for test_cfg in TEST_CONFIGURATIONS:
             clip_list = CreateClipList(test_cfg)
             for clip in clip_list:
-                Run_Encode_Test(test_cfg, clip, EncodePreset, LogCmdOnly)
+                Run_Encode_Test(test_cfg, clip, EncodeMethod, EncodePreset, LogCmdOnly)
     elif Function == 'summary':
         for test_cfg in TEST_CONFIGURATIONS:
             clip_list = CreateClipList(test_cfg)
-            GenerateSummaryRDDataFile('aom', 'av1', EncodePreset,
+            GenerateSummaryRDDataFile(EncodeMethod, 'av1', EncodePreset,
                                       test_cfg, clip_list, Path_EncLog)
         Utils.Logger.info("RD data summary file generated")
     else:
diff --git a/tools/convexhull_framework/src/Config.py b/tools/convexhull_framework/src/Config.py
index 1c09b07..fc8afab 100644
--- a/tools/convexhull_framework/src/Config.py
+++ b/tools/convexhull_framework/src/Config.py
@@ -57,6 +57,7 @@
 FFMPEG = os.path.join(BinPath, 'ffmpeg.exe')
 AOMENC = os.path.join(BinPath, 'aomenc.exe')
 SVTAV1 = os.path.join(BinPath, 'SvtAv1EncApp.exe')
+AV1DEC = os.path.join(BinPath, 'av1dec.exe')
 AOMDEC = os.path.join(BinPath, 'aomdec.exe')
 QPs = {
     "LD" : [23, 31, 39, 47, 55, 63],
diff --git a/tools/convexhull_framework/src/EncDecUpscale.py b/tools/convexhull_framework/src/EncDecUpscale.py
index 600a58b..fe97ad5 100644
--- a/tools/convexhull_framework/src/EncDecUpscale.py
+++ b/tools/convexhull_framework/src/EncDecUpscale.py
@@ -52,11 +52,11 @@
                 enc_log, LogCmdOnly)
     return bsfile
 
-def Decode(test_cfg, codec, bsfile, path, perf_path, decode_to_yuv, LogCmdOnly=False):
+def Decode(method, test_cfg, codec, bsfile, path, perf_path, decode_to_yuv, LogCmdOnly=False):
     decodedfile = GetDecodedFile(bsfile, path, decode_to_yuv)
     dec_perf = GetDecPerfFile(bsfile, perf_path)
     #call VideoDecoder to do the decoding
-    VideoDecode(test_cfg, codec, bsfile, decodedfile, dec_perf, decode_to_yuv, LogCmdOnly)
+    VideoDecode(method, test_cfg, codec, bsfile, decodedfile, dec_perf, decode_to_yuv, LogCmdOnly)
     return decodedfile
 
 def Run_EncDec_Upscale(method, codec, preset, clip, test_cfg, QP, num, outw,
@@ -67,7 +67,7 @@
     bsFile = Encode(method, codec, preset, clip, test_cfg, QP, num, path_bs,
                     path_perf, path_enc_log, LogCmdOnly)
     logger.info("start decode file %s" % os.path.basename(bsFile))
-    decodedYUV = Decode(test_cfg, codec, bsFile, path_decoded, path_perf, False,
+    decodedYUV = Decode(method, test_cfg, codec, bsFile, path_decoded, path_perf, False,
                         LogCmdOnly)
     logger.info("start upscale file %s" % os.path.basename(decodedYUV))
     #hard code frame rate to 0 before upscaling.
diff --git a/tools/convexhull_framework/src/VideoDecoder.py b/tools/convexhull_framework/src/VideoDecoder.py
index af0dd05..f01ef5c 100644
--- a/tools/convexhull_framework/src/VideoDecoder.py
+++ b/tools/convexhull_framework/src/VideoDecoder.py
@@ -11,7 +11,7 @@
 __author__ = "maggie.sun@intel.com, ryan.lei@intel.com"
 
 import Utils
-from Config import AOMDEC, EnableTimingInfo, Platform, UsePerfUtil
+from Config import AOMDEC, AV1DEC, EnableTimingInfo, Platform, UsePerfUtil
 from Utils import ExecuteCmd
 
 def DecodeWithAOM(test_cfg, infile, outfile, dec_perf, decode_to_yuv, LogCmdOnly=False):
@@ -33,9 +33,30 @@
 
     ExecuteCmd(cmd, LogCmdOnly)
 
-def VideoDecode(test_cfg, codec, infile, outfile, dec_perf, decode_to_yuv, LogCmdOnly=False):
+def DecodeWithAV1(test_cfg, infile, outfile, dec_perf, decode_to_yuv, LogCmdOnly=False):
+    if decode_to_yuv:
+        args = " --codec=av1 --summary --rawvideo -o %s %s" % (outfile, infile)
+    else:
+        args = " --codec=av1 --summary -o %s %s" % (outfile, infile)
+    cmd = AV1DEC + args
+    if EnableTimingInfo:
+        if Platform == "Windows":
+            cmd = "ptime " + cmd + " >%s" % dec_perf
+        elif Platform == "Darwin":
+            cmd = "gtime --verbose --output=%s " % dec_perf + cmd
+        else:
+            if UsePerfUtil:
+                cmd = "3>%s perf stat --log-fd 3 " % dec_perf + cmd
+            else:
+                cmd = "/usr/bin/time --verbose --output=%s " % dec_perf + cmd
+
+    ExecuteCmd(cmd, LogCmdOnly)
+
+def VideoDecode(method, test_cfg, codec, infile, outfile, dec_perf, decode_to_yuv, LogCmdOnly=False):
     Utils.CmdLogger.write("::Decode\n")
-    if codec == 'av1':
+    if codec == 'av1' and method == 'aom':
         DecodeWithAOM(test_cfg, infile, outfile, dec_perf, decode_to_yuv, LogCmdOnly)
+    elif codec == 'av1' and method == 'svt':
+        DecodeWithAV1(test_cfg, infile, outfile, dec_perf, decode_to_yuv, LogCmdOnly)
     else:
         raise ValueError("invalid parameter for decode.")
diff --git a/tools/convexhull_framework/src/VideoEncoder.py b/tools/convexhull_framework/src/VideoEncoder.py
index 32d169c..b4a8b10 100644
--- a/tools/convexhull_framework/src/VideoEncoder.py
+++ b/tools/convexhull_framework/src/VideoEncoder.py
@@ -55,6 +55,11 @@
                 " --gf-max-pyr-height=4 --subgop-config-str=ld "
     else:
         print("Unsupported Test Configuration %s" % test_cfg)
+
+    if (clip.file_class == 'G1' or clip.file_class == 'G2'):
+        args += "--color-primaries=bt2020 --transfer-characteristics=smpte2084 "\
+                "--matrix-coefficients=bt2020ncl --chroma-sample-position=colocated "
+
     args += " -o %s %s" % (outfile, clip.file_path)
     cmd = AOMENC + args + "> %s 2>&1"%enc_log
     if (EnableTimingInfo):
@@ -72,10 +77,33 @@
 def EncodeWithSVT_AV1(clip, test_cfg, QP, framenum, outfile, preset, enc_perf,
                       enc_log, LogCmdOnly=False):
     #TODO: update svt parameters
-    args = " --preset %s --scm 2 --lookahead 0 --hierarchical-levels 3 -n %d" \
-           " --keyint 255 -rc 0 -q %d -w %d -h %d -b %s -i %s"\
-           % (str(preset), framenum, QP, clip.width, clip.height, outfile,
-              clip.file_path)
+    args = " --preset %s --scm 2 --lookahead 0 -n %d " \
+           " --rc 0 -q %d -w %d -h %d --irefresh-type 2 "\
+           " --fps-num %d --fps-denom %d --input-depth %d " \
+           " --aq-mode 0 " \
+           % (str(preset), framenum, QP, clip.width, clip.height,
+              clip.fps_num, clip.fps_denom, clip.bit_depth)
+
+    # For 4K clip, encode with 2 tile columns using two threads.
+    # --tile-columns value is in log2.
+    if (clip.width >= 3840 and clip.height >= 2160):
+        args += " --tile-columns 1 "
+    else:
+        args += " --tile-columns 0 "
+
+    if test_cfg == "AI" or test_cfg == "STILL":
+        args += " --keyint 255 "
+    elif test_cfg == "RA" or test_cfg == "AS":
+        args += " --keyint 64 --hierarchical-levels 4 --pred-struct 2 "
+    elif test_cfg == "LD":
+        args += " --keyint 9999 --hierarchical-levels 4 --pred-struct 1 "
+    else:
+        print("Unsupported Test Configuration %s" % test_cfg)
+
+    if (clip.file_class == 'G1' or clip.file_class == 'G2'):
+        args += "--enable-hdr 1 "
+
+    args += "-i %s -b %s"%(clip.file_path,  outfile)
     cmd = SVTAV1 + args + "> %s 2>&1"%enc_log
     if EnableTimingInfo:
         if Platform == "Windows":
