VTM1.0代码阅读:CodingStructure类主要函数_矛盾统一的博客-优快云博客
C++文件输入输出,看这一篇就够了_Jasmine-Lily的博客-优快云博客_c++文件输入输出
C++ STL标准库: std::list使用介绍、用法详解_超级大洋葱806的博客-优快云博客_std::list 取值
1.CTU的预测值写入TXT
area写法
1.得到当前CU的区域信息
(1)这里的类是UnitArea类,存储的是区域所有分量的位置信息
const UnitArea &area = cu;
cu包含了很多通用数据,所以直接用对应类建立变量,然后等于CU即可将数据传输过去。
(2)这里的类是CompArea类,存储的是区域选中分量的位置信息
const CompArea &area = cu.blocks[COMPONENT_Y];
area所属类的不同,后面得到getPredBuf()也不同
2.将预测信息存入
方法1:(代码位置放在在estIntraPredLumaQT函数最后面,1532行)
//测试存储预测缓存
PelBuf piPredtest = cs.getPredBuf (area);
AreaBuf<Pel>& recYpoint = piPredtest;
std::ofstream out("C:\\Users\\qjjt\\Desktop\\输出.txt");
for(int i = 0;i < widthtest;i++)
{
for(int j = 0;j < heighttest;j++)
{
out<<"预测值 " << "宽=" << i << "高=" << j << " " << recYpoint.at(i,j) << std::endl;
}
}
这个有问题,这只能得到当前测试CU的每个像素点的预测值,而且当前测试CU并不是最终划分方式确定的CU,会得到很多无效的预测信息。
方法2:(代码位置放在compressCtu函数中的xCompressCU后面)
这里的BestCs里保存的是最优划分,直接可用。所以就选择放在这里了
基本参数(放在compressCtu函数里partitioner后面)
//坐标
int posx = area.lumaPos().x;
int posy = area.lumaPos().y;
//CTU的宽高
const uint32_t widthtest = partitioner.currArea().lwidth();
const uint32_t heighttest = partitioner.currArea().lheight();
//亮度分量的区域信息
const CompArea &_area = area.blocks[COMPONENT_Y];
实现代码(代码位置放在compressCtu函数中的xCompressCU后面)
C++中如何进行txt文件的读入和写入_Williamhzw的博客-优快云博客
PelBuf

本文详细探讨了在VVC编码器中如何获取和存储预测值,并将其输出到TXT文件或YUV文件的过程。主要涉及编码流程中的关键函数,如getPredBuf()、compressCtu()和compressSlice(),以及如何正确设置参数以确保预测值的正确传输和显示。此外,还介绍了计算预测值PSNR和BD-rate的方法。
最低0.47元/天 解锁文章
1953

被折叠的 条评论
为什么被折叠?



