帧内块复制单元及方法

文档序号:156337 发布日期:2021-10-26 浏览:48次 >En<

阅读说明:本技术 帧内块复制单元及方法 (Intra block copy unit and method ) 是由 黄异青 顾家其 冯发军 于 2021-07-16 设计创作,主要内容包括:本申请适用视频译码技术领域,尤其涉及帧内块复制单元。其中,帧内块复制单元包括获取单元、解码单元、解码辅助单元以及缓冲单元;获取单元从缓冲单元获取先前经解码的参考数据,并将先前经解码的参考数据以及当前待解码数据发送至解码单元;解码单元则利用先前经解码的参考数据对当前待解码数据进行解码,进而得到当前经解码数据,并将当前经解码数据发送至解码辅助单元以及缓冲单元,缓冲单元接收并缓存当前经解码数据,并将该数据作为下一待解码数据的参考数据,解码辅助单元用于接收当前经解码数据,并对当前经解码数据做至少压缩处理。如此,获取单元无需再等待完整的解码流程结束以后便可获取参考数据,提高了帧内块复制单元的解码效率。(The present application is applicable to the field of video coding techniques, and in particular, to intra block copy units. The intra block copying unit comprises an acquisition unit, a decoding auxiliary unit and a buffer unit; the acquisition unit acquires the previously decoded reference data from the buffer unit and sends the previously decoded reference data and the current data to be decoded to the decoding unit; the decoding unit decodes the current data to be decoded by using the previously decoded reference data to obtain the current decoded data, and sends the current decoded data to the decoding auxiliary unit and the buffer unit, the buffer unit receives and buffers the current decoded data and takes the data as the reference data of the next data to be decoded, and the decoding auxiliary unit is used for receiving the current decoded data and at least compressing the current decoded data. Therefore, the acquisition unit can acquire the reference data without waiting for the completion of the complete decoding process, and the decoding efficiency of the intra block copying unit is improved.)

帧内块复制单元及方法

技术领域

本申请属于视频译码技术领域,尤其涉及帧内块复制单元及方法。

背景技术

帧内块复制(intra block copy,IBC)译码模式是高效率视频编码(highefficiency video coding,HEVC)、AV1(alliance for open media video 1)等标准屏幕内容编码技术的重要组成之一。其中,HEVC标准和AV1标准下的基本译码单位分别是译码树单元(coding tree unit,CTU)和超级块(super block,SB)。

通常,当某一帧的某一像素块的内容一再出现时,该反复出现的内容所在像素块就适用IBC模式译码(或解码)。具体地,以在HEVC标准下解码为例,如图1所示,假设某一帧中前一个像素块A和后一个像素块B的内容相同,那么,在对后一个像素块B译码的时候,就可以将前一个已经译码过的像素块A作为参考像素块以对后一个像素块B进行译码,进而提高后一个像素块B的译码效率。

但是由于译码的过程是类似于流水线式的过程,即当前单元的输入依赖于前一单元的输出。所以,在对后一个像素块B进行解码时,作为参考的前一个像素块A可能还未从前一个解码流程中释放,此时如仍需利用像素块A对后一个像素块B进行解码,就必须要等到像素块A的解码流程结束,这期间存在延时问题,影响IBC模式的解码效率。

发明内容

有鉴于此,本申请提供了一种帧内块复制单元及方法,在本申请的方法中,通过在帧内块复制系统内增加缓冲单元以存储作为参考的、还处于解码流程中像素块A,以使在对像素块B进行解码时,能够直接从缓冲单元获取作为参考的像素块A,而无需等到像素块A的解码流程结束以后才可以获取像素块A,以此提高IBC模式的解码效率。

第一方面,本申请实施例提供了一种帧内块复制单元,包括:帧内块复制单元包括获取单元、解码单元、解码辅助单元,并且进一步包括缓冲单元;获取单元用于从缓冲单元获取先前经解码的参考数据,并将先前经解码的参考数据以及当前待解码数据发送至解码单元;解码单元用于接收先前经解码的参考数据以及当前待解码数据,并利用先前经解码的参考数据对当前待解码数据进行解码,得到当前经解码数据;以及解码单元将当前经解码数据发送至解码辅助单元、以及缓冲单元,缓冲单元用于接收并缓存当前经解码数据,以作为下一待解码数据的参考数据,解码辅助单元用于接收当前经解码数据,并对当前经解码数据做至少压缩处理。

在一些实施例中,获取单元对应于下文中的参考像素获取单元,解码单元对应下文中的帧内运动补偿单元,解码辅助单元对应下文中的输出单元以及帧内缓冲编码单元。当帧内运动补偿单元对当前待解码数据进行解码后,就将解码后的当前经解码数据发送至缓冲单元进行缓存,并作为下一待解码数据的参考数据,以及帧内运动补偿单元将解码后的当前经解码数据还发送至解码辅助单元以做后续处理。通过这种方式,参考像素获取单元在获取当前经解码数据作为参考数据时,就无需再等到整个解码流程结束,即当前经解码数据经过压缩处理之后,再获取当前经解码数据作为参考数据,对下一待解码数据进行解码,提高了帧内块复制单元的解码效率。

