Esempio n. 1
0
def encode_one_yuv(exe_path, one_yuv, usage_type=0, qp=24):
    name = ((one_yuv.split(os.sep))[-1])

    width, height, frame_rate = __init__.get_resolution_from_name(name)
    if frame_rate == 0:
        frame_rate = 30

    # encoding
    current_path = os.getcwd()
    os.chdir(exe_path)
    print("current path is %s\n" %exe_path)

    if not SKIP_ENCODING:
        if TEST_JM:
            bs_name, log_name = CodecUtil.jm_encoder(one_yuv, usage_type, width, height, qp, ' -p IDRPeriod=1 -p LevelIDC=51 ')
        else:
            bs_name, log_name, result_line = CodecUtil.openh264_encoder_qp(one_yuv, usage_type, width, height, qp, ' -iper 0 ')
    else:
        bs_name  = one_yuv.split(os.sep)[-1] + '_br' + str(qp) + '.264'
        log_name = one_yuv.split(os.sep)[-1] + '_br' + str(qp) + '.log'
    #deal with log file
    fps = CodecUtil.openh264_encoder_log_fps(log_name)

    if not PERFORMANCE_ONLY:
        # decoding
        rec_yuv = bs_name+'_dec.yuv'
        if TEST_JM:
            CodecUtil.jm_decode(bs_name, rec_yuv)
        else:
            CodecUtil.decode(bs_name, rec_yuv)

        # psnr ing
        frame_num, bitrate, psnr_y, psnr_u, psnr_v = CodecUtil.PSNRStaticd(width, height, one_yuv, rec_yuv,
                                                         rec_yuv+'.log', bs_name, frame_rate)
        ssim, msssim = 0,0
        if VQMT_ON:
            psnr2, ssim, msssim = CodecUtil.Vqmt(width, height, one_yuv, rec_yuv, frame_num)

        file_size = os.path.getsize(bs_name)
        current_test_point = OneTestPoint(width, height, frame_rate, frame_num, qp, file_size, 0, fps, bitrate, psnr_y, psnr_u, psnr_v, ssim, msssim)
        os.remove(rec_yuv)
    else:
        current_test_point = OneTestPoint(width, height, frame_rate, 0, qp, 0, 0, fps, 0, 0, 0, 0, 0, 0)
        if DEBUG==0:
            os.remove(bs_name)
            os.remove(log_name)

    os.chdir(current_path)
    return current_test_point