分三个阶段学习
1、第一个阶段:
学习H.264,首先要把最基本最必要的资料拿在手里。这些资料包括:标准文档+测试模型+经典文章,在本FTP中能找到。首先看 《H.264_MPEG-4 Part 10 White Paper》(本群的FTP中在“H.264相关论文"经典文章”目录中),看完之后再看《Video coding using the H.264 MPEG-4 AVC compression standard》(本群的FTP中在“H.264相关论文"经典文章”目录中)和《Halsted.Press.H.264.And.MPEG- 4.Video.Compression.Video.Coding.For.Next.Generation.Multimedia.eBook- LiB》(本群的FTP中在“H.264相关论文"经典文章”目录中,据说已经被翻译成中文,即本文最后提到的三本讲H264的中文书籍中的第一本),然 后可以抽空看《Overview of the H.264_AVC Video Coding Standard.pdf》(本群的FTP中在“H.264相关论文"经典文章”目录中)。这几篇文章看完后,你应该对H.264的整体框架有个比较深入 的了解了。前三篇文章可能需要花费你两~三周的时间(对于我这样的笨蛋好像是要这么长时间的。如果你碰巧用了比这个时间还长的时间,那并不说明你比我更 笨,只能说明你肯定天天陪MM聊天去了。呵呵~~~),最后一篇文章是《Overview and Introduction to the Fidelity Range Extensions》,该文的价值主要在于对H.264的第四个档次 high profile 做了介绍,前面的文章都没有涉及该档次。
2、第二阶段:
然后你就可以看代码了。这个时候你最常用的工具就是标准文档和测试模型(建议使用JM86)。看代码也有讲究。并不是像我开始那样看得那么仔 细,结果后来才知道远没有这个必要。正如peter李说的:看代码也要先从整体框架入手。先搞懂H.264的整体框架在代码里是怎么分布的,一个功能模块 的前伸模块和后继模块是什么。也就是搞清楚整个代码流程。这个阶段对标准文档的使用可能很少。如果你使用的测试模型是JM,那么有一个好处:JVT的会议 文件JVT-N008r1里面对编解码的所有参数做了详细介绍,这个文件对大家很有用处,建议大家找到它(本群的FTP中在“H.264其他资料”目录 里)。JVT-N008r1是这个文件的档案号,而该文件的标题是:H.264_MPEG-4 AVC Reference Software Manual
3、第三阶段:
然后你找到一个自己感兴趣的切入点,开始以此为中心研究这个问题。你研究问题的时候应该是联系测试模型来研究,这个时候你就需要仔细看代码中对 这个问题的实现了。这个阶段我绝对支持你一行行代码跟踪,一个参数一个参数地跟踪。而代码中不懂的地方可能需要查标准。这时你再来看标准文档就有了针对 性。也因为能将标准文档和代码对应起来,从而看标准文档也不觉得有太大困难,也能明白标准文档说的是什么问题,在测试模型中是如何通过代码实现的。在这个 阶段中,会牵连到很多H.264的相关知识,这样通过以点带线,以线带面。你会对H.264的内容认识越来越多。而你也就找到了自己的方向,最终走上了缔 造中国人的H.264的光辉大道,呵呵~~~
==========【注意事项】==========
1、切忌将代码和标准文档独立开看,否则,你的困难会很大(当然可能是因为我太笨了,对于“甜菜”的你可能无论怎样都能应用自如。呵呵~~~)。
2、对于刚开始接触H.264的人,切忌直接看代码和标准,哪怕是将标准和代码结合起来看,你也会不太顺利。换句话说:在没有了解H.264整体框架之前,你最好什么都不要做。
3、你千万不要觉得自己参加讨论,以及帮助别人找答案(当然是在你觉得别人问的问题你似曾相识的时候)是一个浪费时间的过程。因为你参加讨论,特别是你帮别人找答案的时候,很多你似是而非的问题却能够得到一个更深刻的认识。
4、学问,学问,即要问也要学。不要养成自己的依赖思想。其实你在自己查资料的过程中,也会学到很多东西。比如会知道某个问题在哪篇文章里能找到答案,或者收集到更多相关问题的有价值的文章……而且自己查到的到底比别人告诉的印象深刻。
5、读代码要讲究方法。码中有很多变量,不要一开始就去看头文件,想把里面所有变量都弄清楚是什么
直接从 main 函数开始读 c 文件就可以了。遇到不懂的变量再去查头文件,如果头文件里没有说明,自己又理解不了的问其他人——不要养成依赖性。
 
