HEVC官方软件HM源代码简单分析-编码器TAppEncoder

标签: HM编码TAppEncoder源代码
23183人阅读 评论(12) 收藏 举报
分类:

=====================================================

H.264/H.265 官方源代码分析文章:

H.264官方软件JM源代码简单分析-编码器lencod

H.264官方软件JM源代码简单分析-解码器ldecod

HEVC官方软件HM源代码简单分析-编码器TAppEncoder

HEVC官方软件HM源代码简单分析-解码器TAppDecoder

=====================================================


上一篇文章总结了HEVC官方参考软件HM中的视频解码器TAppDecoder的结构,本文继续分析HM中的视频编码器TAppEncoder。


函数调用关系图

HM中的HEVC视频编码器TAppEncoder的函数调用关系图如下所示。



下面解释一下图中关键标记的含义。


函数背景色

函数在图中以方框的形式表现出来。不同的背景色标志了该函数不同的作用:
白色背景的函数:不加区分的普通内部函数。
黄色背景函数:滤波函数(Filter)。用于环路滤波,半像素插值,SSIM/PSNR的计算。
绿色背景的函数:CU编码函数(Encode)。通过对残差的DCT变换、量化等方式对CU进行编码。
紫色背景的函数:熵编码函数(Entropy Coding)。对CU编码后的数据进行CABAC熵编码。
浅蓝色背景函数:码率控制函数(Rate Control)。对码率进行控制的函数。

箭头线
箭头线标志了函数的调用关系:
黑色箭头线:不加区别的调用关系。
黄色箭头线:滤波函数(Filter)之间的调用关系。
绿色箭头线:CU编码函数(Encode)之间的调用关系。
紫色箭头线:熵编码函数(Entropy Coding)之间的调用关系。
 
函数所在的文件

每个函数标识了它所在的文件路径。


下文记录结构图中的几个关键部分。


普通内部函数

普通内部函数指的是TAppEncoder中还没有进行分类的函数。例如:
编码器的main()函数中调用的TAppEncTop类的配置读取函数parseCfg()、编码函数encode()等。
编码器最主要的函数:TEncTop中的encode()、TEncGOP中的compressGOP()、TEncSlice的compressSlice()等。

CU编码函数

CU编码函数通过运动估计、DCT变换、量化等步骤对图像数据进行编码。编码的工作都是在TEncCu类中的compressCtu()中完成的。compressCtu()调用了xCompressCU()完成了CU的编码工作。xCompressCU()本身是一个递归调用的函数,其中的xCheckRDCostInter()完成了分析帧间CU编码代价的工作;其中的xCheckRDCostIntra()则完成了分析帧内CU编码代价的工作。

熵编码函数

熵编码函数使用CABAC的方式对CU编码后的数据进行熵编码。熵编码的工作都是在TEncCu类中的encodeCtu()中完成的。


环路滤波函数

环路滤波函数对重建帧数据进行滤波,去除方块效应和振铃效应。TComLoopFilter类的loopFilterPic()完成了去块效应滤波器的工作; TComSampleAdaptiveOffset类的SAOProcess()完成了去除振铃效应的SAO滤波器的工作。

码率控制函数

码率控制模块函数分布在lencod源代码不同的地方,包括rc_init_seq()、rc_init_GOP()、rc_init_frame()、rc_handle_mb()等。



雷霄骅

leixiaohua1020@126.com

http://blog.csdn.net/leixiaohua1020


4
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8195878次
    • 积分:58500
    • 等级:
    • 排名:第46名
    • 原创:373篇
    • 转载:157篇
    • 译文:28篇
    • 评论:6714条
    关于我
    姓名:雷霄骅
    网名:leixiaohua1020
    本科:
    中国传媒大学-广播电视工程
    硕士:
    中国传媒大学-数字电视技术
    博士:
    中国传媒大学-数字视频技术
    Email:
    leixiaohua1020@126.com
    QQ:
    494085803

    [注1:QQ消息较多,难以一一回复,见谅]
    [注2:CSDN私信功能使用很少,有问题可以直接在博客评论处留言]

    奖项:
    2014年度 - CSDN博客之星
    2015年度 - 微软MVP
    2015年度 - CSDN博客之星
    简介:
    主要从事与广播电视有关的视音频技术的研究。包括视音频质量评价,视音频编解码,流媒体,媒资检索等。
    我的开源项目列表
    声明
    欢迎转载本博客原创或翻译文章,但请声明出处,谢谢!
    视音频技术交流QQ群
    本QQ群旨在为视音频技术同行方便交流提供一个平台。无论是实验室,电视台,互联网视频,安防,播放器,媒体中心等等都可以加入讨论。欢迎新手和大牛,多交流可以更快的进步~

    1号群【2000人】:256061378
    2号群【1000人】:152299562

    通知:
    1号群成员容量为2000人,目前已经接近上限,为了给新成员入群讨论的机会,会定期清理不发言的用户,希望大家理解,谢谢支持!
    2号群为新创建的群,欢迎加入~

    针对近期出现的各种问题,为保障本群和谐发展制定了《群规》,新成员入群后请阅读位于群公告中的《群规》了解本群的规则
    博客专栏
    最新评论