结合第一方面,在第一方面的一种可能的实现方式中,解码单元包括滤波单元;解码单元还用于利用滤波单元对当前经解码数据进行滤波处理。可以理解,在一些实施例中,解码单元中不仅包括帧内运动补偿单元,还包括滤波单元,由帧内运动补偿单元解码后的当前经解码数据还需经过滤波单元的滤波处理,之后才由滤波单元输出至缓冲单元以及解码辅助单元。

需要说明的是,是否需要经过滤波单元的处理由帧内块复制单元所采用的具体的编解码标准决定,例如在一些情况下,当采用当前的HEVC编解码标准进行解码时,当前经解码数据就需要经过滤波单元的滤波处理;当采用当前的AV1编解码标准进行解码时,当前经解码数据就不需要经过滤波单元的滤波处理。但是可以理解的是,随着科学技术的发展,前述编解码标准可能会有所增补或修改,在基于增补或修改后的编解码标准进行解码时,可能都不需要经过滤波单元的滤波处理,也可能都需要经过滤波单元的滤波处理,本申请对此不作限制。

结合第一方面以及上述可能的实现方式,在第一方面的一种可能的实现方式中,解码辅助单元还包括输出单元以及存储单元;解码单元将当前经解码数据发送至输出单元;输出单元用于接收当前经解码数据,并将当前经解码数据发送至存储单元;存储单元用于存储当前经解码数据,当当前经解码数据达到预设数量时,存储单元输出当前经解码数据至目标装置。在一些实施例中,解码辅助单元还包括存储单元和输出单元,存储单元对应于下文的像素存储单元,在解码单元将当前经解码数据发送至输出单元后,由输出单元再将当前经解码数据发送至存储单元进行存储,当存储单元存储的当前经解码数据达到预设数量时,就将当前经解码数据发送至目标装置以做后续处理,例如假设当前经解码数据是视频数据,那么存储单元将当前经解码数据发送至目标装置后进行播放。在另一些实施例中,当获取单元无法从缓冲单元获取当前经解码数据作为参考数据以对下一待解码数据进行解码时,获取单元将从存储单元中获取当前经解码数据,以确保获取单元一定能够获取当前经解码数据。

结合第一方面以及上述可能的实现方式,在第一方面的一种可能的实现方式中,帧内块复制单元还包括控制单元,以及获取单元还用于向控制单元发送查询请求,并根据与查询请求对应的查询结果确定是否从缓冲单元获取先前经解码的参考数据;控制单元用于接收查询请求,并根据查询请求向获取单元反馈对应的查询结果。在一些实施例中,帧内块复制单元还包括控制单元,在获取单元获取先前经解码的参考数据之前,获取单元可以通过向控制单元发送查询请求,并根据控制单元反馈的查询的结果确定是否从缓冲单元获取先前经解码的参考数据。

结合第一方面以及上述可能的实现方式,在第一方面的一种可能的实现方式中,解码辅助单元还包括压缩单元;输出单元将当前经解码数据发送至压缩单元;压缩单元用于接收当前经解码数据,并对当前经解码数据做数据压缩处理,以及压缩单元还用于将经压缩处理当前经解码数据输出至存储单元。在一些实施例中,解码辅助单元还包括压缩单元,压缩单元对应于下文的帧缓冲编码单元,输出单元接收到的当前经解码数据,需要再经过压缩单元的压缩处理,然后由压缩单元将经过压缩处理后的数据输出至存储单元,以此提高输出单元原本输出数据的速度。

结合第一方面以及上述可能的实现方式,在第一方面的一种可能的实现方式中,在压缩单元将经压缩处理的当前经解码数据输出至存储单元的同时,存储单元向压缩单元发送应答信息,应答信息表示存储单元是否完成对经压缩处理的当前经解码数据的存储。在一些实施例中,为了确保存储单元已经完成对经压缩处理的当前经解码数据的存储,存储单元会向压缩单元发送应答信息,以表示已经完成对经压缩处理的当前经解码数据的存储。

结合第一方面以及上述可能的实现方式,在第一方面的一种可能的实现方式中,在压缩单元接收到应答信息之后,压缩单元向控制单元发送用于表征当前经解码数据是否被输出至存储单元的指示信息;控制单元用于接收指示信息,以及控制单元还用于根据获取单元发送的查询请求以及指示信息,确定相应的查询结果,并将相应的查询结果发送至获取单元。在一些实施例中,压缩单元在收到应答信息后,向控制单元发送用于表示当前经解码数据是否被输出至存储单元的指示信息,控制单元在接收到该指示信息后,将根据获取单元发送的查询请求以及指示信息确定与查询请求相对应的查询结果。例如,假设获取单元发送查询“先前经解码的数据是否被存储至存储单元的查询请求”,而控制单元收到的指示信息恰好为“先前经解码数据已经被存储至存储单元”,那么控制单元根据指示信息以及查询请求确定的查询结果则为“先前经解码数据已经被存储至存储单元”。

