一、基本概念

1、编码顺序

H.264的码流输出顺序便是编码顺序,所以在编码B帧的时候,由于B是双向预测,需要先编码后面编码帧P/I,这时候先输出I/P,后面才有B帧,我们在解码段拿到相应的I/P帧后,不能马上丢到buffer list里面,还需要等待后面的B帧,解码B帧后再reorder。

2、frame_num

每个参考帧都有一个依次连续的frame_num 作为它们的标识,这指明了各图像的解码顺序。在非参考帧的slice header中也会出现frame_num,不过该语法元素只有在参考帧才有意义。H.264 对frame_num 的值作了如下规定: 当参数集中的句法元素gaps_in_frame_num_value_allowed_flag 不为1 时,每个图像的frame_num 值是它前一个参考帧的frame_num 值增加1。这句话包含有两层意思。

(1)当gaps_in_frame_num_value_allowed_flag 不为1,即frame_num 连续的情况下,每个图像的frame_num 由前一个参考帧图像对应的值加1,着重点是“前一个参考帧”。

(2)当gaps_in_frame_num_value_allowed_flag 等于1,这时若网络阻塞,编码器可以将编码后的若干图像丢弃,而不用另行通知解码器。在这种情况下,解码器必须有机制将缺失的frame_num 及所对应的图像填补,否则后续图像若将运动矢量指向缺失的图像将会产生解码错误。

frame_num 是循环计数的,即当它到达MaxFrameNum 后又从0 重新开始新一轮的计数。解码器必须要有机制检测这种循环,

3、POC

Picture Order Count,即图像顺序号,主要用于标识图象的播放顺序,同时还用于在对帧间预测片解码时,标记参考图像的初始图像序号,表明下列情况下帧或场之间的图像序号差别:

(1)使用时间直接预测模式的运动矢量推算时;

(2)B片中使用固有模式加权预测时;

(3)解码器一致性检测时。

POC和frame_num之间存在一定的映射关系,当pic_order_cnt的值为1或者2的时候,可以通过frame_num来获得POC。

二、简单的例子

一个简单的视频序列如表1和表2所以,表1按图像顺序,表2按编码顺序。

表1 按图像顺序的视频序列

表2 按编码顺序的视频序列

说明:

1、图像顺序和编码顺序不是对应的关系,比如图像顺序为4的P帧,是图像顺序为1和2的参考帧,虽然在这两个帧之后,但是需要在他们在前进行编码。

2、frame_num按照编码的顺序从0递增,当达到最大值3后,从0重新开始递增。每个图像的frame_num为它前一个参考图像的frame_num + 1。比如:

(1)第4个图像,虽然在第1和2个图像之后,但是它前面的参考图像是第0个图像,因此,其frame_num的值为0 + 1 = 1;

(2)第1和2个图像虽然在第4个图像之后,但是,在编码顺序上,第4个图像在他们之前且是参考帧,因此他们的frame_num的值为1 + 1 = 2。

3、POC标识图像的显示顺序,因此递增的顺序和图像顺序是一致的,不过有其自己的循环,当达到最大值时,重新开始递增。POC是针对场而言的,因此每个图像都会包括顶场顺序号和底场顺序号。表1和表2中只给出了每个图像中一个场的编号。

编码顺序、frame_num和POC相关推荐

  1. H.264的DTS、PTS、frame_num、poc

    DTS与PTS: 先盗一张网图,解释DTS和PTS. DTS和PTS是解码端或者说播放器的概念,DTS是解码的顺序,PTS是显示的顺序.H264中,如果码流中不包含B帧,码流中所有帧的PTS=DTS. ...

  2. 创建数据库,指定数据库的字符集和编码顺序

    创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则} 举例: create database co ...

  3. 查看视频的IPB帧,IPB帧编码顺序,视频的第一帧图片

    > 如何查看视频的IPB帧 Android, 如何获取视频的每一帧的信息 视频 = 图片.图像(摄像头) + 声音(麦克风) : 谷歌官方给我们的提供的api接口类:MediaMetadataR ...

  4. html url js编码顺序,浏览器的解码顺序(html解码、url解码以及js解码)

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. H264---播放顺序POC(pic_order_cnt)---pic_order_cnt_type=0、1、2 + POC和framenum比较

    在一个序列中, 参考图像的frame_num = 前一个参考图像的frame_num+1 非参考图像的frame_num = 前一个参考图像的frame_num + 1 (故会导致一个P帧后面的 多个 ...

  6. POC和frame_num的概念

    编码顺序.frame_num和POC_chinabinlang的博客-CSDN博客 注意,H264码流的输出顺序是编码顺序,所以在编码B帧的时候,由于B是双向预测,需要先编码后面编码帧P/I,这时候先 ...

  7. 4位格雷码的顺序编码_八位格雷码转换器.doc

    八位格雷码转换器 物理与信息技术系本科学年论文 题 目八位格雷码转换器设计 学生姓名 专业名称 测控技术与仪器 指导教师 2009年 9月30日 八位格雷码转换器设计 摘要8 Gray code co ...

  8. h.264的POC计算

    本文参考自http://wenku.baidu.com/link?url=ZPF0iSKzwLQg_8K02pnnd_-Zd6ISnsOGWsGYb98ucLkELZO4nOv-X-v2GKLzI3r ...

  9. X264编码流程详解(转)

    http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如 ...

  10. H.264中POC类型之探讨

    有 B 图像的场合.POC 表示的是图像显示顺序.由于POC对于参考序列的初始化,重排序及标记关系重大,所以做了如下的分析,以下讨论情况是针对帧编码. pic_order_cnt_type=0的时候: ...

最新文章

  1. Pascal's Triangle
  2. sql isnull怎么没用_SQL语言在数据工程(Data Engineering)中的运用(一)
  3. 592zn rom/apk 自动签名工具_ios超级签名服务器
  4. 在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?
  5. ES2015 中的函数式Mixin
  6. marquee 移动属性
  7. 贝叶斯软件genle教程_一文读懂蒙特卡罗方法和应用贝叶斯推理
  8. c#12星座速配代码_白羊座今日运势|2020/12/11
  9. springMVC实体用注解管理,多对多 set集合元素排序问题 解决
  10. JS 同步本地时间和服务器时间
  11. net core 通过js打印集合(创建树)
  12. 升级设置win2008r2开发环境,遇到问题小结
  13. 数据之美系列5(转载)
  14. 【老骥伏枥-狗年大礼包】嵌入式linux逆向工程,手把手教你作黑Q-第三讲
  15. OpenModelica.VehicleInterfaces离线库安装
  16. c语言char str什意思,char *str与*str的区别
  17. Hbuilder We're sorry
  18. 用Python做一个变态版的《超级玛丽》游戏
  19. 精选大数据面试真题10道(附答案详细解析)
  20. pc端,移动端,客户端的区别

热门文章

  1. gcc 的宏替换 __stringify
  2. WaitForMultipleObjects、WaitForSingleObject、GetExitCodeThread
  3. python创建二维空列表_python创建与遍历List二维列表的方法
  4. android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app
  5. 常用数据库高可用和分区解决方案(2) — MongoDB篇
  6. Wingdings特殊字符及符号对照表
  7. IE ADD for rms
  8. redis 哨兵的原理
  9. 华为云的Kubernetes实践之路
  10. 面向对象思想,简单实例