介绍
之前看HM的编码器,总觉得理解得不够深入,很多地方只是了解大概的处理流程,具体含义没有理解。为了更加深入理解HEVC,现在开始从解码器的角度分析HEVC,说不定能够取得不错的效果。
HM解码器包含的工程
TAppDecoder:解码器入口(APP表示应用程序)TAppCommon:参数解析
TLibCommon:公用的库(和编码器共用)
TLibDecoder:解码器的库
TLibVideoIO:IO库
HM解码器包含的类
program_options_lite:参数解析TAppDecCfg:解码器基础配置
TAppDecTop:解码器应用程序,代表了整个编码器
TDecTop:解码器内核,它是解码器最关键的部分,以汽车作为例子,TAppDecTop表示一辆汽车,那么TDecTop就表示了汽车的发动机,是汽车最关键的部分
TVideoIOYuv:IO操作类
解码器的大致工作流程
1、读取比特流文件中的每一个NALU,进行解析,然后进行下面的操作2、判断NALU的类型
(1)如果是VPS,那么调用xDecodeVPS,解析VPS
(2)如果是SPS,那么调用xDecodeSPS,解析SPS
(3)如果是PPS,那么调用xDecodePPS,解析PPS
(4)如果是SEI,那么调用xDecodeSEI,解析SEI
(5)如果是普通数据(也就是slice),那么调用xDecodeSlice,解析slice