可以理解,在另一些实施例中,获取单元也可以向控制单元发送关于“先前经解码数据是否被存储在缓冲单元”的查询请求,在这种情况下,当缓冲单元完成对先前经解码数据的存储后,也会向控制单元发送“先前经解码数据已经完成存储”的信息,然后控制单元将根据缓冲单元发送的信息,向获取单元反馈相应的查询结果,具体查询过程、反馈过程与上述获取单元向控制单元查询先前经解码数据是否被存储至存储单元的过程类似,此处不再赘述。

第二方面,本申请实施例提供了一种帧内块复制方法,该方法包括:接收当前待解码数据,以及从电子设备的缓冲单元获取先前经解码的参考数据;利用先前经解码的参考数据对当前待解码数据进行解码,得到当前经解码数据;经由第一通路将当前经解码数据缓存至缓冲单元,以作为下一待解码数据的参考数据,以及经由另一通路将当前经解码数据送至后续的处理,以作为处理完成的数据。应理解,上述第一通路指的是电子设备将当前经解码数据发送至缓冲单元的数据传输过程,另一通路指的是电子设备将当前经解码数据按照一般的解码流程做完整处理的数据传输过程。

结合上述第二方面,在第二方面的一些可能的实现方式中,在利用先前经解码的参考数据对当前待解码数据进行解码之后,再对当前经解码数据作滤波处理。

结合上述第二方面,在第二方面的一些可能的实现方式中,方法还包括:将处理完成的数据输出至电子设备的存储单元,并当存储单元内存储的处理完成的数据达到预设数量时,输出处理完成的数据输出至目标装置。

结合上述第二方面,在第二方面的一些可能的实现方式中,方法还包括:向电子设备的控制单元发送查询请求,电子设备根据与查询请求对应的查询结果,确定是否从缓冲单元获取先前经解码的参考数据。

结合上述第二方面,在第二方面的一些可能的实现方式中,经由另一通路将当前经解码数据送至后续的处理,以作为处理完成的数据,包括:利用电子设备的压缩单元对当前经解码数据进行数据压缩处理,得到压缩处理后的数据。

结合上述第二方面,在第二方面的一些可能的实现方式中,在将经过压缩处理后的数据输出至电子设备的存储单元的同时,电子设备的存储单元生成应答信息,并向压缩单元发送应答信息,应答信息表示存储单元是否完成对经压缩处理的当前经解码数据的存储。

结合上述第二方面,在第二方面的一些可能的实现方式中,在电子设备的压缩单元接收到应答信息之后,电子设备的压缩单元向电子设备的控制单元发送用于表征当前经解码数据是否被输出至电子设备的存储单元的指示信息;电子设备的控制单元接收指示信息,并根据查询请求以及指示信息,确定对应的查询结果。

第三方面,本申请实施例提供了一种电子设备,包括一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备执行如上述第二方面中任一项的帧内块复制方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有指令,指令在计算机上执行如上述第二方面中任一项的帧内块复制方法。

第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行如上述第二方面中任一项的帧内块复制方法。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是一些实施例提供的支持帧内块复制方法的像素块的示意图;

图2是一些实施例提供的一例编解码系统的结构示意图;

图3(a)是一些实施例提供的一例帧内块复制单元结构示意图;

图3(b)是图3(a)中的帧内块复制单元的解码流程示意图;

图4是一些实施例提供的一例帧内块复制单元解码流程时序示意图;

图5(a)是一些实施例提供的一例帧内块复制单元结构示意图;

图5(b)是图5(a)中的帧内块复制单元的解码流程示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

在视频、音频播放技术领域中,由于视频、音频等源数据的数据量过于庞大,如果直接将视频或音频的源数据传输至目标装置2进行播放,会消耗很大的带宽。所以,从源装置1传输视频、音频等数据时,会通过编解码系统10对视频、音频等源数据进行编码(或压缩)以减小源数据的数据大小,进而降低前述数据传输过程中的带宽消耗,然后由源装置1或能够发送经编码数据的其他装置将经过编码后的源数据发送至目标装置2或其他可以接收经编码的数据的装置,最后由目标装置2或其他接收经编码数据的装置进行解码(或解压缩)以便于后续处理。

在本申请的一些实施例中,上述源装置1或目标装置2可以为手机、平板电脑、可穿戴设备、车载设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本等能够接收/发送视频、音频等源数据的装置,本申请实施例对源装置1或目标装置2的具体类型不作任何限制。

图2是本申请的帧内块复制系统所在的编解码系统10的结构示意图。如图2所示,编解码系统10包括解码装置100,编码装置200。

其中,编码装置200用于接收源装置1的源数据例如是视频数据、音频数据等待编码数据,并对源数据利用编码技术例如VVC、HEVC、AV1等进行编码,然后将经编码的源数据发送至解码装置100进行解码。应理解,本申请对编码装置200如何对源数据进行编码的具体实现过程以及方式不作任何限制。

在本申请的一些实施例中,编码装置200可以是源装置1的一部分或者其他可以发送经编码的源数据的装置,本申请对此不作限制。

