对于测试序列,我想获得以下信息:
参考代码中的位置以及如何获取CU深度信息。
我在哪里以及如何获得特定CTU的PU尺寸和模式。
我在哪里以及如何获得PU的运动矢量信息。
在哪里以及如何获取PU的参考帧信息及其在参考帧中的位置?
我在哪里以及如何获取有关正在使用的SKIP和合并模式的信息?
我在哪里以及如何获得有关PU成本的信息?
我想要用于统计分析的信息,所以上述所有信息都应该在完成CTU的所有决定之后。
第一部分是获取我可以做一些分析的数据。之后我需要知道如何使软件使用我的计算值来表示不同的参数。这是我提问的第一部分。
我的问题的第二部分是在参考软件代码中我们可以修改上述参数吗?
e.g。我想为某个CTU设置2的深度,我该如何实现? 或者我想对某个PU强制跳过模式,我该怎么做? 或者我想强制软件对某个PU使用2Nx2N,我该怎么做呢?
答案 0 :(得分:0)
首先,CTU的所有决定都是在TEncSlice.cpp中调用m_pcCuEncoder->compressCtu( pCtu );
时做出的
pCtu
的类型为TComDataCU
,因此如果您查看TComDataCU.h,您可以看到对象中包含的所有信息(深度,分区大小,预测模式,信息)关于运动矢量等。)
要访问此信息,您可以使用getDepth()
,getPartitionSize()
,getPredictionMode()
,getMvField
等功能。
关于问题的第二部分,修改上述参数的位置取决于您想要实现的目标。例如,如果在运行m_pcCuEncoder->compressCtu( pCtu );
之前修改CTU的深度,则此功能将覆盖您更改的值...