BLA、CRA、IDR,NALU

本文转载自http://blog.csdn.net/u012868357/article/details/50999834

一,BLA、CRA、IDR 
BLA、CRA、IDR是三种随机接入点(RAP,random access point)。

(1)IDR(Instantaneous Decoding Refresh)是在H.264中定义的结构。在H.264中,IDR帧一定是I帧,而且一定是GOP的开始,也是H.264 GOP的关键帧。但是反过来却不成立,I帧不一定是IDR帧。GOP的长度不是定死不变的,在H.264的编码器中,如果判定场景发生变化,那么即使不到原定GOP的末尾,也会在这个位置加入一个IDR,作为新一个GOP的开始。此时这个GOP的长度就被缩小了。

(2)闭合GOP和开放GOP(closed GOP/open GOP),CRA。闭合GOP是H.264中GOP的格式。在H.264的GOP中,所有的GOP都是独立解码的,与其他GOP无关,即它们都是“封闭”的。但是在HEVC中,GOP的结构发生了变化,采用了“开放”的结构,在解码过程过可能会参考其他GOP的数据。这时,一个GOP的起始帧命名为CRA,clean random access,同样采用帧内编码,但是这个GOP内的帧间编码帧可以越过CRA参考前一个GOP的数据,这便是GOP的open。

(3)关于BLA。个人感觉BLA只是CRA在视频流切换情况下的一种特例。视频流在某个RAP上要求切换到另一个视频流继续解码,则直接将该CRA同另一个视频流中的接入CRA连接,后者便是BLA。由于BLA之前解码到缓存的视频流与当前视频流无关,因此其特性类似于直接从该点进行随机存取后的CRA。

二,NALU 
NALU流生成字节流的过程: 
1.在每个NALU前插入3bytes的起始码0x000001; 
2.如果NALU的类型为VPS、SPS、PPS或AU的第一个NALU,则在起始码前再插入0x00; 
3.在视频流的首个NALU的起始码前插入0x00; 
4.根据需要在每个NALU后增加0x00,作为填充数据。

备注:HTM11.0中,每个图像封装在一个NALU中,若该NALU前有VPS、SPS、PPS,则该NALU以0x000001为起始码;若无,则该NALU以0x00000001为起始码。




VPS、SPS、PPS以0x00000001开始 
0x40的二进制为0100 0000,左边第一位必须为0,若为1则错误;100000是该NALU的类型,00100000十进制为32,对应VPS; 
0x42的二进制为0100 0010,其中的100001是NALU的类型,0010 0001的十进制为33,对应SPS;0x44的二进制为0100 0100,其中的100010是NALU的类型,0010 0010的十进制为34,对应PPS; 
一般的NALU以0x000001开始 
0x26的二进制为0010 0110,其中的010011是NALU的类型,0001 0011的十进制为19,对应IDR_W_RADL;

参考:http://blog.csdn.net/teamlet/article/details/9078659
http://blog.csdn.net/xfding/article/details/5468195

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值