一种编解码方法、装置及其设备

文档序号:1116410 发布日期:2020-09-29 浏览:39次 >En<

阅读说明:本技术 一种编解码方法、装置及其设备 (Encoding and decoding method, device and equipment ) 是由 孙煜程 陈方栋 于 2019-03-18 设计创作,主要内容包括:本申请提供一种编解码方法、装置及其设备,该方法包括:获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;若至少两个参考帧列表存在重复的参考帧,对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;根据所述去重后的参考帧列表对所述当前块进行编码或者解码。通过本申请的技术方案,提高编码性能。(The application provides a coding and decoding method, a device and equipment thereof, wherein the method comprises the following steps: acquiring reference frame configuration of a current frame where a current block is located, wherein the reference frame configuration comprises at least two reference frame lists; if repeated reference frames exist in at least two reference frame lists, carrying out duplicate removal processing on the at least two reference frame lists to obtain a duplicate-removed reference frame list; and encoding or decoding the current block according to the de-duplicated reference frame list. By the technical scheme, the coding performance is improved.)

一种编解码方法、装置及其设备

技术领域

本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。

背景技术

为了达到节约空间的目的,视频图像都是经过编码后才进行传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码。帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。此外,帧内编码是指利用视频空间域的相关性,使用当前帧图像的已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。

在当前块的帧间编码中,当前块可以对应两个参考帧列表。若当前块为单向块,则可以从两个参考帧列表中选择一个目标参考帧,并利用该目标参考帧对当前块进行编码或者解码。若当前块为双向块,则可以从两个参考帧列表中各选择一个目标参考帧,并利用两个目标参考帧对当前块进行编码或者解码。但是,无论是从两个参考帧列表中选择一个目标参考帧,还是从两个参考帧列表中各选择一个目标参考帧,均存在语法冗余、编码性能比较差等问题。

发明内容

本申请提供了一种编解码方法、装置及其设备,可以提高编码性能。

本申请提供一种编解码方法,所述方法包括:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;根据所述去重后的参考帧列表对所述当前块进行编码或者解码。

本申请提供一种编解码方法,所述方法包括:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;根据所述新参考帧列表对所述当前块进行编码或者解码。

本申请提供一种编解码方法,所述方法包括:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;从所述第一参考帧列表中选择第一目标参考帧;对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;从所述处理后的第二参考帧列表中选择第二目标参考帧;根据所述第一目标参考帧和所述第二目标参考帧对所述当前块进行解码。

本申请提供一种编解码方法,所述方法包括:获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;从所述第一参考帧列表中选择第一目标参考帧,并从所述第二参考帧列表中选择第二目标参考帧;对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;根据所述第一目标参考帧和所述第二目标参考帧,对所述当前块进行编码。

本申请提供一种编解码方法,所述方法包括:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;从所述参考帧组合列表中选择目标参考帧组合;根据所述目标参考帧组合对所述当前块进行编码或解码。

本申请提供一种编解码装置,所述装置包括:

获取模块,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;处理模块,用于若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;编解码模块,用于根据所述去重后的参考帧列表对所述当前块进行编码或者解码。

本申请提供一种编解码装置,所述装置包括:

获取模块,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;

构建模块,用于根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;

编解码模块,用于根据所述新参考帧列表对所述当前块进行编码或者解码。

本申请提供一种编解码装置,所述装置包括:获取模块,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;选择模块,用于从所述第一参考帧列表中选择第一目标参考帧;处理模块,用于对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;所述选择模块,还用于从所述处理后的第二参考帧列表中选择第二目标参考帧;解码模块,用于根据所述第一目标参考帧和所述第二目标参考帧对所述当前块进行解码。

本申请提供一种编解码装置,所述装置包括:

获取模块,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;选择模块,用于从所述第一参考帧列表中选择第一目标参考帧,并从所述第二参考帧列表中选择第二目标参考帧;处理模块,用于对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;编解码模块,用于根据所述第一目标参考帧和所述第二目标参考帧,对所述当前块进行编码。

本申请提供一种编解码装置,所述装置包括:

获取模块,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;构建模块,用于根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;选择模块,用于从所述参考帧组合列表中选择目标参考帧组合;编解码模块,用于根据所述目标参考帧组合对所述当前块进行编码或解码。

本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;

所述处理器用于执行机器可执行指令,以实现如下步骤:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;根据所述去重后的参考帧列表对所述当前块进行编码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;根据所述新参考帧列表对所述当前块进行编码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;从所述第一参考帧列表中选择第一目标参考帧,并从所述第二参考帧列表中选择第二目标参考帧;对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;根据所述第一目标参考帧和所述第二目标参考帧,对所述当前块进行编码;

或者,获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;从所述参考帧组合列表中选择目标参考帧组合;根据所述目标参考帧组合对所述当前块进行编码。

本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;

所述处理器用于执行机器可执行指令,以实现如下步骤:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;根据所述去重后的参考帧列表对所述当前块进行解码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;根据所述新参考帧列表对所述当前块进行解码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;从所述第一参考帧列表中选择第一目标参考帧;对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;从所述处理后的第二参考帧列表中选择第二目标参考帧;根据所述第一目标参考帧和所述第二目标参考帧对所述当前块进行解码;或者,获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;从所述参考帧组合列表中选择目标参考帧组合;根据所述目标参考帧组合对所述当前块进行解码。

由以上技术方案可见,本申请实施例中,针对当前块对应的两个参考帧列表,可以对至少两个参考帧列表进行去重处理,从而可以避免或者减少语法冗余,可以提高编码性能。避免单向预测块出现语法冗余,可以带来编码性能增益的提高。避免双向预测块出现语法冗余,可以带来编码性能增益的提高。

附图说明

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

图1是本申请一种实施方式中的视频编码框架的示意图;

图2是本申请一种实施方式中的编解码方法的流程图;

图3是本申请另一种实施方式中的编解码方法的流程图;

图4是本申请另一种实施方式中的编解码方法的流程图;

图5是本申请另一种实施方式中的编解码方法的流程图;

图6是本申请另一种实施方式中的编解码方法的流程图;

图7A-图7E是本申请一种实施方式中的编解码装置的结构图;

图8是本申请一种实施方式中的编码端设备的硬件结构图;

图9是本申请一种实施方式中的解码端设备的硬件结构图。

具体实施方式

在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本申请实施例中提出一种编解码方法,可以涉及如下概念:

帧内预测与帧间预测(intra prediction and inter prediction)技术:

帧内预测是指,利用视频空间域的相关性,使用当前图像已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。帧内预测中规定了多种预测模式,每一种预测模式都对应一种纹理方向(DC模式除外),当前块预测像素由其预测方向上相邻块的边界重构像素值生成。举例说明,如果图像的纹理是呈现水平状排布的,那么选择水平预测模式可以更好的预测图像信息。

帧间预测是指,利用视频时域的相关性,由于视频序列通常包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前的已编码图像中寻找一个最佳匹配块,该过程称为运动估计(Motion Estimation,ME)。

率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用率失真原则对编码模式做比较决策,可以保证编码性能最佳。

多假设预测(Multi-Hypothesis Predition):多假设预测是指对多个预测块加权得到最终预测块的技术。例如,在当前预测模式的预测像素基础上,叠加一个或多个新预测像素的模式,需要额外语法来表述的新的预测像素块的模式。

当前块的子块,本实施例中,当前块的子块可以是编码单元(Coding Unit,CU)或预测单元(Prediction Unit,PU)或编码块(Coding block)等。

视频编码框架:参见图1所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,此外,视频解码框架的示意图与图1类似,在此不再重复赘述,而且,可以使用视频解码框架实现本申请实施例的解码端处理流程。具体的,在视频编码框架和视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。

在参考帧信息的编解码方案中,存在两类语法元素,这两类语法元素唯一标识了当前块的参考帧信息(即用于指示参考图像的信息)。第一类语法表示当前块指向的参考帧列表(如语法元素inter_pred_idc表示当前块指向的参考帧列表)。第二类语法表示指向的参考帧列表中的参考帧(如语法元素ref_idx_l0和ref_idx_l1表示指向的参考帧列表中的参考帧的索引值)。示例性的,当只存在一个参考帧列表时,则第一类语法的值隐式导出,即不需要显式传输第一类语法。示例性的,当某一个参考帧列表只存在一帧参考帧时,则指向该参考帧列表的第二类语法的值隐式导出,即不需要显式传输第二类语法。

在一个例子中,语法元素inter_pred_idc、语法元素ref_idx_l0和语法元素ref_idx_l1,可以采用二进制数值表示,也可以采用十进制数值表示,还可以采用八进制表示,对此不做限制。在后续实施例中,以采用二进制数值表示这些语法元素为例。