解码装置100在接收到经编码的源数据后,将采用与上述编码标准对应或一致的解码标准例如VVC对上述经编码的源数据进行解码,并将解码后的源数据发送至目标装置2进行后续处理,例如由目标装置2播放经解码的源数据。在本申请的一些实施例中,解码装置100可以是目标装置2的一部分或者其他可以接收并解码经编码的源数据的装置,本申请对此不作限制。

其中,解码装置100包括参考像素获取单元102,帧内运动补偿单元104,滤波单元106,输出单元108,像素存储单元112,熵解码单元114,逆量化单元116,逆变换处理单元118。其中,如图2的虚线框中以及进一步如图3(a)所示,参考像素获取单元102,帧内运动补偿单元104,滤波单元106,输出单元108,像素存储单元112构成帧内块复制单元100a。

具体地,在解码过程中,解码装置100首先从编码装置200接收经编码的源数据以及与编码过程相关联的语法元素。然后解码装置100的熵解码单元114对该经编码的源数据块进行熵解码,以产生各个经编码的源数据块之间的相对运动向量、预测模式指示符或其它语法元素。其中,相对运动向量指的是前一经编码的源数据块与后一经编码的源数据块之间的相对位置关系,例如后一经编码的源数据块在前一经编码的源数据块的左侧2像素(pixel)处。

预测模式指的是当前经编码的源数据块适用的解码模式,比如帧内块复制模式,或者帧间预测模式等等,对应的,预测模式指示符可以为帧内预测模式指示符,或帧间预测模式指示符。

之后,熵解码单元114将上述相对运动向量、预测模式指示符以及其它语法元素输出至帧内运动补偿单元104,以使帧内运动补偿单元104根据预测模式指示符对当前的经编码的源数据块进行解码。例如,如果预测模式指示符为帧内块复制模式,则说明当前的经编码的源数据块适用于帧内块复制模式,也即先前经解码的源数据块中存在与当前经编码的数据块内容相同的经解码的源数据块,所以帧内运动补偿单元104会通过参考像素获取单元102从像素存储单元112中获取先前某一经解码的像素块作为对当前的经编码的源数据块的参考数据块,并对当前经编码的源数据块进行解码。

逆量化单元116用于对由熵解码单元114解码的经量化的变换系数进行逆量化处理,即解量化,以产生解量化的变换系数。

逆变换处理单元118对上述逆量化单元116产生的解量化的变换系数进行逆变换(例如,逆离散余弦变化(discrete cosine transform,DCT)、逆整数变换等),以产生经编码的数据块中的残差块。其中,残差块指的上述参考数据块与滤波前经解码数据的差值,残差块与上述参考数据块相加,并经过滤波处理后,将得到经解码的源数据块。

解码装置100通过对来自逆变换处理单元118的残余块与帧内运动补偿单元104产生的预测块进行求和,并通过滤波单元106进行滤波处理,以去除经解码的源数据块的栅格化效应,并形成消除栅格化效应的经解码的源数据块。

上述经解码的数据块最终将由输出单元108输出并存储在像素存储单元112中,当像素存储单元112中存储的经解码的数据块达到一定数量时,会将存储的经解码的数据块一并发送至目标装置2,由目标装置2做后续处理例如在目标装置2上进行播放等。

以上对帧内块复制单元100a所在的编解码系统10中各个单元/装置的功能做了简单介绍。从上文可以看出,帧内运动补偿单元104会通过参考像素获取单元102从像素存储单元112中获取先前某一经解码的源数据块作为对当前的经编码的源数据块的参考数据块,并对当前经编码的源数据块进行解码,但是必须等到参考数据块被解码完成,即,从帧内运动补偿单元104到滤波单元106、输出单元108再到像素存储单元112,需要等待较长的时间,导致解码流程效率偏低。

为了提高解码效率,本申请提供的实施例中,在图3(a)所示的帧内复制单元100a中增加用于缓存从帧内运动补偿单元104中输出的经解码的像素块的存储单元及相应步骤。

具体而言,通过增加用于缓存从滤波单元106中输出的经解码的像素块的存储单元,就可以使得参考像素获取单元102能够直接从上述存储单元中获取经解码的像素块,省去了参考像素获取单元102等待经解码参考像素块进行滤波处理并被输出单元108输出至像素存储单元112的时间。

同时,为了进一步提高帧内块复制单元100a的解码效率,本申请还在输出单元108中增加了编码单元(或压缩单元),并通过编码单元将原本直接输出至像素存储单元112中的经解码像素块进行压缩处理以减小经解码像素块的数据大小,再由编码单元将压缩过的经解码像素块输出至像素存储单元112中,以此提高输出单元108的写出速度,进而提高整个解码流程的效率。

为了更清楚地说明本发明所欲解决的技术问题以及改进的要点,下文将对本申请的具体实施方式与作为本申请的改进基础的图3(a)所示的帧内块复制单元100a对比地进行解释。以源数据为如图1所示的视频帧为例,在上述解码过程中,当同一帧内存在内容相同的像素块A和像素块B时,对后一帧经编码的像素块B将采用帧内块复制模式进行解码,也即将先前经解码的像素块A作为解码当前经编码的像素块B的参考像素块。

具体地,结合图1,如图3(b)所示,在帧内块复制单元100a中,解码经编码的像素块B的流程中如下:

S101a:参考像素获取单元102从像素存储单元112获取作为参考像素块的先前经过解码的像素块A;

S103a:参考像素获取单元102将经过解码的像素块A以及当前需解码的经编码像素块B一同输出至帧内运动补偿单元104中,并由帧内运动补偿单元104参考经过解码的像素块A对像素块B进行解码;

S105a:帧内运动补偿单元104将经过解码的像素块B输出至滤波单元106,并由滤波单元106对经过解码的像素块B进行滤波处理,以去除经过解码的像素块B的栅格化效应;

S107a:滤波单元106将经过滤波处理的经过解码的像素块B输出至输出单元108;

S109a:输出单元108接收滤波单元106输出的经滤波处理以及经过解码的像素块B,并将经滤波处理以及经过解码的像素块B输出至像素存储单元112。

其中,像素存储单元112中存储的经过解码的像素块分为两种类型:一种为用于作为解码其他经编码像素块的参考像素块,例如上述的像素块A;一种为用于输出至目标装置2的像素块,并且,用于输出至目标装置2的像素块属于用于作为解码其他经编码像素块的参考像素块的一部分。当像素存储单元112内存储的用于输出至目标装置2的经解码的像素块的数量大于或等于预设值例如16块时,像素存储单元112会将16块经解码的像素块输出至目标装置2(参考图2),以便于目标装置2对经过解码的像素块做后续处理。

在上述步骤S101a-S109a的解码过程中,每个单元在不同时刻处理的像素块会不相同。继续参考图l,以当前视频帧为4×4的像素块1、CTU单元为2×2的像素块为例,在上述解码过程中,当前经编码的像素块1按照CTU大小被分为CTUn+1、CTUn+2、CTUn+3、CTUn+4四个像素块,其中,n为大于0的正整数,应理解,当n为0的时候,CTUn+1就为CTU1,属于第一个经编码的像素块,帧内块复制单元100a从编码装置200获取该第一个经编码的像素块。并且,在对第一个CTU1进行解码时,由于之前没有其他可参考的像素块,帧内复制单元100a会采用解码算法对经编码的CTU1进行解码,应理解,本申请对帧内复制单元100a所采用的具体的解码算法不作限制。

为了便于说明,以像素存储单元112中存储一个可做参考的经解码像素块CTUn为例,介绍帧内块复制单元100a中各单元在不同时刻处理的CTU像素块的情况,可以理解,像素存储单元112中存储的像素块可以为任何已经经过解码的像素块,本申请对此不作限制。具体地,各个单元在不同时刻处理的CTU像素块的情况如图4所示:

在T1时刻,参考像素获取单元102处理的像素块为CTUn+1,并用像素存储单元112中的经解码像素块CTUn作为参考像素块。

在T2时刻,参考像素获取单元102将CTUn+1输出至帧内运动补偿单元104;

同时,帧内复制单元100a接收到编码装置200中的经编码的CTUn+2;

参考像素获取单元102处理的像素块为CTUn+2,帧内运动补偿单元l04处理的像素块为CTUn+1,此时像素存储单元112中的经解码像素块仍为CTUn。

在T3时刻,参考像素获取单元102将CTUn+2输出至帧内运动补偿单元104;

帧内运动补偿单元l04将CTUn+l输出至滤波单元106,并接收参考像素获取单元102输出的CTUn+2;

滤波单元106则接收帧内运动补偿单元104输出的CTUn+1,并对CTUn+1进行滤波处理;

同时,帧内复制单元100a接收到编码装置200中的经编码的CTUn+3;

此时参考像素获取单元102处理的像素块为CTUn+3,帧内运动补偿单元104处理CTUn+2,滤波单元106处理CTUn+1,像素存储单元112中仍为CTUn。

在T4时刻,参考像素获取单元102将CTUn+3输出至帧内运动补偿单元104;

帧内运动补偿单元104将CTUn+2输出至滤波单元106,并接收参考像素获取单元102输出的CTUn+3;

滤波单元106将CTUn+1输出至输出单元108,并接收帧内运动补偿单元104输出的CTUn+2,并对CTUn+2进行滤波处理;

输出单元108则接收滤波单元106输出的CTUn+1。

同时,帧内复制单元100a接收到编码装置200中的经编码的CTUn+4;

此时参考像素获取单元102处理的像素块为CTUn+4,帧内运动补偿单元104处理CTUn+3,滤波单元106处理CTUn+2,输出单元108中的像素块为CTUn+1,像素存储单元112中仍为CTUn。

在T5时刻,参考像素获取单元102将CTUn+4输出至帧内运动补偿单元l04;

帧内运动补偿单元104将CTUn+3输出至滤波单元106,并接收参考像素获取单元102输出的CTUn+4;

滤波单元106将CTUn+2输出至输出单元108,并接收帧内运动补偿单元104输出的CTUn+3,并对CTUn+3进行滤波处理;

输出单元108将CTUn+1输出至像素存储单元112,并接收滤波单元106输出的CTUn+3;

