예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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