在一个例子中,若当前块为B帧单向块(即当前块存在两个参考帧列表,从两个参考帧列表中选择一个目标参考帧),则可能出现一种单向参考帧存在两种表达方式,也就是说,存在语法冗余、编码性能比较差等问题。

例如,若当前块所在当前帧的参考帧配置为:List0[0,8,16]和List1[8,16,24],则单向块指向参考帧8存在两种表达方式:一种表达方式是指向参考帧列表List0,取List0中的第二帧参考帧8,例如,通过语法元素inter_pred_idc=1和ref_idx_l0=1表示。另一种表达方式是指向参考帧列表List1,取List1中的第一帧参考帧8,例如,通过语法元素inter_pred_idc=10和ref_idx_l1=0表示。显然,上述两种表达均指示目标参考帧是参考帧8,也就是说,上述两种语法元素表示完全一致的参考帧信息,造成较大的语法冗余,影响编解码压缩性能,编码性能比较差。

针对上述发现,若当前块为B帧单向块,可以对当前的参考帧配置的编解码方法进行改进。例如,通过对参考帧去重操作来避免语法冗余的出现。所述去重操作包括:对List0和List1进行去重,也就是说,当参考帧同时存在于List0和List1时,保留List0中的该参考帧,剔除List1中的该参考帧,或者,保留List1中的该参考帧,剔除List0中的该参考帧。

例如,若当前块所在当前帧的参考帧配置为:List0[0,8,16]和List1[8,16,24],则所述去重操作包括:可以从List1中剔除参考帧8和参考帧16,即去重操作后的List1为[24]。显然,在此基础上,参考帧8只存在一种表达方式,即指向参考帧列表List0,取List0中的第二帧参考帧8,例如,可以通过语法元素inter_pred_idc=1和ref_idx_l0=1表示。由于只存在一种语法元素来表示参考帧信息,因此,避免语法冗余,提高编解码压缩性能,编码性能比较好。

在另一个例子中,若当前块为B帧双向块(即从当前块的两个参考帧列表中各选择一个目标参考帧,共选择两个目标参考帧),则可能出现一种双向参考帧组合存在两种表达方式,存在语法冗余、编码性能比较差等问题。

例如,若当前块所在当前帧的参考帧配置为:List0[0,8,16]和List1[8,16,24],则双向块指向参考帧组合(8 16)存在两种表达方式:一种表达方式是指向两个参考帧列表List0和List1,取List0中的第二帧参考帧8,取List1中的第二帧参考帧16,例如,可以通过语法元素inter_pred_idc=11,ref_idx_l0=1,ref_idx_l1=1表示。另一种表达方式是指向两个参考帧列表List0和List1,取List1中的第一帧参考帧8,取List0中的第三帧参考帧16,例如,可以通过语法元素inter_pred_idc=11,ref_idx_l0=10,ref_idx_l1=0表示。显然,上述两种表达均指示目标参考帧组合是参考帧组合(8 16),也就是说,上述两种语法元素表示完全一致的参考帧信息,从而造成较大的语法冗余,影响编解码压缩性能,编码性能比较差。

在上述示例中,参考帧0存在于List0,参考帧24存在于List1,即参考帧0和参考帧24只存在于一个参考帧列表中。参考帧8和参考帧16同时存在于List0和List1,即参考帧8和参考帧16同时存在于两个参考帧列表中。只存在于一个参考帧列表中的参考帧0和参考帧24,与同时存在于两个参考帧列表中的参考帧8和参考帧16没有分开编码,物理意义的混淆一定程度上影响了编解码效率。

针对上述发现,若当前块为B帧双向块,可以对当前块的参考帧配置的编解码方法进行改进。例如,通过对参考帧组合去重操作来避免语法冗余的出现,也就是说,同一种双向参考帧组合只允许出现一次。

例如,若当前块所在当前帧的参考帧配置为:List0[0,8,16]和List1[8,16,24],则所述对参考帧组合去重操作包括:针对参考帧组合(8 16)和参考帧组合(16 8),去除一个参考帧组合(16 8)。在此基础上,参考帧组合(8 16)只存在一种表达方式,即指向两个参考帧列表List0和List1,取List0中的第二帧参考帧8,取List1中的第二帧参考帧16,例如,通过语法元素inter_pred_idc=11,ref_idx_l0=1,ref_idx_l1=1表示。由于只存在一种语法元素来表示参考帧信息,因此,避免语法冗余,提高编解码压缩性能,编码性能比较好。

若当前块为B帧双向块,可以对当前的参考帧配置的编解码方法进行改进。例如,可以通过引入新的语法元素类来提高编解码效率,所述新的语法元素类包括:用以标识当前双向块的两个参考帧是否一致的语法元素。

例如,在上述示例中,参考帧0存在于List0,参考帧24存在于List1,也就是说,新的语法元素类用以标识参考帧0或者参考帧24只存在于一个参考帧列表中。参考帧8和参考帧16同时存在于List0和List1,也就是说,新的语法元素类用以标识参考帧8或者参考帧16存在于两个参考帧列表中。

综上所述,只存在于一个参考帧列表中的参考帧0和参考帧24,与同时存在于两个参考帧列表中的参考帧8和参考帧16分开编码,提高编解码效率。

在本实施例中,当前块可以使用单向运动信息进行预测,此时,可以将当前块称为单向块(或者称为单向预测块)。或者,当前块可以使用双向运动信息进行预测,此时,可以将当前块称为双向块(或者称为双向预测块)。

以下结合几个具体实施例,对上述编解码方法进行详细说明。

实施例1:参见图2所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端或者编码端,该方法可以包括:

步骤201,获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表可以包括第一参考帧列表和第二参考帧列表。至少两个参考帧列表还可以包括除第一参考帧列表和第二参考帧列表之外的参考帧列表,对此不做限制。

在一个例子中,当前块所处当前帧的帧类型可以为B帧,由于B帧允许同时存在指向多个List(参考帧列表)的帧间块,如指向List0的帧间预测块和指向List1的帧间预测块,因此,在当前块所处当前帧为B帧时,当前块所在当前帧的参考帧配置可以包括至少两个参考帧列表,为了方便描述,以两个参考帧列表为例进行说明。这两个参考帧列表可以为List0和List1。

本实施例中,以至少两个参考帧列表包括第一参考帧列表和第二参考帧列表为例,第一参考帧列表为至少两个参考帧列表中的一个,第二参考帧列表为至少两个参考帧列表中的另一个。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。对于第一参考帧列表和第二参考帧列表均不做限制,只要第一参考帧列表是List0和List1中的其中一个,第二参考帧列表是List0和List1中的另一个即可。

在一个例子中,当前块可以为单向块,也就是说,在当前块存在两个参考帧列表时,可以从两个参考帧列表中选择一个目标参考帧。

步骤202,若至少两个参考帧列表存在重复的参考帧,则对至少两个参考帧列表进行去重处理,得到去重后的参考帧列表。例如,若第一参考帧列表和第二参考帧列表存在重复的参考帧,则可以对第一参考帧列表或者第二参考帧列表进行去重处理,得到去重后的第一参考帧列表或者第二参考帧列表。

在一个例子中,可以保持第一参考帧列表中的参考帧不变,并将第二参考帧列表中与第一参考帧列表中重复的参考帧去除,得到去重后的第二参考帧列表。或者,可以保持第二参考帧列表中的参考帧不变,并将第一参考帧列表中与第二参考帧列表中重复的参考帧去除,得到去重后的第一参考帧列表。

例如,当前帧POC(播放顺序)为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,其List1为POC=20,POC=16,POC=8共三帧。在此基础上,可以将List1中与List0中重复的参考帧去除,也就是说,List0为POC=8,POC=4,POC=0共三帧,去重后的List1为POC=20,POC=16共两帧。或者,可以将List0中与List1中重复的参考帧去除,也就是说,去重后的List0为POC=4,POC=0共两帧,List1为POC=20,POC=16,POC=8共三帧。

在一个例子中,当前帧的参考帧配置包括第一参考帧列表和第二参考帧列表,当前帧的所有子块均对应该第一参考帧列表和该第二参考帧列表,当前块(即当前帧的一个子块)也对应该第一参考帧列表和该第二参考帧列表。

针对当前块,可以从当前帧的参考帧配置获取该第一参考帧列表和该第二参考帧列表。在此基础上,可以对该第一参考帧列表和该第二参考帧列表进行去重处理,得到去重后的参考帧列表。需要注意的是,去重后的参考帧列表只作用于当前块,而不作用于当前帧的其它子块。也就是说,对第一参考帧列表和第二参考帧列表进行去重处理,并不对当前帧的参考帧配置进行改动,即不修改参考帧配置中的第一参考帧列表和第二参考帧列表,在对当前帧的其它子块进行处理时,仍然使用参考帧配置中的第一参考帧列表和第二参考帧列表。

