psnr_ssim_analyzer.exe

时间:2022-06-05 11:15:07
【文件属性】:
文件名称:psnr_ssim_analyzer.exe
文件大小:36KB
文件格式:EXE
更新时间:2022-06-05 11:15:07
psnr ssim 一、命令行 psnr_ssim_analyzer.exe --height=480 --width=640 --reference_file=ref.yuv --test_file=test.yuv --results_file=test.csv 二、代码来源及修订记录: 1、该工具是根据webrtc的psnr_ssim_analyzer.cc源码修改,webrtc源码有bug,没有判断文件是否结束。导致计算结果异常。 2、优化写结果格式,可以在excel中打开,进行统计分析。 三、修改webrtc代码点: bool ExtractFrameFromYuvFile(const char* i420_file_name, int width, int height, int frame_number, uint8_t* result_frame) { int frame_size = GetI420FrameSize(width, height); int64_t offset = frame_number * frame_size; // Calculate offset for the frame. bool errors = false; FILE* input_file = fopen(i420_file_name, "rb"); if (input_file == NULL) { fprintf(stderr, "Couldn't open input file for reading: %s\n", i420_file_name); return false; } fseek (input_file, 0, SEEK_END); int64_t file_size = ftell(input_file); if (offset > file_size) { fprintf(stderr, "the end %s frame_number:%d frame_size:%d file_size:%lld offset:%lld\n", i420_file_name, frame_number, frame_size, file_size, offset); return false; } // Change stream pointer to new offset. fseek(input_file, offset, SEEK_SET); size_t bytes_read = fread(result_frame, 1, frame_size, input_file); if (bytes_read != static_cast(frame_size) && ferror(input_file)) { fprintf(stdout, "Error while reading frame no %d from file %s\n", frame_number, i420_file_name); errors = true; } fclose(input_file); return !errors; }

网友评论