VTM中的编码单元信息扩展:CU信息的可视化分析和统计分析

文章目录

      • 编码单元统计信息扩展
        • 使用方法
        • 块统计信息文件格式
        • 可视化

编码单元统计信息扩展

VTM中的块统计扩展支持对编码比特流中的编码工具使用情况进行直观的可视化和统计分析。该扩展使得参考软件的编码器和解码器能够以可配置的方式将统计信息写出,进而加载到合适的yuv播放器中或者重叠在重建yuv序列上,或者在可选范围内用于统计分析。

使用方法

要使用块统计扩展,需要在编译时将宏ENABLE_TRACINGK0149_BLOCK_STATISTICS设置为1。统计信息在编码段和解码端都可以获取到。 此扩展为测试软件在“dtrace”功能中添加了额外的跟踪通道,主要是以下两个:

  • D_BLOCK_STATISTICS_ALL:所有的语法元素都将被记录,无论他们是实际编码的还是获得的。
  • D_BLOCK_STATISTICS_CODED:仅记录将进行编码的语法元素。

ENABLE_TRACING开启后,将增加两个编码选项用于指定目标写入文件以及跟踪条件,见下表

选项 默认值 描述
TraceFile 目标文件的名称
TraceRule 指明需要追踪的信息和条件

生成块统计信息文件的具体编码命令实例:

bin/TAppDecoder.exe -b str.bin > BasketballDrive_1920x1080_QP37.vvc \

--TraceFile="stats/BasketballDrive_1920x1080_QP37_coded.vtmbmsstats" \

--TraceRule="D_BLOCK_STATISTICS_CODED:poc>=0"
bin/DecoderAppStatic -b str/BasketballDrive_1920x1080_QP37.vvc \

--TraceFile="stats/BasketballDrive_1920x1080_QP37_all.vtmbmsstats" \

--TraceRule="D_BLOCK_STATISTICS_ALL:poc>=0"

块统计信息文件格式

跟踪文件头部列出了所有可用的编码单元统计目录,每个统计条目包含一个类别和整数值的范围。

# VTMBMS Block Statistics

# Sequence size: [832x 480]

# Block Statistic Type: PredMode; Flag;

# Block Statistic Type: MergeFlag; Flag;

# Block Statistic Type: MVL0; Vector; Scale: 4

# Block Statistic Type: MVL1; Vector; Scale: 4

# Block Statistic Type: IPCM; Flag;

# Block Statistic Type: Y_IntraMode; Integer; [0, 73]

# Block Statistic Type: Cb_IntraMode; Integer; [0, 73]

每个块的统计信息的记录有两种格式,一种是可读格式(human readable format),这种格式便于理解,实例如下:

BlockStat: POC 16 @( 112, 0) [ 8x 8] SkipFlag=1

BlockStat: POC 16 @( 112, 0) [ 8x 8] InterDir=1

BlockStat: POC 16 @( 112, 0) [ 8x 8] MergeFlag=1

BlockStat: POC 16 @( 112, 0) [ 8x 8] MergeIdx=0

BlockStat: POC 16 @( 112, 0) [ 8x 8] MergeType=0

BlockStat: POC 16 @( 112, 0) [ 8x 8] MVPIdxL0=255

BlockStat: POC 16 @( 112, 0) [ 8x 8] MVPNumL0=255

BlockStat: POC 16 @( 112, 0) [ 8x 8] RefIdxL0=0

BlockStat: POC 16 @( 112, 0) [ 8x 8] MVDL0={ 0, 0}

BlockStat: POC 16 @( 112, 0) [ 8x 8] MVL0={ -70, 18}

BlockStat: POC 16 @( 112, 8) [ 8x 8] PredMode=0

BlockStat: POC 16 @( 112, 8) [ 8x 8] PartSize=0

另一种是基于CSV的格式,实例如下

BlockStat;16; 112; 0; 8; 8;SkipFlag;1

BlockStat;16; 112; 0; 8; 8;InterDir;1

BlockStat;16; 112; 0; 8; 8;MergeFlag;1

BlockStat;16; 112; 0; 8; 8;MergeIdx;0

BlockStat;16; 112; 0; 8; 8;MergeType;0

BlockStat;16; 112; 0; 8; 8;MVPIdxL0;255

BlockStat;16; 112; 0; 8; 8;MVPNumL0;255

BlockStat;16; 112; 0; 8; 8;RefIdxL0;0

BlockStat;16; 112; 0; 8; 8;MVDL0; 0; 0

BlockStat;16; 112; 0; 8; 8;MVL0; -70; 18

BlockStat;16; 112; 8; 8; 8;PredMode;0

BlockStat;16; 112; 8; 8; 8;PartSize;0

可视化

记录块统计信息的文件可以用YUView打开,下载地址为 https://github.com/IENT/YUView 。将统计信息和重建yuv文件导入后,可用叠加播放模式显示,界面如下图所示

YUView

VTM中的编码单元信息扩展:CU信息的可视化分析和统计分析_第1张图片

运动信息

你可能感兴趣的:(VVC/H.266学习日记)