最近在做avs2编码器项目,但是却没有成熟的码流分析工具,于是抽空学习了QT,业余时间写了一个avs2码流分析工具。
软件的界面如下:

UI的左边框为NAL列表或者语法元素列表:
默认情况显示的是NAL列表,NAL列表显示了每一个NAL的类型,如果是picture的NAL,则Picture的类型(I帧,P帧,B帧,F帧等),POC, COI也都可以显示;Offset列显示了NAL在文件中的起始位置,Size列显示了每个NAL的大小。点击对应的一帧,可以切换到该帧的信息显示。
点击左下角的按钮可以切换显示内容,Sequence Header则切换显示码流中的sequence header中语法元素的详细信息。这里是一些编码器的主要的参数信息。

窗口的右侧显示的是每一帧的详细编码信息,支持多种Mode。目前码流分析仪支持Prediction、Residuals、Reconstruction、Deblock这几种编码信息的显示,后续打算支持SAO,ALF等等。通过菜单“Mode”可以切换不同的Mode,图3所示的为Prediction Mode,可以显示每个CTU详细的预测模式。按住Ctrl + 鼠标滚轮,可以对图像进行放大缩小。

按菜单“Mode”->“Residual”或者快捷键F2可以切换到Residual视角,如图4所示,显示了每个CU的QP信息,蓝色QP的CU的cbf=0,红色QP的CU的cbf不等于0.

按菜单“Mode”->“Reconstruction”或者快捷键F3可以切换到Reconstruction视角,如图5所示,图像显示的是每个CTU的Reconstruction before in-loop filter的图像,蓝色的矩形区域表示了每个CU的边界。

按菜单“Mode”->“Deblock”或者快捷键F4可以切换到Deblock视角,如图6所示,图像显示的是每个CTU的deblock之后的图像,蓝色的矩形区域表示了每个CTU的边界。

图像下边两个按钮“Pic”和“Info”,分别用于控制是否显示图像和是否显示编码信息。图7为关闭了图像信息显示,此时可以看到纯的图像(发现avs2中deblock的效果不是很明显,deblock前的图像和之后的图像差别不是很大,块去的不是很明显)。

后续还需要继续支持SAO后图像的显示,最终解码图像的显示。还可以接入ffmpeg中的264和265解码器,支持264和265码流的解析。