PS :我所知道的三本讲H264的中文书籍
1、《H.264和MPEG-4视频压缩》:欧阳合(我看的英文原版,翻译过来的应该也不错)
2、《新一代视频压缩编码标准—H.264/AVC》:毕厚杰(书中有较多错误,但仍然值得买,建议只做参考)
3、《小波编码与网络视频传输》:沈兰荪,卓力 (个人觉得不错,有关于 high profile 的介绍)

每天进步一点点------H.264学习 (一)的更多相关文章

  1. H.264学习笔记1——相关概念

    此处记录学习AVC过程中的一些基本概念,不定时更新. frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵. field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶 ...

  2. 02:H.264学习笔记

    H.264组成 1.网络提取层 (Network Abstraction Layer,NAL) 2.视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 ...

  3. H.264学习笔记之一(层次结构,NAL,SPS)

    一 H.264句法 1.1元素分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描述各个层次的信息. 图1 H.264分层结构由五层组成,分 ...

  4. H.264学习笔记

    1.帧和场的概念 视频的一场或一帧可用来产生一个编码图像.通常,视频帧可以分成两种类型:连续或隔行视频帧.我们平常看的电视是每秒25帧,即每秒更换25个图像,由于视觉暂留效应,所以人眼不会感到闪烁.每 ...

  5. H.264学习笔记6——指数哥伦布编码

    一.哥伦布码 哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id. >对于Group Id采用二元码编码: >对于Group内的编码对 ...

  6. H.264学习笔记5——熵编码之CAVLC

    H.264中,4x4的像素块经过变换和量化之后,低频信号集中在左上角,大量高频信号集中在右下角.左边的低频信号相对数值较大,而右下角的大量高频信号都被量化成0.1和-1:变换量化后的残差信息有一定的统 ...

  7. H.264学习笔记4——变换量化

    A.变换量化过程总体介绍 经过帧内(16x16和4x4亮度.8x8色度)和帧间(4x4~16x16亮度.4x4~8x8色度)像素块预测之后,得到预测块的残差,为了压缩残差信息的统计冗余,需要对残差数据 ...

  8. H.264学习笔记3——帧间预测

    帧间预测主要包括运动估计(运动搜索方法.运动估计准则.亚像素插值和运动矢量估计)和运动补偿. 对于H.264,是对16x16的亮度块和8x8的色度块进行帧间预测编码. A.树状结构分块 H.264的宏 ...

  9. H.264学习笔记2——帧内预测

    帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值. ...

随机推荐

  1. [HNOI2004] 树的计数 - prufer序列

    给定树每个节点的 degree,问满足条件的树的数目. \(n\leq 150, ans \leq 10^{17}\) Solution 注意特判各种坑点 \(\sum d_i - 1 = n-2\) ...

  2. springBoot 发送邮件图片不显示

    解决方案 MimeMessageHelper 的执行顺序错了,先执行 setText() 然后执行 addInline() 添加图片 <img src="cid:p03"/& ...

  3. PHPstorm出现卡顿解决小记

    用的是PHPstorm9,在打开了两个比较大的文件之后,码字反应变得很慢,久不久操作快点还会出现转蓝色小圈圈,最后还给了我这个提示TOT: google了下说是设置的内存不够了,看了下任务管理器php ...

  4. MyEclipse 运行弹出A Java Exception has occurred.

    问题描述 A Java Exception has occurred. 问题原因 这个问题是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行而产生的错误

  5. LEF 格式

    LEF 文件是布局布线根据使用的cell 几何信息库的文件格式,下面是一个LEF文件的部分,右边是对他的解释.布局布线工具将根据LEF文件的信息决定怎样布局,怎么走线,怎样生成通孔. VERSION ...

  6. Python发带附件的邮件

    python实现发送带附件的邮件 import smtplib from email.mime.text import MIMEText from email.mime.multipart impor ...

  7. hadoop搭建HA集群之后不能自动切换namenode

    在搭好HA集群之后,想测试一下集群的高可用性,于是先把active的namenode给停掉: hadoop-daemon.sh stop namenode 或者直接kill掉该节点namenode的对 ...

  8. php设计模式之策略模式实例代码

    html <html> <head> <meta charset="UTF-8"> <title>简单计算器</title&g ...

  9. [CCPC2019 哈尔滨] L. LRU Algorithm - 哈希

    [CCPC2019 哈尔滨] L. LRU Algorithm Description 对一个序列执行 LRU 算法.每次询问给定一个窗口,问它是否出现过. Solution 很显然我们可以先假设窗口 ...

  10. CSS的长度单位

    对于css的长度单位真的有必要知道一下.那么css长度单位有哪些呢? 分成两大类: 1.绝对单位:不会因为其他元素的尺寸变化而变化.坚持自我. 2.相对单位:没有一个确定的值,而是由其他元素的尺寸影响 ...