【发布时间】:2018-03-06 07:16:01
【问题描述】:
所以这个问题已经被问过几次了,但我认为我的 C++ 技能太差,无法真正欣赏答案。我需要的是一种从 HEVC 编码的视频开始并以包含所有运动矢量的 CSV 结束的方法。到目前为止,我已经编译并运行了参考解码器,一切似乎都运行良好。我不确定这是否重要,但我对运动矢量感兴趣,因为它可以方便地分析视频中的运动。我最初的计划是对每一帧中的 MV 进行平均,以获得一个表示该帧中平均移动量的值。
here 的讨论告诉我我需要与之交互以获取 MV 的 TComDataCU 类方法,并讨论了如何迭代 CTU。但我还是不太明白以下内容:
1) 这些 MV 方法返回什么信息,以什么格式返回?以我有限的知识,我假设会有类似 7 个值与 MV 相关联:帧号、标识该帧中宏块的索引、宏块的大小、宏块的 x 坐标(可能是左上角?),宏块的y坐标,向量的x坐标,向量的y坐标。
2) 我需要在代码的哪个位置放置保存数据的新语句?我认为在 TComDataCU.cpp 中必须有一些地方我可以在其中放置行,将我想要的数据打印到文件中,但是当实际确定这些值以及它们是什么时,我感到困惑。变量声明如下所示:
// create motion vector fields
m_pCtuAboveLeft = NULL;
m_pCtuAboveRight = NULL;
m_pCtuAbove = NULL;
m_pCtuLeft = NULL;
但我无法理解这些名字。 AboveLeft、AboveRight、Above 和 Left 看起来像是方向的不对称组合?
任何帮助都会很棒!我想我会从看到一些示例代码中受益匪浅。解释一下我需要注意的变量也会很有帮助。
【问题讨论】: