h.264杂记

h.264的使用00 00 01作为起始码,通常为了满足nal的长度要求(比如字节对齐,会在前添加0,就会有00 00 00 01的情况出现)


起始码后的第一位是禁止位(forbidden_zero_bit),总是为0,置1表示网络传输出错了,该帧废掉,接下来的两个bit是指示当前NAL 的优先级(nal_ref_idc),取0-3的值
接下来的7bit是nal_unit_type,指明当前NAL unit 的类型。


nal_ref_idc shall be equal to 0 for all NAL units having nal_unit_type equal to 6, 9, 10, 11, or 12.
优先级当nal_unit_type为6, 9, 10, 11, or 12时,优先级应为值0


H.264 包含VCL(视频编码层)和NAL(网络提取层)


VCL只存在于nal_unit_type值为1-5的nalu中,即1、不分区、非IDR 图像的片;2、片分区A;3、片分区B;4、片分区C;5、IDR 图像中的片
VCL NAL单元只是nal_unit_type只为1-5的nal单元




IDR立即刷新参考


NAL 单元  NALU


基本编码图像(PCP,primary coded picture)
primary coded picture 基本编码图像: 一幅图像的编码表示,用于与本建议书 | 国际标准相符合
的比特流解码过程中。基本编码图像包含图像的所有宏块。只有基本编码图像才会影响解码过程。
因此是否可以理解为基本编码图像


access unit 访问单元:一组NAL单元,通常包含一幅基本编码图像,一个访问单元的解码通常产生一幅解码图像


一个访问单元由一个基本编码图像、零或多个相应的冗余编码图像以及零或多个非VCL NAL 单元组成。
按照这种说法,一个访问单元肯定有一个


在基本编码图像的最后一个VCL NAL 单元之后的第一个任何下列NAL 单元代表了一个新的访问单元的开
始。
— 访问单元分隔NAL单元(存在时)
— 序列参数集NAL单元(存在时)
— 图像参数集NAL单元(存在时)
— SEI NAL单元(存在时)
— nal_unit_type值在14-18之间(包括)的NAL单元
— 基本编码图像的第一个VCL NAL单元(总是存在)
(在海康ipc DS-2CD3232-I3出的流,补充增强信息单元6, 分界符9单独成了一包数据包回调出来,这是不符合标准的?)




访问分隔符
access_unit_delimiter_rbsp( )
{
  primary_pic_type                     //u(3)读入3个bit,识别为无符号数
  rbsp_trailing_bits( ) //填充位
}




efi单元的位置??


rbps如何判别rbps流结束:一个nal的rbps流最后一个不为0的bit是结束位






辅助增强信息消息语法,例子如下
00, 00, 00, 01, 06, 06, 01, c4, 80
00, 00, 00, 01, 06是nal部分06, 01, c4, 80是载荷
06是负载类别,长度是01,信息是c4了,80是结束位部分
这个对应了 恢复点SEI消息语法,c4的二进制为11000100


06, 01, c4, 80,
0000 0100 0000 0001 


SODB  RBps包含一个SODB






访问单元分隔符RBSP语义,例子如下
00, 00, 00, 01, 09, 10
00, 00, 00, 01, 09是nal部分,10是载荷,二进制是0001 0000, 从rbps读入3个bit(u3),就是 000,就是slice_type是0,表示是i帧,接下来的1是rbps结束位,后面应该都是0的填充


00, 00, 00, 01, 09, 30       30是载荷,二进制是0011 0000, 从rbps读入3个bit(u3),就是 001,就是slice_type是1,表示是i帧或p帧,接下来的1是rbps结束位,后面应该都是0的填充    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Three.js是一款基于WebGL的JavaScript 3D引擎,可以用于开发VR应用程序。使用Three.js创建VR应用程序的简单步骤包括学习Three.js的基本知识,了解WebVR API,以及使用Three.js的相机控件OrbitControls来控制视角。\[1\]\[2\]\[3\] 你可以通过学习Three.js中文教程和相机控件的文档来深入了解和使用Three.js进行VR开发。 #### 引用[.reference_title] - *1* [Three.js如何创建VR应用程序](https://blog.csdn.net/baidu_29701003/article/details/129805443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Three.js杂记(七)—— VR全景效果制作·上(含python爬虫偷碎图,canvas重组图片)](https://blog.csdn.net/qq_36171287/article/details/112438341)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Three.js初体验——VR全景展示](https://blog.csdn.net/kitty_ELF/article/details/118571576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值