标准规范下载简介
在线阅读
中华人民共和国国家标准
信息技术 先进音视频编码 第5部分:参考软件
Information technology-Advanced coding of audio and video-Part 5:Reference software
GB/T 20090.5-2012
发布部门:中华人民共和国国家质量监督检验检疫总局
中国国家标准化管理委员会
发布日期:2012年12月31日
实施日期:2013年06月01日
前 言
GB/T 20090《信息技术 先进音视频编码》分为以下9个部分:
——第1部分:系统;
——第2部分:视频;
——第3部分:音频;
——第4部分:符合性测试;
——第5部分:参考软件;
——第6部分:数字媒体版权管理;
——第7部分:移动视频;
——第8部分:在IP网络上传输AVS;
——第9部分:AVS文件格式。
本部分为GB/T 20090的第5部分。
本部分按照GB/T 1.1-2009给出的规则起草。
本部分由中华人民共和国工业和信息化部提出。
本部分由全国信息技术标准化技术委员会(SAC/TC 28)归口。
本部分起草单位:中国科学院计算技术研究所、清华大学、浙江大学、华中科技大学、北京工业大学、中山大学、华为技术有限公司、上海广电(集团)有限公司中央研究院、上海龙晶微电子有限公司、北京长信嘉信息技术有限公司、中国电子技术标准化研究所。
本部分主要起草人:高文、黄铁军、吴枫、何芸、虞露、梁凡、赵海武、马思伟、吕岩、李国平、张志明、沈燕飞、周敏华、贾云卫、郭红星、熊联欢、王强、王智鸣、陈建文、娄剑、张凯、张莉、赵德斌、娄东升。
引 言
GB/T 20090的第1、第2、第3等部分定义了系统和音视频信息的编码表示,而本部分包含了GB/T 20090第2、第3等部分所定义的工具集的模拟软件。该软件由在标准的制定过程中的一系列验证模型演变而来。因为一个工具的接受与加入到参考软件中会存在一个延迟,因此GB/T 20090的其他部分所定义的工具可能没有包含在该参考软件中。
当编码软件存在时,需要注意的是这些编码器仅仅支持规定性语法元素所产生的码流。这些编码器的性能并不能作为衡量质量和计算复杂度优化程度的标准。同时,编码端的工具并没有在本部分给出定义。
本部分目前仅针对GB/T 20090.2-2006,定义了满足GB/T 20090.2-2006规定要求的参考软件。
本部分给出的内容包括以下3个类别:
a)基本流解码软件在第4章中给出定义。本软件接收符合GB/T 20090.2-2006的编码基本流,然后解码这些码流而产生和该基本流关联的媒体格式,即视频。虽然本参考软件是GB/T 20090的规定性部分,但值得注意的是本软件中所采用的实现技术并不认为是规定性的——因为不同的实现方式也可以产生同样的结果——整个参考软件之所以被认为是规定性的,是因为它可以正确地实现GB/T 20090.2-2006中所描述的解码过程。
b)基本流编码软件在附录A中给出定义。该软件根据相应的媒体格式(视频)产生基本流,即视频基本流。该软件编码器提供了一种方法,用以获得符合GB/T 20090.2-2006规定语法的基本流。本部分没有规定编码技术,同时本部分提供的这些编码软件的质量和复杂度也是未经优化的。
c)参考软件的详细使用说明在附录B中给出定义。软件可以根据附录指明的配置方式产生符合不同编码条件的码流。
1 范围
GB/T 20090的本部分规定了满足GB/T 20090.2规定要求的参考软件。这是因为任何符合标准的软件的实现,包括采用同一符合标准的编码比特流以及相同的文件输出格式,都会输出相同的文件。符合GB/T 20090.2的实现不一定严格遵循参考软件的算法或者编程技术。编码软件不能超出GB/T 20090.2的技术描述文本。
本部分适用于数字电视广播、交互式存储媒体、直播卫星视频业务、多媒体邮件、分组网络的多媒体业务、实时通信业务、远程视频监控等应用系统的参考软件实现。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 20090.2-2006 信息技术 先进音视频编码 第2部分:视频
3 缩略语
下列缩略语适用于本文件
CBR:恒定比特率(Constant Bit Rate)
VBR:可变比特率(Variable Bit Rate)
4 视频参考软件
本部分给出的参考软件是按照GB/T 20090.2-2006的要求而编制的。
本部分所给出的文件位置是相对于参考软件根目录而言。
位置 说明
ldecodsrc 本软件使用C语言
附录A
(资料性附录)
编码软件
A.1 视频编码器
位置 说明
lcncodsrc 本软件使用C语言
附录B
(资料性附录)
视频参考软件使用详细说明
B.1 软件的编译
B.1.1 在Windows环境下使用Visual Studio 6.0编译
软件包中提供VC6.0工作区文件:rm.dsw,其中包含如下两个工程:
lencod 参考软件编码器。
ldecod 参考软件编码器。
可以选择所需要的工程在Debug或Release模式下进行编译,生成的二进制执行文件位于“Bin”目录下。
B.1.2 在Unix环境下使用gcc编译
编译编码器时,进入lencod目录,输入make。
编译解码器时,进入ldecod目录,输入make。
生成的二进制执行文件位于“Bin”目录下。
B.2 编码器使用说明
本章对RM参考软件提供一个详细的使用说明。
B.2.1 编码器语法格式
[-f config.cfg]
使用config.cfg作为配置参考输入文件。
{[-p EncParaml=EncValuel]…[-p EncParamM=EncValueM]}
重新设定配置参数EncParamN的值为EncValueN,该值将取代配置参数输入文件中的原有置。N∈{1…M}。
在B.2.3中将给出配置参数的详细说明。
B.2.2 编码器的输出信息
编码器运行时,会向标准输出流(默认为屏幕)上打印已经完成编码各帧的统计信息;编码全部完成后,还会打印总结信息。一个典型的编码器输出结果如下:
各帧统计信息说明如表B.1。
B.2.3 编码器配置参数
配置参数可以在配置参数输入文件中给定,也可以由-p命令指定,参见B.2.1。
B.2.3.1 文件输入输出参数
B.2.3.1.1 InputFile
类别:文本。
描述:输入的视频序列文件名。
说明:目前软件只支持单一格式的视频序列文件,也就是说,所有帧和YUV分量必须位于同一个文件。
示例:
B.2.3.1.2 InputHeaderLength
类别:正整数。
描述:以字节为单位表明输入视频序列文件的文件头长度。
说明:对大多数视频序列文件来说此值为0。
B.2.3.1.3 FramesToBeEncoded
类别:正整数。
描述:定义需要编码的I帧与P帧总数。
说明:如果使用了B帧,则FrameToBeEncoded的计算公式如下:
FramesToBeEncoded=int((总的编码帧数-1)/(NumberBFrames+1))+1。
示例1:IPPP编码模式,总共编10帧。
示例2:IBBP编码模式,总共编10帧。
B.2.3.1.4 SourceWidth,SourceHeight
类别:正整数。
描述:定义了视频序列一帧图像亮度以像素为单位的宽度与高度。
B.2.3.1.5 TraceFile
类别:文本。
描述:指定Trace文件的文件名。
说明:Trace文件记录编码过程中的信息,用于调试。
B.2.3.1.6 ReconFile
类别:文本。
描述:制定重建图像视频序列文件的文件名。
B.2.3.1.7 OutputFile
类别:文本。
描述:指定输出的AVS码流文件的文件名。
示例:
B.2.3.1.8 FrameRate
类别:正整数。
描述:指定输入视频序列的帧率。参考软件支持8种帧率,它们与FrameRate的对应关系见表B.2。
B.2.3.1.9 ChromaFormat
类别:整数。
描述:指定输入视频序列的亮度色度格式。ChromaFormat=1为4:2:0模式;ChromaFormat=2为4:2:2模式。
说明:参考软件目前仅支持4:2:0模式。
B.2.3.2 编码器控制参数
B.2.3.2.1 ProfileID
类别:整数。
描述:定义编码器所使用档次,32为基准档次。
说明:目前参考软件仅支持基准档次。
B.2.3.2.2 LevelID
类别:整数。
描述:定义编码器所使用级别,LevelID与级别的对应关系见表B.3。
B.2.3.2.3 IntraPeriod
类别:整数。
描述:定义I帧出现的周期,B帧不计。若其值为0,则除第一帧外不出现I帧。
示例:编码此结构的码流:IBBPBBIBBPBBI。
B.2.3.2.4 VECPeriod
类别:整数。
描述:定义video edit code出现的周期,以IntraPeriod为单位,也就是说,video edit code只在I帧前面出现。如果VECPeriod=0,则video edit code不出现。参见B.2.3.2.5。
B.2.3.2.5 SeqHeaderPeriod
类别:整数。
描述:定义序列头出现的周期,以IntraPeriod为单位。也就是说,序列头只在I帧前面出现。如果SeqHeaderPeriod=0,则序列头只在第一个I帧前面出现。
说明:IntraPeriod=0时SeqHeaderPeriod必须为0。
示例:编码此结构的码流(h)IBBPBBIBBPBB(h)I,(h)为序列头。
B.2.3.2.6 QPFirstFrame
类别:整数。
描述:指定所有I条带中所用QP值。
说明:此值范围为[0,63]。
B.2.3.2.7 QPRemainingFrame
类别:整数。
描述:指定所有P条带中所用QP值。
说明:此值范围为[0,63]。
B.2.3.2.8 QPBPicture
类别:整数。
描述:指定所有B条带中所用QP值。
说明:此值范围为[0,63]。
B.2.3.2.9 UseHadamard
类别:整数。
描述:指定在运动估计中亚像素搜索时是否使用Hadmard变换。UseHadamard=0则不使用,否则使用。
B.2.3.2.10 SearchRange
类别:整数。
描述:指定运动估计中的搜索范围。
B.2.3.2.11 NumberReferenceFrames
类别:正整数。
描述:参考帧的个数,用于B条带和P条带。
说明:此值的范围为[1,2]。
B.2.3.2.12 InterSearch16×16,InterSearch16×8,InterSearch8×16,InterSearch8×8
类别:整数。
描述:是否使用16×16,16×8,8×16,8×8的宏块划分模式。为1则使用,为0则不使用。
B.2.3.2.13 FrameSkip
类别:整数。
描述:指定相邻两个I帧或P帧之间从输入视频序列中跳过的帧数。此值为0则输入视频序列的各帧顺序被编码为I帧或P帧。参见B.2.3.1.3及B.2.3.2.14。
说明:此值不小于NumberBFrames。
示例:每隔一帧编码一帧。
B.2.3.2.14 NumberBFrames
类别:整数。
描述:指定相邻两个I帧或P帧之间插入B帧的个数。参见B.2.3.1.3及B.2.3.2.13。此值为0则不存在B帧。
说明:此值不大于FrameSkip。
B.2.3.2.15 RDOptimization
类别:整数。
描述:指定是否采用RDO编码优化。此值不为0采用RDO,否则不采用。
B.2.3.2.16 LoopFilterDisable
类别:整数。
描述:指定是否关闭环路滤波。此值为0使用环路滤波,否则关闭环路滤波。
B.2.3.2.17 LoopFilterParameter
类别:整数。
描述:指定是否使用默认环路滤波参数。此值为0使用默认环路滤波参数,否则应明确给定环路滤波参数,参见B.2.3.2.18。
B.2.3.2.18 LoopFilterAlphaOffset,LoopFilterBetaOffset
类别:整数。
描述:给定环路滤波参数,即标准中的alpha_c_offset和beta_offset语法元素。
说明:要求LoopFilterParameter不为0。
B.2.3.2.19 NumberOfRowsInSlice
类别:整数。
描述:指定每个条带包含的宏块行数。为0则一个条带就是一帧。
说明:此值不能超过一个编码图像的最大宏块行数。
B.2.3.2.20 WeightEnable
类别:整数。
描述:指定是否使用加权预测。此值为1使用加权预测,否则不用。
B.2.3.3 隔行逐行扫描处理参数
B.2.3.3.1 Progressive_frame
类别:整数。
描述:此值指定标准中的picture_structure语法元素。
说明:如果此值为1,则InterlaceCodingOption必须为0。
B.2.3.3.2 InterlaceCodingOption
类别:整数。
描述:指定编码方式。此值为0采用逐行编码;为1采用隔行编码;为2采用逐行隔行自适应(PAFF)编码。
B.2.3.3.3 repeat_first_field
类别:整数。
描述:此值指定标准中的repeat_first_field语法元素。
B.2.3.3.4 top_field_first
类别:整数。
描述:此值指定标准中的top_field_first语法元素。
B.2.3.4 码率控制参数
B.2.3.4.1 RateControlEnable
类别:整数。
描述:指定是否使用码率控制。此值为1使用码率控制,否则不用。
B.2.3.4.2 Bitrate
类别:整数。
描述:指定码率控制的目标码率,以比特每秒(bit/s)为单位。
B.2.3.4.3 InitialQP
类别:整数。
描述:指定码率控制中的初始QP值。
B.2.3.4.4 BasicUnit
类别:整数。
描述:指定码率控制中基本单元的大小,以宏块为单位。
说明:此值不应超过一帧中总的宏块数。此值不能为0。
B.2.3.4.5 ChannelType
类别:整数。
描述:指定传输信道的类别。此值为0为恒定比特率(CBR)信道,否则为可变比特率(VBR)信道。
B.3 解码器使用说明
B.3.1 解码器语法格式
decoder.cfg作为配置参数输入文件。
B.3.2 解码器的输出信息
解码器运行时,会向标准输出流(默认为屏幕)上打印已经完成解码各帧的统计信息;解码全部完成后,还会打印总结信息。一个典型的解码器输出结果如下:
各帧统计信息说明如表B.4。
B.3.3 解码器配置参数
在解码器配置参数文件中,应按顺序给定如下配置参数,每个参数占一行。
AVC码流文件名。
解码后输出的视频序列文件名。
参考视频序列(编码器端重建视频序列)文件名。
参考帧缓冲区个数。
是否使用环路滤波,0为使用,1为不使用。
示例: