H264码流的输出顺序是编码顺序,所以在编码B帧的时候,由于B是双向预测,需要先编码后面编码帧P/I,这时候先输出I/P,后面才有B帧。

在解码段拿到相应的I/P帧后,不能马上丢到buffer list里面,还需要等待后面的B帧,解码B帧后再reorder.所以相应产生了两个参数。

poc,frame_num,这两个元素在slice级输出POC,和frame_num的概念:

POC:picture order count,是一个顺序计数器,代表显示顺序,假如是场编码,那么分别要对两场都有不同的值,比如对第一帧的两场top,bottom分别为0,1,所有的帧都包括在里面,包括B帧也需要计数,比如序列IPBPB,假如是帧编码,那么序号分别为0,4,2,8,6,顶底两场分别为0,0,4,4,2,2,8,8,6,6实际上这个并不输出到码流里面,假如是场变码那么是0,1,4,5,2,3,8,9,6,7

  frame_num ,是一个顺序计数器,代表帧的编码顺序,由于代表帧,计数器递增基数为2,所以总是偶数,
  比如序列IPBPB如果是帧编码,那么0,2,4,6,如果是场编码,那么是0,0,2,2,4,4,4,4,6,6
  第一帧I不管top,bottom,都是0,第二帧P,top,bottom都是2,第3帧B,4,第四P也是4,第五B是6

  注意B帧不能算编码帧,所以B slice中的frame_num只能等于后向参考帧的frame_num,注意当frame_num达到设定的最大值的时候,
 frame_num,将重新归0,POC一般是分为两部分,一部分为高位,一部分为低位,上面说的都是低位pic_order_cnt_lsb,
  当pic_order_cnt_lsb达到最大值的时候,将向高位Pic_Order_Cnt_Msb进位,高位加上低位才是该场的POC.

 AVS中输出顺序还和解码图片的等级有关
 同样,解码顺序和显示顺序是不同的

最新文章

  1. 20145220&20145209&20145309信息安全系统设计基础实验报告(3)
  2. js创建对象的方法
  3. android 入门-防微信拍摄视频 按钮事件处理
  4. 关于原生的Javascript
  5. Effective C++第三遍
  6. uva--1339 - Ancient Cipher(模拟水体系列)
  7. Unity安卓连接profile调试
  8. RAID0_RAID1_RAID10_RAID5各需几块盘才可组建
  9. java.util.concurrent BlockingQueue
  10. 两句话概括cmd和amd的区别
  11. SQLServer之修改PRIMARY KEY
  12. Service 启动Activity
  13. 5月21 汽车查询及批量删除----php方法
  14. 代码问题: 【ADNet】
  15. 在springboot中 使用jsp
  16. 新版本PHP使用更方便了
  17. !!! jquery mobile常用代码
  18. Easyui datagrid绑定数据,新增,修改,删除写法
  19. 配置SpringBoot-从日志系统配置说起
  20. LeetCode403. Frog Jump

热门文章

  1. 远程访问linux环境安装图形界面问题解决汇总
  2. 【java】 java 实现mysql备份
  3. nova分析(5)—— nova-conductor
  4. 【转】如何使用PhoneGap打包Web App
  5. 关于今天mysql数据库的一系列问题
  6. 【Executor】配置ThreadPoolExecutor
  7. bzoj4165: 矩阵
  8. Linux LVM简明教程
  9. 【原】sql 查询结果合为一行
  10. Segment fault及LINUX core dump详解 (zz)