0

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

  1. 参考代码在哪里以及如何获取 CU 深度信息。

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

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

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

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

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

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

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

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

例如,我想为某个 CTU 设置深度 2,我该如何实现?或者我想为某个 PU 强制 SKIP 模式,我该怎么做?或者我想强制软件对某个 PU 使用 2Nx2N,我该如何在软件中做到这一点?

4

1 回答 1

0

首先,CTU 的所有决定都是m_pcCuEncoder->compressCtu( pCtu );在 TEncSlice.cpp 中调用时做出的

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

要访问此信息,您可以使用getDepth()getPartitionSize()getPredictionMode()等功能getMvField

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

于 2016-11-15T11:08:59.767 回答