步骤203,根据去重后的参考帧列表对当前块进行编码或者解码。

在一个例子中,针对编码端来说,编码端可以根据去重后的参考帧列表对当前块进行编码,对此编码过程不做限制。针对解码端来说,解码端可以根据去重后的参考帧列表对当前块进行解码,对此解码过程不做限制。

由以上技术方案可见,针对当前块对应的两个参考帧列表,可以对至少两个参考帧列表进行去重处理,从而减少语法冗余,可以提高编码性能。避免单向预测块出现语法冗余,可以带来编码性能增益的提高。

实施例2:基于与上述实施例1同样的发明构思,本申请实施例中提出一种编解码方法,该编解码方法可以应用于编码端,该编解码方法可以包括:

步骤a1、编码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括第一参考帧列表和第二参考帧列表。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。

步骤a1的处理过程,可以参见步骤101,在此不再重复赘述。

步骤a2、若第一参考帧列表和第二参考帧列表存在重复的参考帧,则编码端保持第一参考帧列表中的参考帧不变,并将第二参考帧列表中与第一参考帧列表中重复的参考帧去除,得到去重后的第二参考帧列表。

步骤a2的处理过程,可以参见步骤102,在此不再重复赘述。

步骤a3、编码端根据去重后的第二参考帧列表对当前块进行编码。

在一个例子中,基于第一参考帧列表中的每个参考帧、去重后的第二参考帧列表中的每个参考帧,编码端确定每个参考帧对应的率失真代价,并确定率失真代价最小的参考帧,并将率失真代价最小的参考帧作为目标参考帧。

例如,第一参考帧列表为List0[8,4,0],去重后的第二参考帧列表为List1[20,16],若率失真代价最小的参考帧是参考帧20,则目标参考帧是参考帧20,且目标参考帧位于List1。因此,编码端对当前块进行编码时,编码比特流包括语法元素inter_pred_idc=10和语法元素ref_idx_l1=0。语法元素inter_pred_idc=10表示目标参考帧位于List1,ref_idx_l1=0表示目标参考帧是List1的第一帧参考帧。

示例性的,若去重前的第二参考帧列表为List1[8,16,20],且目标参考帧是参考帧20,则ref_idx_l1=10,表示目标参考帧是List1的第三帧参考帧。若去重后的第二参考帧列表为List1[16,20],且目标参考帧是参考帧20,则ref_idx_l1=1,表示目标参考帧是List1的第二帧参考帧。显然,经过去重处理,对于同一个目标参考帧(参考帧20),编码开销从2比特“10”降低为1比特“1”。

实施例3:基于与上述实施例1同样的发明构思,本申请实施例中提出一种编解码方法,该编解码方法可以应用于解码端,该编解码方法可以包括:

步骤b1、解码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括第一参考帧列表和第二参考帧列表。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。

解码端可以从编码比特流中获取当前帧的参考帧配置,对此不做限制。

步骤b1的处理过程,可以参见步骤101,在此不再重复赘述。

步骤b2、若第一参考帧列表和第二参考帧列表存在重复的参考帧,则解码端保持第一参考帧列表中的参考帧不变,并将第二参考帧列表中与第一参考帧列表中重复的参考帧去除,得到去重后的第二参考帧列表。

步骤b2的处理过程,可以参见步骤102,在此不再重复赘述。

步骤b3、解码端根据去重后的第二参考帧列表对当前块进行解码。

在一个例子中,解码端可以获取第一指示信息和第二指示信息;该第一指示信息用于指示目标参考帧列表,该第二指示信息用于指示目标参考帧的索引值。然后,若根据该第一指示信息确定的目标参考帧列表是去重后的参考帧列表,则可以根据该第二指示信息从去重后的参考帧列表中选择与该索引值对应的目标参考帧;然后,可以根据目标参考帧对当前块进行解码。

在一个例子中,去重后的参考帧列表中参考帧的索引值会自适应更新,这样,可以节省索引值占用的码率。

例如,解码端在接收到编码端发送的编码比特流后,可以从该编码比特流中获取第一指示信息(如语法元素inter_pred_idc)和第二指示信息(如语法元素ref_idx_l1)。假设语法元素inter_pred_idc=10,则确定目标参考帧列表是List1,即目标参考帧位于List1。假设语法元素ref_idx_l1=0,即目标参考帧的索引值为0,则确定目标参考帧是List1中与索引值0对应的参考帧,即第一帧参考帧。

假设第一参考帧列表为List0[8,4,0],去重后的第二参考帧列表为List1[20,16],则目标参考帧是List1中的第一帧参考帧,即目标参考帧是参考帧20。

实施例4:基于与上述实施例1同样的发明构思,本申请实施例中提出一种编解码方法,该编解码方法可以应用于解码端。解码端在接收到编码比特流后,根据编码比特流确定当前块(即单向帧间预测块)的参考帧列表,即第一参考帧列表和第二参考帧列表。然后,对第一参考帧列表和第二参考帧列表进行去重,对此去重方式不做限制。然后,基于去重后的参考帧列表进行解析流程。

实施例5:基于与上述实施例1同样的发明构思,本申请实施例中提出一种编解码方法,可以应用于解码端。解码端通过解析码流,得到当前块(即单向帧间预测块)的参考帧列表。然后,对参考帧列表进行去重操作。然后,基于去重后的参考帧列表,通过解析码流,确定当前块指向的参考帧列表(即目标参考帧列表)以及当前块指向的参考帧列表中的参考帧(即目标参考帧)。

对参考帧列表进行去重操作,包括:当前帧POC为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,其List1为POC=20,POC=16,POC=8共三帧。在此基础上,可以将List1中与List0中重复的参考帧去除,也就是说,List0为POC=8,POC=4,POC=0共三帧,去重后的List1为POC=20,POC=16共两帧。或者,可以将List0中与List1中重复的参考帧去除,也就是说,去重后的List0为POC=4,POC=0共两帧,List1为POC=20,POC=16,POC=8共三帧。

实施例6:参见图3所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端或者编码端,该方法可以包括:

步骤301,获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表包括第一参考帧列表和第二参考帧列表。

在一个例子中,当前块所处当前帧的帧类型可以为B帧,由于B帧允许同时存在指向多个List(参考帧列表)的帧间块,如指向List0的帧间预测块和指向List1的帧间预测块,因此,在当前块所处当前帧为B帧时,当前块所在当前帧的参考帧配置可以包括至少两个参考帧列表,为了方便描述,以两个参考帧列表为例进行说明。这两个参考帧列表可以为List0和List1。

本实施例中,以至少两个参考帧列表包括第一参考帧列表和第二参考帧列表为例,第一参考帧列表为至少两个参考帧列表中的一个,第二参考帧列表为至少两个参考帧列表中的另一个。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。对于第一参考帧列表和第二参考帧列表均不做限制,只要第一参考帧列表是List0和List1中的其中一个,第二参考帧列表是List0和List1中的另一个即可。

在一个例子中,当前块可以为单向块,也就是说,在当前块存在两个参考帧列表时,可以从两个参考帧列表中选择一个目标参考帧。

步骤302,根据第一参考帧列表和第二参考帧列表构建新参考帧列表;新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,新参考帧列表中的任意两个参考帧不同。

在一个例子中,可以将第一参考帧列表中的所有参考帧添加到新参考帧列表,将第二参考帧列表中的所有参考帧添加到新参考帧列表。然后,确定新参考帧列表中是否存在相同的参考帧,如果存在相同的两个参考帧,则只保留所述两个参考帧中的一个,将所述两个参考帧中的另一个从新参考帧列表中删除。

在另一个例子中,可以将第一参考帧列表中的所有参考帧添加到新参考帧列表。然后,针对第二参考帧列表中的每个参考帧,判断新参考帧列表中是否存在该参考帧;如果不存在,则可以将该参考帧添加到新参考帧列表;如果存在,不将该参考帧添加到新参考帧列表。或者,可以将第二参考帧列表中的所有参考帧添加到新参考帧列表。然后,针对第一参考帧列表中的每个参考帧,判断新参考帧列表中是否存在该参考帧;如果不存在,则可以将该参考帧添加到新参考帧列表;如果存在,不将该参考帧添加到新参考帧列表。

在另一个例子中,可以将第一参考帧列表中的M个(如1个)参考帧添加到新参考帧列表,并将第二参考帧列表中的N个(如1个)参考帧添加到新参考帧列表。然后,再将第一参考帧列表中的M个参考帧添加到新参考帧列表,并将第二参考帧列表中的N个参考帧添加到新参考帧列表,以此类推。

在另一个例子中,可以将第一参考帧列表中的参考帧和第二参考帧列表中的参考帧,依次添加到新参考帧列表。

