- 博客(1)
- 资源 (7)
- 收藏
- 关注
原创 webrtc 维护方法一(实时网络状态查询GetStats)
一、概述视频通话受网络状态影响很大,网络丢包延时都会导致视频通话质量。能够实时监控当前网络状态,查看当前网络的丢包、抖动、延时,在维护定位视频通话问题中,非常有必要。webrtc的GetStats提供了这个功能。具体实现原理,参见:https://www.jianshu.com/p/41856118f833。C++版本peerconnection.cc文件PeerConnection类...
2018-09-28 13:37:35 5471 4
使用std::optional替换absl::optional需要包含的头文件
使用std::optional替换absl::optional需要包含的头文件。替换对abseil-cpp开源软件的依赖。
2023-04-04
x265.exe demo
x265.exe --input black.yuv --input-res 1280x720 xxx.265 --log-level debug
可以查看numa架构打印
2021-08-16
vmafossexec.rar
命令行:vmafossexec yuv420p 640 480 ref.yuv test.yuv vmaf_v0.6.1.pkl --psnr --ssim --log test.txt
2019-05-17
psnr_ssim_analyzer.exe
一、命令行
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;
}
2019-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人