def get_encoder_params(encoderName, referenceName, imageSet): """ The the encoder and image set parameters for a test run. Args: encoderName (str): The encoder name. referenceName (str): The reference encoder name. imageSet (str): The test image set. Returns: tuple(EncoderBase, str, str, str): The test parameters for the requested encoder and test set. An instance of the encoder wrapper class, the output data name, the output result directory, and the reference to use. """ # 1.7 variants if encoderName == "ref-1.7": encoder = te.Encoder1_7() name = "reference-1.7" outDir = "Test/Images/%s" % imageSet refName = None return (encoder, name, outDir, refName) if encoderName.startswith("ref"): _, version, simd = encoderName.split("-") # 2.x variants if version.startswith("2."): encoder = te.Encoder2xRel(version, simd) name = f"reference-{version}-{simd}" outDir = "Test/Images/%s" % imageSet refName = None return (encoder, name, outDir, refName) # 3.x variants if version.startswith("3."): encoder = te.Encoder2xRel(version, simd) name = f"reference-{version}-{simd}" outDir = "Test/Images/%s" % imageSet refName = None return (encoder, name, outDir, refName) # Latest main if version == "main": encoder = te.Encoder2x(simd) name = f"reference-{version}-{simd}" outDir = "Test/Images/%s" % imageSet refName = None return (encoder, name, outDir, refName) assert False, f"Encoder {encoderName} not recognized" encoder = te.Encoder2x(encoderName) name = "develop-%s" % encoderName outDir = "TestOutput/%s" % imageSet refName = referenceName.replace("ref", "reference") return (encoder, name, outDir, refName)
def get_encoder_params(encoderName, imageSet): """ The the encoder and image set parameters for a test run. Args: encoderName: the encoder name from the command line. imageSet: the test image set. """ if encoderName == "1.7": encoder = te.Encoder1x() name = "reference-1.7" outDir = "Test/Images/%s" % imageSet refName = None elif encoderName == "prototype": encoder = te.EncoderProto() name = "reference-prototype" outDir = "Test/Images/%s" % imageSet refName = None elif encoderName == "intelispc": encoder = te.EncoderISPC() name = "reference-intelispc" outDir = "Test/Images/%s" % imageSet refName = None else: encoder = te.Encoder2x(encoderName) name = "develop-%s" % encoderName outDir = "TestOutput/%s" % imageSet refName = "reference-1.7" return (encoder, name, outDir, refName)
def get_encoder_params(encoderName, imageSet): """ The the encoder and image set parameters for a test run. Args: encoderName (str): The encoder name. imageSet (str): The test image set. Returns: tuple(EncoderBase, str, str, str): The test parameters for the requested encoder and test set. An instance of the encoder wrapper class, the output data name, the output result directory, and the reference to use. """ if encoderName == "ref-1.7": encoder = te.Encoder1x() name = "reference-1.7" outDir = "Test/Images/%s" % imageSet refName = None if encoderName == "ref-2.0": # Note this option rebuilds a new reference test set using the # user's locally build encoder. encoder = te.Encoder2x("avx2") name = "reference-2.0-avx2" outDir = "Test/Images/%s" % imageSet refName = None elif encoderName == "ref-prototype": encoder = te.EncoderProto() name = "reference-prototype" outDir = "Test/Images/%s" % imageSet refName = None elif encoderName == "ref-intelispc": encoder = te.EncoderISPC() name = "reference-intelispc" outDir = "Test/Images/%s" % imageSet refName = None else: encoder = te.Encoder2x(encoderName) name = "develop-%s" % encoderName outDir = "TestOutput/%s" % imageSet refName = RESULT_REF_NAME return (encoder, name, outDir, refName)
def get_encoder_params(encoderName, referenceName, imageSet): """ The the encoder and image set parameters for a test run. Args: encoderName (str): The encoder name. referenceName (str): The reference encoder name. imageSet (str): The test image set. Returns: tuple(EncoderBase, str, str, str): The test parameters for the requested encoder and test set. An instance of the encoder wrapper class, the output data name, the output result directory, and the reference to use. """ if encoderName == "ref-1.7": encoder = te.Encoder1_7() name = "reference-1.7" outDir = "Test/Images/%s" % imageSet refName = None elif encoderName == "ref-2.0-avx2": encoder = te.Encoder2_0("avx2") name = "reference-2.0-avx2" outDir = "Test/Images/%s" % imageSet refName = None elif encoderName == "ref-master-avx2": # Warning: this option rebuilds a new reference test result for the # master branch using the user's locally build encoder in ./Source. encoder = te.Encoder2x("avx2") name = "reference-master-avx2" outDir = "Test/Images/%s" % imageSet refName = None else: encoder = te.Encoder2x(encoderName) name = "develop-%s" % encoderName outDir = "TestOutput/%s" % imageSet refName = referenceName.replace("ref", "reference") return (encoder, name, outDir, refName)
def main(): """ The main function. Returns: int: The process return code. """ # Parse command lines args = parse_command_line() blockSizes = ["4x4", "5x5", "6x6", "8x8", "10x10"] repeats = max(args.repeats, 1) step = max(args.step, 1) image = ti.TestImage(args.image) codec = te.Encoder2x("avx2") print( "Block Size, Quality, PSNR (dB), Coding Time (s), Coding Rate (MT/s)") for blockSize in blockSizes: for quality in range(0, 101, args.step): localRepeats = repeats if quality < 20: localRepeats = localRepeats * 2 if quality < 40: localRepeats = localRepeats * 2 results = codec.run_test(image, blockSize, f"{quality}", localRepeats, False) psnr = results[0] codingTime = results[2] mts = results[3] print(f"{blockSize}, {quality}, {psnr}, {codingTime}, {mts}") return 0