在将第一参考帧列表/第二参考帧列表中的每个参考帧添加到新参考帧列表时,先判断新参考帧列表中是否存在该参考帧;如果不存在,则可以将该参考帧添加到新参考帧列表;如果存在,不将该参考帧添加到新参考帧列表。

例如,当前帧POC(播放顺序)为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,其List1为POC=20,POC=16,POC=8共三帧。在此基础上,则新参考帧列表为POC=8,POC=4,POC=0,POC=20,POC=16共五帧。

在一个例子中,当前帧的参考帧配置包括第一参考帧列表和第二参考帧列表,当前帧的所有子块均对应该第一参考帧列表和该第二参考帧列表,当前块(即当前帧的一个子块)也对应该第一参考帧列表和该第二参考帧列表。针对当前块,可以从当前帧的参考帧配置获取该第一参考帧列表和该第二参考帧列表。在此基础上,可以根据该第一参考帧列表和该第二参考帧列表构造新参考帧列表。需要注意的是,新参考帧列表只作用于当前块,而不作用于当前帧的其它子块。也就是说,不对当前帧的参考帧配置进行改动,在对当前帧的其它子块进行处理时,仍然使用参考帧配置中的第一参考帧列表和第二参考帧列表。

步骤303,根据新参考帧列表对当前块进行编码或者解码。

在一个例子中,针对编码端来说,所述编码端可以根据新参考帧列表对当前块进行编码,对此编码过程不做限制。针对解码端来说,所述解码端可以根据新参考帧列表对当前块进行解码,对此解码过程不做限制。

由以上技术方案可见,针对当前块对应的两个参考帧列表,根据这两个参考帧列表构造新参考帧列表,从而减少语法冗余,可以提高编码性能。避免单向预测块出现语法冗余,可以带来编码性能增益的提高。

实施例7:基于与上述实施例6同样的发明构思,本申请实施例中提出一种编解码方法,该编解码方法可以应用于编码端,该编解码方法可以包括:

步骤c1、编码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括第一参考帧列表和第二参考帧列表。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。

步骤c2、编码端根据第一参考帧列表和第二参考帧列表构建新参考帧列表;新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,新参考帧列表中的任意两个参考帧不同。

步骤c3、编码端根据新参考帧列表对当前块进行编码。

在一个例子中,基于新参考帧列表中的每个参考帧,编码端确定每个参考帧对应的率失真代价,并将率失真代价最小的参考帧作为目标参考帧。

例如,新参考帧列表为[8,4,0,20,16],若率失真代价最小的参考帧是参考帧20,则目标参考帧是参考帧20。编码端对当前块进行编码时,编码比特流可以包括语法元素ref_idx_l1=11,可以不包括语法元素inter_pred_idc,也就是说,目标参考帧列表可以隐式输出(即目标参考帧列表是新参考帧列表),语法元素ref_idx_l1=11表示目标参考帧是新参考帧列表的第四帧参考帧。

在一个例子中,可以通过语法元素ref_idx_l1=11表示指示信息,例如,指示信息用于指示目标参考帧在新参考帧列表中的索引值11,索引值11表示目标参考帧是新参考帧列表的第四帧参考帧。

实施例8:基于与上述实施例6同样的发明构思,本申请实施例中提出一种编解码方法,该编解码方法可以应用于解码端,该编解码方法可以包括:

步骤d1、解码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括第一参考帧列表和第二参考帧列表。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。

步骤d2、解码端根据第一参考帧列表和第二参考帧列表构建新参考帧列表;新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,新参考帧列表中的任意两个参考帧不同。

步骤d3、解码端根据新参考帧列表对当前块进行解码。

在一个例子中,解码端可以获取来自编码端的第三指示信息,该第三指示信息用于指示目标参考帧的索引值;根据该第三指示信息从新参考帧列表中选择与该索引值对应的目标参考帧;根据该目标参考帧对当前块进行解码。

例如,解码端在接收到编码端发送的编码比特流后,可以从该编码比特流中获取指示信息(如语法元素ref_idx_l1)。由于未携带语法元素inter_pred_idc,因此,确定目标参考帧列表是新参考帧列表。假设语法元素ref_idx_l1=11,即目标参考帧的索引值为4,则确定目标参考帧是新参考帧列表中与索引值4对应的参考帧,即第四帧参考帧。假设新参考帧列表为[8,4,0,20,16],则目标参考帧是新参考帧列表中的第四帧参考帧,也就是说,目标参考帧是参考帧20。

实施例9:基于与上述实施例6同样的发明构思,本申请实施例中提出一种编解码方法,可以应用于解码端。解码端通过解析码流,得到当前块(即单向帧间预测块)的参考帧列表。然后,通过对参考帧列表进行去重操作,得到新参考帧列表(记为list2)。基于新参考帧列表list2,通过解析码流,确定当前块指向新参考帧列表list2中的参考帧(即目标参考帧)。

对参考帧列表进行去重操作,可以包括:当前帧POC为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,当前帧的List1为POC=20,POC=16,POC=8共三帧。在此基础上,去重后的List2为POC=20,POC=16,POC=8,POC=4,POC=0共五帧,这些参考帧的顺序可变,对此顺序不做限制。

实施例10:参见图4所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于编码端,该方法可以包括以下步骤:

步骤401,获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表可以包括第一参考帧列表和第二参考帧列表。至少两个参考帧列表还可以包括除第一参考帧列表和第二参考帧列表之外的参考帧列表,对此不做限制。

在一个例子中,当前块所处当前帧的帧类型可以为B帧,由于B帧允许同时存在指向多个List(参考帧列表)的帧间块,如指向List0的帧间预测块和指向List1的帧间预测块,因此,在当前块所处当前帧为B帧时,当前块所在当前帧的参考帧配置可以包括至少两个参考帧列表,为了方便描述,以两个参考帧列表为例进行说明。这两个参考帧列表可以为List0和List1。

本实施例中,以至少两个参考帧列表包括第一参考帧列表和第二参考帧列表为例,第一参考帧列表为至少两个参考帧列表中的一个,第二参考帧列表为至少两个参考帧列表中的另一个。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。对于第一参考帧列表和第二参考帧列表均不做限制,只要第一参考帧列表是List0和List1中的其中一个,第二参考帧列表是List0和List1中的另一个即可。

在一个例子中,当前块可以为双向块,即,在当前块存在两个参考帧列表时,从两个参考帧列表中各选择一个目标参考帧,即选择两个目标参考帧。

步骤402,从第一参考帧列表中选择与当前块对应的第一目标参考帧,并从第二参考帧列表中选择与当前块对应的第二目标参考帧。

例如,可以遍历第一参考帧列表与第二参考帧列表的所有参考帧组合,并确定每个参考帧组合对应的率失真代价,对此率失真代价的确定方式不做限制。然后,可以将率失真代价最小的参考帧组合作为目标参考帧组合。这样,可以将目标参考帧组合在第一参考帧列表中的参考帧作为第一目标参考帧,可以将目标参考帧组合在第二参考帧列表中的参考帧作为第二目标参考帧。

例如,当前帧POC为12,List0为POC=8,POC=4,POC=0共三帧,List1为POC=20,POC=16,POC=8共三帧,遍历List0和List1的所有参考帧组合,如参考帧组合(8 20)、参考帧组合(8 16)、参考帧组合(8 8)、参考帧组合(4 20)、参考帧组合(4 16)、参考帧组合(48)、参考帧组合(0 20)、参考帧组合(0 16)、参考帧组合(0 8)。然后,确定每个参考帧组合对应的率失真代价,假设参考帧组合(8 20)的率失真代价最小,则参考帧组合(8 20)为目标参考帧组合。参考帧组合(8 20)在第一参考帧列表中的参考帧8作为第一目标参考帧,在第二参考帧列表中的参考帧20作为第二目标参考帧。

步骤403,对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。

在一个例子中,对第二参考帧列表中的参考帧进行删减处理(即删除第二参考帧列表的某个参考帧),得到处理后的第二参考帧列表,包括但不限于:

方式一、若第一目标参考帧存在于第二参考帧列表中,且第二目标参考帧与第一目标参考帧不同,则对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表,例如,将第二参考帧列表中的第一目标参考帧(即第二参考帧列表中与第一目标参考帧相同的参考帧)删减,得到处理后的第二参考帧列表。

示例性的,从第一参考帧列表中确定第一目标参考帧,从第二参考帧列表中确定第二目标参考帧后,判断第二参考帧列表中是否存在第一目标参考帧。如果不存在第一目标参考帧,则不再对第二参考帧列表中的参考帧进行删减处理。如果存在第一目标参考帧,判断第二参考帧列表中的第二目标参考帧与第一参考帧列表中的第一目标参考帧是否相同。如果第二目标参考帧与第一目标参考帧相同,则不再对第二参考帧列表中的参考帧进行删减处理。如果第二目标参考帧与第一目标参考帧不同,则对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。

例如,当前帧POC为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,当前帧的List1为POC=20,POC=16,POC=8共三帧,假设第一目标参考帧为List0中的参考帧4,第二目标参考帧为List1中的参参考帧8,由于List1中不存在第一目标参考帧(即参考帧4),因此,不再对List1中的参考帧进行删减处理。

又例如,假设第一目标参考帧为参考帧8,第二目标参考帧为参考帧8,由于List1中存在第一目标参考帧(即参考帧8),且第二目标参考帧(即参考帧8)与第一目标参考帧相同,因此,可以不再对List1中的参考帧进行删减处理。

又例如,假设第一目标参考帧为参考帧8,第二目标参考帧为参考帧20,由于List1中存在第一目标参考帧(即参考帧8),且第二目标参考帧(即参考帧20)与第一目标参考帧不同,因此,可以对List1中的参考帧进行删减处理。

在对List1中的参考帧进行删减处理时,由于第一目标参考帧为参考帧8,第二目标参考帧为参考帧20,因此,将List1中的与第一目标参考帧相同的参考帧(即参考帧8)删减,得到处理后的List1,处理后的List1为POC=20,POC=16共两帧。

在一个例子中,若确定第二参考帧列表中的第二目标参考帧与第一参考帧列表中的第一目标参考帧不同,则编码端还可以编码第四指示信息,所述第四指示信息用于指示第二目标参考帧与第一目标参考帧不同。

方式二、遍历第一参考帧列表与第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从所述两个参考帧组合中选择一个需要删减的目标参考帧组合。若目标参考帧组合中的一个参考帧为第一目标参考帧,则将目标参考帧组合中的另一个参考帧从第二参考帧列表中删减,得到处理后的第二参考帧列表。

在方式二中,不需要限定第一目标参考帧存在于第二参考帧列表中,也不需要限定第二目标参考帧与第一目标参考帧不同。

在编码端的处理过程中,若存在两个参考帧组合重复,在从第二参考帧列表中选择第二目标参考帧时,是从删减处理后的第二参考帧列表中选择第二目标参考帧。即,在遍历第一参考帧列表与第二参考帧列表的所有参考帧组合时,是遍历第一参考帧列表与删减处理后的第二参考帧列表的所有参考帧组合。

例如,当前帧POC为12,List0为POC=8,POC=4,POC=0共三帧,List1为POC=20,POC=16,POC=8共三帧,则可以遍历List0和List1的所有参考帧组合,如参考帧组合(820)、参考帧组合(8 16)、参考帧组合(8 8)、参考帧组合(4 20)、参考帧组合(4 16)、参考帧组合(4 8)、参考帧组合(0 20)、参考帧组合(0 16)、参考帧组合(0 8)。在上述所有的参考帧组合中,由于不存在两个参考帧组合重复,因此,不需要删减一个参考帧组合。

又例如,当前帧POC为12,List0为POC=8,POC=4,POC=0共三帧,List1为POC=16,POC=8,POC=4共三帧,则可以遍历List0和List1的所有参考帧组合,如参考帧组合(816)、参考帧组合(8 8)、参考帧组合(8 4)、参考帧组合(4 16)、参考帧组合(4 8)、参考帧组合(4 4)、参考帧组合(0 16)、参考帧组合(0 8)、参考帧组合(0 4)。在所有参考帧组合中,参考帧组合(8 4)与参考帧组合(4 8)重复,即参考帧组合(8 4)和参考帧组合(4 8)均包括参考帧8和参考帧4,因此参考帧组合(8 4)与参考帧组合(4 8)重复。

然后,从参考帧组合(8 4)和参考帧组合(4 8)中选择一个需要删减的参考帧组合,将这个参考帧组合作为目标参考帧组合,例如,将参考帧组合(8 4)作为目标参考帧组合,或者,将参考帧组合(4 8)作为目标参考帧组合,对此选择方式不做限制,只要编码端的选择策略与解码端的选择策略相同即可。

然后,假设目标参考帧组合为参考帧组合(8 4),第一目标参考帧为List0的POC=8,由于参考帧组合(8 4)中的一个参考帧8为List0的第一目标参考帧,因此,可以将参考帧组合(8 4)中的另一个参考帧4从List1中删减,得到处理后的List1,也就是说,处理后的List1为POC=16,POC=8。

在一个例子中,当前帧的参考帧配置包括第一参考帧列表和第二参考帧列表,当前帧的所有子块均对应该第一参考帧列表和该第二参考帧列表,当前块(即当前帧的一个子块)也对应该第一参考帧列表和该第二参考帧列表。

针对当前块,可以从当前帧的参考帧配置获取该第一参考帧列表和该第二参考帧列表。在此基础上,可以对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。需要注意的是,处理后的参考帧列表只作用于当前块,而不作用于当前帧的其它子块。也就是说,对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时,并不对当前帧的参考帧配置进行改动,即不修改参考帧配置中的第一参考帧列表和第二参考帧列表,在对当前帧的其它子块进行处理时,仍然使用参考帧配置中的第一参考帧列表和第二参考帧列表。

步骤404,根据第一目标参考帧和第二目标参考帧,对当前块进行编码。

例如,编码端根据第一目标参考帧在第一参考帧列表中的索引值和第二目标参考帧在处理后的第二参考帧列表中的索引值,对当前块进行编码。

在一个例子中,在对第二参考帧列表中的参考帧进行删减处理后,处理后的第二参考帧列表中的剩余参考帧的索引值会更新,也就是说,第二目标参考帧在处理后的第二参考帧列表中的索引值,是更新后的索引值。

例如,第一参考帧列表为List0[8,4,0],处理后的第二参考帧列表为List1[20,16],假设第一目标参考帧为参考帧8,第二目标参考帧为参考帧20,则编码端对当前块进行编码时,编码比特流包括语法元素inter_pred_idc=11,ref_idx_l0=0,ref_idx_l1=0。inter_pred_idc=11表示目标参考帧列表为List0和List1。ref_idx_l0=0(第一目标参考帧在第一参考帧列表中的索引值)表示第一目标参考帧为List0中的第一帧参考帧,即参考帧8。ref_idx_l1=0(第二目标参考帧在处理后的第二参考帧列表中的索引值)表示第二目标参考帧为List1中的第一帧参考帧,即参考帧20。

示例性的,若处理前的第二参考帧列表为List1[8,16,20],且第二目标参考帧是参考帧20,则ref_idx_l1=10,表示第二目标参考帧是List1的第三帧参考帧。若处理后的第二参考帧列表为List1[16,20],且第二目标参考帧是参考帧20,则ref_idx_l1=1,表示第二目标参考帧是List1的第二帧参考帧。显然,经过删减处理,对于同一个第二目标参考帧(参考帧20),编码开销有所降低。

由以上技术方案可见,针对当前块对应的两个参考帧列表,可以对至少两个参考帧列表中的参考帧进行删减处理,从而减少语法冗余,可以提高编码性能。避免双向预测块出现语法冗余,可以带来编码性能增益的提高。

实施例11:基于与实施例10同样的发明构思,本申请实施例中提出另一种编解码方法,该编解码方法可以应用于编码端,该方法可以包括以下步骤:

步骤e1,编码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表包括第一参考帧列表和第二参考帧列表。

步骤e2,编码端从第一参考帧列表中选择与当前块对应的第一目标参考帧,并从第二参考帧列表中选择与当前块对应的第二目标参考帧。

步骤e3,编码端判断第一目标参考帧是否存在于第二参考帧列表中,如果是,则执行步骤e4,如果否,则不需要执行后续的删减处理,在此不再赘述。

步骤e4,编码端判断第二目标参考帧与第一目标参考帧是否不同,如果是,则执行步骤e5,如果否,则不需要执行后续的删减处理,在此不再赘述。

步骤e5,编码端对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表,例如,可以将第二参考帧列表中的第一目标参考帧(即第二参考帧列表中与第一目标参考帧相同的参考帧)删减,得到处理后的第二参考帧列表。

步骤e6,编码端根据第一目标参考帧和第二目标参考帧,对当前块进行编码。例如,编码端根据第一目标参考帧在第一参考帧列表中的索引值和第二目标参考帧在处理后的第二参考帧列表中的索引值,对当前块进行编码。

实施例12:基于与实施例10同样的发明构思,本申请实施例中提出另一种编解码方法,该编解码方法可以应用于编码端,该方法可以包括以下步骤:

步骤f1,编码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表包括第一参考帧列表和第二参考帧列表。至少两个参考帧列表还可以包括除第一参考帧列表和第二参考帧列表之外的参考帧列表,对此不做限制。

步骤f2,编码端从第一参考帧列表中选择与当前块对应的第一目标参考帧。