此时参考像素获取单元102中没有要处理的像素块,帧内运动补偿单元104中处理的像素块为CTUn+4,滤波单元106中处理的像素块为CTUn+3,输出单元108中处理的像素块为CTUn+2,像素存储单元112中存储的像素块为CTUn+1、CTUn。

在T6时刻,参考像素获取单元102内没有要处理的像素块;

帧内运动补偿单元104将CTUn+4输出至滤波单元106;

滤波单元106将CTUn+3输出至输出单元108,并接收帧内运动补偿单元104输出的CTUn+4,并对CTUn+4进行滤波处理;

输出单元108将CTUn+2输出至像素存储单元112,并接收滤波单元106输出的CTUn+3;

像素存储单元112中存储有CTUn+1、CTUn+2以及CTUn。

在T7时刻,参考像素获取单元102内没有要处理的像素块,帧内运动补偿单元104没有要处理的像素块;

滤波单元106将CTUn+4输出至输出单元108;

输出单元108将CTUn+3输出至像素存储单元112,并接收滤波单元106输出的CTUn+4;

像素存储单元112中存储有CTUn+1、CTUn+2、CTUn+3以及CTUn。

在T8时刻,参考像素获取单元102内没有要处理的像素块,帧内运动补偿单元104没有要处理的像素块,滤波单元106没有要处理的像素块;

输出单元108将CTUn+4输出至像素存储单元112;

像素存储单元112中存储有CTUn+1、CTUn+2、CTUn+3、CTUn+4以及CTUn。

以CTUn+1和CTUn+2具有相同的内容为例,当帧内块复制单元100a对CTUn+2进行解码时,需要参考像素获取单元102从像素存储单元112中获取作为参考像素块的CTUn+1。

但是,如上图4中描述的,此时,CTUn+1可能还未被输出单元108输出至像素存储110中,例如图4中的T1至T5时刻。所以,如果帧内复制单元100a要利用CTUn+1对CTUn+2进行解码,只能等到CTUn+l被输出单元l08输出至像素存储单元112后,参考像素获取单元102才可以从像素存储单元112中获取CTUn+1,并利用CTUn+1对CTU2进行解码。可以理解,在这个过程中,存在等待CTUn+1被帧内块复制单元100a处理完的时间(T5-T1),影响了CTUn+2的解码效率。

有鉴于此,本申请提供了一种如图5(a)所示的帧内块复制单元100b,相对于图3(a)所示的帧内块复制单元100a,帧内块复制单元100b在帧内运动补偿单元104以及参考像素获取单元102之间增加缓冲单元124存储作为参考的、未经滤波处理的经解码像素块A(CTUn+1),以使在对与像素块A内容相同的像素块B(CTUn+2)进行解码时,能够直接从缓冲单元124获取作为参考的CTUn+l,而无需按照上述步骤S101a-S109a的方式等到CTUn+1的解码流程结束后再获取CTUn+1,以此提高CTUn+2的解码效率。

并且,为了提高输出单元108将解码完成的像素块的输出(或写出)至像素存储单元112的速度,帧内块复制单元100b还在输出单元l08中增加了帧缓冲编码单元120,通过帧缓冲编码单元120将原本直接输出至像素存储单元112中的经解码像素块进行压缩处理以减小经解码像素块的数据大小,再由帧缓冲编码单元120将压缩过的经解码像素块输出至像素存储单元112中,以此提高输出单元108的写出速度,进而提高整个解码流程的效率。

下面将继续参考图1,并结合图5(b)所示的帧内块复制单元100b的解码流程对本申请的方法进行详细的阐述。在此之前,需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,文中各实施例以各功能单元、模块进行举例说明。但是在实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

并且,实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件电路的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。

而且应理解,在本申请的一些实施例中,上述缓冲单元124可以为新增的独立于像素存储单元112的存储单元例如新的存储器,也可以是从像素存储单元112中划分出的逻辑分区,又或者是与像素存储单元112同属于一个存储器且独立于像素单元112的逻辑分区,本申请对此不作限制。

以及还应理解,在本申请的另一些实施例中,上述帧缓冲编码单元120可以为是新增的独立于输出单元108的单元,也可以是输出单元108的一部分,本申请对此不作限制。

具体地,图5(b)是帧内块复制单元的一例解码流程示意图,如图5(b)所示,帧内块复制单元l00b中的解码流程包括:

S102b:参考像素获取单元102向系统控制单元300查询参考像素块CTUn+1是否被输出至缓冲单元124中。如果系统控制单元300反馈结果为参考像素块CTUn+1已经被输出至缓冲单元124中,则执行S104b;如果系统控制单元300反馈结果为参考像素块CTUn+1没有被输出至缓冲单元124中,则执行S106b。

S104b:参考像素获取单元102从缓冲单元124中获取经解码的参考像素块CTUn+1,并依次执行S110b、S112b、S122b、S114b。

S106b:帧缓冲解码单元122从像素存储单元112中获取经过帧缓冲编码单元120编码的经解码参考像素块CTUn+1,并对经过帧缓冲编码单元120编码的经解码参考像素块CTUn+1解码,然后输出至参考像素获取单元102,并执行S108。

S108b:参考像素获取单元102接收帧缓冲解码单元122输出的经解码的参考像素块CTUn+1,并执行S110b、S112b、S114b、S116b。

S110b、S112b、S114b分别与上述S103a、S105a、S107a一致,具体可参考上述相关描述,此处不再赘述。

S116b:滤波单元106将经过解码处理的经解码的像素块CTUn+2输出至缓冲单元124中。

S118b:输出单元108将经过滤波处理的经解码像素块CTUn+2输出至帧缓冲编码单元120。

S120b:帧缓冲编码单元120接收输出单元108输出的经解码像素块CTUn+2,并对经解码像素块CTUn+2进行编码(或压缩)处理,以减小经解码像素块CTUn+2的数据大小,并将经过压缩处理的经解码像素块CTUn+2输出至像素存储单元112中。

S122b:像素存储单元112在接收到经解码像素块CTUn+2后,将向帧缓冲编码单元120发送应答回应,以表示已经完成对经解码像素块CTUn+2的存储。

S124b:帧缓冲编码单元120接收到像素存储单元112的应答回应后,帧缓冲编码单元120或者帧缓冲编码单元120通过输出单元108向系统控制单元300发送表示CTUn+2已经输出并存储在像素存储单元112的广播。

应理解,上述帧缓冲解码单元122可以为独立的单元模块,也可以耦合于参考像素获取单元102,帧缓冲解码单元122也可以为独立的单元模块,也可以耦合于输出单元108,本申请对此不作限制。

从上述帧内块复制单元100b的解码流程中可以看出,在本申请提供的帧内块复制方法中,帧内运动补偿单元104在对CTUn+1做解码处理、以及滤波单元106对CTUn+1做完滤波处理后,滤波单元106将解码后的CTUn+1同时输出至输出单元108以及缓冲单元124。

其中,由滤波单元106输出至输出单元108的经解码CTUn+1则继续按照上述S107a-S109a进行后续处理,最终输出至像素存储单元112;而由滤波单元106输出至缓冲单元124中的经解码CTUn+1则缓存于缓冲单元124中,以便于在对CTUn+2进行解码时,参考像素获取单元102能够直接从缓冲单元124中获取经解码的CTUn+1,并利用CTUn+1对CTUn+2进行解码,提高了CTUn+2的解码效率。

并且,本应由输出单元108输出至像素存储单元112中的经解码CTUn+1,变为由输出单元108输出至帧内缓冲编码单元120进行压缩处理,再由帧内缓冲编码单元120将压缩后的经解码CTUn+1输出至像素存储单元112,在此过程中,由于对经解码的CTUn+1进行了压缩,降低了经解码CTUn+1的数据大小,所以提高了输出单元108将经解码像素块写出至像素存储单元112的速度。例如,原本经解码CTUn+1的数据大小为30兆(M),通过帧缓冲压缩单元122对经解码CTUn+1进行压缩后,经解码的CTUn+1的大小变为10M,可以理解,帧缓冲编码单元120将压缩过的大小为10的经解码CTUn+1写出至像素存储单元112的速度要比输出单元108直接将将数据大小为30的经解码CTU n+1输出至像素存储单元112的速度快。

同时,帧缓冲编码单元120在向像素存储单元112输出压缩好的经解码CTU时,还将对压缩好的经解码CTU进行标记,并在接收到像素存储单元112的应答回应后,将该标记广播至系统控制单元300。例如,以经解码CTUn+1为例,帧内缓冲编码单元120对经解码CTUn+1进行压缩后,会将经解码CTUn+1标记为“NUM-YES”,其中,“NUM”表示经解码1的解码顺序,“YES”表示经解码CTUn+1已经被帧缓冲编码单元120压缩好,然后帧缓冲编码单元120在接收到像素存储单元112的应答回复后,确认经解码CTUn+1已经存储至像素存储单元112后,将该标记发送至系统控制单元300,由系统控制单元300存储该标记。

通过上述方式,当解码装置100对经编码的CTUn+2进行解码时,参考像素获取单元102就可以先向上述系统控制单元300查询经解码CTUn+1是否已经被帧缓冲编码单元120压缩完成并输出至像素存储单元112中,并根据系统控制单元300的反馈结果确定是否直接从缓冲单元124中获取参考像素块CTUn+1。

例如,如果系统控制单元300反馈经解码CTUn+1没有被帧缓冲编码单元120压缩完成,说明经解码CTUn+1还处于前一个解码流程中,也即经解码CTUn+1还未被帧缓冲编码单元120输出至像素存储单元112。此时,参考像素获取单元102将从缓冲单元124中获取经解码的CTUn+1,并利用CTUn+1对当前经编码的CTUn+2进行解码;

如果系统控制单元300反馈经解码CTUn+1被帧缓冲编码单元120压缩完成,说明经解码CTUn+1已经由输出单元108输出至像素存储单元112中。此时,参考像素获取单元102则按照上述S101a-S109a的方式从像素存储单元112中获取CTUn+1,并利用CTUn+1对CTUn+2进行解码。

示例性的,在一种可能的实现方式中,参考像素获取单元102向上述系统控制单元300查询经解码CTUn+1是否已经被帧缓冲编码单元120压缩完成的过程可以为:

1)参考像素获取单元102向系统控制单元300发送经解码CTUn+1的压缩状态查询。

2)系统控制单元300根据帧缓冲编码单元120之前广播的已经压缩好的经解码的标记“NUM-YES”,向参考像素获取单元102反馈查询结果。

3)如果系统控制单元300没有查询到经解码CTUn+1的标号,则向参考像素获取单元102反馈查询结果为“NONE”,参考像素获取单元102则从缓冲单元124中获取经解码的CTUn+l。例如,假设CTUn+1的解码顺序为“008”,那么如果系统控制单元300内没有标记“008-YES”,则向参考像素获取单元102返回“NONE”。

4)如果系统控制单元300查询到经解码CTUn+1的标号,则向参考像素获取单元102反馈查询结果为“YES”,参考像素获取单元102从像素存储单元112中获取经解码的CTUn+l。例如,继续以CTUn+1的解码顺序为“008”为例,如果系统控制单元300中查询到标记“008-YES”,则向参考像素获取单元102返回“YES”。

最后,当参考像素获取单元102获取到作为参考像素块的经解码CTUn+l后,会将作为参考像素块的经解码的CTUn+1以及当前需解码的经编码CTUn+2输出至帧内运动补偿单元104,由帧内运动补偿单元104按照图2所示的相关解码流程对CTUn+2进行解码。

另外,由于需要解码的像素块属于同一个视频帧,或者属于同一视频的不同视频帧,那么这些像素块之间在内容上必然存在着一定的联系,所以即使某两个像素块的内容不相同,即两个像素块属于非帧内复制块译码模式,在解码后一个像素块的时候,仍然可以将前面已经解码的像素块作为参考像素块对当前解码的像素块进行解码。例如,可以将之前已经解码过的前一个、前两个、前三个像素块作为解码当前像素块的参考像素块。例如,继续以图1为例,假设CTUn+3和CTUn+4属于非帧内块复制模式的像素块,在本申请的一种可能的实现方式中,帧内块复制单元100b仍然可以按照上述方式对CTUn+3或CTUn+4进行解码,具体实施细节可参考上述相关描述,此处不再赘述。

应理解,上文各个实施例为了便于描述,所以将CTU大小设置为2×2,在本申请的其他实施例中,CTU还可以为其他大小。例如,假设像素块为64×64,那么CTU大小可以为8×8、16×16等大小。本申请对CTU大小和像素块大小不作任何限制。

还应理解,上文是以当前的HEVC标准下、解码单元是CTU为例对介绍了本申请的方法,在本申请的其他实施例中,上述方法同样适用于解码标准为AV1、解码单元是SB的解码过程。

需要说明的是,由于当前的AV1、VCC和HEVC标准并不相同,所以在基于当前的AV1或VCC解码标准使用上述方法的时候,图3(a),图3(b)以及图5(a),图5(b)中的滤波单元106为默认关闭的状态,即经过帧内运动补偿单元104处理后的当前经解码数据虽然经过滤波单元106,但滤波单元106不对当前经解码数据进行滤波处理。此时当前经解码数据传输的过程为如图5(b)所示的S116b′,即经过帧内运动补偿单元104解码后的当前经解码数据,由帧内运动补偿单元104发送至缓冲单元124,以及同时由帧内运动补偿单元104发送至滤波单元106(但是不做滤波处理)之后,再由滤波单元106将当前经解码数据输出至输出单元108做后续处理。

综上所述,本申请通过增加帧缓冲编码单元120对输出单元108中的经解码的像素块进行压缩,使经解码的像素块的数据大小变小,以提高输出单元108将经解码的像素块输出至像素存储单元112的速度。同时,本申请还在帧内运动补偿单元104与参考像素获取单元102之间增加了缓冲单元124,用于存储经过帧内运动补偿单元104处理过后的像素块,使得在对后一个像素块进行解码时,参考像素获取单元102能够从缓冲单元124中获取经过帧内运动补偿单元104处理过的像素块,而无需等到作为参考的像素块的解码流程完全结束,进而提高上述解码流程的解码效率。

以上结合图5(b)解释的在帧内块复制单元100b的解码流程(如步骤S102b至124b),也可以是以计算机程序代码的方式被实现的方法。

并且,在通过计算机程序代码被实现的场景下,通过处理器运行相应代码实现的各个软件功能模块,例如参考像素获取模块,帧内运动补偿模块,滤波模块,输出模块,像素存储模块(功能上分别与图5a所示的参考像素获取单元102,帧内运动补偿单元104,滤波单元106,输出单元108,像素存储单元112对应,模块间逻辑上的连接关系也可与其对应)。

本申请实施例还提供了一种电子设备,该电子设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中以计算机程序代码的方式被实现的解码流程的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述以计算机程序代码的方式被实现的解码流程实施例中的步骤。

本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行时实现可实现上述实施例中的步骤。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种图像压缩方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类