GY中华人民共和国广播电影电视行业标准GY/T257.
1—2012广播电视先进音视频编解码第1部分:视频Advancedcodingofvideoandaudioforbroadcasting—Part1:video2012–07–10发布2012–07–10实施国家广播电影电视总局发布GY/T257.
1—2012I目次前言III引言IV1范围12规范性引用文件13术语和定义14缩略语95约定95.
1算术运算符105.
2逻辑运算符105.
3关系运算符105.
4位运算符105.
5赋值115.
6数学函数115.
7结构关系125.
8位流语法、解析过程和解码过程的描述方法126编码位流的结构166.
1视频序列166.
2图像176.
3条带186.
4宏块196.
588块.
197位流的语法和语义207.
1语法描述207.
2语义描述338解析过程518.
1k阶指数哥伦布码.
518.
2ue(v)、se(v)和me(v)的解析过程.
518.
3ce(v)的解析过程548.
4ae(v)的解析过程559解码过程699.
1高层语法结构699.
2图像头解码699.
3条带解码719.
4宏块解码719.
5块解码819.
6反量化849.
7反变换87GY/T257.
1—2012II9.
8帧内预测889.
9帧间预测899.
10重建989.
11环路滤波99附录A(规范性附录)伪起始码106附录B(规范性附录)类和级107附录C(规范性附录)位流虚拟参考解码器112附录D(规范性附录)基本熵编码码表117GY/T257.
1—2012III前言本部分为GY/T257《广播电视先进音视频编解码》的第1部分.
本部分按照GB/T1.
1-2009给出的规则起草.
本部分由全国广播电影电视标准化技术委员会(SAC/TC239)归口.
本部分起草单位:中央电视台、北京大学、国家广播电影电视总局广播科学研究院、国家广播电影电视总局广播电视规划院、北京博雅华录视听技术研究院有限公司、广州柯维新数码科技有限公司、深圳市海思半导体有限公司、北京大学深圳研究生院、清华大学、中国科学院计算技术研究所、浙江大学、华为技术有限公司、上海国茂数字技术有限公司、中山大学、华中科技大学、北京工业大学.
本部分主要起草人:丁文华、高文、郭晓强、邓向冬、张伟民、黄铁军、虞露、何芸、马思伟、曾志华、梁凡、郑萧桢、张莉、郑建铧、潘晓菲、王强、董文辉、王荣刚、林永兵、张贤国、王振宇.
GY/T257.
1—2012IV引言本部分遵循GB/T20090.
2-2006《信息技术先进音视频编码第2部分:视频》,增加了算术编码、帧级加权量化、同极性场跳过模式编码、增强场编码等技术.
本部分的发布机构提请注意如下事实,声明符合本部分时,可能涉及到8.
2、8.
4、9.
2、9.
3、9.
4.
2、9.
4.
5、9.
4.
6.
2、9.
4.
6.
3、9.
4.
9、9.
4.
9、9.
5.
1、9.
5.
2、9.
6、9.
7、9.
9.
2.
2、9.
9.
2.
3、9.
11、附录A和附录D相关的专利的使用.
本部分的发布机构对于该专利的真实性、有效性和范围无任何立场.
专利持有人已向本部分的发布机构保证,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判.
该专利持有人的声明已在本部分的发布机构备案.
在本部分起草过程中,起草组织者AVS技术应用联合推进工作组根据会员签署同意的AVS工作组章程和AVS有关知识产权规定以及会员在提案、审阅等期间提出的专利披露与许可声明等对标准可能涉及的专利进行了识别.
已经确知下表列出的专利权人持有本部分的专利:专利持有人地址广州柯维新数码科技有限公司广州大学城外环东路232号13栋B301(510006)华为技术有限公司广东省深圳市龙岗区坂田华为基地(518129)北京大学深圳研究生院广东省深圳大学城北京大学深圳研究生院(518055)清华大学北京市海淀区清华大学电子工程系(100084)中国科学院计算技术研究所北京市海淀区中关村科学院南路6号(100080)浙江大学浙江省杭州市浙江大学信息与通信工程研究所(310027)联合信源数字音视频技术(北京)有限公司北京市海淀区上地东路1号盈创动力大厦A座601室(100085)上海国茂数字技术有限公司上海市浦东张江高科技园区张衡路500弄1号楼5楼(201204)华中科技大学湖北省武汉市洪山区珞瑜路1037号电子与信息工程系(430074)北京工业大学北京市朝阳区平乐园100号计算机学院(100022)上述专利权人同意对所持有的本部分的必要专利在合理和非歧视的条款和条件基础上,通过AVS专利池进行许可.
由数字音视频编解码技术标准工作组推动成立的AVS专利池管理委员会是决定专利池具体许可条款的独立机构.
对于专利池中的所有专利,标准实施者可通过专利池管理委员会认可的授权机构获得许可.
有关资料可从数字音视频编解码技术标准工作组秘书处获得,联系方法如下:联系人:黄铁军(数字音视频编解码技术标准工作组秘书长)通讯地址:北京大学理科2号楼2641室邮政编码:100871电子邮件:tjhuang@pku.
edu.
cn电话:+10-62756172传真:+10-62751638网址:http://www.
avs.
org.
cn请注意除上述专利外,本部分的某些内容仍可能涉及专利.
本部分的发布机构不承担识别这些专利的责任.
GY/T257.
1—20121广播电视先进音视频编解码第1部分:视频1范围本部分规定了多种比特率、分辨率和质量的视频压缩方法,并且规定了解码过程.
本部分适用于地面电视广播、有线电视广播、卫星电视广播等应用.
2规范性引用文件下列文件对于本部分的应用是必不可少的.
凡是注日期的引用文件,仅注日期的版本适用于本部分.
凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本部分.
GB/T20090.
2-2006信息技术先进音视频编码第2部分:视频3术语和定义下列术语和定义适用于本部分.
3.
1保留reserved定义了一些特定语法元素值,这些值用于将来对本部分的扩展.
注:这些值不出现在符合本部分的位流中.
3.
2变长编码variablelengthcoding一个可逆的熵编码过程,它将短的码字分配给出现频率较高的符号,将长的码字分配给出现频率较低的符号.
3.
3变换系数transformcoefficient变换域上的一个标量.
3.
4编码表示encodingpresentation数据编码后的形式.
3.
5编码过程encodingprocess产生符合本部分位流的过程.
注:本部分不规定该过程.
GY/T257.
1—201223.
6编码器encoder完成编码过程的实体.
3.
7编码图像codedpicture一帧图像的编码表示.
3.
8标志flag一个二值变量.
3.
9补偿compensation求由语法元素解码得到的样本残差与其对应的预测值之和.
3.
10残差residual样本或数据元素的重建值与其预测值之差.
3.
11参考索引referenceindex解码图像缓冲区中参考图像或其中场的编号.
3.
12参考图像referencepicture解码过程中用于后续图像帧间预测的图像.
3.
13层layer位流中的分级结构,高层包含低层.
编码层由高到低依次为:序列、图像、条带、宏块和块.
3.
14场field由构成帧的三个样本矩阵中相间的行构成.
3.
15二元符号bin组成二元符号串的符号,包括"0"和"1".
3.
16二元符号串binstringGY/T257.
1—20123有限位二元符号组成的有序序列,最左边符号是最高有效位(MSB),最右边符号是最低有效位(LSB).
3.
17分量component图像的三个样值矩阵(亮度和两个色度)中的一个矩阵或矩阵中的单个样值.
3.
18反变换inversetransform将变换系数矩阵转换成空域样值矩阵的过程.
3.
19反量化dequantization对量化系数缩放后得到变换系数的过程.
3.
20光栅扫描rasterscan将二维矩形光栅映射到一维光栅,一维光栅的入口从二维光栅的第一行开始,然后扫描第二行、第三行,依次类推.
光栅中的行从左到右扫描.
3.
21宏块macroblock包括一个1616的亮度样值块和对应的色度样值块.
3.
22宏块地址macroblockaddress从图像左上角的宏块开始,沿光栅扫描的顺序编号,起始号为0.
3.
23宏块行macroblockline在编码的图像相同的垂直位置,从左边界到右边界连续的宏块,其高度是16个样本.
3.
24宏块位置macroblockposition图像中一个宏块的二维坐标,表示为(x,y).
示例:如果当前图像的两场的编码数据合并成帧,图像左上角的宏块(x,y)=(0,0),对每个宏块列,从左到右x依次加1,对每个宏块行,从上到下y依次加1.
如果当前图像的两场的编码数据依次出现,第一场左上角的宏块(x,y)=(0,0),对第一场的每个宏块列,从左到右x依次加1,对第一场的每个宏块行,从上到下y依次加1;第二场左上角的宏块(x,y)=(0,(H+31)>>5),H是图像垂直方向扫描行数,对第二场的每个宏块列,从左到右x依次加1,对第二场的每个宏块行,从上到下y依次加1.
3.
25后向预测backwardprediction用显示顺序上将来的参考图像对当前图像进行预测.
GY/T257.
1—201243.
26划分partitioning将一个集合分为子集的过程.
集合中的每个元素属于且只属于某一个子集.
3.
27级level在某一类下对语法元素和语法元素参数值的限定集合.
3.
28交流系数ACcoefficientAC系数二维变换域上索引号不全为0的变换系数.
3.
29解码处理decodeprocessing解析过程和解码过程.
3.
30解码过程decodingprocess由语法元素产生解码图像的过程.
3.
31解码器decoder完成解码处理的实体.
3.
32解码顺序decodingorder解码过程根据图像之间的预测关系,对每帧图像解码的顺序.
3.
33解码图像decodedpicture解码器根据位流重建的图像.
3.
34解码图像缓冲区decodedpicturebuffer保存解码图像并用于预测、输出重排序和输出定时的缓冲区.
3.
35解析过程parse由位流获得语法元素的过程.
3.
36禁止forbiddenGY/T257.
1—20125定义了一些特定语法元素值,这些值不应出现在符合本部分的位流中.
注:禁止某些值的目的通常是为了避免在位流中出现伪起始码.
3.
37块block一个MN的样值矩阵或者变换系数矩阵(M列N行),大小为88的块又称为子块.
3.
38块扫描blockscan量化系数的特定串行排序方式.
3.
39类profile本部分规定的语法、语义及算法的子集.
3.
40亮度luma表示亮度信号的样值矩阵或单个样值,符号为Y.
3.
41量化参数quantizationparameter在解码过程对量化系数进行反量化的参数.
3.
42量化系数quantizationcoefficient反量化前变换系数的值.
3.
43X类解码器x-profiledecoder能够解码符合某类规定的位流的解码器.
3.
44起始码startcode长度为32位的二进制码字,其形式在整个位流中是唯一的.
注:起始码有多种用途,其中之一是用来标识位流语法结构的开始.
3.
45前向预测forwardprediction用显示顺序上过去的参考图像对当前图像进行预测.
3.
46前向帧间解码图像forwardinterdecodedpictureP帧GY/T257.
1—20126帧间预测中只使用前向预测解码的图像.
3.
47色度chroma两种色差信号中任一种的样值矩阵或单个样值,符号为Cr和Cb.
3.
48视频序列sequence编码位流的最高层语法结构,包括一个或多个连续的编码图像.
3.
49输出重排序延迟outputreorderdelay解码位流中一帧图像到输出该解码图像之间的延迟.
这是由图像显示顺序和解码顺序不同造成的.
3.
50输出处理过程outputprocessing由解码图像得到输出帧或场的过程.
3.
51输出顺序outputorder输出解码图像的顺序,与显示顺序相同.
3.
52双向预测bidirectionalprediction用显示顺序上过去和将来的参考图像对当前图像进行预测.
3.
53双向帧间解码图像bidirectionalinterdecodedpictureB帧帧间预测中使用双向预测解码的图像.
3.
54随机访问randomaccess从某一点而非位流起始点开始对位流解码并恢复出解码图像的能力.
3.
55随机访问点randomaccesspoint位流中能进行随机访问的点.
3.
56填充位stuffingbits编码时插入位流中的位串,在解码时被丢弃.
GY/T257.
1—201273.
57条带slice按光栅扫描顺序排列的若干连续宏块.
3.
58条带头sliceheader编码的条带的一部分,是条带中宏块公用数据元素的编码表示.
3.
59跳过的宏块skippedmacroblock除"跳过"指示外,无其他编码数据的宏块.
3.
60图像重排序picturereordering若解码顺序和输出顺序不同,对解码图像进行重排序的过程.
3.
61位串bitstring有限个二进制位的有序序列,其最左边位是最高有效位(MSB),最右边位是最低有效位(LSB).
3.
62位流bitstream编码图像所形成的二进制数据流.
3.
63位流缓冲区bitstreambuffer存储位流的缓冲区.
3.
64位流顺序bitstreamorder编码图像在位流中的排列顺序,与图像解码的顺序相同.
3.
65显示顺序displayorder显示解码图像的顺序.
3.
66样本sample构成图像的基本元素.
3.
67样本宽高比widthheightratioGY/T257.
1—20128一帧图像中亮度样本列间的水平距离与行间的垂直距离之比.
表示为h:v,其中h为水平方向样本个数,v为垂直方向样本个数.
3.
68样值samplevalue样本的幅值.
3.
69游程run在解码过程中若干连续的相同数据元素个数.
一方面指在块扫描中一个非0系数前(沿块扫描顺序)值为0的系数的个数;另一方面指跳过的宏块的数目.
3.
70预测prediction预测过程的具体实现.
3.
71预测过程predictionprocess使用预测器对当前解码样值或者数据元素进行估计.
3.
72预测值predictionvalue在样值或数据元素的解码过程中,用到的先前已解码的样值或数据元素的组合.
3.
73语法元素syntaxelement位流中的数据单元解析后的结果.
3.
74源source编码前视频素材或其某些属性.
3.
75运动矢量motionvector用于帧间预测的二维矢量,由当前图像指向参考图像,其值为当前块和参考块之间的坐标偏移量.
3.
76帧frame视频信号空间信息的表示,由一个亮度样本矩阵(Y)和两个色度样本矩阵(Cb和Cr)构成.
3.
77帧间编码intercoding使用帧间预测对宏块或图像进行编码.
GY/T257.
1—201293.
78帧间预测interprediction使用先前解码图像(或场)生成当前图像(或场)样本预测值的过程.
3.
79帧内编码intracoding使用帧内预测对宏块或图像进行编码.
3.
80帧内解码图像intradecodedpictureI帧只使用帧内预测解码的图像.
注:如果I帧采用场编码,则第一场只使用帧内预测编码.
3.
81帧内预测intraprediction在相同解码图像(或场)中使用先前解码的样值生成当前样本预测值的过程.
3.
82直流系数DCcoefficientDC系数二维变换域上索引号全为0的变换系数.
3.
83字节byte8位的位串.
3.
84字节对齐bytealignment从位流的第一个二进制位开始,某二进制位的位置是8的整数倍.
4缩略语下列缩略语适用于本部分.
BBV位流参考解码器(BitstreamBufferVerifier)CBR恒定比特率(ConstantBitRate)LSB最低有效位(LeastSignificantBit)MB宏块(Macroblock)MSB最高有效位(MostSignificantBit)VLC变长编码(VariableLengthCoding)5约定GY/T257.
1—201210本部分中使用的数学运算符和优先级与C语言使用的类似.
但对整型除法和算术移位操作进行了特定定义.
除特别说明外,约定编号和计数从0开始.
5.
1算术运算符算术运算符定义见表1.
表1算术运算符定义算术运算符定义加法运算减法运算(二元运算符)或取反(一元前缀运算符)乘法运算ab幂运算,表示a的b次幂.
也可表示上标/整除运算,沿向0的取值方向截断.
例如,7/4和-7/-4截断至1,-7/4和7/-4截断至-1÷除法运算,不做截断或四舍五入除法运算,不做截断或四舍五入自变量i取由a到b(含b)的所有整数值时,函数的累加和a%b模运算,a除以b的余数,其中a与b都是正整数5.
2逻辑运算符逻辑运算符定义见表2.
表2逻辑运算符定义逻辑运算符定义a&&ba和b之间的与逻辑运算a||ba和b之间的或逻辑运算!
逻辑非运算5.
3关系运算符关系运算符定义见表3.
表3关系运算符定义关系运算符定义>大于>=大于或等于>b将a以2的补码整数表示的形式向右移b位.
仅当b取正数时定义此运算a例如:a->b表示a是一个结构,b是a的一个成员变量5.
8位流语法、解析过程和解码过程的描述方法5.
8.
1位流语法的描述方法位流语法描述方法类似C语言.
位流的语法元素使用粗体字表示,每个语法元素通过名字(用下划线分割的英文字母组,所有字母都是小写)、语法和语义来描述.
语法表和正文中语法元素的值用常规字体表示.
某些情况下,可在语法表中应用从语法元素导出的其他变量值,这样的变量在语法表或正文中用不带下划线的小写字母和大写字母混合命名.
大写字母开头的变量用于解码当前以及相关的语法结构,也可用于解码后续的语法结构.
小写字母开头的变量只在它们所在的小节内使用.
GY/T257.
1—201213语法元素值的助记符和变量值的助记符与它们的值之间的关系在正文中说明.
在某些情况下,二者等同使用.
助记符由一个或多个使用下划线分隔的字母组表示,每个字母组以大写字母开始,也可包括多个大写字母.
位串的长度是4的整数倍时,可使用十六进制符号表示.
十六进制的前缀是"0x",例如"0x1a"表示位串"00011010".
条件语句中0表示FALSE,非0表示TRUE.
语法表描述了所有符合本部分的位流语法的超集,附加的语法限制在相关条中说明.
表7给出了描述语法的伪代码例子.
当语法元素出现时,表示从位流中读一个数据单元.
表7语法描述的伪代码伪代码描述符/*语句是一个语法元素的描述符,或者说明语法元素的存在、类型和数值,下面给出两个例子.
*/syntax_elementue(v)conditioningstatement/*花括号括起来的语句组是复合语句,在功能上视作单个语句.
*/{statement}/*"while"语句测试condition是否为TRUE,如果为TRUE,则重复执行循环体,直到condition不为TRUE.
*/while(condition)statement/*"dowhile"语句先执行循环体一次,然后测试condition是否为TRUE,如果为TRUE,则重复执行循环体,直到condition不为TRUE.
*/dostatementwhile(condition)/*"ifelse"语句首先测试condition,如果为TRUE,则执行primary语句,否则执行alternative语句.
如果alternative语句不需要执行,结构的"else"部分和相关的alternative语句可忽略.
*/if(condition)primarystatementelseGY/T257.
1—201214表7(续)伪代码描述符alternativestatement/*"for"语句首先执行initial语句,然后测试condition,如果conditon为TRUE,则重复执行primary语句和subsequent语句直到condition不为TRUE.
*/for(initialstatement;condition;subsequentstatement)primarystatement解析过程和解码过程用文字和类似C语言的伪代码描述.
5.
8.
2函数以下函数用于语法描述.
假定解码器中存在一个位流指针,这个指针指向位流中要读取的下一个二进制位的位置.
函数由函数名及左右圆括号内的参数构成.
函数也可没有参数.
5.
8.
2.
1byte_aligned()如果位流的当前位置是字节对齐的,返回TRUE,否则返回FALSE.
5.
8.
2.
2next_bits(n)返回位流的随后n个二进制位,MSB在前,不改变位流指针.
如果剩余的二进制位少于n,则返回0.
5.
8.
2.
3byte_aligned_next_bits(n)如果位流当前位置不是字节对齐的,返回位流当前位置的下一个字节开始的n个二进制位,MSB在前,不改变位流指针;如果位流当前位置是字节对齐的,返回位流随后的n个二进制位,MSB在前,不改变位流指针.
如果剩余的二进制位少于n,则返回0.
5.
8.
2.
4next_start_code()在位流中寻找下一个起始码,将位流指针指向起始码前缀的第一个二进制位.
函数定义见表8.
表8next_start_code函数的定义函数定义描述符next_start_code(){stuffing_bit'1'while(!
byte_aligned())stuffing_bit'0'while(next_bits(24)!
='000000000000000000000001')stuffing_byte'00000000'}stuffing_byte应出现图像头之后和第一个条带起始码之前.
5.
8.
2.
5is_end_of_slice()在位流中检测是否已达到条带的结尾,如果已到达条带的结尾,返回TRUE,否则返回FALSE.
此函数不修改位流指针.
函数定义见表9.
GY/T257.
1—201215表9is_end_of_slice函数的定义函数定义描述符is_end_of_slice(){if(byte_aligned()){if(next_bits(32)==0x80000001)returnTRUE;//条带结束}else{if((byte_aligned_next_bits(24)==0x000001)&&is_stuffing_pattern())returnTRUE;//条带结束}returnFALSE;}5.
8.
2.
6is_stuffing_pattern()在位流中检测当前字节中剩下的位或在字节对齐时下一个字节是否是条带结尾填充的二进制位,如果是,则返回TRUE,否则返回FALSE.
此函数不修改位流指针.
函数定义见表10.
表10is_stuffing_pattern函数的定义函数定义描述符is_stuffing_pattern(){if(next_bits(8-n)==(12800)slice_vertical_position_extensionu(3)if(fixed_picture_qp=='0'){fixed_slice_qpu(1)slice_qpu(6)}if(PictureType!
=0||(PictureStructure==0&&MbIndex>=MbWidthMbHeight/2)){slice_weighting_flagu(1)if(slice_weighting_flag=='1'){for(i=0;i=MbWidthMbHeight/2)){if(skip_mode_flag=='1')mb_skip_runue(v)|ae(v)if(aec_enable=='1'&&SkipMbCount!
=0)aec_mb_stuffing_bitae(v)}if(!
is_end_of_slice()){macroblock()if(aec_enable=='1')aec_mb_stuffing_bitae(v)}}while(!
is_end_of_slice())next_start_code()}7.
1.
3.
6宏块定义宏块定义见表26.
表26宏块定义宏块定义描述符macroblock(){if(PictureType!
=0||(PictureStructure==0&&MbIndex>=MbWidthMbHeight/2))mb_typeue(v)|ae(v)if(MbType!
='P_Skip'&&MbType!
='B_Skip'){if(MbType=='B_8x8'){for(i=0;i=24&&PictureType==2)||(MbTypeIndex>=5&&(PictureType==0||PictureType==1))))cbpme(v)if(chroma_format=='10')cbp_422me(v)|ae(v)if((MbCBP>0||(MbCBP422>0&&chroma_format=='10'FixedQP)mb_qp_deltase(v)|ae(v)for(i=0;i=6&&(MbCBP422&(1=59&&aec_enable=='0')escape_level_diffce(v)}while(trans_coefficient!
='EOB')}}7.
2语义描述7.
2.
1视频扩展本部分定义了若干视频扩展,在语法的不同位置,可出现的视频扩展是不同的.
每一种视频扩展都有一个唯一的视频扩展标号,见表28.
表28视频扩展标号视频扩展标号含义0000保留0001保留0010序列显示扩展0011保留0100版权扩展0101保留0110保留0111图像显示扩展GY/T257.
1—201234表28(续)视频扩展标号含义1000~1010保留1011摄像机参数扩展1100~1111保留7.
2.
2视频序列语义描述7.
2.
2.
1视频序列视频编辑码video_edit_code位串"0x000001B7".
说明紧跟video_edit_code的第一个I帧后续的B帧可能因缺少参考帧,不能正确解码.
视频序列结束码video_sequence_end_code位串"0x000001B1".
标识视频序列的结束.
7.
2.
2.
2序列头视频序列起始码video_sequence_start_code位串"0x000001B0".
标识视频序列的开始.
类标号profile_id8位无符号整数.
表示位流符合的类.
级标号level_id8位无符号整数.
表示位流符合的级.
类和级见附录B.
逐行序列标志progressive_sequence标志.
规定视频序列的扫描格式.
值为"1"表示编码视频序列只包含逐行扫描的帧图像;值为"0"表示编码视频序列可包含逐行扫描和隔行扫描帧图像.
水平尺寸horizontal_size14位无符号整数.
规定图像亮度分量可显示区域(该区域与图像的左侧边缘对齐)的宽度,即水平方向样本数.
以宏块为单位的MbWidth计算如下MbWidth=(horizontal_size+15)/16horizontal_size不应为"0".
horizontal_size的单位应是图像每行样本数.
可显示区域的左上角样本应与解码图像左上角样本对齐.
垂直尺寸vertical_size14位无符号整数.
规定图像亮度分量可显示区域(该区域与图像的顶部边缘对齐)的高度,即垂直方向扫描行数.
在视频序列位流中,可能存在隔行扫描图像的两场编码数据依次出现时(即progressive_sequence的值为"0"时),以宏块为单位计算的MbHeight计算如下MbHeight=2((vertical_size+31)/32)在其他情况下,以宏块为单位计算的MbHeight计算如下MbHeight=(vertical_size+15)/16vertical_size不应为0.
vertical_size的单位应是图像样本的行数.
GY/T257.
1—201235horizontal_size、vertical_size与图像边界的关系见图7.
图7中,实线表示图像可显示区域边界,其宽度和高度分别由horizontal_size和vertical_size决定;虚线表示图像边界,其宽度和高度分别由MbWidth和MbHeight决定.
例如horizontal_size的值为1920,vertical_size的值为1080,则MbWidth16等于1920,MbHeight16等于1088.
图7图像边界示意图色度格式chroma_format2位无符号整数.
规定色度分量的格式,见表29.
表29色度格式chroma_format的值含义00保留014:2:0104:2:211保留样本精度sample_precision3位无符号整数.
规定亮度和色度样本的精度,见表30.
表30样本精度sample_precision的值含义000禁止001亮度和色度均为8bit精度010~111保留宽高比aspect_ratio4位无符号整数.
规定重建图像的样本宽高比(SAR)或显示宽高比(DAR).
见表31.
GY/T257.
1—201236表31宽高比aspect_ratio的值样本宽高比(SAR)显示宽高比(DAR)0000禁止禁止00011.
0–0010–4:30011–16:90100–2.
21:10101~1111–保留如果位流中没有序列显示扩展,那么整个重建图像将要映射到整个活动显示区域.
样本宽高比按下式计算.
SARDARvertical_sizehorizontal_size注:在这种情况下,horizontal_size和vertical_size受源图像的样本宽高比和选定的显示宽高比限制.
如果位流中有序列显示扩展出现,样本宽高比按下式计算.
SARDARdisplay_vertical_sizedisplay_horizontal_size帧率代码frame_rate_code4位无符号整数.
规定帧率,见表32.
表32帧率代码frame_rate_code的值帧率0000禁止000124000÷1001(23.
976.
.
.
)001024001125010030000÷1001(29.
97.
.
.
)010130011050011160000÷1001(59.
94.
.
.
)1000601001~1111保留连续两帧之间的时间间隔是帧率的倒数.
隔行扫描帧中两场之间的时间间隔是帧率的倒数的1/2.
比特率低位bit_rate_lowerBitRate的低18位.
比特率高位bit_rate_upperBitRate的高12位.
BitRate=(bit_rate_upper=L>=0.
018E′=4.
500L,0.
018>L>=-0.
0045E′=-{1.
099(-4L)0.
45-0.
099}/4,-0.
0045>L>=-0.
25.
参见GY/T155-20002未作规定的视频图像特性未知3保留4假设显示伽玛值为2.
2.
参见ITU-RBT.
4702SystemM5假设显示伽玛值为2.
8.
参见ITU-RBT.
470-2SystemB,G6V=1.
099Lc0.
45-0.
099,1>=Lc>=0.
018V=4.
500Lc,0.
018>Lc>=0.
参见SMPTE170M7V=1.
1115Lc0.
45-0.
1115,Lc>=0.
0228V=4.
0Lc,0.
0228>Lc.
参见SMPTE240M(1987)8线性转移特性即V=Lc9对数转移特性(范围100:1)V=1.
0-(log10(Lc))/2,1>=Lc>=0.
01V=0.
0,0.
01>Lc10对数转移特性(范围316.
22777:1)V=1.
0-(log10(Lc))/2.
5,1>=Lc>=0.
0031622777V=0.
0,0.
0031622777>Lc11~255保留如果位流中没有序列显示扩展,或者colour_description的值是"0",假设光电转移特性已由应用本身隐含定义.
彩色信号转换矩阵matrix_coefficients8位无符号整数.
说明从红绿蓝三基色转换为亮度和色度信号时采用的转换矩阵,见表36.
GY/T257.
1—201240表36彩色信号转换矩阵matrix_coefficients的值彩色信号转换矩阵备注0禁止1EY=0.
2126ER+0.
7152EG+0.
0722EBECB=(EBEY)/1.
8556ECR=(EREY)/1.
5748.
参见GY/T155-20002未作规定的视频图像特性未知3保留4EY=0.
59EG+0.
11EB+0.
30EREPB=-0.
331EG+0.
500EB-0.
169EREPR=-0.
421EG-0.
079EB+0.
500ER.
FCC5EY=0.
587EG+0.
114EB+0.
299EREPB=-0.
331EG+0.
500EB-0.
169EREPR=-0.
419EG-0.
081EB+0.
500ER.
参见ITU-RBT.
470-2SystemB,G6EY=0.
587EG+0.
114EB+0.
299EREPB=-0.
331EG+0.
500EB-0.
169EREPR=-0.
419EG-0.
081EB+0.
500ER.
参见SMPTE170M7EY=0.
701EG+0.
087EB+0.
212EREPB=-0.
384EG+0.
500EB-0.
116EREPR=-0.
445EG-0.
055EB+0.
500ER.
参见SMPTE240M(1987)8~255保留在表36中:——EY是值在"0"和"1"之间的模拟量;——EPB和EPR是值在"-0.
5"和"0.
5"之间的模拟量;——ER、EG和EB是值在"0"和"1"之间的模拟量;——Y、Cb和Cr与EY、EPB和EPR的关系如下:如果sample_range为"0":Y(2192n-8EY)2n-4Cb(2242n-8EPB)2n-1Cr(2242n-8EPR)2n-1如果sample_range为"1":Y((2n–1)EY)Cb((2n–1)EPB)2n-1Cr((2n–1)EPR)2n-1其中n是样本点精度.
例如:n=8,sample_range为"0"时:Y(219EY)16Cb(224EPB)128Cr(224EPR)128Y的取值范围是16~235,Cb和Cr的取值范围是16~240.
n=8,sample_range为"1"时:Y(255EY)Cb(255EPB)128GY/T257.
1—201241Cr(255EPR)128Y、Cb和Cr的取值范围都是0~255.
注1:本部分规定的解码过程将输出的Y、Cb和Cr的样值范围限制在0~2n-1.
如果位流中没有出现序列显示扩展,或者colour_description的值是"0",假设转换矩阵已由应用本身隐含定义.
注2:某些应用可能有多个不同的视频信号,而不同的视频信号又可能具有不同的彩色三基色、转移特性和/或转换矩阵.
在这种情况下建议应用首先将这些不同的参数集转换到一个统一的参数集.
水平显示尺寸display_horizontal_size垂直显示尺寸display_vertical_sizedisplay_horizontal_size和display_vertical_size都是14位无符号整数.
它们共同定义了一个矩形,如果该矩形的尺寸比编码图像的尺寸小,宜只显示编码图像的一部分;如果该矩形的尺寸比编码图像的尺寸大,宜只在显示设备的一部分上显示重建图像.
display_horizontal_size的单位应是编码图像每行样本数.
display_vertical_size的单位应是编码图像的行数.
display_horizontal_size和display_vertical_size对解码过程没有影响.
它们可被显示过程使用.
本部分不定义显示过程.
双视点拼接模式stereo_packing_mode2位无符号整数.
规定双目立体视频的拼接方式,见表37.
表37双视点拼接模式stereo_packing_mode的值含义00无拼接01左右拼接10上下拼接11保留表37中无拼接表示当前视频即为通常的单目视频;左右拼接表示当前视频序列为左右拼接双目立体视频,在解码图像中,左视点的图像的像素均在右视点的图像的像素的左侧;上下拼接表示当前视频序列为上下拼接双目立体视频,在解码图像中,左视点的图像的像素均在右视点的图像的像素的上侧.
7.
2.
2.
5版权扩展视频扩展标号extension_id位串"0100".
标识版权扩展.
版权标志copyright_flag标志.
值为"1"说明该版权扩展定义的版权信息有效期直到下一个版权扩展或视频序列结束码;值为"0"说明该版权扩展没有定义版权信息.
版权信息由copyright_id和CopyrightNumber进一步说明.
版权标号copyright_id8位无符号整数.
版权所有者的代码,由版权注册机构统一分配.
如果为"0",说明没有相关版权信息.
如果copyright_id的值为"0",CopyrightNumber应为"0".
如果copyright_flag的值为"0",copyright_id应为"0".
原创或拷贝original_or_copy标志.
值为"1"说明源视频的内容是原创的;值为"0"说明源视频的内容是拷贝的.
GY/T257.
1—201242版权号1copyright_number_120位无符号整数.
CopyrightNumber的第44到第63位.
版权号2copyright_number_222位无符号整数.
CopyrightNumber的第22到第43位.
版权号3copyright_number_322位无符号整数.
CopyrightNumber的第0到第21位.
CopyrightNumber是64位无符号整数,定义如下:CopyrightNumber=(copyright_number_12800)MbRow=(slice_vertical_position_extension>8)&0x01)){valueT=(valueT>5)16+((pos>>1)&0x0F)2)第二步,计算ctxIdx:ctxIdx=起始索引号+ctxIdxInc如果contextWeighting=1,则ctxIdxW=起始索引号+ctxIdxIncW其中priIdx和secIdx分别见表52和表53;pos记录了待解码的量化系数幅值在逆扫描中的位置.
对每个88块进行解码前,pos应初始化为"0".
lMax是当前88块已解码系数的最大幅值.
对每个88块进行解码前,lMax应初始化为"0".
k)确定trans_coefficient的coeffRun的ctxIdx:1)第一步,根据binIdx和AbsLevel得到ctxIdxInc:ctxIdxInc=priIdx4+secIdx2)第二步,计算ctxIdx:ctxIdx=起始索引号+46+ctxIdxInc其中priIdx和secIdx分别见表52和表53.
l)确定weighting_prediction:1)第一步,ctxIdxInc赋值为"0";2)第二步,计算ctxIdx:ctxIdx=起始索引号+ctxIdxIncGY/T257.
1—201264表52priIdx与lMax的关系lMax的值priIdx的值0011223343>=54表53secIdx与coeffLevel、coeffRun的关系secIdx的值含义coeffLevel的含义coeffRun的含义0binIdx等于0AbsLevel的值等于1,并且binIdx等于01binIdx等于1AbsLevel的值等于1,并且binIdx大于或等于12binIdx大于或等于2AbsLevel的值大于1,并且binIdx等于03-AbsLevel的值大于1,并且binIdx大于或等于18.
4.
4.
3二元符号解析8.
4.
4.
3.
1解析过程二元符号的解析过程如下:a)首先,解析二元符号值binVal1)如果BypassFlag的值为"1",执行decode_bypass过程(见8.
4.
4.
3.
3);2)否则,如果当前解码语法元素为aec_mb_stuffing_bit,则执行decode_aec_stuffing_bit过程(见8.
4.
4.
3.
4);3)否则,执行decode_decision过程,见8.
4.
4.
3.
2.
b)第二步,如果binVal的值为"0",则二元符号为'0';如果binVal的值为"1",则二元符号为'1'.
8.
4.
4.
3.
2decode_decision如果contextWeighting的值为1,decode_decision过程的输入是rS1、rT1、valueS、valueT以及上下文模型ctx1、ctx2;否则decode_decision过程的输入是rS1、rT1、valueS、valueT以及上下文模型ctx.
decode_decision过程的输出是二元符号值binVal.
decode_decision过程用伪代码描述如下:decode_decision(){if(contextWeighting==1){if(ctx1->mps==ctx2->mps){predMps=ctx1->mpslgPmps=(ctx1->lgPmps+ctx2->lgPmps)/2}else{GY/T257.
1—201265if(ctx1->lgPmpslgPmps){predMps=ctx1->mpslgPmps=1023-((ctx2->lgPmps–ctx1->lgPmps)>>1)}else{predMps=ctx2->mpslgPmps=1023-((ctx1->lgPmps–ctx2->lgPmps)>>1)}}}else{predMps=ctx->mpslgPmps=ctx->lgPmps}if(rT1>=(lgPmps>>2)){rS2=rS1rT2=rT1-(lgPmps>>2)sFlag=0}else{rS2=rS1+1rT2=256+rT1-(lgPmps>>2)sFlag=1}if(rS2>valueS||(rS2==valueS&&valueT>=rT2)){binVal=!
predMpsif(sFlag==0)tRlps=lgPmps>>2elsetRlps=rT1+(lgPmps>>2)if(rS2==valueS)valueT=valueT-rT2elsevalueT=256+((valueT=(lgPmps>>2)){rS2=rS1rT2=rT1-(lgPmps>>2)sFlag=0}else{rS2=rS1+1rT2=256+rT1-(lgPmps>>2)sFlag=1}if(rS2>valueS||(rS2==valueS&&valueT>=rT2)){binVal=!
predMpsif(sFlag==0)tRlps=lgPmps>>2elseGY/T257.
1—201267tRlps=rT1+(lgPmps>>2)if(rS2==valueS)valueT=valueT-rT2elsevalueT=((valueT=(lgPmps>>2)){rS2=rS1rT2=rT1-(lgPmps>>2)sFlag=0}else{rS2=rS1+1rT2=256+rT1-(lgPmps>>2)sFlag=1}GY/T257.
1—201268if(rS2>valueS||(rS2==valueS&&valueT>=rT2)){binVal=!
predMpsif(sFlag==0)tRlps=lgPmps>>2elsetRlps=rT1+(lgPmps>>2)if(rS2==valueS)valueT=valueT–rT2elsevalueT=256+((valueTcycnocycno==2)cwr=4elsecwr=5if(binVal!
=ctx->mps){GY/T257.
1—201269if(ctx->cycnocycno=ctx->cycno+1elsectx->cycno=3}elseif(ctx->cycno==0)ctx->cycno=1if(binVal==ctx->mps)ctx->lgPmps=ctx->lgPmps–(ctx->lgPmps>>cwr)-(ctx->lgPmps>>(cwr+2))else{switch(cwr){case3:ctx->lgPmps=ctx->lgPmps+197breakcase4:ctx->lgPmps=ctx->lgPmps+95breakdefault:ctx->lgPmps=ctx->lgPmps+46}if(ctx->lgPmps>1023){ctx->lgPmps=2047-ctx->lgPmpsctx->mps=!
(ctx->mps)}}return(ctx)}9解码过程9.
1高层语法结构如果progressive_sequence的值为"1",解码器以帧周期的整数倍为时间间隔输出重建图像.
如果progressive_sequence的值为"0",则解码器将重建图像拆成两场,以场周期的整数倍为时间间隔输出.
9.
2图像头解码图像头解码过程如下:如果当前图像起始码是0x00001B3,则表示图像是I帧,PictureType等于"0".
如果当前图像起始码是0x00001B6,并且picture_coding_type等于"01",则表示图像是P帧,PictureType等于"1".
GY/T257.
1—201270如果当前图像起始码是0x00001B6,并且picture_coding_type等于"10",则表示图像是B帧,PictureType等于"2".
预测量化参数PreviousQP初始化为picture_qp.
预测量化参数增量PreviousDeltaQP初始化为"0".
固定量化因子标志FixedQP等于fixed_picture_qp.
当前图像的宏块索引MbIndex初始化为"0".
CurrentSceneModel等于weighting_quant_model.
加权量化参数WeightingQuantParamDefault[i]={128,98,106,116,116,128};加权量化参数WeightingQuantParamBase1[i]={135,143,143,160,160,213};加权量化参数WeightingQuantParamBase2[i]={128,98,106,116,116,128}.
加权量化矩阵WeightingQuantMatrix8x8的元素WeightingQuantMatrix8x8[i,j](i,j=0~7)的值均初始化为"128".
如果weighting_quant_flag的值为"1",按以下步骤确定加权量化矩阵:a)首先,初始化wqP,wqP[0][i]=128(i=0~5),wqP[1][i]=WeightingQuantParamBase1[i](i=0~5),wqP[2][i]=WeightingQuantParamBase2[i](i=0~5).
b)第二步,确定当前图像的wqP(wqP的元素的取值范围应是0~255):1)如果weighting_quant_param_index的值为"00",则wqP[0][i]=WeightingQuantParamDefault[i](i=0~5).
2)如果weighting_quant_param_index的值为"01",从weighting_quant_param_delta1[i]解析得到wqPDelta[1][i].
wqP[1][i]=wqPDelta[1][i]+WeightingQuantParamBase1[i](i=0~5).
3)如果weighting_quant_param_index的值为"10",从weighting_quant_param_delta2[i]解析得到wqPDelta[2][i].
wqP[2][i]=wqPDelta[2][i]+WeightingQuantParamBase2[i](i=0~5).
c)第三步,根据CurrentSceneModel确定88变换块的加权量化矩阵wqM8x8[m]:1)如果CurrentSceneModel的值为"0",则wqM8x8[m]如下:2)如果CurrentSceneModel的值为"1",则wqM8x8[m]如下:3)如果CurrentSceneModel的值为"2",则wqM8x8[m]如下:GY/T257.
1—2012719.
3条带解码条带解码过程如下:宏块索引MbIndex等于MbRowMbWidth.
如果fixed_picture_qp等于"0",预测量化参数PreviousQP等于slice_qp,预测量化参数增量PreviousDeltaQP初始化为"0".
固定量化因子标志FixedQP等于fixed_slice_qp.
如果mb_skip_run存在,由mb_skip_run解析得到SkipMbCount,否则SkipMbCount等于"0".
若SkipMbCount不等于"0",从MbIndex至MbIndex+SkipMbCount-1的所有宏块的MbType根据图像类型设为P_Skip或B_Skip,这些宏块按照所设置的宏块类型进行处理.
处理完成后,MbIndex应加上SkipMbCount.
如果当前条带的位流中存在mb_weighting_flag,则MbWeightingFlag等于mb_weighting_flag;否则MbWeightingFlag等于"0".
9.
4宏块解码9.
4.
1初始化解码索引值为MbIndex的宏块,完成后MbIndex加1.
WeightingPrediction的值等于slice_weighting_flag的值.
如果slice_weighting_flag和mb_weighting_flag的值均为"1",则:a)如果当前宏块的位流中存在weighting_prediction,则当前宏块的WeightingPrediction等于weighting_prediction;b)如果当前宏块的位流中不存在weighting_prediction,则当前宏块的WeightingPrediction等于"0".
9.
4.
2宏块类型宏块类型MbType和宏块子类型MbPartType的解码过程如下:a)如果当前图像是I帧:1)如果满足以下条件之一,则MbType等于"I_8x8"(称为I宏块类型),MvNum等于0:——PictureStructure的值为"1".
——PictureStructure的值为"0"并且MbIndex=MbWidthMbHeight/2:——aec_enable的值为"0"时,如果skip_mode_flag的值为"1",MbTypeIndex等于mb_type加1;否则MbTypeIndex等于mb_type.
如果MbTypeIndex大于或等于5,则mb_type中包含的CBP信息CBPCodeNum等于MbTypeIndex减5,然后令MbTypeIndex等于5.
——aec_enable的值为"1"时,mb_type和MbTypeIndex的关系见表54.
b)如果当前图像是P帧:GY/T257.
1—2012721)aec_enable的值为"0"时,如果skip_mode_flag的值为"1",MbTypeIndex等于mb_type加1;否则MbTypeIndex等于mb_type.
如果MbTypeIndex大于或等于5,则mb_type中包含的CBP信息CBPCodeNum等于MbTypeIndex减5,然后令MbTypeIndex等于5.
2)aec_enable的值为"1"时,mb_type和MbTypeIndex的关系见表54.
c)如果当前图像是B帧:1)aec_enable的值为"0"时,如果skip_mode_flag的值为"1",MbTypeIndex等于mb_type加1;否则MbTypeIndex等于mb_type.
如果MbTypeIndex大于或等于24,则mb_type中包含的CBP信息CBPCodeNum等于MbTypeIndex减24,然后令MbTypeIndex等于24.
2)aec_enable的值为"1"时,如果skip_mode_flag的值为"1",MbTypeIndex等于mb_type加1;否则MbTypeIndex等于mb_type.
如果当前图像是P帧,或者当前图像是I帧并且PictureStructure的值为0同时MbIndex>=MbWidthMbHeight/2,MbType和MvNum的值见表55;如果当前图像是B帧,MbType和MvNum的值见表56.
如果MbType等于"B_8x8",MbPartType和MbPartMvNum的值用mb_part_type查表57,MvNum是该宏块所有块的MbPartMvNum的和.
表54mb_type和MbTypeIndex的关系mb_type的值MbTypeIndex的值skip_mode_flag的值为"1"skip_mode_flag的值为"0"0551102213324435-4表55P帧的宏块类型MbTypeIndex的值宏块类型(MbType)运动矢量数(MvNum)预测模式(MbPredMode)宏块分类0P_Skip0前向P宏块类型1P_16x161前向P宏块类型2P_16x82前向P宏块类型3P_8x162前向P宏块类型4P_8x84前向P宏块类型5I_8x80无I宏块类型表56B帧的宏块类型MbTypeIndex的值宏块类型(MbType)运动矢量数(MvNum)预测模式(MbPredMode)宏块分类0B_Skip0双向B宏块类型1B_Direct_16x160双向B宏块类型2B_Fwd_16x161前向B宏块类型3B_Bck_16x161后向B宏块类型GY/T257.
1—201273表56(续)MbTypeIndex的值宏块类型(MbType)运动矢量数(MvNum)预测模式(MbPredMode)宏块分类4B_Sym_16x161双向B宏块类型5B_Fwd_Fwd_16x82上前、下前B宏块类型6B_Fwd_Fwd_8x162左前、右前B宏块类型7B_Bck_Bck_16x82上后、下后B宏块类型8B_Bck_Bck_8x162左后、右后B宏块类型9B_Fwd_Bck_16x82上前、下后B宏块类型10B_Fwd_Bck_8x162左前、右后B宏块类型11B_Bck_Fwd_16x82上后、下前B宏块类型12B_Bck_Fwd_8x162左后、右前B宏块类型13B_Fwd_Sym_16x82上前、下双B宏块类型14B_Fwd_Sym_8x162左前、右双B宏块类型15B_Bck_Sym_16x82上后、下双B宏块类型16B_Bck_Sym_8x162左后、右双B宏块类型17B_Sym_Fwd_16x82上双、下前B宏块类型18B_Sym_Fwd_8x162左双、右前B宏块类型19B_Sym_Bck_16x82上双、下后B宏块类型20B_Sym_Bck_8x162左双、右后B宏块类型21B_Sym_Sym_16x82上双、下双B宏块类型22B_Sym_Sym_8x162左双、右双B宏块类型23B_8x80~4前向、后向、双向B宏块类型24I_8x80无I宏块类型表57B_8x8的宏块子类型mb_part_type的值宏块子类型(MbPartType)运动矢量数(MbPartMvNum)预测模式(MbPartPredMode)0SB_Direct_8x80双向1SB_Fwd_8x81前向2SB_Bck_8x81后向3SB_Sym_8x81双向表55、表56和表57定义的MbType和MbPartType中,有Skip字样的称为跳过模式,有Direct字样的称为直接模式,有Sym字样的称为对称模式.
表55到表57中的MvNum表示当前宏块在位流中的运动矢量数.
对称模式是一种双向预测模式,此时位流中只包含前向参考索引和前向运动矢量,对称模式的后向参考索引和后向运动矢量的推导见9.
9.
1.
9.
4.
3相邻块一个块E和它的相邻块A、B、C和D之间的空间位置如图11所示.
图11中E的大小可以是1616、168、816或88.
块A是块E的左边块,块B是块E的上边块.
设块E左上角样本在图像中的坐标是(x0,y0),右上角样本在图像中的坐标是(x1,y1),块X(X是A、B、C或D)是表58给出的样本所在的编码块.
一个宏块K和它的相邻块A、B、C、D、F和G之间的空间位置如图12所示.
设宏块K左上角样本在图像中的坐标是GY/T257.
1—201274(x0,y0),右上角样本在图像中的坐标是(x1,y1),块Y(Y是A、B、C、D、F和G)是表58给出的样本所在的编码块.
表58中坐标均为样本在图像中的坐标.
图11块E和相邻块的空间位置关系图12宏块K和相邻块的空间位置关系表58相邻块的位置PictureStructure的值块A右上角样本位置块B左下角样本位置块C左下角样本位置块D右下角样本位置块F右上角样本位置块G左下角样本位置0(x0-1,y0)(x0,y0-2)(x1+1,y1-2)(x0-1,y0-2)(x0-1,y0+16)(x0+8,y0-2)1(x0-1,y0)(x0,y0-1)(x1+1,y1-1)(x0-1,y0-1)(x0-1,y0+8)(x0+8,y0-1)相邻块X(X为A、B、C或D)及相邻块Y(Y为F或G)"存在"指该块应在图像内并且该块应与块E或K属于同一条带;否则相邻块"不存在".
如果块"不存在"或者尚未解码,则此块"不可用";否则此块"可用".
如果图像样本所在的块"不存在"或者此样本尚未解码,则此样本"不可用";否则此样本"可用".
9.
4.
4帧内预测模式9.
4.
4.
1概述当前宏块的每一个88块使用9.
4.
4.
2定义的方法确定其预测模式.
9.
4.
4.
288帧内预测模式88块采用以下方法确定其预测模式:GY/T257.
1—201275a)如果当前块E是亮度块:1)计算当前块预测模式的预测值:——如果左边块A"存在"并且是帧内预测块,则将左边块的帧内预测模式赋值给intraPredModeA;否则intraPredModeA等于"-1".
——如果上边块B"存在"并且是帧内预测块,则将上边块的帧内预测模式赋值给intraPredModeB;否则intraPredModeB等于"-1".
——如果intraPredModeA或intraPredModeB等于"-1",则predIntraPredMode等于"2";否则predIntraPredMode等于Min(intraPredModeA,intraPredModeB).
2)aec_enable的值为"1"时,置BypassFlag的值为"0",解析得到intra_luma_pred_mode.
如果intra_luma_pred_mode的值为"0",则IntraLumaPredMode等于predIntraPredMode;否则:——如果intra_luma_pred_mode的值为"4",则intra_luma_pred_mode的值置为"0".
——如果intra_luma_pred_mode小于predIntraPredMode,则IntraLumaPredMode等于intra_luma_pred_mode;否则IntraLumaPredMode等于intra_luma_pred_mode加1.
3)aec_enable的值为"0"时,如果pred_mode_flag的值为"1",则预测模式IntraLumaPredMode等于predIntraPredMode;否则,如果intra_luma_pred_mode小于predIntraPredMode,则IntraLumaPredMode等于intra_luma_pred_mode;否则IntraLumaPredMode等于intra_luma_pred_mode加1.
b)如果当前块E是色度块,块的顺序号为4、5时预测模式IntraChromaPredMode等于intra_chroma_pred_mode;块的顺序号为6、7时IntraChromaPredMode等于intra_chroma_pred_mode_422.
IntraLumaPredMode的值与88亮度块预测模式的关系见表59.
IntraChromaPredMode的值与88色度块预测模式的关系见表60.
表5988亮度块帧内预测模式IntraLumaPredMode的值帧内预测模式0Intra_8x8_Vertical1Intra_8x8_Horizontal2Intra_8x8_DC3Intra_8x8_Down_Left4Intra_8x8_Down_Right表6088色度块帧内预测模式IntraChromaPredMode的值帧内预测模式0Intra_Chroma_DC1Intra_Chroma_Horizontal2Intra_Chroma_Vertical3Intra_Chroma_Plane表59所示的88亮度块帧内预测模式见图13.
GY/T257.
1—201276图1388亮度块帧内预测模式9.
4.
5参考图像选择每帧图像使用的参考图像除该帧本身外不应超过两个,它们应是最近解码的I帧或P帧.
参考索引值用来确定对当前图像进行解码处理所用的参考图像,参考索引的取值范围是0~3.
参考图像的两场可有不同的参考索引值.
参考索引值随着参考图像与当前图像距离(显示顺序)的增加而增加,参考索引值为"0"的参考图像与当前图像的距离最近,参考索引值为1的图像距离其次,参考索引值为3的图像距离最远.
前向预测和后向预测的参考索引值单独处理.
参考图像(或场)的参考索引值的标记方法如下[图14到图20中的数字表示参考索引值,箭头所指的是参考图像(或场)]:a)如果当前图像是I帧并且PictureStructure等于"0",同时当前解码场在显示顺序上是第二场,标记方法如图14所示.
此时参考图像(或场)的个数NumberOfReference等于"1".
b)如果当前图像是P帧并且PictureStructure等于"1",标记方法如图15所示.
此时NumberOfReference等于"2".
c)如果当前图像是P帧并且PictureStructure等于"0",同时当前解码场在显示顺序上是第一场,标记方法如图16所示.
此时NumberOfReference等于"4".
d)如果当前图像是P帧并且PictureStructure等于"0",同时当前解码场在显示顺序上是第二场,标记方法如图17所示.
此时NumberOfReference等于"4".
e)如果当前图像是B帧并且PictureStructure等于"1",标记方法如图18所示.
此时NumberOfReference等于"2".
f)如果当前图像是B帧并且PictureStructure等于"0",同时当前解码场在显示顺序上是第一GY/T257.
1—201277场,标记方法如图19所示.
此时NumberOfReference等于"4".
g)如果当前图像是B帧并且PictureStructure等于"0",同时当前解码场在显示顺序上是第二场,标记方法如图20所示.
此时NumberOfReference等于"4".
图14参考索引标记方法1图15参考索引标记方法2图16参考索引标记方法3GY/T257.
1—201278图17参考索引标记方法4图18参考索引标记方法5图19参考索引标记方法6图20参考索引标记方法7GY/T257.
1—201279如果当前图像的位流中不出现mb_reference_index,参考索引值为0;否则参考索引值等于mb_reference_index的值.
如果使用加权预测,解码的加权预测参数按参考索引值由小到大依次分配给各参考图像(或场).
如果当前图像是B帧,对参考索引值相同的前后参考图像(或场),解码的加权预测参数先分配给前向参考图像(或场),再分配给后向参考图像(或场).
9.
4.
6运动矢量9.
4.
6.
1概述块的距离索引DistanceIndex定义如下:如果块的所有像素都属于所在隔行扫描图像的第二场(显示顺序)或者都属于所在逐行扫描图像的底场,DistanceIndex等于picture_distance乘2加1;否则DistanceIndex等于picture_distance乘2.
当前块(属于当前图像)和它的运动矢量所指向的参考块(属于参考图像)之间的距离BlockDistance计算如下:a)如果参考块在当前块之前(显示顺序),BlockDistance等于当前块的DistanceIndex减去参考块的DistanceIndex的差加上512的和模512.
b)如果参考块在当前块之后(显示顺序),BlockDistance等于参考块的DistanceIndex减去当前块的DistanceIndex的差加上512的和模512.
9.
4.
6.
2亮度运动矢量预测图11中块A、B、C、D的原始运动矢量或转换后的运动矢量为mvA、mvB、mvC、mvD,对应的BlockDistance为BlockDistanceA、BlockDistanceB、BlockDistanceC、BlockDistanceD,对应的参考索引为referenceIndexA、referenceIndexB、referenceIndexC、referenceIndexD.
a)如果A"不可用"或者采用帧内预测模式,或者与当前块E没有同一预测方向的运动矢量,mvA为零矢量,BlockDistanceA等于"1",A的参考索引值为"-1".
b)如果B"不可用"或者采用帧内预测模式,或者与当前块E没有同一预测方向的运动矢量,mvB为零矢量,BlockDistanceB等于"1",B的参考索引值为"-1".
c)如果D"不可用"或者采用帧内预测模式,或者与当前块E没有同一预测方向的运动矢量,mvD为零矢量,BlockDistanceD等于"1",D的参考索引值为"-1".
d)如果C"不可用",那么mvC等于mvD,BlockDistanceC等于BlockDistanceD,C的参考索引值等于D的参考索引值.
e)如果C采用帧内预测模式,或者与当前块E没有同一预测方向的运动矢量,mvC为零矢量,BlockDistanceC等于"1",C的参考索引值为"-1".
当前块E的运动矢量预测值MVEPred计算过程如下:a)第一步,如果A、B、C三者中只有一个块X的参考索引值不为"-1",那么MVEPred等于mvX(X为A、B或C);否则进行第二步.
b)第二步,如果E所在宏块按168或816模式编码,计算过程如下(见图21):1)816模式:——E为左块:如果A和E的参考索引值相同,MVEPred等于mvA;否则进行第三步.
——E为右块:如果C和E的参考索引值相同,MVEPred等于mvC;否则进行第三步.
2)168模式:——E为上块:如果B和E的参考索引值相同,MVEPred等于mvB;否则进行第三步.
——E为下块:如果A和E的参考索引值相同,MVEPred等于mvA;否则进行第三步.
GY/T257.
1—201280图21816或168模式预测c)第三步,根据BlockDistanceA、BlockDistanceB、BlockDistanceC、BlockDistanceE对mvA(mvA_x,mvA_y)、mvB(mvB_x,mvB_y)、mvC(mvC_x,mvC_y)进行缩放,得到MVA(MVA_x,MVA_y)、MVB(MVB_x,MVB_y)、MVC(MVC_x,MVC_y).
其中BlockDistanceE是当前块E对应的BlockDistance.
计算MVA(MVA_x,MVA_y)、MVB(MVB_x,MVB_y)、MVC(MVC_x,MVC_y):1)如果BlockDistanceA等于0,MVA_x=mvA_x,MVA_y=mvA_y;2)否则,MVA_x=Sign(mvA_x)((Abs(mvA_x)BlockDistanceE(512/BlockDistanceA)+256)>>9)MVA_y=Sign(mvA_y)((Abs(mvA_y)BlockDistanceE(512/BlockDistanceA)+256)>>9)3)如果BlockDistanceB等于0,MVB_x=mvB_x,MVB_y=mvB_y;4)否则,MVB_x=Sign(mvB_x)((Abs(mvB_x)BlockDistanceE(512/BlockDistanceB)+256)>>9)MVB_y=Sign(mvB_y)((Abs(mvB_y)BlockDistanceE(512/BlockDistanceB)+256)>>9)5)如果BlockDistanceC等于0,MVC_x=mvC_x,MVC_y=mvC_y;6)否则,MVC_x=Sign(mvC_x)((Abs(mvC_x)BlockDistanceE(512/BlockDistanceC)+256)>>9)MVC_y=Sign(mvC_y)((Abs(mvC_y)BlockDistanceE(512/BlockDistanceC)+256)>>9)d)第四步,定义距离Dist(MV1,MV2)=Abs(x1–x2)+Abs(y1–y2),其中运动矢量MV1=[x1,y1],MV2=[x2,y2].
定义VAB等于Dist(MVA,MVB),VBC等于Dist(MVB,MVC),VCA等于Dist(MVC,MVA).
MVEPred的计算如下:1)计算FMV等于Median(VAB,VBC,VCA);2)如果FMV和VAB相等,MVEPred等于MVC;3)否则,如果FMV和VBC相等,MVEPred等于MVA;4)否则,MVEPred等于MVB.
GY/T257.
1—2012819.
4.
6.
3亮度运动矢量解码当前块E的运动矢量mvE等于MVEPred加上由mv_diff_x和mv_diff_y解码得到的运动矢量增量的和.
运动矢量基本单位为1/4样本.
当前块E的运动矢量应符合6.
2.
5的范围规定.
9.
4.
7宏块编码模板当aec_enable的值为"0"时,如果当前宏块的cbp在位流中,解析cbp得到CodeNum;否则,如果当前宏块的类型不等于P_Skip或B_Skip,令CodeNum的值等于CBPCodeNum(见9.
4.
2).
由CodeNum查表42得到MbCBP(见8.
2).
MbCBP表示宏块中顺序号为0到5的4个88亮度块和2个88色度块是否包含非零变换系数.
MbCBP的第n位为"0"表示顺序号为n的88块没有非零系数,等于"1"表示该88块至少有一个非零系数(顺序号见6.
5).
当aec_enable的值为"1"时,如果当前宏块的cbp在位流中,解析cbp得到MbCBP(见8.
4).
MbCBP表示宏块中顺序号为0到5的4个88亮度块和2个88色度块是否包含非零变换系数.
MbCBP的第n位为"0"表示顺序号为n的88块没有非零系数,等于"1"表示该88块至少有一个非零系数(顺序号见6.
5).
当chroma_format的值为"10"并且aec_enable的值为"0"时,如果当前宏块的cbp_422在位流中,解析cbp_422得到CodeNum.
由CodeNum查表43得到MbCBP422(见8.
2).
MbCBP422表示4:2:2格式的宏块中顺序号为6和7的2个88色度块是否包含非零变换系数.
MbCBP422的第n位为"0"表示顺序号为n+6的88色度块没有非零系数,等于"1"表示该88色度块至少有一个非零系数(顺序号见6.
5).
第一、香港服务器机房这里我们可以看到有提供四个大带宽方案,是全向带宽和国际带宽,前者适合除了中国大陆地区的全网地区用户可以用,后者国际带宽适合欧美地区业务。如果我们是需要大陆地区速度CN2优化的,那就需要选择常规的优化带宽方案,参考这里。CPU内存硬盘带宽流量价格选择E3-12308GB240GB SSD50M全向带宽不限999元/月方案选择E3-12308GB240GB SSD100M国际带宽不...
spinservers是Majestic Hosting Solutions LLC旗下站点,主要提供国外服务器租用和Hybrid Dedicated等产品的商家,数据中心包括美国达拉斯和圣何塞机房,机器一般10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。目前,商家针对部分服务器提供优惠码,优惠后达拉斯机房服务器最低每月89美元起,圣何塞机房服务器最低每月...
乐凝网络怎么样?乐凝网络是一家新兴的云服务器商家,目前主要提供香港CN2 GIA、美国CUVIP、美国CERA、日本东京CN2等云服务器及云挂机宝等服务。乐凝网络提供比同行更多的售后服务,让您在使用过程中更加省心,使用零云服务器,可免费享受超过50项运维服务,1分钟内极速响应,平均20分钟内解决运维问题,助您无忧上云。目前,香港HKBN/美国cera云服务器,低至9.88元/月起,支持24小时无理...