3字节起始码和4字节起始码
来源:互联网 发布:网络流行歌曲 编辑:程序博客网 时间:2024/06/02 02:14
if( next_bits( 24 ) != 0x000001 )
zero_byte f(8)
start_code_prefix_one_3bytes f(24)
根据B.1节,可以看到所谓的4字节起始码是(zero_byte + 3字节起始码)。那么看zero_byte的说明,就可以明白zero_byte什么时候出现,也就能明白什么时候出现4字节起始码:
1. SPS、PPS nalu是4字节起始码;
2. Access Unit的首个nalu是4字节起始码(参见7.4.1.2.3)。
这里举个例子说明,用JM可以生成这样一段码流(不要使用JM8.6,它在这部分与标准不符),这个码流可以见本楼附件:
SPS (4字节头)
PPS (4字节头)
SEI (4字节头)
I0(slice0) (4字节头)
I0(slice1) (3字节头)
P1(slice0) (4字节头)
P1(slice1) (3字节头)
P2(slice0) (4字节头)
P2(slice1) (3字节头)
I0(slice0)是序列第一帧(I帧)的第一个slice,是当前Access Unit的首个nalu,所以是4字节头。而I0(slice1)表示第一帧的第二个slice,所以是3字节头。P1(slice0) 、P1(slice1)同理。
总结:
1 附录 B字节流在一个byte_stream_nal_unit的前后可能出现若干个0x00,仅用作填充之用。这个不常见。
2 4字节头只出现在SPS、PPS和7.4.1.2.3规定的Access Unit的首个nalu。其余情况都是3字节头
一共有两种起始码:3字节的0x000001和4字节的0x00000001
3字节的0x000001只有一种场合下使用,就是一个完整的帧被编为多个slice的时候,包含这些slice的nalu使用3字节起始码。其余场合都是4字节的。
转自http://www.cnblogs.com/soniclq/archive/2012/05/04/2482185.html
- 3字节起始码和4字节起始码
- H264码流的NAL起始字节分析
- 对H264码流数据的NAL起始字节分析(档次、NALU类型)
- H264 Mpeg起始码
- H.264起始码
- H.264和MPEG4起始码(startcode)
- H264和MPEG4起始码(startcode)
- h264和mpeg4的起始码
- H264和MPEG4起始码(startcode)
- H264和MPEG4起始码(startcode)
- 起始
- 起始
- 起始
- 起始
- 起始
- 利用Sql为Code128码添加起始符和休止符
- Java字节码和Dalvik字节码
- 机器码和字节码
- 机器学习中的相似性度量
- 10.3
- Spark实践-日志查询
- “啊D”注入测试工具
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)A. Checking the Calendar
- 3字节起始码和4字节起始码
- 从Java源码角度彻底理解String,StringBuilder和StringBuffer的区别
- 10.4
- Linux Mint (专题之开篇介绍)
- Http中Post、Get区别
- 10.5
- python---001
- CSS—左边固定,右边自适应
- GitHub 上有哪些值得推荐的开源电子书?