【编解码】从零开始写H264解码器(1) 总纲 您所在的位置:网站首页 gem格式视频翻录 【编解码】从零开始写H264解码器(1) 总纲

【编解码】从零开始写H264解码器(1) 总纲

2023-03-24 22:06| 来源: 网络整理| 查看: 265

1. 背景

因为工作原因,接触编解码也有一段时间了。AVC,HEVC,大大小小的功能都也接触了一些,关于编解码的原理的书和文章自己一直在看。从入门到略懂,感觉有些零零碎碎,或不完整,似乎串不成体系。有些小功能,知道是知道,并不知道它的意义和作用,时间一长也会慢慢忘记。 反思了一下,或许很多东西,还是需要自己动手做一遍,会理解的更深更透彻一些,就像费曼学习法,你能讲出来,才说明懂了,这个也一样,你能把功能实现出来,才说明你真的明白了里面的流程和逻辑。于是乎,在今年过年期间,突然萌生出了写一个解码器的想法,而且一萌生就一直压不住了,一直想赶快动键盘写起来。 其实目前市面上开源好用的解码器有不少,像ffmpeg,x264等等。自己这个工程,应该就是单纯的一个学习工程吧,估计最后再怎么优化也达不到这些大名鼎鼎的工程的效果和功能,但是那又怎么样呢,过程和经历也很棒,不是吗? 刚开始的时候是想写过一个编码器的,思考了一下之后很快就放弃了,我目前的想法只是想熟悉协议,并不是侧重于编码算法,相比之下,编写一个解码器所需要的的知识正是我所需要的。 这就成了这一系列文章的的起因了,算是自己一边写代码,一边写总结吧。 虽说是从“零”开始,但是编解码的基础知识还是要有一些储备的,我会在每一章里对解码所涉及到的知识点做一个介绍和讲解,但是太零碎的,就不会一一说明了。如果知识点太大,可能会单独写一篇来总结。

2. 计划 2.1 写作计划

按照一个解码器的步骤,准备暂时先分成这么几个部分来写

NALU:格式,起始码, EBSP RBSP SODB熵编码之哥伦布熵编码SPS:解析协议里每个成员的意义PPS: 解析协议里每个成员的意义SEI:解析协议里每个成员的意义SLICE Header:解析HeaderSLICE data:解析slice数据MarcoBlock:怎么还原出一个宏块完整的YUV数据macroblock_layermb_pred帧内预测的part的预测模式获取CAVLCresidual 残差数据获取帧内预测的part的预测数据 和 图像数据恢复deblocking……待定 2.2 项目计划

开发环境 C语言

包含功能: H264是分7个profile的,每个profile便是不同功能的集合。具体区别见wiki百科 计划 : 第一阶段做最基础的一个baseline的解码器(无B帧,只有CAVLC,只支持逐行 Progressive) 第二阶段做main或 Extend的解码器(有B帧,有CABAC,支持Progressive和interlace) 在这里插入图片描述

后续的就不做支持了。 解码不做显示,从h264文件解到YUV文件即可。

时间安排: 预计6个月写完baseline (8月30), 后续再安排第二阶段。

3. 参考 3.1 参考资料 H264 官方白皮书 3.2 参考工程 ffmepg Mirrorx264 - mirrorbitstream 3.3 参考博客 从零实现一个H.264码流解析器 配套工程自己动手写 H.264 解码器-ZigZagSin 配套工程H264视频解码器C++工程说明 配套工程 4. 工具准备 4.1 码流分析工具

vega: 我用过最专业,分析最好的软件。不过只能蹭单位的使用哈哈,目测应该很贵。 在这里插入图片描述

H264 Visa : 我用的1.15版本,不能用vega的时候使用的。参数解析的比较全面,用于前期判断自己的解析对不对很有帮助。 在这里插入图片描述 后面据说有升级版 H.264 CodecVisa,暂时没用。

elecard 试用了一下,感觉使用不是很顺手,论美观好用不如vega,轮参数完整不如H264 Visa。就没太多使用。 这里记录一下,elecard的软件种类很多,elecard stream analyzer, elecard stream eye,Elecard StreamEye Studio等等。其实 Elecard StreamEye Studio 就包含了stream analyzer,不要被一堆名字搞混了。其中 streamEye算是功能比较全面的。

在这里插入图片描述 在这里插入图片描述

4.2 YUV查看工具 7yuv 4.3 播放器 potplayer: 查看h264码流 4.4 一些YUV数据源 YUV Sequences (asu.edu)Xiph.org :: Derf’s Test Media Collection


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有