前言
最近开启了帧间工作,在阅读VTM代码的时候,研究了一下如何使用Dtrace和YUVview来统计并展示编码信息。
参考博客: 链接.
一、Dtrace
VTM中支持了使用Dtrace宏来分析统计编码信息,并进行可视化。
主要的通道为:
-
D_BLOCK_STATISTICS_ALL:所有的语法元素都将被记录,无论他们是实际编码的还是获得的。
-
D_BLOCK_STATISTICS_CODED:仅记录将进行编码的语法元素。
在使用之前,需要将宏ENABLE_TRACING和K0149_BLOCK_STATISTICS设置为1,后者在VTM16.0中默认为1
一、使用步骤
1.编码端生成码流
用VS打开解决方案的情况下,先以在工作目录下使用如下指令编码生成码流
-c encoder_lowdelay_vtm.cfg -c BasketballPass.cfg >Enc_Out.txt
2.解码记录编码信息
在同样的工作目录下,以DecoderAnalyserApp为启动项,用如下指令,记录编码信息
-b str.bin --TraceFile="De_VTM11_LDB_BasketballPass_QP37.vtmbmsstats" --TraceRule="D_BLOCK_STATISTICS_ALL:poc>=0" >Dtrace_out.txt
2.YUVview中可视化
上两步中分别生成了编码重建序列rec.yuv和编码统计信息De_VTM11_LDB_BasketballPass_QP37.vtmbmsstats。打开YUVview,新建Overlay,分别导入yuv和vtmbmsstats文件,然后选择在yuv的属性中,设置对应的yuv格式信息,最后item属性中,设置勾选overlay,并勾选需要展示的编码信息,得到可视化界面的输出
总结
仍存在问题:DecoderAnalyserApp在Debug下运动报奇怪的错误,所展示的结果为release下得到的