步骤f3,编码端遍历第一参考帧列表与第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从两个参考帧组合中选择一个需要删减的目标参考帧组合。若目标参考帧组合中的一个参考帧为第一目标参考帧,则将目标参考帧组合中的另一个参考帧从第二参考帧列表中删减,得到处理后的第二参考帧列表。

步骤f4,编码端从处理后的第二参考帧列表中选择第二目标参考帧。

步骤f5,编码端根据第一目标参考帧和第二目标参考帧对当前块进行编码。

实施例13:参见图5所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端,该方法可以包括以下步骤:

步骤501,获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表可以包括第一参考帧列表和第二参考帧列表。至少两个参考帧列表还可以包括除第一参考帧列表和第二参考帧列表之外的参考帧列表,对此不做限制。

在一个例子中,当前块所处当前帧的帧类型可以为B帧,由于B帧允许同时存在指向多个List(参考帧列表)的帧间块,如指向List0的帧间预测块和指向List1的帧间预测块,因此,在当前块所处当前帧为B帧时,当前块所在当前帧的参考帧配置可以包括至少两个参考帧列表,为了方便描述,以两个参考帧列表为例进行说明。这两个参考帧列表可以为List0和List1。

本实施例中,以至少两个参考帧列表包括第一参考帧列表和第二参考帧列表为例,第一参考帧列表为至少两个参考帧列表中的一个,第二参考帧列表为至少两个参考帧列表中的另一个。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。对于第一参考帧列表和第二参考帧列表均不做限制,只要第一参考帧列表是List0和List1中的其中一个,第二参考帧列表是List0和List1中的另一个即可。

在一个例子中,当前块可以为双向块,即,在当前块存在两个参考帧列表时,从两个参考帧列表中各选择一个目标参考帧,即选择两个目标参考帧。

步骤502,从第一参考帧列表中选择第一目标参考帧。

例如,解码端可以获取编码比特流,该编码比特流可以包括第六指示信息,该第六指示信息用于指示第一目标参考帧在第一参考帧列表中的索引值。基于此,基于所述第六指示信息,解码端可以从第一参考帧列表中选择与该索引值对应的参考帧,并将与该索引值对应的参考帧确定为第一目标参考帧。

步骤503,对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。

在一个例子中,对第二参考帧列表中的参考帧进行删减处理(即删除第二参考帧列表的某个参考帧),得到处理后的第二参考帧列表,包括但不限于:

方式一、若第一目标参考帧存在于第二参考帧列表中,且第二目标参考帧与第一目标参考帧不同,则对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表,例如,将第二参考帧列表中的第一目标参考帧(即第二参考帧列表中与第一目标参考帧相同的参考帧)删减,得到处理后的第二参考帧列表。

在一个例子中,解码端可以获取第四指示信息,例如,解码端可以从编码比特流中获取第四指示信息。第四指示信息用于指示第二参考帧列表中的第二目标参考帧与第一参考帧列表中的第一目标参考帧是否相同。若根据第四指示信息确定第二参考帧列表中的第二目标参考帧与第一参考帧列表中的第一目标参考帧不同,则对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。若根据第四指示信息确定第二参考帧列表中的第二目标参考帧与第一参考帧列表中的第一目标参考帧相同,则不对第二参考帧列表中的参考帧进行删减处理。

综上所述,解码端判断第二参考帧列表中是否存在第一目标参考帧。如果不存在第一目标参考帧,则不再对第二参考帧列表中的参考帧进行删减处理。如果存在第一目标参考帧,则判断第二参考帧列表中的第二目标参考帧与第一参考帧列表中的第一目标参考帧是否相同(即基于第四指示信息判断第二目标参考帧与第一目标参考帧是否相同)。如果第二目标参考帧与第一目标参考帧相同,则不再对第二参考帧列表中的参考帧进行删减处理。如果第二目标参考帧与第一目标参考帧不同,则对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。

例如,当前帧POC为12,List0为POC=8,POC=4,POC=0,List1为POC=20,POC=16,POC=8共三帧,假设第一目标参考帧为List0中的参考帧4,由于List1中不存在第一目标参考帧(即参考帧4),因此,不对List1中的参考帧进行删减处理。假设第一目标参考帧为参考帧8,且第四指示信息用于指示第二目标参考帧与第一目标参考帧相同,则不对List1中的参考帧进行删减处理。假设第一目标参考帧为参考帧8,且第四指示信息用于指示第二目标参考帧与第一目标参考帧不同,则对List1中的参考帧进行删减处理。在对List1中的参考帧进行删减处理时,由于第一目标参考帧为参考帧8,因此,将List1中的与第一目标参考帧相同的参考帧(即参考帧8)删减,得到处理后的List1,处理后的List1为POC=20,POC=16共两帧。

方式二、遍历第一参考帧列表与第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从所述两个参考帧组合中选择一个需要删减的目标参考帧组合。若目标参考帧组合中的一个参考帧为第一目标参考帧,则将目标参考帧组合中的另一个参考帧从第二参考帧列表中删减,得到处理后的第二参考帧列表。

在方式二中,不需要限定第一目标参考帧存在于第二参考帧列表中,也不需要限定第二目标参考帧与第一目标参考帧不同。

例如,当前帧POC为12,List0为POC=8,POC=4,POC=0共三帧,List1为POC=16,POC=8,POC=4共三帧,则可以遍历List0和List1的所有参考帧组合,如参考帧组合(816)、参考帧组合(8 8)、参考帧组合(8 4)、参考帧组合(4 16)、参考帧组合(4 8)、参考帧组合(4 4)、参考帧组合(0 16)、参考帧组合(0 8)、参考帧组合(0 4)。在所有参考帧组合中,参考帧组合(8 4)与参考帧组合(4 8)重复,即参考帧组合(8 4)和参考帧组合(4 8)均包括参考帧8和参考帧4,因此参考帧组合(8 4)与参考帧组合(4 8)重复。

然后,从参考帧组合(8 4)和参考帧组合(4 8)中选择一个需要删减的参考帧组合,将这个参考帧组合作为目标参考帧组合,例如,将参考帧组合(8 4)作为目标参考帧组合,或者,将参考帧组合(4 8)作为目标参考帧组合,对此选择方式不做限制,只要编码端的选择策略与解码端的选择策略相同即可。

然后,假设目标参考帧组合为参考帧组合(8 4),第一目标参考帧为List0的POC=8,由于参考帧组合(8 4)中的一个参考帧8为List0的第一目标参考帧,因此,可以将参考帧组合(8 4)中的另一个参考帧4从List1中删减,得到处理后的List1,也就是说,处理后的List1为POC=16,POC=8。

在一个例子中,当前帧的参考帧配置包括第一参考帧列表和第二参考帧列表,当前帧的所有子块均对应该第一参考帧列表和该第二参考帧列表,当前块(即当前帧的一个子块)也对应该第一参考帧列表和该第二参考帧列表。

针对当前块,可以从当前帧的参考帧配置获取该第一参考帧列表和该第二参考帧列表。在此基础上,可以对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。需要注意的是,处理后的参考帧列表只作用于当前块,而不作用于当前帧的其它子块。也就是说,对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时,并不对当前帧的参考帧配置进行改动,即不修改参考帧配置中的第一参考帧列表和第二参考帧列表,在对当前帧的其它子块进行处理时,仍然使用参考帧配置中的第一参考帧列表和第二参考帧列表。

步骤504,从处理后的第二参考帧列表中选择第二目标参考帧。

在一个例子中,解码端可以获取第五指示信息,例如,从编码端比特流中获取第五指示信息,该第五指示信息用于指示第二目标参考帧在处理后的第二参考帧列表中的索引值;然后,可以根据第五指示信息从处理后的第二参考帧列表中选择与该索引值对应的参考帧,这个参考帧就是第二目标参考帧。

例如,第一参考帧列表为List0[8,4,0],处理后的第二参考帧列表为List1[20,16],编码端对当前块进行编码时,编码比特流包括语法元素inter_pred_idc=11,ref_idx_l0=0,ref_idx_l1=0。基于inter_pred_idc=11,确定目标参考帧列表为List0和List1。基于ref_idx_l0=0(第一目标参考帧在第一参考帧列表中的索引值),确定第一目标参考帧为List0中的第一帧参考帧,即参考帧8,这个确定过程是步骤502。基于ref_idx_l1=0(第二目标参考帧在第二参考帧列表中的索引值),确定第二目标参考帧为List1中的第一帧参考帧,即参考帧20,即步骤504。

步骤505,根据第一目标参考帧和第二目标参考帧对当前块进行解码。

由以上技术方案可见,针对当前块对应的两个参考帧列表,可以对至少两个参考帧列表中的参考帧进行删减处理,从而减少语法冗余,可以提高编码性能。避免双向预测块出现语法冗余,可以带来编码性能增益的提高。

