路径: 主页 > GB/T > 第223页 > GB/T 20090.16-2016
| 标准编号 | GB/T 20090.16-2016 (GB/T20090.16-2016) | | 中文名称 | 信息技术 先进音视频编码 第16部分:广播电视视频 | | 英文名称 | Information technology -- Advanced coding of audio and video -- Part 16: Broadcasting video | | 行业 | 国家标准 (推荐) | | 中标分类 | L71 | | 国际标准分类 | 35.040 | | 字数估计 | 140,158 | | 发布日期 | 2016-04-25 | | 实施日期 | 2016-11-01 | | 标准依据 | 国家标准公告2016年第7号 | | 发布机构 | 中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会 |
GB/T 20090.16-2016: 信息技术 先进音视频编码 第16部分:广播电视视频
GB/T 20090.16-2016 英文名称: Information technology -- Advanced coding of audio and video -- Part 16: Broadcasting video
ICS 35.040
L71
中华人民共和国国家标准
信息技术 先进音视频编码
第16部分:广播电视视频
1 范围
GB/T 20090的本部分规定了多种比特率、分辨率和质量的视频压缩方法,并且规定了解码过程。
本部分适用于地面电视、有线电视、卫星电视、网络等应用。
5 约定
5.1 概述
本部分中使用的数学运算符和优先级与C语言使用的类似。但对整型除法和算术移位操作进行
了特定定义。除特别说明外,约定编号和计数从0开始。
5.2 算术运算符
算术运算符定义见表1。
5.3 逻辑运算符
逻辑运算符定义见表2。
5.9 位流语法、解析过程和解码过程的描述方法
5.9.1 位流语法的描述方法
位流语法描述方法类似C语言。位流的语法元素使用粗体字表示,每个语法元素通过名字(用下
划线分割的英文字母组,所有字母都是小写)、语法和语义来描述。
语法表和正文中语法元素的值用常规字体表示。
某些情况下,可在语法表中应用从语法元素导出的其他变量值,这样的变量在语法表或正文中用不
带下划线的小写字母和大写字母混合命名。大写字母开头的变量用于解码当前以及相关的语法结构,
也可用于解码后续的语法结构。小写字母开头的变量只在它们所在的小节内使用。
语法元素值的助记符和变量值的助记符与它们的值之间的关系在正文中说明。在某些情况下,二
者等同使用。助记符由一个或多个使用下划线分隔的字母组表示,
每个字母组以大写字母开始,也可包括多个大写字母。
位串的长度是4的整数倍时,可使用十六进制符号表示。十六进制的前缀是“0x”,
例如“0x1a”表示位串“00011010”。
条件语句中0表示FALSE,非0表示TRUE。
语法表描述了所有符合本部分的位流语法的超集,附加的语法限制在相关条中说明。
表7给出了描述语法的伪代码例子。当语法元素出现时,表示从位流中读一个数据单元。
5.9.2 函数
5.9.2.1 说明
以下函数用于位流语法描述。假定解码器中存在一个位流指针,这个指针指向位流中要读取的下
一个二进制位的位置。函数由函数名及左右圆括号内的参数构成。函数也可没有参数。
5.9.2.2 byte_aligned()
如果位流的当前位置是字节对齐的,返回TRUE,否则返回FALSE。
5.9.2.3 next_bits(n)
返回位流的随后n个二进制位,MSB在前,不改变位流指针。如果剩余的二进制位少于n,则返回0。
5.9.2.4 byte_aligned_next_bits(n)
如果位流当前位置不是字节对齐的,返回位流当前位置的下一个字节开始的n个二进制位,MSB
在前,不改变位流指针;如果位流当前位置是字节对齐的,返回位流随后的n个二进制位,MSB在前,不
改变位流指针。如果剩余的二进制位少于n,则返回0。
5.9.2.5 next_start_code()
在位流中寻找下一个起始码,将位流指针指向起始码前缀的第一个二进制位。函数定义见表8。
5.9.2.8 read_bits(n)
返回位流的随后n个二进制位,MSB在前,同时位流指针前移n个二进制位。如果n等于“0”,则
返回0,位流指针不前移。函数也用于解析过程和解码过程的描述。
5.9.3 描述符
描述符表示不同语法元素的解析过程,见表11。
6 编码位流的结构
6.1 视频序列
6.1.1 概述
视频序列是位流的最高层语法结构。视频序列由序列头开始,后面跟着一个或多个编码图像,每帧
图像之前应有图像头。编码图像在位流中按位流顺序排列,位流顺序应与解码顺序相同。解码顺序可
与显示顺序不相同。序列结束码表明了一个视频序列的结束。
6.1.2 逐行和隔行视频序列
本部分支持两种序列:逐行序列和隔行序列。
帧由三个样本矩阵构成,包括一个亮度样本矩阵(Y)和两个色度样本矩阵(Cb和Cr)。样本矩阵元
素的值为整数。Y、Cb和Cr三个分量与原始的(模拟)红、绿和蓝色信号之间的关系,包括原始信号的
色度和转移特性等可在位流中定义,这些信息不影响解码过程。
场由构成帧的三个样本矩阵中相间的行构成,即帧样本矩阵的第一行、第三行、第五行等奇数行构
成一个场,称为顶场;第二行、第四行、第六行等偶数行构成另一个场,称为底场。
解码器的输出是一系列帧或场,两帧之间存在着一个帧时间间隔。对隔行序列而言,每帧图像的两
场之间存在着一个场时间间隔。对逐行序列而言,每帧图像的两场之间时间间隔为0。
6.1.3 序列头
视频序列头由视频序列起始码开始,后面跟着一串编码图像数据。
序列头可在位流中重复出现,称为重复序列头。使用重复序列头的主要目的是支持对视频序列的随机访问。
序列头后的第一个编码图像应是I帧。序列头后出现的P帧只能参考该序列头后出现的图像。在
对位流进行编辑或随机访问的情况下,重复序列头之前的全部数据可被丢弃,
这样得到的一个新的位流仍应符合本部分。
6.2 图像
6.2.1 概述
一幅图像是一帧,其编码数据由图像起始码开始,到序列起始码、序列结束码或下一个图像起始码结束。
在位流中,隔行扫描图像的两场的编码数据可依次出现,也可合并成帧。
两场数据的解码和显示顺序在图像头中规定。
图像的解码处理包括解析过程和解码过程。
6.2.2 图像格式
6.2.2.1 4∶2∶0格式
对于4∶2∶0格式,Cb和Cr矩阵水平和垂直方向的尺寸都只有Y矩阵的一半。Y矩阵的行数和
每行样本数都应是偶数。另外,如果图像两场的编码数据依次出现,则Y矩阵的行数还应能被4整除。
亮度和色度样本位置见图1说明:
6.2.2.2 4∶2∶2格式
对于4∶2∶2格式,Cb和Cr矩阵在水平方向的尺寸只有Y矩阵的一半,在垂直方向的尺寸和Y相
同。Y矩阵的每行样本数应是偶数。如果图像两场的编码数据依次出现,则Y矩阵的行数也应是偶数。
亮度和色度样本位置见图2。
6.2.3 图像类型
本部分定义了3种解码图像:
---帧内解码图像(I帧);
---前向帧间解码图像(P帧);
---双向帧间解码图像(B帧)。
6.2.4 图像间的顺序
如果视频序列中没有B帧,解码顺序与显示顺序相同。如果视频序列中包含B帧,解码顺序与显
示顺序不同,解码图像输出显示前应进行图像重排序。图像重排序规则如下:
---当前解码图像是B帧,输出由此B帧解码的图像;
---当前解码图像是I帧或P帧,如果存在前一个I帧或P帧的解码图像,输出前一个I帧或P帧
的解码图像。如果不存在前一个I帧或P帧的解码图像,不输出任何解码图像;
---位流解码完成后,如果缓冲区中还有未输出的解码图像,则输出该图像。
下面举例说明图像重排序:I帧和P帧之间有两个B帧,两个连续的P帧之间也有两个B帧。用图
像1I预测图像4P,用图像4P和1I预测图像2B和3B。
6.2.5 参考图像
P帧或B帧最多可有两帧参考图像。P帧可参考前向的两帧。除B帧外,在一帧中,后解码的场还
可参考当前帧的另外一场。B帧可参考一前一后的两帧。
运动矢量所指的参考像素可超出参考图像的边界,在这种情况下对超出参考图像边界的整数样本
应使用距离该整数参考样本所指位置最近的图像内的整数样本进行边界扩展。对亮度样本矩阵,参考
块的像素在水平和垂直方向均不应超出参考图像边界外16个像素。对色度样本矩阵:
---如果图像格式是4∶2∶0,参考块的像素在水平和垂直方向均不应超出参考图像边界外8个像素。
---如果图像格式是4∶2∶2,参考块的像素在水平方向不应超出参考图像边界外8个像素,在垂
直方向不应超出参考图像边界外16个像素。
场边界扩展方法和参考图像边界扩展方法相同。
6.3 条带
条带是按光栅扫描顺序连续排列的若干宏块行,条带内的宏块不应重叠,条带之间也不应重叠。
如果当前图像的两场数据合并成帧,条带内宏块的解码处理不应使用本图像其他条带的数据。
如果当前图像的两场数据依次出现,这两场数据应属于不同的条带,条带内宏块的解码处理不应使
用同一场其他条带的数据。
6.4 宏块
图像划分为宏块,宏块左上角的点不应超出图像边界。在位流中,当隔行扫描图像的两场编码数据
依次出现时,任一宏块的像素应来自同一场。
宏块的划分见图4,这种划分用于运动补偿。图4中矩形里的数字表示宏块划分后运动矢量和参
考索引在位流中的顺序。
7 位流的语法和语义
7.1 语法描述
7.1.1 起始码
起始码是一组特定的位串。在符合本部分的位流中,除起始码外的任何情况下都不应出现这些位串。
起始码由起始码前缀和起始码值构成。起始码前缀是位串“000000000000000000000001”。所
有的起始码都应字节对齐。
起始码值是一个8位整数,用来表示起始码的类型,见表12。
7.2.2.2.11 比特率低位 bit_rate_lower
BitRate的低18位。
7.2.2.2.12 比特率高位 bit_rate_upper
BitRate的高12位。
BitRate=(bit_rate_upper<<18)+bit_rate_lower
BitRate以400bit/s为单位计算视频位流的比特率,并向上取整。BitRate不应为0。
7.2.2.2.13 低延迟 low_delay
标志。值为“1”说明视频序列不包含B帧,不存在图像重排序延时,位流中可能包含所谓“大图像”
(见附录C);值为“0”说明视频序列可包含B帧,存在图像重排序延时,
位流中不包含所谓“大图像”(见附录C)。
7.2.2.2.14 位流缓冲区大小 bbv_buffer_size
18位无符号整数。规定了位流参考解码器对视频序列解码的位流缓冲区大小(见附录C)。BBS
是位流参考解码器对视频序列解码所需的位流缓冲区最小值(按位计算),其定义如下:
7.2.2.3 扩展和用户数据
7.2.2.3.1 扩展数据
7.2.2.3.1.1 视频扩展起始码
位串“0x000001B5”。标识视频扩展数据的开始。
7.2.2.3.1.2 视频扩展数据保留字节 reserved_extension_data_byte
8位无符号整数。保留位。解码器应丢弃这些数据。视频扩展数据保留字节中不应出现从任意字
节对齐位置开始的21个以上连续的“0”。
7.2.2.3.2 用户数据
7.2.2.3.2.1 用户数据起始码
位串“0x000001B2”。标识用户数据的开始。用户数据连续存放,直到下一个起始码。
7.2.2.3.2.2 用户数据字节 user_data
8位整数。用户数据的含义由用户自行定义。用户数据中不应出现
从任意字节对齐位置开始的21个以上连续的“0”。
7.2.2.4 序列显示扩展
7.2.2.4.1 视频扩展标号 extension_id
位串“0010”。标识序列显示扩展。
7.2.2.4.2 视频格式 video_format
3位无符号整数。说明视频在按本部分进行编码之前的格式,见表33。如果位流中没有出现序列
显示扩展,可假设视频格式为“未作规定的视频格式”。
7.2.2.4.3 样值范围
标志。说明亮度和色度信号样值的范围。如果位流中没有出现序列显示扩展,设sample_range为“0”。
7.2.2.5 版权扩展
7.2.2.5.1 视频扩展标号 extension_id
位串“0100”。标识版权扩展。
7.2.2.5.2 版权标志 copyright_flag
标志。值为“1”说明该版权扩展定义的版权信息有效期直到下一个版权扩展或视频序列结束码;值
为“0”说明该版权扩展没有定义版权信息。
版权信息由copyright_id和CopyrightNumber进一步说明。
9.11 环路滤波
9.11.1 概述
8×8亮度块之间的每条边界有一个“边界强度”Bs,色度块的边界强度用对应位置亮度块边界的
Bs代替,如图32和图33所示。如果Bs等于0则不要对边界滤波,
否则根据局部样本值的特性和Bs值对边界滤波。
环路滤波以宏块为单位,按照解码顺序依次处理。图像中每个宏块的滤波过程如下:
对亮度和色度分别做环路滤波,如图32和图33所示,首先从左到右对垂直边界滤波,然后从上到
下对水平边界滤波。当前宏块的上边或者左边的样本值可能在以前的宏块环路滤波过程中已经被修
改,当前宏块的环路滤波的输入为这些可能被修改的样本值,并且当前宏块环路滤波可能进一步修改这
些样本值。当前宏块......
|