学习AVS3也有将近一个月的时间了,在这里简单记录一下学习历程,供大家参考。
准备工作
可以参考博主的早期文章《视频编码入坑指南》:
https://blog.youkuaiyun.com/leelitian3/article/details/110554117
编码流程速览
在阅读AVS3的具体代码之前,快速学习一遍《数字视频编码技术原理》,了解编解码的流程。
AVS3编码工具简介:https://zhuanlan.zhihu.com/p/161723343
初次尝试阅读uAVS3e源码
在第一次阅读代码的时候,需要掌握整体的流程框架。博主使用VS2017,结合ProgGuide.docx
,逐步调试,虽然很多变量看不懂,代码看的晕乎乎的,但还是基本掌握了代码的结构,并绘制了代码思维导图。
捋顺AVS3码流结构
此时的我对AVS3还不是很了解,不知道AVS3到底编码了一些什么东西,某些过程和某些变量具体是干什么的,因此打算学习一下AVS3的码流结构。AVS3的码流结构可以在AVS3标准草案(FCD 2.0)中找到,它是用类C语言函数描述的,其中包含了许多语法元素,语法元素的含义在草案中也可以查询到,不懂的可以利用搜索引擎查找。
博主在捋完码流结构之后,也整理了一张码流结构图,感觉思路清晰了许多。具体请参考:
https://blog.youkuaiyun.com/leelitian3/article/details/112445617
学习AVS3时域参考模型
个人感觉视频编码中的时域参考模型是有些复杂的,包括什么图像参考队列,图像参考配置集,时间层之类的。博主学习了下面这篇文章,感觉收获非常大。
https://zhuanlan.zhihu.com/p/148192543
弄懂AVS3解码过程
在没有更多参考资料的情况下,AVS3标准草案中的解码过程为AVS3编码的过程提供了详细的介绍。当然,可以结合万帅大佬的书籍《新一代高效视频编码H.265/HEVC原理、标准与实现》进行学习,因为AVS3的许多部分是与HEVC相似的。如果还有不懂的问题,还是勤于使用搜索引擎和师兄吧(手动滑稽)。
再读uAVS3e源码
进行中。。