实施例14:基于与实施例13同样的发明构思,本申请实施例中提出另一种编解码方法,该编解码方法可以应用于解码端,该方法可以包括以下步骤:

步骤g1,解码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表包括第一参考帧列表和第二参考帧列表。

步骤g2,解码端从第一参考帧列表中选择与当前块对应的第一目标参考帧。

步骤g3,解码端判断第一目标参考帧是否存在于第二参考帧列表中,如果是,则执行步骤g4,如果否,则不需要执行后续的删减处理,在此不再赘述。

步骤g4,解码端判断第二目标参考帧与第一目标参考帧是否不同,如果是,则执行步骤g5,如果否,则不需要执行后续的删减处理,在此不再赘述。

例如,解码端可以获取第四指示信息,第四指示信息用于指示第二目标参考帧与第一目标参考帧是否相同。基于第四指示信息,解码端可以确定第二目标参考帧与第一目标参考帧是否不同,如果是,则执行步骤g5。

步骤g6,解码端对第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表,例如,可以将第二参考帧列表中的第一目标参考帧(即第二参考帧列表中与第一目标参考帧相同的参考帧)删减,得到处理后的第二参考帧列表。

步骤g7,解码端从处理后第二参考帧列表中选择第二目标参考帧。

步骤g8,解码端根据第一目标参考帧和第二目标参考帧对当前块进行解码。

实施例15:基于与实施例13同样的发明构思,本申请实施例中提出另一种编解码方法,该编解码方法可以应用于解码端,该方法可以包括以下步骤:

步骤h1,解码端获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表包括第一参考帧列表和第二参考帧列表。

步骤h2,解码端从第一参考帧列表中选择与当前块对应的第一目标参考帧。

步骤h3,解码端遍历第一参考帧列表与第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从两个参考帧组合中选择一个需要删减的目标参考帧组合。若目标参考帧组合中的一个参考帧为第一目标参考帧,则将目标参考帧组合中的另一个参考帧从第二参考帧列表中删减,得到处理后的第二参考帧列表。

步骤h4,解码端从处理后第二参考帧列表中选择第二目标参考帧。

步骤h5,解码端根据第一目标参考帧和第二目标参考帧对当前块进行解码。

实施例16:基于与实施例13同样的发明构思,本申请实施例中提出另一种编解码方法,该编解码方法可以应用于解码端,该方法可以包括以下步骤:

根据编码比特流确定双向帧间预测块(即当前块)的参考帧列表。

解析语法元素X,得到当前块指向参考帧列表List0中的参考帧X。

若参考帧X(即第一目标参考帧)存在于List1,则解析语法元素Y,得到当前块是否指向同一帧(即第二目标参考帧与第一目标参考帧是否相同)。

若当前块指向同一帧(即第二目标参考帧与第一目标参考帧相同),则不进行后续步骤。若当前块指向不同帧,则对参考帧列表List1进行删减。

解析语法元素Z,得到当前块指向删减后的List1中的参考帧Z。

若参考帧X(即第一目标参考帧)不存在于List1,则正常解析即可。

综上所述,可以得到第一目标参考帧为参考帧X,第二目标参考帧为参考帧Z,然后,可以第一目标参考帧和第二目标参考帧对当前块进行解码。

实施例17:基于与实施例16同样的发明构思,本申请实施例中提出另一种编解码方法,该编解码方法可以应用于解码端,该方法可以包括:

当前帧POC(播放顺序)为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,当前帧的List1为POC=20,POC=16,POC=8共三帧。若List0中的参考帧X=8,由于参考帧8同时存在于List1中,所以需要解析语法元素Y。

若语法元素Y=1,表示当前双向块指向同一帧参考帧,即指向List1中的参考帧8。若语法元素Y=0,表示当前双向块指向不同的参考帧,因此,需要对List1进行删减操作,一种可行的删减方法为:首先,去除List1中的参考帧8,然后,去除已经出现过的参考帧组合,在本例子中,未出现已经出现过的参考帧组合,因此,删减后的List1可以为POC=20,POC=16共两帧。

然后,解析语法元素Z,得到双向帧间预测块指向删减后的List1中的参考帧Z;若语法元素Z=0,则当前双向块指向删减后的List1中的参考帧20;若语法元素Z=1,则当前双向块指向删减后的List1中的参考帧16。

在另一个例子中,若List0中的参考帧X=4或者X=0,由于参考帧X=4或者X=0不存在与List1中,后续正常解析即可,在此不再赘述。

实施例18:参见图6所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于编码端或者解码端,该方法可以包括:

步骤601,获取当前块所在当前帧的参考帧配置,该参考帧配置包括至少两个参考帧列表,至少两个参考帧列表可以包括第一参考帧列表和第二参考帧列表。至少两个参考帧列表还可以包括除第一参考帧列表和第二参考帧列表之外的参考帧列表,对此不做限制。

在一个例子中,当前块所处当前帧的帧类型可以为B帧,由于B帧允许同时存在指向多个List(参考帧列表)的帧间块,如指向List0的帧间预测块和指向List1的帧间预测块,因此,在当前块所处当前帧为B帧时,当前块所在当前帧的参考帧配置可以包括至少两个参考帧列表,为了方便描述,以两个参考帧列表为例进行说明。这两个参考帧列表可以为List0和List1。

本实施例中,以至少两个参考帧列表包括第一参考帧列表和第二参考帧列表为例,第一参考帧列表为至少两个参考帧列表中的一个,第二参考帧列表为至少两个参考帧列表中的另一个。例如,第一参考帧列表是List0,第二参考帧列表是List1;或者,第一参考帧列表是List1,第二参考帧列表是List0。对于第一参考帧列表和第二参考帧列表均不做限制,只要第一参考帧列表是List0和List1中的其中一个,第二参考帧列表是List0和List1中的另一个即可。

在一个例子中,当前块可以为双向块,即,在当前块存在两个参考帧列表时,从两个参考帧列表中各选择一个目标参考帧,即选择两个目标参考帧。

步骤602,根据第一参考帧列表和第二参考帧列表构建参考帧组合列表,该参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于第一参考帧列表中的参考帧和存在于第二参考帧列表中的参考帧。

根据第一参考帧列表和第二参考帧列表构建参考帧组合列表,可以包括:遍历第一参考帧列表与第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从所述两个参考帧组合中选择一个需要删减的目标参考帧组合,删减目标参考帧组合;将未被删减的所有参考帧组合添加到参考帧组合列表。

例如,当前帧POC为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,当前帧的List1为POC=20,POC=16,POC=8共三帧,则可以遍历List0和List1的所有参考帧组合,如参考帧组合(8 20)、参考帧组合(8 16)、参考帧组合(8 8)、参考帧组合(4 20)、参考帧组合(4 16)、参考帧组合(4 8)、参考帧组合(0 20)、参考帧组合(0 16)、参考帧组合(0 8)。由于不存在两个参考帧组合重复,因此,可以将所有参考帧组合均添加到参考帧组合列表中,也就是说,参考帧组合列表包括参考帧组合(8 20)、参考帧组合(8 16)、参考帧组合(8 8)、参考帧组合(4 20)、参考帧组合(4 16)、参考帧组合(4 8)、参考帧组合(0 20)、参考帧组合(016)、参考帧组合(0 8)。

又例如,当前帧POC为12,当前帧的List0为POC=8,POC=4,POC=0共三帧,当前帧的List1为POC=16,POC=8,POC=4共三帧,则可以遍历List0和List1的所有参考帧组合,如参考帧组合(8 16)、参考帧组合(8 8)、参考帧组合(8 4)、参考帧组合(4 16)、参考帧组合(4 8)、参考帧组合(4 4)、参考帧组合(0 16)、参考帧组合(0 8)、参考帧组合(0 4)。在所有参考帧组合中,参考帧组合(8 4)与参考帧组合(4 8)重复,因此,从参考帧组合(8 4)和参考帧组合(4 8)中删减一个参考帧组合(8 4),将未被删减的所有参考帧组合添加到参考帧组合列表,如参考帧组合列表包括考帧组合(8 16)、参考帧组合(8 8)、参考帧组合(416)、参考帧组合(4 8)、参考帧组合(4 4)、参考帧组合(0 16)、参考帧组合(0 8)、参考帧组合(0 4)。

步骤603,从参考帧组合列表中选择目标参考帧组合。

例如,可以确定参考帧组合列表中的每个参考帧组合对应的率失真代价,对此不做限制。然后,可以将率失真代价最小的参考帧组合作为目标参考帧组合。这样,目标参考帧组合在第一参考帧列表中的参考帧为第一目标参考帧,目标参考帧组合在第二参考帧列表中的参考帧为第二目标参考帧。

