📄 rfc3984(for264).txt
字号:
NAL Unit Type Content of NAL unit NRI (binary) ---------------------------------------------------------------- 1 non-IDR coded slice 10 2 Coded slice data partition A 10 3 Coded slice data partition B 01 4 Coded slice data partition C 01 注释: 像以前提起的, 非参考图像NRI值是00. H.264编码器应该设置冗余编码参考图像的编码片和编码片分区NAL单元的NRI值为01 (二进制格式). 对于NAL单元类型24~29的NRI的定义在本文5.7,5.8给出。 对于nal_unit_type范围在13到23的NAL单元的NRI值没有推荐的值,因为这些值保留给ITU-T,ISO/IEC. 对于nal_unit_type为0或30,31的NAL单元的NRI值也没有推荐的值,因为这些值的语义本文没有指定。5.4. 打包方式 本文指定三种打包方式: o 单NAL单元方式 o 非交错方式 o 交错方式 单NAL单元方式目标是常规的系统,该系统兼容ITU-T H.241 [15] (12.1). 非交错方式目标是常规系统,可以不符合 ITU-T H.241建议.在非交错方式, NAL单元按照NAL单元解码顺序传送。交错模式目标是不要求非常低端到端延迟的系统。 交错方式允许传送NAL单元不按照NAL单元解码顺序。 使用的打包方式可以通过OPTIONAL packetization-mode MIME参数的值指定或外部手段。使用的打包方式控制那个NAL 单元类型在RTP荷载中允许。表3 总结对每个打包方式允许的NAL单元类型。有些NAL单元类型值(在表3中指示为没有定义) 保留为将来扩展. 那些类型的NAL单元不应该被发送者发送,接受者必须忽略他们。例如: 1-23, 相关的包类型"NAL unit",允许出现在 "单NAL单元方式" 和"非交错方式", 不允许在"交错方式". 打包方式在第六节更详细解释。 表 3. 每个打包方式允许的NAL单元类型总结(yes = 允许, no = 不允许, ig = 忽略) Type Packet Single NAL Non-Interleaved Interleaved Unit Mode Mode Mode ------------------------------------------------------------- 0 undefined ig ig ig 1-23 NAL unit yes yes no 24 STAP-A no yes no 25 STAP-B no no yes 26 MTAP16 no no yes 27 MTAP24 no no yes 28 FU-A no yes yes 29 FU-B no no yes 30-31 undefined ig ig ig5.5. 解码顺序号(DON) 在交错打包方式, NAL单元的传输顺序允许和NAL单元的解码顺序不同。解码顺序号(DON)是荷载结构中的一个域 或一个获得变量指示NAL单元的解码顺序。 不按解码顺序传输的例子和原理以及DON的使用见13节。 传输和解码顺序的耦合由OPTIONAL sprop-interleaving-depth MIME参数控制,见下。当OPTIONAL sprop-interleaving-depth MIME 参数的值等于0 (明确或缺省) 或者外部手段不允许传输NAL单元顺序不同于他们的解码顺序, NAL单元的 传输顺序必须和他们的解码顺序一致。当OPTIONAL sprop-interleaving-depth MIME参数的值大于0或者传输NAL单元 与解码序号不一致通过外部手段被允许时, o 在MTAP16/MTAP24中的NAL单元顺序不要求是NAL单元的解码顺序 o 在两个连续包中的STAP-B, MTAP,FU解嵌套产生的NAL单元序号不要求是NAL单元解码序号。 用于单NAL单元包 STAP-A和FU-A的RTP荷载结构不包含DON. STAP-B,FU-B结构包含DON, MTAP结构允许推导DON象5.7.2指定的一样. 注释:档FU-A出现在交错方式,后边总跟一个FU-B, 他设置自己的DON. 注释: 一个传输器想封装单个NAL单元每个包并且传输包不按照他们的解码顺序,可以使用STAP-B包类型。 在单个NAL单元打包方式, NAL单元的传输顺序,由RTP顺序号确定, 必须和他们的NAL单元解码序号一致。 在非交错打包方式中, 在单NAL单元包,STAP-A,FU-A中NAL单元的传输顺序必须和他们的NAL单元解码顺序一致. 在一个STAP中的NAL单元必须按照他们的NAL单元解码顺序出现。因此,解码顺序首先由STAP隐含顺序提供, 第二 通过RTP序号提供(对于STAPs, FUs, 单个NAL unit包之间的)。 对于运送在STAP-B, MTAP以及FU-B开始的一些列分片单元中的NAL单元的DON值的信令在5.7.1, 5.7.2, 指定5.8。 传输顺序中的NAL单元的第一个DON值可以设置成任何值,DON值的范围是0到65535。到达最大值后, DON的值回绕到0. 包含在STAP-B, MTAP,或FU-B开始的一系列分片单元中的两个NAL单元的解码顺序按照如下确定: DON(i)是索引为i传输顺序的解码顺序号. 函数don_diff(m,n)定义如下: If DON(m) == DON(n), don_diff(m,n) = 0 If (DON(m) < DON(n) and DON(n) - DON(m) < 32768), don_diff(m,n) = DON(n) - DON(m) If (DON(m) > DON(n) and DON(m) - DON(n) >= 32768), don_diff(m,n) = 65536 - DON(m) + DON(n) If (DON(m) < DON(n) and DON(n) - DON(m) >= 32768), don_diff(m,n) = - (DON(m) + 65536 - DON(n)) If (DON(m) > DON(n) and DON(m) - DON(n) < 32768), don_diff(m,n) = - (DON(m) - DON(n)) don_diff(m,n)正值指示具有传输顺序n的NAL单元解码顺序跟在具有传输顺序m的NAL单元后面。 don_diff(m,n)等于0 指示NAL单元解码顺序号可以按照任何NAL单元优先。don_diff(m,n)的负值指示索引为n的NAL单元解码序号先于索引为 m的NAL单元。 DON相关域的值(DON, DONB, and DOND; 5.7)必须使得上面指定的DON的值确定的解码器顺序号符合NAL单元解码序号。 如果两个NAL解码单元顺序的NAL单元交换,新的顺序号不符合NAL单元解码顺序,NAL单元不可以有相同的DON值. 如果 在一个NAL单元流中两个连续NAL单元的序号交换并且新的序号仍符合NAL单元解码顺序号,NAL解码单元可以有相同的 DON值。例如:当使用的视频编码profile允许任意分片顺序, 一个编码图像的所有编码片的NAL单元可以有相同的DON 值。因此,相同DON值的 NAL单元可以按照任何顺序解码,有不同DON值的NAL单元应该按照上面指定的顺序传递给解码器。 当两个连续的NAL单元解码顺序的NAL单元有不同的DON值, 第二个NAL单元的DON应该是第一个NAL单元的DON值加1。 解包过程恢复NAL单元解码的例子在第7部分给出。 注: 接收者不应该预测两个解码顺序号连续的NAL的DON值的绝对差等于1,甚至在没有错误的传输过程。 没有要求增加1,就像关联DON的值到NAL单元的时间一样, 不可能知道所有NAL单元是否分发给接收者。例如: 一个网关可以不转发非引用的编码的NAL片或SEI NAL 单元,当需要转发的网络带宽不足时。;另外的例子: 现场广播被预先编码的内容不时的打断,如广告。预先编码的第一个内帧图像事先传送使得接收端准备可用。 当传送第一个内帧时,发送者不能精确知道在解码顺序后的第一个内帧前,有多少NAL单元被编码。因此, 预编码 片断的第一个内帧的DON值不得不估算,当他们传送时,因此DON中可能产生空隙。5.6. 单个NAL单元包 定义在此的单个NAL单元包必须只包含一个类型定义在[1]中的NAL单元。这意味聚合包和分片单元不可以用在单个NAL 单元包中。一个封装单个NAL单元包到RTP的NAL单元流的RTP序号必须符合NAL单元的解码顺序。单个NAL单元包的结构 显示在图2。 注: NAL单元的第一字节和RTP荷载头第一个字节重合。 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |F|NRI| type | | +-+-+-+-+-+-+-+-+ | | | | Bytes 2..n of a Single NAL unit | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | :...OPTIONAL RTP padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 2. 单个NAL单元包的RTP荷载格式。5.7. 聚合包 聚合包是本荷载规范的NAL单元聚合安排。本计划的引入是反映两个主要目标网络差异巨大的MTU: 有线IP网络(MTU 通常被以太网的MTU限制; 大约1500 字节), 基于无线通信系统的IP或非IP (ITU-T H.324/M)网络,它的优先传输最大单元是254或更少。为了阻止连个世界媒体的转换以及避免不必要的打包 负担,引入聚合单元安排。 本规范定义了两类聚合包: o 单时间聚合包(STAP): 聚合相同NALU时间的NAL单元。两类STAP被定义, 一类不包括DON (STAP-A)另一类包括DON (STAP-B). o 多时间聚合包(MTAP): 聚合具有差异NALU时间的NAL单元. 两个MTAP被定义, 差别在 NAL单元时戳位移长度不同。 词语NALU-时间被定义成如果NAL单元被传输他自己的RTP包中时RTP的时戳。 运送在一个聚合包中的每个NAL单元封装在一个聚合单元中。参见下面四个不同聚合单元和他们的特性。 聚合包的RTP荷载格式的结构见图3。 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |F|NRI| type | | +-+-+-+-+-+-+-+-+ | | | | one or more aggregation units | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | :...OPTIONAL RTP padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 图 3. 聚合包的RTP荷载格式。 MTAPs,STAPs公用以下打包规则:RTP时戳必须设置为被聚合NAL单元中最早NALU时间。NAL单元类型的类型域必须被设置成 适当的值,像表4描述的一样. 如果聚合NAL单元的F位是0,F位必须清除,否则,则必须被设置。 NRI的值必须是运送在聚合包中NAL单元的最大值。 表 4. STAPs和MTAPs的类型域 Type Packet 时戳位移域长度(位) DON相关的域(DON, DONB, DOND)是否存在 -------------------------------------------------------- 24 STAP-A 0 no 25 STAP-B 0 yes 26 MTAP16 16 yes 27 MTAP24 24 yes RTP头的marker位设置为聚合包中最后NAL单元如果单独封装在RTP传输中对应Marker位的值。 聚合包的荷载由一个或多个聚合单元组成。见5.7.1,5.7.2四个不同类型的聚合单元。一个包聚合包可以运送必要多的 聚合单元; 但是, 聚合包中整个数据显然必须适合于一个IP包,并且大小应该选择使得结果的IP包比MTU小。一个聚合包 不可以包含5.8中指定的分片单元。聚合包不可以嵌套;即,一个聚合包包含另一个聚合包。 5.7.1. 单时间聚合包 单时刻聚合包(STAP)应该用于当聚合在一起的NAL单元共享相同的NALU时刻。STAP-A荷载不包括DON,至少包含一个单时刻聚合单元 见图4. STAP-B荷载包含一个16位的无符号解码顺序号(DON) (网络字节序)紧跟至少一个单时刻聚合单元。见图5. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : | +-+-+-+-+-+-+-+-+ | | | | single-time aggregation units | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 图 4. STAP-A荷载格式 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : decoding order number (DON) | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -