H264 PPS 成员值含义
H264基本概念之宏块、片和片组

H264基本概念之宏块、片和片组
这几个概念对比音频信号处理可是全新的,下面简要介绍一下定义和作用:
1、宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。
宏块分为I、P、B宏块,I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;B宏块则是利用前后向的参考图形进行帧内预测;
以下是宏块的句法单元,来自参考文献2
2、片(Slice):一帧视频图像可编码成一个或者多个片,每片包含整数个宏块,即每片至少一个宏块,最多时包含整个图像的宏块。
片的目的:为了限制误码的扩散和传输,使编码片相互间保持独立。
片共有5种类型:I片(只包含I宏块)、P片(P和I宏块)、B 片(B和I宏块)、SP片(用于不同编码流之间的切换)和SI片(特殊类型的编码宏块)。
以下是片的句法结构:片头规定了片的类型、属于哪个图像、有关的参考图像等;片的数据包含了一系列宏块和不编码数据。
3、片组是一个编码图像中若干宏块的一个子集,包含一个或若干个片。
一般一个片组中,每片的宏块是按扫描次序进行编码的,除非使用任意片次序(Arbitrary Slice Order, ASO)一个编码帧中的片之后可以跟随任一解码图像的片。
另外一种片组,灵活宏块次序(Flexible Macroblock Ordering, FMO)用灵活的方法,把编码的宏块宏块映射到相应的片组中,见下图:
参考文献:
1、新一代视频压缩编码标准;
2、H264 and MPEG-4 video compression。
H264编码详细说明

序列、图像(存储单元)、宏块、像素一个序列的第一个图像叫做IDR 图像(立即刷新图像),IDR 图像都是I 帧图像。
H.264 引入IDR 图像是为了解码的重同步,当解码器解码到IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。
●I帧(帧内编码帧)是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码。
视频序列中的第一个帧始终都是I帧。
I帧可以用来实现快进、快退以及其它随机访问功能。
如果新的客户端将参与查看视频流,编码器将以相同的时间间隔或者根据要求自动插入I帧。
I帧的缺点在于它们会占用更多的数据位,但I帧不会产生可觉察的模糊现象。
●P帧(帧间预测编码帧)需要参考前面的I帧和/或P帧的不同部分才能进行编码。
与I帧相比,P帧通常占用更少的数据位,但其缺点是,由于P帧对前面的P和I参考帧有着复杂的依赖性,因此对传输错误非常敏感。
●B帧(双向预测编码帧)需要同时以前面的帧和后面的帧作为参考帧。
不是参考帧,不会造成解码错误的扩散。
运算比较复杂,CPU占用较高。
I、B、P各帧是根据压缩算法的需要人为定义的,它们都是实实在在的物理帧。
一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50。
网络打包、网络抽象层单元(NALU)、片NALU的网络打包:(1) 额外开销要少,使MTU尺寸在100~64k字节范围都可以;(2) 不用对包内的数据解码就可以判别该包的重要性;(3) 载荷规范应当保证不用解码就可识别由于其他的比特丢失而造成的包不可解码;(4) 支持将NALU分割成多个RTP包;(5) 支持将多个NALU汇集在一个RTP包中。
●灵活宏块次序(FMO) 可以通过设置宏块次序映射表(MBAmap)来任意地指配宏块到不同的片组,FMO模式打乱了原宏块顺序,降低了编码效率,增加了时延,但增强了抗误码性能。
划分图像的模式各种各样,主要的有棋盘模式、矩形模式等。
论坛最近经常有人问H264的效果等问题

论坛最近经常有人问H.264的效果等问题,我实在是没时间一一做答,再者各人观点不同,干脆给出个测试报告,大家自己评价吧。
测试条件:1、赛扬1G,256MB SDRAM,Win98SE2、H.264只支持16x16、8x8、4x4模式,部分MMX优化(量化等耗时部分没有优化)3、只测试 300 kbps、500 kbps、1000 kbps、1500 kbps几种环境4、MPEG4为半点MV,H.264为1/4点MV5、I帧间隔一律为646、帧率均设置为25 Hz7、MPEG4为了提高PSNR,没有使用MMX/SSE等简化算法测试序列:A、电影中截取的250帧,含有渐亮、渐暗、场景渐渐切换、全屏横向运动等复杂环境备注:1、MPEG4编码器输出的总PSNR均值和YUV分量和的均值不同,所以我重新计算了一下,新的值比编码器给出的大约大1左右;2、H.264编码器没有码率控制,只好使用修改Qp来控制了,在实际使用中由于有码率控制,所以效果应该比我的测试结果好。
3、H.264由于是简化版本,所以其编码速度约为1 fps4、H.264的码率只能精确到整数部分,小数部分均设为0了5、为了便于比较,H.264部分增测了一些码率测试结果(均为平均值):1、MPEG4部分视频序列A、H263量化方式:379.00 kbps: PSNR=39.767(Y=37.040, U=40.998, V=41.262) 559.22 kbps: PSNR=42.480(Y=40.432, U=43.298, V=43.709) 1073.48 kbps: PSNR=44.714(Y=42.861, U=45.415, V=45.865) 1583.01 kbps: PSNR=45.634(Y=43.598, U=46.378, V=46.926)视频序列A、MPEG4量化方式:375.12 kbps: PSNR=39.954(Y=37.059, U=41.297, V=41.505) 562.53 kbps: PSNR=42.647(Y=40.355, U=43.554, V=44.033) 1054.25 kbps: PSNR=45.140(Y=43.157, U=45.852, V=46.411) 1539.31 kbps: PSNR=46.311(Y=44.318, U=46.961, V=47.653) 2541.80 kbps: PSNR=47.082(Y=45.049, U=47.727, V=48.470)2、H.264部分视频序列A、2参考帧、CAVLC:295.00 kbps: PSNR=41.375(Y=38.805, U=42.424, V=42.894)489.00 kbps: PSNR=43.923(Y=42.187, U=44.500, V=45.081)533.00 kbps: PSNR=44.512(Y=42.664, U=45.151, V=45.720)1027.00 kbps: PSNR=46.866(Y=45.672, U=47.114, V=47.811)视频序列A、5参考帧、CAVLC:322.00 kbps: PSNR=41.855(Y=39.297, U=42.854, V=43.413)488.00 kbps: PSNR=43.896(Y=42.122, U=44.504, V=45.060)1024.00 kbps: PSNR=46.860(Y=45.650, U=47.118, V=47.813)视频序列A、2参考帧、CABAC:265.00 kbps: PSNR=41.925(Y=39.461, U=42.875, V=43.439)359.00 kbps: PSNR=43.362(Y=41.347, U=44.088, V=44.651)510.00 kbps: PSNR=44.712(Y=43.246, U=45.155, V=45.736)1015.00 kbps: PSNR=47.198(Y=46.067, U=47.406, V=48.122)视频序列A、5参考帧、CABAC:164.00 kbps: PSNR=39.635(Y=36.014, U=41.295, V=41.597)262.00 kbps: PSNR=41.855(Y=39.297, U=42.854, V=43.413)505.00 kbps: PSNR=44.722(Y=43.253, U=45.172, V=45.740)1008.00 kbps: PSNR=47.193(Y=46.050, U=47.419, V=48.110)视频序列A、1参考帧、CAVLC、2个B帧:536.00 kbps: PSNR=41.794(Y=39.420, U=42.723, V=43.239)。
H.264流媒体协议格式中的AnnexB格式和AVCC格式深度解析

H.264流媒体协议格式中的AnnexB格式和AVCC格式深度解析本⽂需要读者对H.264流有⼀定的了解才可以理解2种格式差异。
⾸先要理解的是没有标准的H.264基本流格式。
⽂档中的确包含了⼀个Annex,特别是描述了⼀种可能的格式Annex B格式,但是这个并不是⼀个必须要求的格式。
标准⽂档中指定了视频怎样编码成独⽴的包,但是这些包是怎样存储和传输的却是开放的。
⼀. Annex Bwork Abstraction Layer Units视频编码成的包叫做Network Abstraction Layer Units, 也简称为NALU、NAL,每个NALU包都可以被单独的解析和处理,每个NALU包的第⼀个字节包含了NALU类型,bit3-bit7包含的内容尤其重要(bit 0⼀定是off的,bit1-2指定了这个NALU是否被其他NALU引⽤)。
NALU格式分为2类,VCL和non-VCL,总共有19种不同的NALU格式。
VCL, Video Coding Layer packets contain the actual visual information. 即视频编码后的数据Non-VCL, contain metadata that may or may not be required to decode the video. ⾮视频数据,配置信息⼀个单独的NALU包、或者甚⾄⼀个VCL NALU包都不意味着是⼀个独⽴的帧,⼀帧数据可以被分割成⼏个NALU,⼀个或多个NALU组成了⼀个Access Units(AU),AU包含了⼀个完整的帧。
把帧分割成⼏个独⽴的NALU需要耗费许多CPU资源,所以分割帧数据并不经常使⽤。
以下是所有定义了的NALU类型:0 Unspecified non-VCL1 Coded slice of a non-IDR picture VCL2 Coded slice data partition A VCL3 Coded slice data partition B VCL4 Coded slice data partition C VCL5 Coded slice of an IDR picture VCL6 Supplemental enhancement information (SEI) non-VCL7 Sequence parameter set non-VCL8 Picture parameter set non-VCL9 Access unit delimiter non-VCL10 End of sequence non-VCL11 End of stream non-VCL12 Filler data non-VCL13 Sequence parameter set extension non-VCL14 Prefix NAL unit non-VCL15 Subset sequence parameter set non-VCL16 Depth parameter set non-VCL17..18 Reserved non-VCL19 Coded slice of an auxiliary coded picture without partitioning non-VCL20 Coded slice extension non-VCL21 Coded slice extension for depth view components non-VCL22..23 Reserved non-VCL24..31 Unspecified non-VCL有⼏种NALU格式的包包含了⾮常有⽤的信息。
RTP的H.264视频传输技术的探究

RTP的H.264视频传输技术的探究RTP(Real-time Transport Protocol)是一种用于在Internet上传输多媒体数据的通讯协议。
在H.264视频传输领域,RTP协议也扮演着非常重要的角色。
本文将探究RTP 的H.264视频传输技术,在传统RTP技术的基础上进行了怎样的变化和创新,以及它所带来的优势和挑战。
我们来了解一下H.264视频传输技术的基本原理。
H.264是一种视频压缩标准,它可以将高质量视频进行高效地压缩,从而减小视频文件的大小和网络带宽的需求。
H.264在视频质量和传输效率方面都具有显著的优势,因此在视频传输领域被广泛应用。
而RTP协议则是用于在IP网络上传输多媒体数据流的协议,它提供了一种标准的、灵活的、适用于各种应用场景的方法,用于传输音频和视频数据。
RTP协议可以保证多媒体数据的实时传输,同时还能提供同步、复用、定时和带宽管理等功能。
在H.264视频传输领域,RTP协议可以很好地与H.264技术相结合,实现高效的视频传输。
RTP的H.264视频传输技术在传统的RTP技术上进行了怎样的变化和创新呢?H.264视频传输技术对传统RTP协议的扩展和优化,使得其可以更好地支持H.264视频编码标准。
H.264视频传输技术增加了一系列新的RTP扩展头,用于传输H.264视频流的参数和控制信息,例如Sequence Parameter Set(SPS)和Picture Parameter Set(PPS),这样可以使接收端根据这些信息对视频进行解码。
这样一来,RTP协议就可以更好地支持H.264视频格式的传输。
H.264视频传输技术还对RTP协议进行了一些编解码器级别的优化,例如在传输过程中对不同类型的帧进行优先级的调整和处理,使得关键帧和预测帧能够更快地在传输端和接收端之间进行同步和传输,从而提高传输效率和视频质量。
H.264视频传输技术还对RTP 协议的报文格式和传输方式进行了一定的调整,以更好地满足H.264视频编码标准的特点和需求。
H.264参考帧

H264 中的参考帧列表H264中允许从多至15个帧里面选择1帧或者2帧出来作为参考进行预测,所以必须引入一个列表来管理这些参考图像,对与P slice而言,对应 list0,对于B slice 而言,还需要多一个 list1,因为 B slice 是进行的两次预测!(一个前向一个后向\两个前向\两个后向)参考帧分为 long term / short term 两种,即所谓的长期参考帧和短期参考帧。
其中长期参考帧用 LongTermPicNum来进行索引,而短期参考帧则利用 frame_num 或者 POC 来进行索引(默认索引顺序即初始化顺序),再具体一点:P slice 的短期参考利用 frame_num 来进行索引,且按照降序排列(即离当前图像最近的前向图像排在第0位)B slice 的短期参考利用 POC 来进行索引,对其List0而言,先按照POC降序排列处于其前向的参考帧然后再按照POC升序排列处于其后向的参考帧;对其List1而言,先按照POC升序排列处于其后向的参考帧然后再按照POC降序排列处于其前向的参考帧。
对于每个MB而言,在mb_pred()中会传输其参考索引,以表明该MB从list0\list1中选择哪一个作为参考,而对于一个Slice 而言,可能存在该 Slice 内部大多数MB都选择了某一个索引号较大的参考帧,如设定list0中的索引从0~5,而大多数MB都选择了5,在用哥伦布码进行编码时,将会消耗较多的bit!所以在初始化排序好后,会根据当前 slice 的具体情况,对列表进行重排序,如将此时排在索引5位置的POC与排在0位置的POC进行交换,那么mb_pred()中传输参考索引所需的bit数就大大减少了!其中参考索引重排的语法在ref_pic_list_reordering()中有详细介绍!那么当一帧解完后,如何处理该帧呢?需不需要将其放入参考列表中?所以在h264的bit stream中还传输了dec_ref_pic_marking(),通过mmco这个玩意告诉我们当前的一帧接完后如何处理参考列表!TBD:剩下的一个问题就是,为什么要分长期参考和短期参考呢?以下是来自网上的答案,因为short term参考帧以frame_num做为索引,而frame_num是有最大值的,达到最大值后会进行取模,所以短期参考帧不能长期存在于参考列表中,因为一旦frame_num达到最大值后取模为0,该索引就失去意义了,而长期参考帧则不同!/********************************************************I guess there are two primary differences.1) Short-term reference pictures are indexed by referring to variablesthat are a function of their frame_num value. But frame_num is a modulocounter that wraps over periodically. Therefore there is a limit on howlong a short-term reference picture can remain in the buffer -- itcannot remain there after the frame_num value has wrapped all the wayaround and crossed over the same value again. In contrast, long-termreference pictures are referenced by an index that is explicitlyassigned to them by syntax -- their long-term frame index. So along-term reference picture can stay in the decoded picture buffer aslong as the encoder wants it to.2) There is no use of temporal (picture order count) relationships whenreferencing long-term reference pictures in the decoding process.**********************************************************/。
h264 NAL头解析
H264 NAL 头解析分类: linux 学习 2013-06-06 20:43 2535 人阅读 评论(0) 收藏 举报NAL 全称 Network Abstract Layer,即网络抽象层。
在 H.264/AVC 视频编码标准中,整个 系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。
其中,前者 负责有效表示视频数据的内容, 而后者则负责格式化数据并提供头信息, 以保证数据适合各 种信道和存储介质上的传输。
NAL 单元是 NAL 的基本语法结构,它包含一个字节的头信息 和一系列来自 VCL 的称为原始字节序列载荷(RBSP)的字节流。
如果 NALU 对应的 Slice 为一帧的开始,则用 4 字节表示,即 0x00000001;否则用 3 字节 表示,0x000001。
NAL Header: forbidden_bit, nal_reference_bit (优先级) 2bit, nal_unit_type (类型) 5bit。
标 识 NAL 单元中的 RBSP 数据类型,其中,nal_unit_type 为 1, 2, 3, 4, 5 的 NAL 单 元称为 VCL 的 NAL 单元,其他类型的 NAL 单元为非 VCL 的 NAL 单元。
0:未规定 1:非 IDR 图像中不采用数据划分的片段 2:非 IDR 图像中 A 类数据划分片段 3:非 IDR 图像中 B 类数据划分片段 4:非 IDR 图像中 C 类数据划分片段 5:IDR 图像的片段 6:补充增强信息(SEI) 7:序列参数集(SPS) 8:图像参数集(PPS) 9:分割符 10:序列结束符 11:流结束符 12:填充数据 13:序列参数集扩展 14:带前缀的 NAL 单元 15:子序列参数集 16 – 18:保留 19:不采用数据划分的辅助编码图像片段 20:编码片段扩展 21 – 23:保留 24 – 31:未规定 NAL 的头占用了一个字节,按照比特自高至低排列可以表示如下: 0AABBBBB其中,AA 用于表示该 NAL 是否可以丢弃(有无被其后的 NAL 参考),00b 表示没有参 考作用,可丢弃,如 B slice、SEI 等,非零——包括 01b、10b、11b——表示该 NAL 不可丢弃,如 SPS、PPS、I Slice、P Slice 等。
H264编码原理
H264编码原理H264是新⼀代的编码标准,以⾼压缩⾼质量和⽀持多种⽹络的流媒体传输著称,在编码⽅⾯,我理解的他的理论依据是:参照⼀段时间内图像的统计结果表明,在相邻⼏幅图像画⾯中,⼀般有差别的像素只有10%以内的点,亮度差值变化不超过2%,⽽⾊度差值的变化只有1%以内。
所以对于⼀段变化不⼤图像画⾯,我们可以先编码出⼀个完整的图像帧A,随后的B帧就不编码全部图像,只写⼊与A帧的差别,这样B 帧的⼤⼩就只有完整帧的1/10或更⼩!B帧之后的C帧如果变化不⼤,我们可以继续以参考B的⽅式编码C帧,这样循环下去。
这段图像我们称为⼀个序列(序列就是有相同特点的⼀段数据),当某个图像与之前的图像变化很⼤,⽆法参考前⾯的帧来⽣成,那我们就结束上⼀个序列,开始下⼀段序列,也就是对这个图像⽣成⼀个完整帧A1,随后的图像就参考A1⽣成,只写⼊与A1的差别内容。
在H264协议⾥定义了三种帧,完整编码的帧叫I帧,参考之前的I帧⽣成的只包含差异部分编码的帧叫P帧,还有⼀种参考前后的帧编码的帧叫B帧。
H264采⽤的核⼼算法是帧内压缩和帧间压缩,帧内压缩是⽣成I帧的算法,帧间压缩是⽣成B帧和P帧的算法。
序列的说明 在H264中,图像以序列为单位进⾏组织,⼀个序列是⼀段图像编码后的数据流,以I帧开始,到下⼀个I帧结束。
⼀个序列的第⼀个图像叫做 IDR 图像(⽴即刷新图像),IDR 图像都是 I 帧图像。
H.264 引⼊ IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,⽴即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始⼀个新的序列。
这样,如果前⼀个序列出现重⼤错误,在这⾥可以获得重新同步的机会。
IDR图像之后的图像永远不会使⽤IDR之前的图像的数据来解码。
⼀个序列就是⼀段内容差异不太⼤的图像编码后⽣成的⼀串数据流。
当运动变化⽐较少时,⼀个序列可以很长,因为运动变化少就代表图像画⾯的内容变动很⼩,所以就可以编⼀个I帧,然后⼀直P帧、B帧了。
H264 baseline配置文件中文解释-JM12Encode
H.264标准简介
.H.264标准简介摘要:众所周知,人类社会的三大支柱是:物质、信息和能量,而信息化的支柱就是信息。
作为传递信息的数字视频技术在通信和广播领域获得日益广泛的应用,特别是20世纪90年代以来,随着internet和移动通信的发展,视频信息和多媒体信息在通信领域的处理和传输技术成为了当前我国信息化的热点。
正文:随着HDTV的兴起,H.264这个规范频频出现在我们眼前,HD-DVD和蓝光DVD均计划采用这一标准进行节目制作。
而且自2005年下半年以来,无论是NVIDIA还是ATI都把支持H.264硬件解码加速作为自己最值得夸耀的视频技术。
H.264标准是在1997年由ITU的视频编码专家组(Video Coding Experts Group)提出时被称为H.26L,在ITU与ISO合作研究后被称为MPEG4 Part10(MPEG4 AVC)或H.264(JVT)。
一、H.264标准介绍H.264标准是一种高性能的视频编解码技术。
目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。
而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,A VC),而且它将成为MPEG-4标准的第10部分。
因此,不论是MPEG-4 A VC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。
H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式。
但它采用“回归基本”的简洁设计,不用众多的选项,获得比H.263++好得多的压缩性能;加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传输(存储)场合的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. pic_parameter_set_id
pic_parameter_set_id指明了在切片头中对应的某个
psp.pic_parameter_set_id的值应该在0到255,包括0和255
2. seq_parameter_set_id
set_parameter_set_id表示激活的sps.seq_parameter_set_id应该取值在0到31之间,包括边界值.
3. entropy_coding_mode_flag
entropy_coding_mode_flag决定了在解码方法上使用的方法.
如果entropy_coding_mode_flag为0的话,就使用Exp-Golomb编码方法
如果entropy_coding_mode_flag为1的话,就使用CABAC方法.
4. pic_order_present_flag
pic_order_present_flag等于1表示在切片头中图像顺序值存
在,pic_order_present_flag为0表示切片头中的图像顺序值不存在
5. num_slice_groups_minus1
num_slice_groups_minus1加上1表示一个图像中的切片组数目.当
num_slice_groups_minus1为0时,图象所有的切片属于同一组.
6. slice_group_map_type
slice_group_map_type表示从切片组单到切片组的映射方
法.slice_group_map_type的值可以取0到6.
slice_group_map_type=0表示插值切片组.
slice_group_map_type=1表示分散切片组映射
slice_group_map_type=2表示一个或多个"前景"切片组和一个"剩余"切片组.
slice_group_map_type=3,4,5时,表示变换切片组.当
num_slice_groups_minus1不不1时,slice_group_map_type应该不为3,4,5.
slice_group_map_type=6时,表示从外部对对于每个切片组单元进行外部的切片赋值.
如果frame_mbs_only_flag为0而且mb_adaptive_frame_field_flag为1且编码图像是一帧的话,切片组映射单元是宏块对
如果frame_mbs_only_flag为1而且mb_adaptive_frame_field_flag为1且编码图像是一场的话,切片组映射单元是宏块
其他的情况下,切片组单元是两个宏块,它们在一帧宏块对中是垂直连续的
7.run_length_minus1[i]
被用来赋给在光栅扫描中第i个切片组指明连续切片组单元的数
量.run_length_minus1[i]的取值应为0到PicSizeInMapUnits-1.
top_left[ i ] and bottom_right[ i ] specify the top-left and bottom-right corners of a rectangle, respectively. top_left[ i ] and bottom_right[ i ] are slice group map unit positions in a raster scan of the picture for the slice group map units. For
each rectangle i, all of the following constraints shall be obeyed by the values of the syntax elements top_left[ i ] and bottom_right[ i ]
8.top_left[i] and bottom_right[i]
top_left[i] and bottom_right[i]指出了矩形区左上角和右下角.top_left[i] and bottom_right[i]是对于一个切片组的图像的光栅扫描位置.对于每个矩形i,top_left[i] and bottom_right[i]应该满足所有的以下的约束:
a) top_left[i]应该比bottom_right[i]小或等于,bottom_right[i]应该比PicSizeInMapUnits的值小.
b) (top_left[i]%PicWidthInMbs)应该比(bottom_right[i]%PicWidthInMbs)的值小或等于.
9. slice_group_change_direction_flag
在slice_group_map_type为3,4,5时跟slice_group_map_type一块儿来提取生成映射类型,
10.slice_group_change_rate_minus1
slice_group_change_rate_minus1用来指明SliceGroupChangeRate变量的值.SliceGroupChangeRate指出当切片组的大小对于每个图像来说都不同的时候,对切片组数目的运算的乘数.slice_group_change_rate_minus1取值范围为0到PicSizeInMapUnits-1:
SliceGroupChangeRate = slice_group_change_rate_minus1+1;
11. pic_size_in_map_units_minus1
pic_size_in_map_units_minus1用来指明在一个图象中使用的切片组映射单元的数目.pic_size_in_map_units_minus1应该等于PicSizeInMapUnits-1.
12. slice_group_id[i]
slice_group_id[i]说明了切片组单元中由光栅扫描顺序指定的第i个切片
组.slice_group_id[i]应该取0到num_slice_groups_minus1.
13. num_ref_idx_l0_active_minus1
指明了参考图像列表0中的最大参考索引值,它被用来解码图像的每一个切片,列表0在num_ref_idx_active_override_flag值为0的时候被使用.当MbaffFrameFlag值为1时,num_ref_idx_l0_active_minus1是解码帧宏块的最大索引值,而2 * num_ref_idx_10_active_minus1 + 1是解码场宏块的最大索引
值.num_ref_idx_l0_active_minus1的取值为0到31.
14. num_ref_idx_l1_active_minus1与num_ref_idx_l0_active_minus1
有相同的语义,只不过它是针对列表1来说的.
15.weighted_pred_flag
weighted_pred_flag=0表示加权预测在P和SP切片中没有被使用
weighted_pred_flag=1表示加权预测在P和SP切片中有使用.
16. weighted_bipred_idc
weighted_bipred_idc=0表示默认的加权预测被应用到B切片中.
weighted_bipred_idc=1表示外部的加权预测被应用到B切片中.
weighted_bipred_idc=2表示内部的加权预测被应用到B切片中.。