0

最终:计算和显示差异后的结果我是 VVC 的新手,我正在通过参考软件的代码试图理解它。我使用参考软件对视频进行了编码和解码。我想从中提取比特流,我想知道每个宏块中的比特数。我不确定我应该与哪个班级一起工作,现在我正在查看mv.cpp、、、QuantRDOQ.cppTrQuant.cpp

我怕把代码完全弄乱了,我不知道在哪里添加什么代码行。开始:计算并显示差异后的结果 PS 链接的图片是我的问题解决后,我附上这些图片,因为我在评论中的查询。

4

2 回答 2

0

我知道的简单解决方案是在编码器端。

诀窍是计算编码单元(CU)(又名宏块)编码“之前”和“之后”写入比特数的差异。这些东西发生在CABACWriter.cpp文件中。

你应该去到coding_tree()函数,coding_unit()函数被调用,它负责对当前CU中的所有语法元素进行上下文编码。在那里,您可以调用该函数getNumBins()两次:一次 before 和一次 after coding_unit()。两个值的差异应该为您完成工作。

于 2020-07-16T07:15:13.287 回答
0

正如错误所说,getNumBins()CABAC 估计器不支持。因此,您应该确保在编码期间“仅”调用它,而不是在 RDO 期间。

这应该做的工作:

if (isEncoding())
    before = m_BinEncoder.getNumBins()

coding_unit( cu, partitioner, cuCtx );

if (isEncoding())
{
    after = m_BinEncoder.getNumBins();
    diff = after - before;
}
于 2020-07-24T09:07:46.937 回答