步骤604,根据目标参考帧组合对当前块进行编码或解码。

例如,针对编码端来说,可以根据目标参考帧组合(即第一目标参考帧和第二目标参考帧)对当前块进行编码。针对解码端来说,可以根据目标参考帧组合(即第一目标参考帧和第二目标参考帧)对当前块进行解码。

由以上技术方案可见,针对当前块对应的两个参考帧列表,可以对至少两个参考帧列表中的参考帧进行删减处理,从而减少语法冗余,可以提高编码性能。避免双向预测块出现语法冗余,可以带来编码性能增益的提高。

实施例19:

基于与上述方法同样的发明构思,本申请实施例中还提出一种编解码装置。

参见图7A所示,为编解码装置的结构图,该编解码装置可以应用于编码端或者解码端,所述装置包括:获取模块711,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;处理模块712,用于若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;编解码模块713,用于根据所述去重后的参考帧列表对所述当前块进行编码或者解码。

所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;所述处理模块712对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表时具体用于:保持所述第一参考帧列表中的参考帧不变,并将所述第二参考帧列表中与所述第一参考帧列表中重复的参考帧去除,得到去重后的第二参考帧列表。

若所述装置应用于解码端,所述编解码模块713根据所述去重后的参考帧列表对所述当前块进行解码时具体用于:获取第一指示信息和第二指示信息;其中,所述第一指示信息用于指示目标参考帧列表,所述第二指示信息用于指示目标参考帧的索引值;若根据所述第一指示信息确定的目标参考帧列表是所述去重后的参考帧列表,则根据所述第二指示信息从所述去重后的参考帧列表中选择与所述索引值对应的目标参考帧;根据所述目标参考帧对所述当前块进行解码。

参见图7B所示,为编解码装置的结构图,该编解码装置可以应用于编码端或者解码端,所述装置包括:获取模块721,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;构建模块722,用于根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;编解码模块723,用于根据所述新参考帧列表对所述当前块进行编码或者解码。

若所述装置应用于解码端,所述编解码模块723根据新参考帧列表对所述当前块进行解码时具体用于:获取第三指示信息;其中,所述第三指示信息用于指示目标参考帧的索引值;根据所述第三指示信息从所述新参考帧列表中选择与所述索引值对应的目标参考帧;根据所述目标参考帧对所述当前块进行解码。

参见图7C所示,为编解码装置的结构图,该编解码装置可以应用于解码端,所述装置包括:获取模块731,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;选择模块732,用于从所述第一参考帧列表中选择第一目标参考帧;处理模块733,用于对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;所述选择模块732,还用于从所述处理后的第二参考帧列表中选择第二目标参考帧;解码模块734,用于根据所述第一目标参考帧和所述第二目标参考帧对所述当前块进行解码。

所述处理模块733对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时具体用于:若所述第一目标参考帧存在于所述第二参考帧列表中,则获取第四指示信息,所述第四指示信息用于指示所述第二参考帧列表中的第二目标参考帧与所述第一参考帧列表中的第一目标参考帧是否相同;若根据所述第四指示信息确定所述第二参考帧列表中的第二目标参考帧与所述第一参考帧列表中的第一目标参考帧不同,则对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。

所述处理模块733对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时具体用于:将所述第二参考帧列表中的所述第一目标参考帧删减,得到处理后的第二参考帧列表。

所述处理模块733对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时具体用于:遍历所述第一参考帧列表与所述第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从所述两个参考帧组合中选择一个需要删减的目标参考帧组合;若所述目标参考帧组合中的一个参考帧为所述第一目标参考帧,则将所述目标参考帧组合中的另一个参考帧从所述第二参考帧列表中删减,得到处理后的第二参考帧列表。

所述选择模块732从所述处理后的第二参考帧列表中选择第二目标参考帧时具体用于:获取第五指示信息;其中,所述第五指示信息用于指示第二目标参考帧在所述处理后的第二参考帧列表中的索引值;根据所述第五指示信息从所述处理后的第二参考帧列表中选择与所述索引值对应的第二目标参考帧。

参见图7D所示,为编解码装置的结构图,该编解码装置可以应用于编码端,所述装置包括:获取模块741,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;选择模块742,用于从所述第一参考帧列表中选择第一目标参考帧,并从所述第二参考帧列表中选择第二目标参考帧;处理模块743,用于对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;编解码模块744,用于根据所述第一目标参考帧和所述第二目标参考帧,对所述当前块进行编码。

所述处理模块743对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时具体用于:若所述第一目标参考帧存在于所述第二参考帧列表中,且所述第二目标参考帧与所述第一目标参考帧不同,则对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表。

所述处理模块743对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时具体用于:将所述第二参考帧列表中的所述第一目标参考帧删减,得到处理后的第二参考帧列表。

所述处理模块743还用于若确定所述第二参考帧列表中的第二目标参考帧与所述第一参考帧列表中的第一目标参考帧不同,则编码第四指示信息,所述第四指示信息用于指示所述第二目标参考帧与所述第一目标参考帧不同。

所述处理模块743对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表时具体用于:遍历所述第一参考帧列表与所述第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从所述两个参考帧组合中选择一个需要删减的目标参考帧组合;若所述目标参考帧组合中的一个参考帧为所述第一目标参考帧,则将所述目标参考帧组合中的另一个参考帧从所述第二参考帧列表中删减,得到处理后的第二参考帧列表。

参见图7E所示,为编解码装置的结构图,该编解码装置可以应用于编码端或者解码端,所述装置包括:获取模块751,用于获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;构建模块752,用于根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;选择模块753,用于从所述参考帧组合列表中选择目标参考帧组合;编解码模块754,用于根据所述目标参考帧组合对所述当前块进行编码或解码。

所述构建模块752根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表时具体用于:遍历所述第一参考帧列表与所述第二参考帧列表中的参考帧组合;若存在两个参考帧组合重复,则从所述两个参考帧组合中选择一个需要删减的目标参考帧组合,并删减所述目标参考帧组合;将未被删减的所有参考帧组合添加到参考帧组合列表。

实施例20:

本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图8所示。包括:处理器81和机器可读存储介质82,其中:所述机器可读存储介质82存储有能够被所述处理器81执行的机器可执行指令;所述处理器81用于执行机器可执行指令,以实现本申请上述示例公开的方法。

所述处理器用于执行机器可执行指令,以实现如下步骤:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;根据所述去重后的参考帧列表对所述当前块进行编码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;根据所述新参考帧列表对所述当前块进行编码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;从所述第一参考帧列表中选择第一目标参考帧,并从所述第二参考帧列表中选择第二目标参考帧;对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;根据所述第一目标参考帧和所述第二目标参考帧,对所述当前块进行编码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;从所述参考帧组合列表中选择目标参考帧组合;根据所述目标参考帧组合对所述当前块进行编码。

实施例21:

本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9所示。包括:处理器91和机器可读存储介质92,其中:所述机器可读存储介质92存储有能够被所述处理器91执行的机器可执行指令;所述处理器91用于执行机器可执行指令,以实现本申请上述示例公开的方法。

所述处理器用于执行机器可执行指令,以实现如下步骤:

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;若所述至少两个参考帧列表存在重复的参考帧,则对所述至少两个参考帧列表进行去重处理,得到去重后的参考帧列表;根据所述去重后的参考帧列表对所述当前块进行解码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;所述至少两个参考帧列表包括第一参考帧列表和第二参考帧列表;根据所述第一参考帧列表和所述第二参考帧列表构建新参考帧列表;所述新参考帧列表中的参考帧包括第一参考帧列表中的至少一个参考帧、和/或第二参考帧列表中的至少一个参考帧,所述新参考帧列表中的任意两个参考帧不同;根据所述新参考帧列表对所述当前块进行解码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;从所述第一参考帧列表中选择第一目标参考帧;对所述第二参考帧列表中的参考帧进行删减处理,得到处理后的第二参考帧列表;从所述处理后的第二参考帧列表中选择第二目标参考帧;根据所述第一目标参考帧和所述第二目标参考帧对所述当前块进行解码;或者,

获取当前块所在当前帧的参考帧配置,所述参考帧配置包括至少两个参考帧列表;其中,第一参考帧列表为所述至少两个参考帧列表中的一个,第二参考帧列表为所述至少两个参考帧列表中的另一个;根据所述第一参考帧列表和所述第二参考帧列表构建参考帧组合列表,所述参考帧组合列表包括不重复的多个参考帧组合;每个参考帧组合包括存在于所述第一参考帧列表中的参考帧和存在于所述第二参考帧列表中的参考帧;从所述参考帧组合列表中选择目标参考帧组合;根据所述目标参考帧组合对所述当前块进行解码。

基于与上述方法同样的发明构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法。

其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于深度学习和显著性感知的压缩视频流再编码方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类