一种HEVC解码器中的错误检测方法和装置
技术领域
本发明涉及视频编解码技术领域,具体涉及一种HEVC解码器中的错误检测方法和装置。
背景技术
HEVC,英文全拼:High Efficiency Video Coding,是一种新的视频压缩标准。可以替代H.264/AVC编码标准。HEVC压缩方案可以使1080P视频内容时的压缩效率提高50%左右,这就意味着视频内容的质量将上升许多,而且可以节省下大量的网络带宽,对于消费者而言,我们可以享受到更高质量的4K视频、3D蓝光、高清电视节目内容。HEVC可以被认为很快即将流行的协议标准,因为不管是3D蓝光播放器还是其他的一些流媒体播放器,它都急需一个新的编解码器,以达到播放4K内容的能力。
早在2004年,ITU-T视频编码专家组(VCEG)开始研究新技术以便创建一个新的视频压缩标准。在2004年10月,H.264/AVC小组对潜在的各种技术进行了调查。2005年1月VCEG的会议上,VCEG开始指定某些主题为“关键技术”作进一步研究。2005年成立软件代码库称为Key Technical Areas(KTA)用来评估这些新的“关键技术。KTA的软件是在联合模型(JM)基础上由MPEG和VCEG的视频组联合开发的,项目名称暂定为H.265和H.NGVC(Next-generation Video Coding),此项目在2010年最终演化为由VCEG和MPEG合资项目也叫做HEVC(High efficiency video coding)。
按照NGVC的初步要求,在维持视觉质量相同的情况下,比特率较H.264/MPEG-4AVC的高中档(high profile),计算复杂度维持在比特率较H.264/MPEG-4 AVC的高中档的1/2至3倍之间。“H.265”只是作为“高性能视频编码(HEVC)”一个昵称。2009年7月,实验结果表明比特率相较于H.264/AVC High Profile平均降低20%左右,这些结果促使MPEG与VCEG合作发起的新的标准化工作。
2010年1月,VCEG和MPEG开始发起视频压缩技术正式提案。相关技术由视频编码联合组(Joint Collaborative Team on Video Coding(JCT-VC))审议和评估,其合作小组第一次会议于2010年4月召开大会,一共有27个完整的提案。评价结果表明,一些提案在许多测试用例可以达到只用一半的比特率并维持H.264/AVC相同的视觉质量。在这次会议上,联合项目名改称为高效率的视频编码(HEVC),并且JCT-VC小组把相关技术集成到一个的软件代码库(HM)和标准文本草案规范,并进行进一步实验,以评估各项功能。
2012年2月10日,在美国圣何塞召开了第99届MPEG会议。MPEG组织和ITU-T组织对JCT-VC的工作表示满意,准备于2013年1月,同时在ISO/IEC和ITU-T发布HEVC标准的最终版本。
2013年1月26号,HEVC正式成为国际标准。
一个典型的HEVC比特流如图1所示由多个语法部分组成,其中VPS是视频参数集,SPS是序列参数集,PPS是图像参数集,Slice header是条带头,slice data是条带数据。
在实际应用中,上述HEVC比特流通常会被封装成原始字节序列负载(Raw ByteSequence Payload,缩写为RBSP),继而封装成网络抽象层单元(Network Abstract LayerUnit,缩写为NALU),最后封装成传输包(Transport packet)或字节流(Byte stream)。图2显示了这个封装过程。
按照HEVC标准编码的HEVC码流是一个压缩数据流,需要经过解码器解码恢复最终的视频图像数据。图3是一个HEVC解码器的框架示意图。在实际应用中,上述HEVC解码框架既可以应用于软件解码器也可以应用于硬件解码器。其中码流解析器是负责解析码流的模块,它的基本功能就是完成图2中HEVC码流的语法解析。码流解析器的输入是封装成NALU的HEVC码流,输出是熵解码之后的HEVC各层语法,包括VPS、SPS、PPS、Slice header里的高层编码参数以及Slice data里的底层编码数据。
在HEVC码流的制作和传输过程中,由于多种原因可能会导致码流出错,不符合规范的码流可能会引起HEVC解码器不能正常工作。
发明内容
本发明的目的是通过以下技术方案实现的。
为了解决码流中存在错误的问题,本发明采用解码器的码流解析器加入错误检测功能及时把错误检测出来并进行相应处理。
根据本发明的一个方面,提供了一种HEVC解码器中的错误检测方法,包括如下步骤:
S1.根据当前解码位置与图像范围的关系,判断码流是否有错;
S2.在条带头里对高层编码语法元素进行错误检测;
S3.在条带数据内对底层解码参数进行错误检测。
优选的,步骤S2中,如果所述高层编码语法元素的取值范围超出正常范围,则视为检测出码流错误。
优选的,步骤S3中,如果所述底层解码参数的取值范围超出正常范围,则视为检测出码流错误。
优选的,步骤S1中,根据实际解出的编码树块个数计算出所述当前解码位置。
优选的,如果解码位置超出了图像范围,则表示当前帧解码数据大于图像应有数据,码流有错;如果解码位置小于图像范围而相邻的下一个条带头中的语法元素first_slice_segment_in_pic_flag为1,则表示当前帧解码数据小于图像应有数据,码流出错。
优选的,所述方法还包括:通过检查需要插入的字节对齐数据是否满足HEVC规范中的定义来判断码流是否有错误;所述字节对齐数据在HEVC规范中的定义是第一位比特是1,后续比特全部是0,长度取决于字节对齐需要补充的比特数。
优选的,所述方法还包括:通过检查尾随位是否满足HEVC规范中的定义来判断码流是否有错误;所述尾随位在HEVC规范中的定义是第一位比特是1,后续比特全部是0,长度取决于字节对齐需要补充的比特数。
根据本发明的另一个方面,还提供了一种HEVC解码器中的错误检测装置,包括:
高层编码语法元素检测单元,用于在条带头里对高层编码语法元素进行错误检测;
底层解码参数检测单元,用于在条带数据内对底层解码参数进行错误检测;
图像范围检测单元,用于根据当前解码位置与图像范围的关系,判断码流是否有错;
字节对齐数据检测单元,用于通过检查需要插入的字节对齐数据是否满足HEVC规范中的定义来判断码流是否有错误;
尾随位检测单元,用于通过检查尾随位是否满足HEVC规范中的定义来判断码流是否有错误。
本发明的优点在于:本发明从多个方面进行错误检测,检测全面完整、效率高,能够大大减少HEVC码流的错误率,提高编解码质量。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
附图1示出了HEVC比特流的结构示意图。
附图2示出了HEVC码流封装的过程示意图。
附图3示出了HEVC解码框架示意图。
附图4示出了本发明的一种HEVC解码器中的错误检测方法流程图。
附图5示出了本发明的一种HEVC解码器中的错误检测装置结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
根据本发明的实施方式,如图4所示,提出一种HEVC解码器中的错误检测方法,包括如下步骤:
S1.在slice_header中有两个语法元素first_slice_segment_in_pic_flag和slice_segment_address表示当前slice_data中的第一个编码树块(Coding Tree Block)在当前图像中的位置;在slice_data中有一个语法元素end_of_slice_segment_flag表示当前slice结束。当码流解析器在解码一个slice_data中发现end_of_slice_segment_flag,可以根据实际解出的编码树块个数计算出当前解码的位置。如果解码位置超出了图像范围,则表示当前帧解码数据大于图像应有数据,码流有错;如果解码位置小于图像范围而相邻的下一个slice_header中的first_slice_segment_in_pic_flag为1,则表示当前帧解码数据小于图像应有数据,码流出错。
S2.在条带头(slice header)里对高层编码语法元素进行错误检测,表1列举了可以检测的高层编码语法元素以及它们对应的取值范围:
表1.高层编码语法元素及取值范围
在上表中,左列为需要检测的语法元素,右列为该元素的合法取值范围,具体内容参照HEVC规范。码流解析器在解码过程中如果解得的该参数的数值超出这个范围,即检测出码流错误。
S3.在条带数据(Slice data)内对底层解码参数进行错误检测,表2列举了可以检测的底层解码参数以及它们对应的取值范围:
表2.底层解码参数及取值范围
在上表中,左列为需要检测的底层解码参数,中列为码流中的相关语法元素,右列为该解码参数的合法取值范围。如果码流解析器在解码过程中发现底层解码参数数值超出合法范围,即检测出码流错误。
需要强调的是,上面三个步骤S1-S3是本发明的保护主体,是必备的技术手段。另外,为了增强本发明的技术效果,可以继续增加以下两种检测手段作为辅助,分别作为步骤S4和S5,但是需要强调的是,这两种检测手段,并非是在上述步骤S1-S3之后才进行操作,而是在码流中的位置与S1-S3可能会交叉,而不限于在某个阶段才必须使用。
S4.HEVC规范规定在Slice header和Slice data中都会插入一些字节对齐数据(byte_alignment)来对齐8比特字节,byte_alignment在HEVC规范中的定义是第一位比特是1,后续比特全部是0,长度取决于字节对齐需要补充的比特数。码流解析器在解码有效语法数据中,可以通过检查需要插入的byte_alignment是否满足HEVC规范中的定义来判断码流是否有错误。
S5.HEVC封装码流过程中,通过对语法元素尾部插入尾随位(Trailing Bits)构成原始字节序列载荷(RBSP),如图2所示。Trailing Bits的使用是因为语法元素的长度可能不是字节对齐的,通过在尾部插入Trailing Bits构造字节对齐的RBSP。Trailing Bits在HEVC规范中的定义是第一位比特是1,后续比特全部是0,长度取决于字节对齐需要补充的比特数。码流解析器在解码有效语法数据之后,可以通过检查Trailing Bits是否满足HEVC规范中的定义来判断码流是否有错误。
如图5所示,根据本发明的另一个方面,还提供了一种HEVC解码器中的错误检测装置10,包括:
高层编码语法元素检测单元11,用于在条带头里对高层编码语法元素进行错误检测;
底层解码参数检测单元12,用于在条带数据内对底层解码参数进行错误检测;
图像范围检测单元13,用于根据当前解码位置与图像范围的关系,判断码流是否有错;
字节对齐数据检测单元14,用于通过检查需要插入的字节对齐数据是否满足HEVC规范中的定义来判断码流是否有错误;
尾随位检测单元15,用于通过检查尾随位是否满足HEVC规范中的定义来判断码流是否有错误。
本发明的优点在于:本发明从五个方面进行错误检测,检测全面完整、效率高,能够大大减少HEVC码流的错误率,提高编解码质量。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。