在 Hevc 参考软件 HM 16.9 中,我需要帮助来生成 CU、PU 和 TU 的详细信息

In Hevc reference software HM 16.9 I need help for generating details of CUs, PUs and TUs

对于测试序列,我想获取以下信息:

  1. 在参考代码的什么地方以及如何获取CU深度信息。

  2. 在哪里以及如何获得特定 CTU 的 PU 大小和模式。

  3. 在哪里以及如何获取 PU 的运动矢量信息。

  4. 在哪里以及如何获取 PU 的参考帧信息及其在参考帧中的位置?

  5. 在哪里以及如何获取有关正在使用的 SKIP 和 Merge 模式的信息?

  6. 在哪里以及如何获取有关 PU 的 RD 成本的信息?

我想要统计分析的信息,所以以上所有信息应该是在CTU做出所有决定之后。

第一部分是获取数据,我可以根据这些数据进行一些分析。之后我需要知道如何让软件使用我为不同参数计算的值。这是我问题的第一部分。

我的问题的第二部分是在参考软件代码中我们可以在哪里修改上述参数?

例如我想为某个 CTU 设置深度 2,我该如何实现? 或者我想为某个 PU 强制跳过模式,我该怎么做? 或者我想强制软件对某个 PU 使用 2Nx2N,我该如何在软件中执行此操作?

首先,CTU 的所有决定都是在 TEncSlice.cpp

中调用 m_pcCuEncoder->compressCtu( pCtu ); 时做出的

pCtuTComDataCU 类型,所以如果您查看 TComDataCU.h,您可以看到对象中包含的所有信息(深度、分区大小、预测模式、运动向量信息等)

要访问此信息,您可以使用 getDepth()getPartitionSize()getPredictionMode()getMvField 等函数。

关于你问题的第二部分,上面的参数在哪里修改取决于你想达到什么目的。例如,如果您在 m_pcCuEncoder->compressCtu( pCtu ); 为 运行 之前修改了 CTU 的深度,则您更改的值将被此函数覆盖...