编解码方法及电子设备与流程
未命名
09-21
阅读:70
评论:0

1.本技术实施例涉及编解码技术领域,尤其涉及一种编解码方法及电子设备。
背景技术:
2.随着视频逐渐向4k(即分辨率为4096
×
2160)、8k(即分辨率为7680
×
4320)等超高清分辨率发展,具有高规格、低时延、低功耗等优点的编码器(如硬件编码器)逐渐成为rtc(real time communication,实时通信)视频场景中终端设备上的主流,以保证用户具有良好的rtc视频体验。
3.然而,这些编码器的抗弱网能力差,导致在rtc场景中网络条件变差时,无法保证视频的流畅性。
技术实现要素:
4.为了解决上述技术问题,本技术提供一种编解码方法及电子设备。在该方法中,能够实现编解码器的参考帧灵活管理,进而增加编码器的抗弱网能力,从而可以在rtc场景中网络条件变差时,保证视频的流畅性。
5.第一方面,本技术实施例提供一种编码方法,该方法包括:首先,获取当前帧;接着,从编码器的外部参考列表中,获取当前帧的参考帧所对应的重建图像,当前帧的参考帧为编码器已编码的帧,外部参考列表独立于编码器;然后,由编码器对重建图像进行帧内编码;基于帧内编码的结果,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流。这样,编码器可以从外部参考列表中灵活选取参考帧进行编码,进而能够实现跨帧参考或跨分辨率参考,增加了对编码器参考帧管理的灵活性。从而能够增加编码器的抗弱网能力,可以在rtc场景中网络条件变差时,保证视频的流畅性。
6.示例性的,外部参考列表独立于编码器,是指外部参考列表位于编码器的外部;用于区别编码器内部管理的参考列表;其中,编码器和其它模块,均可以访问该外部参考列表。
7.示例性的,编码器可以包括参考帧管理灵活的编码器(例如,软件编码器),也可以包括参考帧管理不灵活的编码器(例如,硬件编码器),本技术对此不作限制。
8.示例性的,在得到当前帧对应的码流后,可以将当前帧对应的码流发送至其他设备,也可以存储在本地,本技术对此不作限制。
9.示例性的,编码器可以以小于第一预设阈值的量化参数,对当前帧的参考帧所对应的重建图像进行帧内编码。其中,第一预设阈值可以按照需求设置,例如,第一预设阈值为小于10的数,如2,3,4,5,6,7,8,9,本技术对此不作限制。这样,能够实现对当前帧的参考帧所对应的重建图像进行高质量的帧内编码,进而能够提高当前帧的编码图像质量。
10.示例性的,编码器可以按照大于第二预设阈值的码率,对当前帧的参考帧所对应的重建图像进行帧内编码。其中,第二预设阈值可以按照需求设置,本技术对此不作限制。这样,也能够实现对当前帧的参考帧所对应的重建图像进行高质量的帧内编码,进而能够
提高当前帧的编码质量。
11.示例性的,本技术提供的编码方法对应的编解码场景可以包括多种,如使用长期参考帧编码的场景,时域分层编码场景以及参考帧重采样场景等,本技术对此不作限制。
12.需要说明的是,本技术的编码方法可以是指用于对p帧(predictive frame,前向预测帧)进行编码的方法。
13.根据第一方面,该方法还包括:当确定需要将当前帧作为后续编码的参考帧时,基于当前帧对应的码流,生成当前帧的重建图像;将当前帧的重建图像,加入外部参考列表。这样,当前帧之后的帧能够从外部参考列表中获取参考帧的重建图像。
14.根据第一方面,或者以上第一方面的任意一种实现方式,将当前帧的重建图像,加入外部参考列表,包括:对当前帧的重建图像进行重采样;将重采样后的重建图像,加入外部参考列表。这样,可以实现将重采样后的参考帧所对应的重建图像加入外部参考列表中,便于后续参考重采样参考帧编码。
15.根据第一方面,或者以上第一方面的任意一种实现方式,当前帧对应的码流包括:第一标识和第一指示信息;第一标识用于标识当前帧是否基于外部参考列表编码,第一指示信息用于指示外部参考列表中当前帧的参考帧所对应的重建图像。
16.示例性的,第一标识还可以用于标识当前帧是否参考长期参考帧/时域分层参考帧/重采样参考帧编码。
17.示例性的,当前帧对应的码流也可以仅包括第一标识,此时,第一标识用于指示当前帧不基于外部参考列表编码。
18.根据第一方面,或者以上第一方面的任意一种实现方式,当前帧对应的码流包括:第二标识和第二指示信息;第二标识用于标识当前帧是否作为后续编码的参考帧,第二指示信息用于指示外部参考列表中当前帧的重建图像。
19.示例性的,当前帧对应的码流也可以仅包括第二标识,此时,第二标识用于指示当前帧不作为后续编码的参考帧。
20.根据第一方面,或者以上第一方面的任意一种实现方式,当前帧对应的码流包括:第三标识、第三指示信息和重采样分辨率;第三标识用于标识当前帧是否进行重采样,第三指示信息用于指示外部参考列表中当前帧的重采样后的重建图像,重采样分辨率包括当前帧的重建图像对应的分辨率和重采样后的重建图像对应的分辨率。
21.示例性的,当前帧对应的码流也可以仅包括第三标识,此时,第三标识用于标识当前帧不进行重采样。
22.根据第一方面,或者以上第一方面的任意一种实现方式,修改当前帧对应的码流中,用于标识与当前帧的参考帧相关的标准语法元素;其中,标准语法元素是指标准编码协议中所规定的语法元素。这样,无需在当前帧对应的码流中添加参考帧参数(包括第一标识、第二标识、第一指示信息、第二指示信息、第三标识、第三指示信息和重采样分辨率);解码器接收到当前帧对应的码流后,可以按照现有的解码方式进行解码。
23.示例性的,标准编码协议可以包括但不限于h265、h264、h266、av1、mpeg、avs系列编码协议等,本技术对此不作限制。
24.根据第一方面,或者以上第一方面的任意一种实现方式,用于标识与当前帧的参考帧相关的标准语法元素包括以下至少一种:
25.用于标识长期参考帧数量的语法元素;
26.用于标识长期参考帧poc(picture order count,图像顺序号)的语法元素;
27.用于标识长期参考帧是否用于当前帧参考的语法元素;
28.用于标识是否使用前向参考帧的语法元素;
29.用于标识前向参考帧数量的语法元素;
30.用于标识当前帧与前向参考帧距离的语法元素;
31.用于标识前向参考帧是否用于当前帧参考的语法元素。
32.示例性的,以h265为例,用于标识长期参考帧数量的语法元素可以为:num_long_term_pics,用于标识长期参考帧poc的语法元素可以为poc_lsb_lt[i](poc_lsb_lt[i],是指第i个长期参考帧的poc),用于标识长期参考帧是否用于当前帧参考的语法元素可以为:used_by_curr_pic_lt_flag[i](used_by_curr_pic_lt_flag[i],是指第i个长期参考帧是否用于当前帧参考)。
[0033]
示例性的,以h265为例,用于标识是否使用前向参考帧的语法元素可以为short_term_ref_pic_set_sps_flag;用于标识前向参考帧数量的语法元素可以为num_negative_pics;用于标识当前帧与前向参考帧距离的语法元素可以为:delta_poc_s0_minus1[i](delta_poc_s0_minus1[i],是指当前帧与第i个前向参考帧的距离);用于标识前向参考帧是否用于当前帧参考的语法元素可以为used_by_curr_pic_s0_flag[i](used_by_curr_pic_s0_flag[i],是指第i个前向参考帧是否用于当前帧参考)。
[0034]
此外,用于标识与当前帧的参考帧相关的标准语法元素,还可以包括用于标识当前帧的poc值的语法元素pic_order_cnt_lsb。
[0035]
根据第一方面,或者以上第一方面的任意一种实现方式,从编码器的外部参考列表中,获取当前帧的参考帧所对应的重建图像,包括:判断是否满足预设参考规则;当满足预设参考规则时,根据预设参考规则确定参考指示信息;根据参考指示信息,从编码器的外部参考列表中,获取当前帧的参考帧所对应的重建图像。
[0036]
示例性的,判断是否满足预设参考规则,可以是指判断当前帧是否满足预设参考规则。
[0037]
根据第一方面,或者以上第一方面的任意一种实现方式,预设参考规则包括以下任意一种:长期参考规则,时域分层参考规则和重采样参考规则。
[0038]
根据第一方面,或者以上第一方面的任意一种实现方式,长期参考规则包括以下至少一种:
[0039]
达到长期参考帧的参考周期;
[0040]
当前帧的预设参考帧对应的码流丢失;
[0041]
外部参考列表中,存在与当前帧的相似度高于相似度阈值的重建图像。
[0042]
示例性的,达到长期参考帧的参考周期,可以是指与当前帧距离最近的且参考长期参考帧的已编码的帧,至当前帧的距离差,达到长期参考帧的参考周期。
[0043]
示例性的,可以根据时域分层结构,设置时域分层参考规则。
[0044]
示例性的,重采样参考规则可以包括以下至少一种:达到重采样的参考周期;当前帧的上一帧进行了重采样。其中,达到重采样的参考周期,可以是指与当前帧距离最近的且参考重采样参考帧的已编码的帧,至当前帧的距离差,达到重采样的参考周期。
[0045]
根据第一方面,或者以上第一方面的任意一种实现方式,帧内编码的结果包括当前帧的参考帧所对应的重建图像的帧内编码重建图像;基于帧内编码的结果,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流,包括:由编码器以帧内编码重建图像为参考,对当前帧进行帧间编码,以得到当前帧对应的码流。
[0046]
根据第一方面,或者以上第一方面的任意一种实现方式,当前帧的参考帧为:长期参考帧或时域分层参考帧或重采样参考帧。
[0047]
根据第一方面,或者以上第一方面的任意一种实现方式,编码器为硬件编码器。
[0048]
第二方面,本技术实施例提供一种解码方法,该方法包括:首先,接收当前帧对应的码流;接着,从解码器的外部参考列表中,确定当前帧的参考帧所对应的重建图像,当前帧的参考帧为解码器已解码的帧,外部参考列表独立于解码器;随后,对重建图像进行帧内编码,以得到对应的帧内编码码流;以及由解码器对帧内编码码流进行帧内解码;然后,基于帧内解码的结果,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。这样,解码器也可以灵活从外部参考列表中选取参考帧进行解码,使得解码器能够实现跨帧参考编码或跨分辨率参考解码,提高了硬件解码器的参考帧管理的灵活性。进而与编码器协同,保证在rtc场景中网络条件变差时视频的流畅性。
[0049]
示例性的,解码器可以包括参考帧管理灵活的解码器,也可以包括参考帧管理不灵活的解码器,本技术对此不作限制。
[0050]
示例性的,可以以小于第一预设阈值的量化参数,对当前帧的参考帧所对应的重建图像进行帧内解码。其中,第一预设阈值可以按照需求设置,例如,第一预设阈值为小于10的数,如2,3,4,5,6,7,8,9,本技术对此不作限制。这样,能够实现对当前帧的参考帧所对应的重建图像进行高质量的帧内解码,进而能够提高当前帧的解码图像质量。
[0051]
示例性的,可以按照大于第二预设阈值的码率,对当前帧的参考帧所对应的重建图像进行帧内解码。其中,第二预设阈值可以按照需求设置,本技术对此不作限制。这样,也能够实现对当前帧的参考帧所对应的重建图像进行高质量的帧内解码,进而能够提高当前帧的解码质量。
[0052]
示例性的,本技术提供的解码方法对应的编解码场景可以包括多种,如使用长期参考帧解码的场景,时域分层解码场景以及参考帧重采样场景等,本技术对此不作限制。
[0053]
需要说明的是,本技术的解码方法可以是指用于对p帧(predictive frame,前向预测帧)进行解码的方法。
[0054]
根据第二方面,该方法还包括:当确定需要将当前帧作为后续解码的参考帧时,将当前帧的重建图像,加入外部参考列表。这样,当前帧之后的帧能够从外部参考列表中获取参考帧的重建图像。
[0055]
根据第二方面,或者以上第二方面的任意一种实现方式,将当前帧的重建图像,加入外部参考列表,包括:对当前帧的重建图像进行重采样;将重采样后的重建图像,加入外部参考列表。这样,可以实现将重采样后的参考帧所对应的重建图像加入外部参考列表中,便于后续参考重采样参考帧编码。
[0056]
根据第二方面,或者以上第二方面的任意一种实现方式,从解码器的外部参考列表中,确定当前帧的参考帧所对应的重建图像,包括:解析当前帧对应的码流,以得到参考帧参数;基于参考帧参数,从解码器的外部参考列表中,确定当前帧的参考帧所对应的重建
图像。
[0057]
根据第二方面,或者以上第二方面的任意一种实现方式,参考帧参数包括:第一标识和第一指示信息;第一标识用于标识当前帧是否基于外部参考列表解码,第一指示信息用于指示外部参考列表中当前帧的参考帧所对应的重建图像。
[0058]
示例性的,参考帧参数也可以仅包括第一标识,此时,第一标识用于指示当前帧不基于外部参考列表解码。
[0059]
根据第二方面,或者以上第二方面的任意一种实现方式,参考帧参数包括:第二标识和第二指示信息;第二标识用于标识当前帧是否作为后续解码的参考帧,第一指示信息用于指示外部参考列表中当前帧的重建图像。
[0060]
示例性的,参考帧参数也可以仅包括第二标识,此时,第二标识用于指示当前帧不作为后续解码的参考帧。
[0061]
根据第二方面,或者以上第二方面的任意一种实现方式,当前帧对应的码流包括:第三标识、第三指示信息和重采样分辨率;第三标识用于标识当前帧是否进行重采样,第三指示信息用于指示外部参考列表中当前帧的重采样后的重建图像,重采样分辨率包括当前帧的重建图像对应的分辨率和重采样后的重建图像对应的分辨率。
[0062]
示例性的,参考帧参数也可以仅包括第三标识,此时,第三标识用于指示当前帧不进行重采样。
[0063]
根据第二方面,或者以上第二方面的任意一种实现方式,当前帧的参考帧为:长期参考帧或时域分层参考帧或重采样参考帧。
[0064]
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0065]
第三方面,本技术实施例提供一种编码方法,该方法包括:首先,获取当前帧;当确定需要由第一编码器编码时,由第一编码器对当前帧进行编码,以得到当前帧对应的码流;以及将基于当前帧对应的码流生成的重建图像,加入第二编码器的外部参考列表,外部参考列表独立于第二编码器;当确定需要由第二编码器编码时,从外部参考列表中确定当前帧的参考帧所对应的重建图像,基于当前帧的参考帧所对应的重建图像,由第二编码器对当前帧进行编码,以得到当前帧对应的码流;其中,第一编码器为硬件编码器,第二编码器为软件编码器。这样,通过硬件编码器和软件编码器结合的方式,提高硬件编码器的参考帧管理能力。从而能够实现跨帧参考或跨分辨率参考,增加了对编码器参考帧管理的灵活性。进而能够增加编码器的抗弱网能力,可以在rtc场景中网络条件变差时,保证视频的流畅性。
[0066]
根据第三方面,该方法还包括:判断当前帧是否是时域分层结构中的t0层;当当前帧是时域分层结构中的t0层时,确定需要由第一编码器编码;当当前帧不是时域分层结构中的t0层时,确定需要由第二编码器编码。
[0067]
示例性的,t0层为时域分层结构的最低层,也可以叫做基础层;其他层可以叫做增强层。
[0068]
根据第三方面,或者以上第三方面的任意一种实现方式,当前帧对应的码流包括:第一标识和第一指示信息;第一标识用于标识当前帧是否基于外部参考列表编码,第一指
示信息用于指示外部参考列表中当前帧的参考帧所对应的重建图像。
[0069]
示例性的,当前帧对应的码流也可以仅包括第一标识,此时,第一标识用于指示当前帧不基于外部参考列表编码。
[0070]
第四方面,本技术实施例提供一种解码方法,该方法包括:首先,接收当前帧对应的码流。当确定需要由第一解码器进行解码时,由第一解码器对当前帧对应的码流进行解码,以得到当前帧的重建图像;以及将当前帧的重建图像,加入第二解码器的外部参考列表,外部参考列表位于第二编码器的外部;当确定需要由第二解码器进行解码时,从外部参考列表中确定当前帧的参考帧所对应的重建图像;基于参考帧所对应的重建图像,由第二解码器对当前帧对应的码流进行解码,以得到当前帧的重建图像。这样,通过第一解码器和第一解码器结合的方式,实现对码流进行解码。当第一解码器为硬件解码器,第二解码器为软件解码器时,可以增强硬件解码器的参考帧管理的灵活性。
[0071]
根据第四方面,该方法还包括:解析当前帧对应的码流,以得到参考帧参数;根据参考帧参数,确定是否需要由第一解码器进行解码。
[0072]
根据第四方面,或者以上第四方面的任意一种实现方式,参考帧参数包括:第一标识和第一指示信息;第一标识用于标识当前帧是否基于外部参考列表解码,第一指示信息用于指示外部参考列表中当前帧的参考帧所对应的重建图像。
[0073]
示例性的,参考帧参数也可以仅包括第一标识,此时,第一标识用于指示当前帧不基于外部参考列表解码。
[0074]
根据第四方面,或者以上第四方面的任意一种实现方式,从外部参考列表中确定当前帧的参考帧所对应的重建图像,包括:当第一标识的值为第一预设信息时,将外部参考列表中,与第一指示信息匹配的重建图像,确定为当前帧的参考帧所对应的重建图像。
[0075]
根据第四方面,或者以上第四方面的任意一种实现方式,第一解码器和第二解码器均为软件解码器。
[0076]
根据第四方面,或者以上第四方面的任意一种实现方式,第一解码器为硬件解码器,第二解码器为软件解码器。
[0077]
第五方面,本技术实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的编码方法。
[0078]
第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0079]
第六方面,本技术实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的解码方法。
[0080]
第六方面以及第六方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第六方面以及第六方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0081]
第七方面,本技术实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第三方
面或第三方面的任意可能的实现方式中的编码方法。
[0082]
第七方面以及第七方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第七方面以及第七方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0083]
第八方面,本技术实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第四方面或第四方面的任意可能的实现方式中的解码方法。
[0084]
第八方面以及第八方面的任意一种实现方式分别与第四方面以及第四方面的任意一种实现方式相对应。第八方面以及第八方面的任意一种实现方式所对应的技术效果可参见上述第四方面以及第四方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0085]
第九方面,本技术实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的编码方法。
[0086]
第九方面以及第九方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第九方面以及第九方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0087]
第十方面申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的解码方法。
[0088]
第十方面以及第十方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十方面以及第十方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0089]
第十一方面申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第三方面或第三方面的任意可能的实现方式中的编码方法。
[0090]
第十一方面以及第十一方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第十一方面以及第十一方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0091]
第十二方面,本技术实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第四方面或第四方面的任意可能的实现方式中的解码方法。
[0092]
第十二方面以及第十二方面的任意一种实现方式分别与第四方面以及第四方面的任意一种实现方式相对应。第十二方面以及第十二方面的任意一种实现方式所对应的技术效果可参见上述第四方面以及第四方面的任意一种实现方式所对应的技术效果,此处不
再赘述。
[0093]
第十三方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的编码方法。
[0094]
第十三方面以及第十三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第十三方面以及第十三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0095]
第十四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的解码方法。
[0096]
第十四方面以及第十四方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十四方面以及第十四方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0097]
第十五方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第三方面或第三方面的任意可能的实现方式中的编码方法。
[0098]
第十五方面以及第十五方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第十五方面以及第十五方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0099]
第十六方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第四方面或第四方面的任意可能的实现方式中的解码方法。
[0100]
第十六方面以及第十六方面的任意一种实现方式分别与第四方面以及第四方面的任意一种实现方式相对应。第十六方面以及第十六方面的任意一种实现方式所对应的技术效果可参见上述第四方面以及第四方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0101]
第十七方面,本技术实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的编码方法。
[0102]
第十七方面以及第十七方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第十七方面以及第十七方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0103]
第十八方面,本技术实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的解码方法。
[0104]
第十八方面以及第十八方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十八方面以及第十八方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0105]
第十九方面,本技术实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第三方面或第三方面的任意可能的实现方式中的编码方法。
[0106]
第十九方面以及第十九方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第十九方面以及第十九方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0107]
第二十方面,本技术实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第四方面或第四方面的任意可能的实现方式中的解码方法。
[0108]
第二十方面以及第二十方面的任意一种实现方式分别与第四方面以及第四方面的任意一种实现方式相对应。第二十方面以及第二十方面的任意一种实现方式所对应的技术效果可参见上述第四方面以及第四方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0109]
第二十一方面,本技术实施例提供了一种电子设备,该电子设备用于编码,可以包括获取模块和处理模块,获取模块可以用于获取当前帧;获取模块还可以用于从编码器的外部参考列表中,获取当前帧的参考帧所对应的重建图像,当前帧的参考帧为编码器已编码的帧,外部参考列表独立于编码器;处理模块用于调用编码器对重建图像进行帧内编码;处理模块还用于调用编码器基于帧内编码的结果,对当前帧进行帧间编码,以得到当前帧对应的码流。处理模块可以执行例如图1中视频编码模块的功能。
[0110]
示例性的,该电子设备还可以包括通信模块,该通信模块可以用于与其它电子设备通信以及该电子设备内部各个模块之间的通信,例如可以用于发送当前帧对应的码流
[0111]
上述电子设备可以用于执行第一方面或第一方面的任意可能的实现方式中的编码方法。
[0112]
第二十一方面以及第二十一方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二十一方面以及第二十一方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0113]
第二十二方面,本技术实施例提供了一种电子设备,该电子设备用于解码,可以包括通信模块和处理模块,通信模块可以用于接收当前帧对应的码流;处理模块用于从解码器的外部参考列表中,确定当前帧的参考帧所对应的重建图像,当前帧的参考帧为解码器已解码的帧,外部参考列表独立于解码器;处理模块还用于对重建图像进行帧内编码,以得到对应的帧内编码码流;处理模块还用于调用解码器对帧内编码码流进行帧内解码;调用解码器基于帧内解码的结果,对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。处理模块可以执行例如图1中视频解码模块的功能。
[0114]
上述电子设备可以用于执行第二方面或第二方面的任意可能的实现方式中的解码方法。
[0115]
第二十二方面以及第二十二方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第二十二方面以及第二十二方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0116]
第二十三方面,本技术实施例提供了一种电子设备,该电子设备用于编码,可以包括获取模块和处理模块,获取模块可以用于获取当前帧;处理模块用于当确定需要由第一编码器编码时,调用第一编码器对当前帧进行编码,以得到当前帧对应的码流;以及将基于当前帧对应的码流生成的重建图像,加入第二编码器的外部参考列表,外部参考列表独立于第二编码器;处理模块还用于当确定需要由第二编码器编码时,从外部参考列表中确定当前帧的参考帧所对应的重建图像,调用第二编码器基于当前帧的参考帧所对应的重建图像,对当前帧进行编码,以得到当前帧对应的码流;其中,第一编码器为硬件编码器,第二编码器为软件编码器。处理模块可以执行例如图1中视频编码模块的功能。
[0117]
示例性的,该电子设备还可以包括通信模块,该通信模块可以用于与其它电子设备通信以及该电子设备内部各个模块之间的通信,例如可以用于发送当前帧对应的码流
[0118]
上述电子设备可以用于执行第三方面或第三方面的任意可能的实现方式中的编码方法。
[0119]
第二十三方面以及第二十三方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第二十三方面以及第二十三方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0120]
第二十四方面,本技术实施例提供了一种电子设备,该电子设备用于解码,可以包括通信模块和处理模块,通信模块可以用于接收当前帧对应的码流;处理模块用于当确定需要由第一解码器进行解码时,调用第一解码器对当前帧对应的码流进行解码,以得到当前帧的重建图像;以及将当前帧的重建图像,加入第二解码器的外部参考列表,外部参考列表位于第二编码器的外部;处理模块还用于当确定需要由第二解码器进行解码时,从外部参考列表中确定当前帧的参考帧所对应的重建图像;调用第二解码器基于参考帧所对应的重建图像,对当前帧对应的码流进行解码,以得到当前帧的重建图像。处理模块可以执行例如图1中视频解码模块的功能。
[0121]
上述电子设备可以用于执行第四方面或第四方面的任意可能的实现方式中的解码方法。
[0122]
第二十四方面以及第二十四方面的任意一种实现方式分别与第四方面以及第四方面的任意一种实现方式相对应。第二十四方面以及第二十四方面的任意一种实现方式所对应的技术效果可参见上述第四方面以及第四方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
[0123]
图1为示例性示应用场景示意图;
[0124]
图2为示例性示出的编码流程示意图;
[0125]
图3为示例性示出的解码流程示意图;
[0126]
图4为示例性示出的编码流程示意图;
[0127]
图5a为示例性示出的解码流程示意图;
[0128]
图5b为示例性示出的编解码过程示意图;
[0129]
图5c为示例性示出的编解码过程示意图;
[0130]
图6为示例性示出的编码流程示意图;
[0131]
图7a为示例性示出的解码流程示意图;
[0132]
图7b为示例性示出的编解码过程示意图;
[0133]
图7c为示例性示出的编解码过程示意图;
[0134]
图8为示例性示出的编码流程示意图;
[0135]
图9a为示例性示出的解码流程示意图;
[0136]
图9b为示例性示出的编解码过程示意图;
[0137]
图10为示例性示出的编码流程图;
[0138]
图11a为示例性示出的解码流程示意图;
[0139]
图11b为示例性示出的编解码过程示意图
[0140]
图12为示例性示出的装置的结构示意图。
具体实施方式
[0141]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0142]
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
[0143]
本技术实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
[0144]
在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0145]
在本技术实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
[0146]
图1为示例性示出的应用场景示意图。图1的应用场景包括但不限于:视频通话、屏幕内容共享(如文档共享、视频共享等)、手写体内容共享、视频会议、短距投屏、直播等各种rtc视频场景。
[0147]
参照图1,示例性的,第一设备、第二设备均包括但不限于:pc(personal computer,个人计算机)、笔记本电脑、平板电脑、手机等,本技术对此不作限制。示例性的,
服务器可以是单个服务器,也可以是服务器集群,本技术对此不作限制。
[0148]
参照图1,示例性的,编码过程中,可以由第一设备的视频采集模块进行视频采集,得到当前帧。示例性的,视频采集模块包括但不限于:摄像头、显卡、录屏工具等。接着,视频采集模块可以将采集到的当前帧发送至视频编码模块,由视频编码模块对当前帧进行视频编码,得到当前帧对应的码流。随后,视频编码模块将当前帧对应的码流发送至发送模块,由发送模块将当前帧对应的码流发送至服务器。
[0149]
示例性的,服务器接收到当前帧对应的码流后,将当前帧对应的码流转发至对应的第二设备。
[0150]
继续参照图1,示例性的,解码过程中,第二设备的接收模块接收码流,然后将码流发送至视频解码模块,由视频解码模块对该码流进行解码,得到对应的重建图像。随后,视频解码模块将重建图像发送至视频显示模块,由视频显示模块对重建图像进行显示。
[0151]
应该理解的是,第一设备编码得到码流后,也可以直接将码流发送至第二设备,无需经过服务器的转发,本技术对此不作限制。本技术以第一设备将编码得到的码流发送至服务器,由服务器将码流转发给第二设备为例进行示例性说明。
[0152]
应该理解的是,图1所示第一设备以及第二设备仅是一个范例,并且第一设备以及第二设备可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图1中所示出的各种模块可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
[0153]
示例性的,若图1中的视频编码模块是抗弱网能力差的编码器(如硬件编码器,或者是随着技术发展产生的其他解码器),则当rtc场景中网络条件变差时,第二设备的视频会出现卡顿、丢帧等情况。本技术考虑到导致硬件编码器抗弱网能力差的原因之一在于,硬件编码器没有提供参考帧管理的对外接口,且大多数硬件编码器是逐帧参考进行编码的,即硬件编码器的参考帧管理不灵活。进而本技术可以通过增加硬件编码器的参考帧管理的灵活性,来增强硬件编码器的抗弱网能力,从而保证在rtc场景中网络条件变差时视频的流畅性。
[0154]
示例性的,第一设备可以创建独立于编码器的外部参考列表(也就是说,外部参考列表位于编码器的外部,以区别于编码器内部管理的参考列表);随后,在编码器编码过程中,将已编码的帧中被确定后续编码的参考帧所对应的重建图像添加至外部参考列表。这样,在编码器后续编码过程中,可以从外部参考列表中选取合适的参考帧所对应的重建图像,作为参考进行编码;使得编码器能够实现跨帧参考编码或跨分辨率参考编码,提高了编码器的参考帧管理的灵活性,进而能够增加编码器的抗弱网能力,保证在rtc场景中网络条件变差时视频的流畅性。
[0155]
以下对编码过程进行说明。
[0156]
图2为示例性示出的编码流程示意图。
[0157]
s201,获取当前帧。
[0158]
示例性的,若当前的应用场景为视频通话/视频会议场景,则第一设备获取到的当前帧可以是人和/或物体的图像。
[0159]
示例性的,若当前的应用场景为屏幕内容共享/短距投屏场景,则第一设备获取到的当前帧可以是桌面展示的文档图像或者视频图像。
[0160]
示例性的,若当前的应用场景为手写体内容共享场景,则第一设备获取到的当前帧可以是手写文本/手绘图形的图像。
[0161]
s202,从编码器的外部参考列表中,获取当前帧的参考帧所对应的重建图像,当前帧的参考帧为编码器已编码的帧,外部参考列表独立于编码器。
[0162]
示例性的,可以预先配置预设参考帧设置规则,该预设参考帧设置规则可以用于判断是否需要将当前帧设置为后续编码的参考帧;具体在后续进行说明。进而,在编码器每编码一帧后,可以根据预设参考帧设置规则,判断是否需要将该已编码的帧作为后续编码的参考帧。当确定需要将该已编码的帧作为后续编码的参考帧时,可以将该已编码的帧对应的重建图像,加入至外部参考列表,以供后续编码其他帧的参考。这样,外部参考列表中可以包括一个或多个已编码的帧所对应的重建图像。
[0163]
示例性的,可以预设配置预设参考规则,该预设参考规则可以包括参考判断规则和参考帧确定规则;其中,参考判断规则用于判断当前帧是否需要参考外部参考列表编码,参考帧确定规则用于确定外部参考列表中当前帧的参考帧所对应的重建图像。进而,在获取当前帧后,判断是否满足预设参考规则中的参考判断规则。
[0164]
示例性的,当确定不满足参考判断规则时,则可以确定当前帧无需参考外部参考列表编码,此时可以直接将当前帧输入至编码器中,由编码器对当前帧进行编码,以得到当前帧对应的码流。示例性的,当当前帧为i帧(intra frame,帧内编码帧)时,编码器可以对当前帧进行帧内编码。当当前帧为p帧(predictive frame,前向预测帧)时,编码器可以对当前帧进行帧间编码;其中,编码器可以根据当前帧的上一帧所对应的重建图像,对当前帧进行帧间编码,以得到当前帧对应的码流。
[0165]
示例性的,当确定满足参考判断规则时,可以根据预设参考规则中的参考帧确定规则,确定参考指示信息;其中,参考指示信息用于指示外部参考列表中当前帧的参考帧所对应的重建图像。这样,可以根据参考指示信息,从外部参考列表中,获取当前帧的参考帧所对应的重建图像。接着,可以执行s203~s204,实现对当前帧的编码。
[0166]
s203,由编码器对重建图像进行帧内编码。
[0167]
s204,基于帧内编码的结果,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流。
[0168]
示例性的,对于参考帧管理不灵活的编码器而言,其通常逐帧参考进行帧间编码的。因此,可以将当前帧的参考帧所对应的重建图像,输入至编码器中,由编码器对当前帧的参考帧所对应的重建图像进行帧内编码,以得到对应的帧内编码的结果。其中,帧内编码的结果可以包括:当前帧的参考帧所对应的重建图像的帧内编码码流,以及当前帧的参考帧所对应的重建图像的帧内编码重建图像。
[0169]
一种可能的方式中,编码器可以以小于第一预设阈值的量化参数,对当前帧的参考帧所对应的重建图像进行帧内编码。其中,第一预设阈值可以按照需求设置,例如,第一预设阈值为小于10的数,如2,3,4,5,6,7,8,9,本技术对此不作限制。这样,能够实现对当前帧的参考帧所对应的重建图像进行高质量的帧内编码。
[0170]
一种可能的方式中,编码器可以按照大于第二预设阈值的码率,对当前帧的参考帧所对应的重建图像进行帧内编码。其中,第二预设阈值可以按照需求设置,本技术对此不作限制。这样,也能够实现对当前帧的参考帧所对应的重建图像进行高质量的帧内编码。
[0171]
需要说明的是,编码器对当前帧的参考帧所对应的重建图像,进行帧内编码所使用的量化参数,可以小于编码器对i帧进行帧内编码所使用的量化参数。示例性的,编码器对当前帧的参考帧所对应的重建图像进行帧内编码的码率,可以大于编码器对i帧进行帧内编码的码率。
[0172]
需要说明的是,第一设备不将该帧内编码码流发送至服务器/第二设备。
[0173]
接着,在编码器完成对当前帧的参考帧所对应的重建图像的帧内编码后,可以将当前帧输入至硬件编码器;这样,编码器可以以帧内编码重建图像为参考,对当前帧进行帧间编码,以得到当前帧对应的码流。示例性的,第一设备可以将当前帧对应的码流发送至服务器/第二设备。
[0174]
这样,编码器可以从外部参考列表中灵活选取参考帧进行编码,进而能够实现跨帧参考或跨分辨率参考,增加了对编码器参考帧管理的灵活性。
[0175]
需要说明的是,本实施例中的编码器可以包括参考帧管理不灵活的编码器(如硬件编码器,或者是随着技术发展产生的其他编码器),也可以包括考帧管理灵活的编码器(如软件编码器,或者是随着技术发展产生的其他编码器),本技术对此不作限制。
[0176]
一种可能的方式中,第二设备也可以建立独立于解码器的外部参考列表(也就是说,外部参考列表位于解码器的外部,以区别于编码器内部管理的参考列表);随后,在解码器解码过程中,将已解码的帧中被确定后续解码的参考帧所对应的重建图像添加至外部参考列表。这样,在解码器后续解码过程中,可以从外部参考列表中选取匹配的参考帧所对应的重建图像,作为参考进行解码;使得解码器能够实现跨帧参考解码或跨分辨率参考解码,提高了解码器的参考帧管理的灵活性。进而与编码器协同,保证在rtc场景中网络条件变差时视频的流畅性。
[0177]
图3为示例性示出的解码流程示意图。在图3的实施例中的解码过程,与图2的实施例中编码过程对应。
[0178]
s301,接收当前帧对应的码流。
[0179]
s302,从解码器的外部参考列表中,确定当前帧的参考帧所对应的重建图像,当前帧的参考帧为解码器已解码的帧,外部参考列表独立于解码器。
[0180]
示例性的,第一设备在得到当前帧对应的码流后,一种可能的方式中,可以将当前帧的参考帧参数添加至当前帧对应的码流中;其中,参考帧参数用于描述当前帧与外部参考列表中参考帧所对应的重建图像之间关联。其中,参考帧参数包括但不限于:当前帧是否作为后续编码的参考帧的相关描述信息,当前帧是否参考外部参考列表编码的相关描述信息,当前帧是否作进行重采样的相关描述信息等,本技术对此不作限制。然后再将添加参考帧参数的码流发送至第二设备。
[0181]
这样,第二设备中的解码器在每解码一帧后,可以根据从该已解码的帧对应的码流所解析出的参考帧参数,判断是否需要将该已解码的帧作为参考帧。当确定需要将该已解码的帧作为参考帧时,一种可能的方式中,可以将已解码的帧对应的重建图像加入至外部参考列表中;这样,外部参考列表包含的是参考帧的重建图像。一种可能的方式中,可以将该已解码的帧对应的重建图像输入至编码器中进行帧内编码,以得到帧内编码码流;接着,可以将已解码的帧对应的重建图像的帧内编码码流,加入至外部参考列表中;这样,外部参考列表中包含的是参考帧的帧内编码码流。本技术以包含参考帧的重建图像的外部参
考列表为例进行说明。
[0182]
一种可能的方式中,编码器可以以小于第一预设阈值的量化参数,对该已解码的帧对应的重建图像进行帧内编码,得到该已解码的帧的重建图像对应的帧内编码码流。其中,第一预设阈值可以按照需求设置,例如,第一预设阈值为小于10的数,如2,3,4,5,6,7,8,9,本技术对此不作限制。这样,能够实现对该已解码的帧对应的重建图像进行高质量的帧内编码。
[0183]
一种可能的方式中,编码器可以按照大于第二预设阈值的码率,对该已解码的帧对应的重建图像进行帧内编码,得到该已解码的帧对应的重建图像对应的帧内编码码流。其中,第二预设阈值可以按照需求设置,本技术对此不作限制。这样,也能够实现对该已解码的帧对应的的重建图像进行高质量的帧内编码。
[0184]
需要说明的是,编码器对已解码的帧对应的重建图像,进行帧内编码所使用的量化参数,可以小于编码器对i帧进行帧内编码所使用的量化参数。示例性的,编码器对已解码的帧对应的重建图像进行帧内的码率,可以大于编码器对i帧进行帧内编码的码率。
[0185]
示例性的,在接收到当前帧对应的码流后,可以解析当前帧对应的码流,以得到参考帧参数;然后基于参考帧参数,从解码器的外部参考列表中,确定当前帧的参考帧所对应的重建图像。
[0186]
示例性的,可以根据参考帧参数中当前帧是否参考外部参考列表编码的相关描述信息(对于解码端而言,该描述信息为当前帧是否参考外部参考列表解码的相关描述信息),判断当前帧是否需要参考外部参考列表解码。
[0187]
示例性的,当确定当前帧无需参考外部参考列表解码时,可以直接将当前帧对应的码流输入至解码器中,由解码器对当前帧对应的码流进行解码,以得到对应的重建图像。示例性的,当当前帧为i帧时,解码器可以对当前帧对应的码流进行帧内解码。当当前帧为p帧时,解码器可以对当前帧对应的码流进行帧间解码;其中,解码器可以根据当前帧的上一帧所对应的重建图像,对当前帧对应的码流进行帧间解码,以得到对应的重建图像。
[0188]
示例性的,当确定当前帧需要参考外部参考列表解码时,可以再次根据参考帧参数中当前帧是否参考外部参考列表解码的相关描述信息,确定外部参考列表中当前帧的参考帧所对应的重建图像;然后执行s303~s305:
[0189]
s303,对重建图像进行帧内编码,以得到对应的帧内编码码流。
[0190]
s304,由解码器对帧内编码码流进行帧内解码。
[0191]
s305,基于帧内解码的结果,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0192]
示例性的,可以将从外部参考列表中确定的当前帧的参考帧所对应的重建图像,输入至编码器中进行帧内编码,以得到当前帧的参考帧所对应的重建图像的帧内编码码流。接着,可以将当前帧的参考帧所对应的重建图像的帧内编码码流输入至解码器中,由解码器对该帧内编码码流进行解码,以得到当前帧的参考帧所对应的重建图像的帧内编码重建图像。然后,将当前帧对应的码流输入至解码器中,由解码器以该帧内编码重建图像为参考,对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0193]
其中,编码器对当前帧的参考帧所对应的重建图像进行帧内编码的量化参数,可以小于第一预设阈值;或者,编码器以大于第二预设阈值的码率,对当前帧的参考帧所对应
的重建图像进行帧内编码;具体可以参照上文中的描述,在此不再赘述。
[0194]
需要说明的是,在得到当前帧的参考帧所对应的重建图像的帧内编码重建图像后,第二设备不显示该当前帧的参考帧所对应的重建图像的帧内编码重建图像;而在得到当前帧对应的重建图像后,显示该当前帧对应的重建图像。
[0195]
这样,解码器也可以灵活从外部参考列表中选取参考帧进行解码,使得解码器能够实现跨帧参考编码或跨分辨率参考解码,提高了硬件解码器的参考帧管理的灵活性。
[0196]
需要说明的是,本实施例中的解码器可以包括参考帧管理不灵活的解码器(如硬件解码器,或者是随着技术发展产生的其他解码器),也可以包括考帧管理灵活的解码器(如软件解码器,或者是随着技术发展产生的其他解码器),本技术对此不作限制。
[0197]
示例性的,在得到当前帧对应的码流后,一种可能的方式中,可以修改当前帧对应的码流中,用于标识与当前帧的参考帧相关的标准语法元素;其中,标准语法元素是指标准编码协议中所规定的语法元素。其中,标准编码协议可以包括:h265、h264、h266、av1、mpeg、avs系列编码协议等,本技术对此不作限制。其中,需要修改的标准语法元素在后续进行说明。这样,第二设备的解码器在接收到码流后,按照现有的解码方式对码流的解码即可,在此不再赘述。
[0198]
需要说明的是,当确定当前帧无需参考外部参考列表中的参考帧编码,且无需作为后续编码的参考帧时,可以无需生成参考帧参数,也无需对当前帧对应的码流进行修改。后续直接将对当前帧进行编码得到的待编码对应的码流,发送至服务器或第二设备即可。
[0199]
示例性的,参考帧参数中,当前帧是否参考外部参考列表编码的相关描述信息,可以包括:第一标识和第一指示信息;第一标识用于标识当前帧是否基于外部参考列表编码,也可以用于标识当前帧是否参考长期参考帧或时域分层参考帧或重采样参考帧编码,第一指示信息用于指示外部参考列表中当前帧的参考帧所对应的重建图像。
[0200]
示例性的,参考帧参数中,当前帧是否作为后续编码的参考帧的相关描述信息,可以包括:第二标识和第二指示信息;其中,第二标识和第二指示信息;第二标识用于标识当前帧是否作为后续编码的参考帧,第二指示信息用于指示外部参考列表中当前帧的重建图像。
[0201]
示例性的,参考帧参数中,当前帧是否作进行重采样的相关描述信息,可以包括:第三标识、第三指示信息和重采样分辨率;第三标识用于标识当前帧是否进行重采样,第三指示信息用于指示外部参考列表中当前帧的重采样后的重建图像,重采样分辨率包括当前帧的重建图像对应的分辨率和重采样后的重建图像对应的分辨率。
[0202]
应该理解的是,参考帧参数还可以包括其他参数,具体按照需求确定,本技术对此不作限制。
[0203]
一种可能的方式中,可以将参考帧参数中第一标识和第一指示信息,添加至当前帧对应的码流中。
[0204]
一种可能的方式中,可以将参考帧参数中第二标识和第二指示信息,添加至当前帧对应的码流中。
[0205]
一种可能的方式中,可以将参考帧参数中第三标识、第三指示信息和重采样分辨率,添加至当前帧对应的码流中。
[0206]
一种可能的方式中,可以将参考帧参数中第一标识、第一指示信息、第二标识和第
二指示信息,添加至当前帧对应的码流中。
[0207]
一种可能的方式中,可以将参考帧参数中第一标识、第一指示信息、第三标识、第三指示信息和重采样分辨率,添加至当前帧对应的码流中。
[0208]
一种可能的方式中,可以将参考帧参数中的第一标识、第二标识和第三标识中的至少一种添加至当前帧对应的码流中。此时,第一标识用于标识当前帧不基于外部参考列表编码,第二标识用于标识当前帧不作为后续编码的参考帧,第三标识用于标识当前帧不进行重采样。
[0209]
一种可能的方式中,可以将当前帧的参考帧参数,添加至当前帧对应的码流中的参数集(如vps(video parameter set,视频参数集)、sps(sequence parameter set,序列参数集)、pps(picture parameter set,图像参数集))中。
[0210]
一种可能的方式中,在按照传输协议对当前帧对应的码流进行封装的过程中,将当前帧的参考帧参数,封装传输协议包的包头中。例如将当前帧的参考帧参数,封装在rtp(real-time transport rrotocol,实时传输协议)的扩展头中。
[0211]
一种可能的方式中,在按照传输协议对当前帧对应的码流进行封装的过程中,可以将参考帧参数均作为负载数据进行封装。
[0212]
一种可能的方式中,可以将当前帧对应的码流和参数帧参数打包成文件格式(file format),然后再按照传输协议封装该文件格式。示例性的,文件格式可以包括标准iso14496-12制定的文件格式。例如,文件格式为标准iso14496-12制定的文件格式,则可以在将参考帧参数添加至track hearder()中,也可以增加参考帧参数对应的box()。示例性的,文件可以也可以为mpeg2ts文件格式。应该理解的是,本技术对文件格式不作限制。
[0213]
示例性的,本技术提供的编解码方法对应的编解码场景可以包括多种,如使用长期参考帧编解码的场景,时域分层编解码场景以及参考帧重采样场景等,本技术对此不作限制。以下分别对使用长期参考帧编解码的场景,时域分层编解码场景以及参考帧重采样场景中的编解码方法进行说明。
[0214]
图4为示例性示出的编码流程示意图。在图4的实施例中,描述了使用长期参考帧编码的场景。其中,在图4的实施例中,预设参考规则为长期参考规则,预设参考帧设置规则为长期参考帧设置规则。
[0215]
s401,获取当前帧。
[0216]
s402,判断是否满足长期参考规则。
[0217]
示例性的,可以根据长期参考帧的参考周期、丢包反馈信息和应用场景等设置长期参考规则,本技术对此不作限制。示例性的长期参考规则也可以包括:参考判断规则和参考帧确定规则。当确定满足长期参考规则中的参考判断规则时,可以确定满足长期参考规则;此时,可以说明当前帧需要参考长期参考帧编码,可以执行s403~s406。当不满足长期参考规则中的参考判断规则时,可以确定不满足长期参考规则;此时,可以说明确定当前帧无需参考长期参考帧编码,可以执行s407。
[0218]
一种可能的方式中,根据长期参考帧的参考周期,设置长期参考规则。例如,可以将长期参考规则中的参考判断规则设置为:达到长期参考帧的参考周期(可以是指与当前帧距离最近的且参考长期参考帧的已编码的帧,至当前帧的距离差,达到长期参考帧的参考周期);将长期参考规则中的参考帧确定规则设置为:外部参考列表中与当前帧距离最近
的长期参考帧。示例性的,长期参考帧的参考周期可以可以按照需求设置如5帧,本技术对此不作限制。假设以一个gop(group ofpicture,图像组)为例,若长期参考帧的参考周期为5,则当当前帧为该gop中的第5帧(poc(picture order count,图像顺序号)=4)时,则可以确定达到了长期参考帧的参考周期,此时可以确定满足长期参考规则。
[0219]
一种可能的方式中,可以根据丢包反馈信息,设置长期参考规则。例如,可以将长期参考规则中的参考判断规则设置为:当前帧的预设参考帧对应的码流丢失;将长期参考规则中的参考帧确定规则设置为:外部参考列表中与当前帧距离最近的长期参考帧。其中,预设参考帧可以是指在对当前帧进行编码之前,预先为当前帧指定的参考帧。假设当前帧为该gop中的第5帧(poc=4),当前帧的预设参考帧为该gop中的第4帧(poc=3);若接收到该gop中第4帧码流丢失的丢包反馈信息,则可以确定满足长期参考规则。
[0220]
一种可能的方式中,可以根据应用场景,设置长期参考规则。例如,可以将长期参考规则中的参考判断规则设置为:当前应用场景为桌面共享场景,且外部参考列表中存在与当前帧的相似度高于相似度阈值的参考帧;将长期参考规则中的参考帧确定规则设置为:外部参考列表中与当前帧相似度最高的长期参考帧。其中,相似度阈值可以按照需求设置,本技术对此不作限制。
[0221]
s403,当确定满足长期参考规则时,根据长期参考规则确定参考指示信息。
[0222]
示例性的,对于任一已编码的帧而言,在被确定为后续编码的参考帧时,可以将该已编码的帧所对应的重建图像加入外部参考列表,并为该已编码的帧所对应的重建图像分配一帧标识。其中,帧标识可以用于唯一标识外部参考列表中的一个重建图像,可以按照需求确定,如帧序号、poc、pts(presentation time stamp显示时间戳)等等,本技术对此不作限制。此外,也可以根据预设计算规则(如长期参考帧的设置周期,和与其最近的i帧的距离等)所计算得到的可唯一指定已编码的帧所对应的重建图像的标识。
[0223]
这样,当确定满足长期参考规则时,可以根据长期参考规则中参考帧确定规则,确定当前帧的长期参考帧所对应的重建图像的帧标识,然后将该帧标识,确定为参考指示信息。
[0224]
例如,当长期参考规则中参考帧确定规则为:外部参考列表中与当前帧距离最近的长期参考帧时,可以将外部参考列表中与当前帧距离最近的长期参考帧所对应重建图像的帧标识,作为参考指示信息。又例如,当长期参考规则中参考帧确定规则为:外部参考列表中与当前帧相似度最高的长期参考帧时,可以将外部参考列表中与当前帧相似度最高的长期参考帧所对应的重建图像的帧标识,作为参考指示信息。
[0225]
s404,根据所述参考指示信息,从编码器的外部参考列表中,获取所述当前帧的长期参考帧所对应的重建图像。
[0226]
示例性的,可以将参考指示信息,与外部参考列表中各参考帧所对应重建图像的帧标识匹配,来从编码器的外部参考列表中,获取所述当前帧的长期参考帧所对应的重建图像。
[0227]
s405,由编码器对当前帧的长期参考帧所对应的重建图像进行帧内编码。
[0228]
s406,基于当前帧的长期参考帧所对应的重建图像的帧内编码重建图像,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流。
[0229]
示例性的,s405~s406可以参照上述s302~s304的描述,在此不再赘述。
[0230]
s407,当确定不满足长期参考规则时,由编码器基于当前帧的上一帧所对应的重建图像对当前帧进行帧间编码,以得到当前帧对应的码流。
[0231]
示例性的,当确定不满足长期参考规则时,也就是说,确定当前帧无需参考长期参考帧时,可以直接将当前帧输入至编码器。然后,编码器可以基于当前帧的上一帧所对应的重建图像对当前帧进行帧间编码,以得到该当前帧对应的码流。
[0232]
s408,当确定需要将当前帧作为后续编码的长期参考帧时,基于当前帧对应的码流进行解码,生成当前帧的重建图像。
[0233]
示例性的,可以根据长期参考帧的设置周期、信道质量和应用场景等设置长期参考帧设置规则,本技术对此不作限制。进而在完成对当前帧的编码后,可以通过判断是否满足长期参考帧设置规则,来判断是否需要将当前帧作为后续编码的长期参考帧。当确定满足长期参考帧设置规则时,则确定需要将当前帧作为后续编码的长期参考帧,可以将当前帧的重建图像加入至编码器的外部参考列表。当确定不满足长期参考帧设置规则时,则确定无需将当前帧作为后续编码的长期参考帧,此时可以结束编码流程。
[0234]
一种可能的方式中,可以根据长期参考帧的设置周期,设置长期参考帧设置规则。例如,长期参考帧设置规则可以设置为:达到长期参考帧的设置周期(可以是指与当前帧距离最近的长期参考帧,至当前帧的距离差,达到长期参考帧的设置周期)。一种可能的方式中,长期参考帧的设置周期可以是预先设置的固定值如4;本技术对此不作限制。假设以一个gop为例,若长期参考帧的设置周期为4,则当当前帧为该gop中的第4帧(poc=3)时,则可以确定达到了长期参考帧的设置周期,此时可以确定满足长期参考帧设置规则,即确定需要将当前帧作为后续编码的长期参考帧。
[0235]
一种可能的方式中,长期参考帧的设置周期可以是根据信道质量调整的动态值,本技术对此不作限制。例如,检测到信道质量较差时,若根据丢包反馈信息确定连续4帧的码流被成功接收时,可以将长期参考帧的设置周期调整为4;若根据丢包反馈信息确定连续3帧的码流被成功接收时,可以将长期参考帧的设置周期调整为3。
[0236]
一种可能的方式中,可以根据信道质量,设置长期参考帧设置规则。例如,长期参考帧设置规则可以设置为:信道质量低于质量阈值;其中,质量阈值可以按照需求设置,本技术对此不作限制。例如,若检测到信道质量低于质量阈值,则可以确定满足长期参考帧设置规则,即确定需要将当前帧作为后续编码的长期参考帧。若检测到信道质量高于或等于质量阈值,则可以确定不满足长期参考帧设置规则,即确定无需将当前帧作为后续编码的长期参考帧。
[0237]
一种可能的方式中,可以根据应用场景,设置长期参考帧设置规则。例如,长期参考帧设置规则可以设置为:应用场景为桌面共享场景,且与上一帧的差异大于差异阈值;其中,差异阈值可以按照需求设置,本技术对此不作限制。例如,差异阈值为0.6,在桌面共享场景中,当前帧与上一帧的差异大于或等于0.6时,则可以确定满足长期参考帧设置规则,即确定需要将当前帧作为后续编码的长期参考帧。当前帧与上一帧的差异小于0.6时,则可以确定不满足长期参考帧设置规则,即确定无需将当前帧作为后续编码的长期参考帧。
[0238]
s409,将当前帧的重建图像,加入外部参考列表。
[0239]
示例性的,可以将当前帧的重建图像,加入至外部参考列表,并为该当前帧的重建图像设置对应的帧标识。
[0240]
示例性的,在得到当前帧对应的码流后,可以在当前帧对应的码流中添加参考帧参数。在图4的示例性中,参考帧参数中的第一标识可以用于标识当前帧是否参考长期参考帧编码,第一指示信息可以用于指示外部参考列表中当前帧的长期参考帧所对应的重建图像,第二标识可以用于标识当前帧是否作为后续编码的长期参考帧,第二指示信息用于指示外部参考列表中当前帧的重建图像。
[0241]
示例性的,当确定满足长期参考规则,且当前帧已基于外部参考列表中的长期参考帧编码后,则可以将第一标识赋值为第一预设信息(如“a1”),且将第一指示信息赋值为外部参考列表中当前帧的重建图像对应的帧标识。当不确定满足长期参考规则,则可以将第一标识配置为第二预设信息(如“a0”),且将第一指示信息赋值为“null”。
[0242]
示例性的,当确定需要将当前帧作为后续编码的长期参考帧,且将当前帧的重建图像加入外部参考列表后,则可以将第二标识配置为第三预设信息(如“b1”),且将第二指示信息赋值为,外部参考列表中当前帧的长期参考帧所对应的重建图像对应的帧标识。当确定无需将当前帧作为后续编码的长期参考帧时,则可以将第二标识配置为第四预设信息(如“b0”),并将第二指示信息赋值为“null”。
[0243]
图5a为示例性示出的解码流程示意图。在图5a的实施例中描述的是长期参考帧解码的场景,与图4实施例中的编码过程对应。
[0244]
s501,接收当前帧对应的码流。
[0245]
s502,解析当前帧对应的码流,以得到参考帧参数。
[0246]
s503,基于参考帧参数,判断是否当前帧是否需要参考长期参考帧解码。
[0247]
示例性的,在从当前帧对应的码流中解析出参考帧参数后,可以判断参考帧参数中是否存在第一标识。当参考帧参数中存在第一标识时,判断第一标识的值是否为第一预设信息。若第一标识的值为第一预设信息,则确定当前帧需要参考长期参考帧解码;此时,可以执行s504~s507。若第一标识的值为第二预设信息,或者参考帧参数不包含第一标识,则确定当前帧无需参考长期参考帧解码,此时可以执行s508。
[0248]
s504,当确定当前帧需要参考长期参考帧解码时,基于参考帧参数从解码器的外部参考列表中,确定当前帧的长期参考帧所对应的帧内编码码流,外部参考列表中的长期参考帧为已解码的帧。
[0249]
示例性的,当确定当前帧需要参考长期参考帧解码时,从解码器的外部参考列表中,将与参考帧参数中第一指示信息匹配的重建图像,确定为当前帧的长期参考帧所对应的重建图像。
[0250]
s505,对重建图像进行帧内编码,以得到对应的帧内编码码流。
[0251]
s506,由解码器对帧内编码码流进行帧内解码。
[0252]
s507,基于对帧内编码码流进行解码得到的帧内编码重建图像,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0253]
示例性的,s505~s507可以参照上述s303~s305的描述,在此不再赘述。
[0254]
s508,当确定当前帧无需参考长期参考帧解码时,基于当前帧的上一帧所对应的重建图像,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0255]
示例性的,当确定当前帧无需参考长期参考帧解码时,可以将当前帧对应的码流直接输入至解码器中,然后由解码器可以基于当前帧的上一帧所对应的重建图像,对当前
帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0256]
s509,基于参考帧参数,判断是否需要将当前帧作为后续解码的长期参考帧。
[0257]
示例性的,可以判断参考帧参数中是否包括第二标识;当参考帧参数中包括第二标识时,可以判断第二标识的值是否为第三预设信息。当第二标识的值为第三预设信息时,可以确定需要将当前帧作为后续解码的长期参考帧,此时可以执行s510。当第二标识的值为第四预设信息,或者参考帧参数中不包括第二标识时,可以确定无需将当前帧作为后续解码的长期参考帧,可以结束解码流程。
[0258]
s509,当确定需要将当前帧作为后续解码的长期参考帧时,将当前帧的重建图像,加入至外部参考列表中。
[0259]
示例性的,可以将当前帧的重建图像,加入至外部参考列表,并为该当前帧的重建图像设置对应的帧标识。
[0260]
当然,也可以对当前帧的重建图像进行帧内编码,以得到当前帧的重建图像所对应的帧内编码码流;然后将当前帧的重建图像所对应的帧内编码码流,加入外部参考列表中;具体可以参照上文的描述,在此不再赘述。
[0261]
图5b为示例性示出的编解码过程示意图。图5b(1)的第一设备中的编码器为硬件编码器,第二设备中的解码器为硬件解码器。图5b(2)中左边的区域中灰色以及黑色的帧为第一设备发送的帧,右边的区域中灰色以及黑色的帧为第二设备接收到的帧;其中,黑色的帧为长期参考帧。
[0262]
结合图5b(1)和图5b(2),假设待编码的视频序列为ippppp,长期参考帧设置规则为:达到长期参考帧的设置周期,长期参考帧的设置周期为4;长期参考规则为:达到长期参考帧的参考周期,长期参考帧的参考周期为5。硬件编码器在对该视频序列编码的过程中,t0时刻,当前帧为i帧时,可以对i帧进行帧内编码,得到i帧码流,然后将i帧码流发送给第二设备。t1时刻,当前帧为第1个p帧,硬件编码器可以参考i帧重建图像对第1个p帧进行编码,得到第1个p帧的码流,然后将第1个p帧的码流发送给第二设备。t2时刻,当前帧为第2个p帧,硬件编码器可以参考第1个p帧的重建图像对第2个p帧进行编码,得到第2个p帧的码流,然后将第2个p帧的码流发送给第二设备。t3时刻,当前帧为第3个p帧,硬件编码器可以参考第2个p帧的重建图像对第3个p帧进行编码,得到第3个p帧的码流。由于t3时刻达到了长期参考帧的设置周期4,因此可以将第3个p帧的码流输入至解码器,得到解码器输出的第3个p帧的重建图像,然后将第3个p帧的重建图像存储至外部参考列表中。接着,可以在第3个p帧的码流中添加第二标识并将第二标识赋值为第三预设信息,以及添加第二指示信息(如3),然后将添加参考帧参数的第3个p帧的码流发送给第二设备。t4时刻,当前帧为第4个p帧,由于此时达到了长期参考帧的参考周期5,因此硬件编码器可以从外部参考列表中,获取第3个p帧的重建图像,然后硬件编码器可以对第3个p帧的重建图像进行帧内编码,可以得到第3个p帧的重建图像的帧内编码码流(不发送),以及第3个p帧的重建图像的帧内编码重建图像。然后再将第4个p帧输入至硬件编码器中,由硬件编码器参考第3个p帧的重建图像的帧内编码重建图像,对第4个p帧进行编码,得到第4个p帧的码流。接着,可以在第4个p帧的码流中添加第一标识并将第一标识赋值为第一预设信息,以及添加第一指示信息(如3),然后将添加参考帧参数的第4个p帧的码流发送给第二设备。t5时刻,当前帧为第5个p帧,硬件编码器可以参考第4个p帧的重建图像对第5个p帧进行编码,得到第5个p帧的码流,
然后将第5个p帧的码流发送给第二设备。
[0263]
结合图5b(1)和图5b(2),硬件解码器在对该视频序列解码的过程中,t0时刻,当前帧为i帧时,可以对i帧的码流进行帧内解码,得到i帧的重建图像,然后将i帧重建图像发送给显示模块显示。t1时刻,当前帧为第1个p帧,硬件解码器可以参考i帧重建图像对第1个p帧的码流进行解码,得到第1个p帧的重建图像,然后将第1个p帧的重建图像发送给显示模块。t2时刻,当前帧为第2个p帧,硬件解码器可以参考第1个p帧的重建图像对第2个p帧的码流进行解码,得到第2个p帧的重建图像,然后将第2个p帧的重建图像发送给显示模块。t3时刻,当前帧为第3个p帧,硬件解码器可以参考第2个p帧的重建图像对第3个p帧的码流进行解码,得到第3个p帧的重建图像,然后将第3个p帧的重建图像发送给显示模块。在得到硬件解码器输出的第3个p帧的重建图像后,可以根据第二标识和第二指示信息,将第3个p帧的重建图像存储至外部参考列表中。t4时刻,当前帧为第4个p帧,可以根据第一标识和第一指示信息,从外部参考列表中,获取第3个p帧的重建图像;然后将第3个p帧的重建图像输入至编码器,编码器可以对第3个p帧的重建图像进行帧内编码,可以得到第3个p帧的重建图像的帧内编码码流。接着,编码器将第3个p帧的重建图像的帧内编码码流发送给硬件解码器,硬件解码器可以解码得到第3个p帧的重建图像的帧内解码重建图像(不发送)。然后再将第4个p帧的码流输入至硬件解码器中,由硬件解码器根据第3个p帧的重建图像的帧内解码重建图像,对第4个p帧的码流进行解码,得到第4个p帧的重建图像,然后将第4个p帧的重建图像发送给显示模块。t5时刻,当前帧为第5个p帧,硬件解码器可以参考第4个p帧的重建图像对第5个p帧的码流进行解码,得到第5个p帧的重建图像,然后将第5个p帧的重建图像发送给显示模块。
[0264]
一种可能的方式中,第一设备在执行完s401~s408后,可以修改当前帧对应的码流中,用于标识与当前帧的参考帧相关的标准语法元素;其中,标准语法元素是指标准编码协议中所规定的语法元素。
[0265]
示例性的,第一设备在执行完s401~s408后,需要修改的用于标识与所述当前帧的参考帧相关的标准语法元素包括以下至少一种:用于标识当前帧的poc值的语法元素,用于标识长期参考帧数量的语法元素;用于标识长期参考帧图像顺序号poc的语法元素;用于标识长期参考帧是否用于当前帧参考的语法元素。当然,还可以包括其他用于标识与所述当前帧的参考帧相关的标准语法元素,本技术对此不作限制。
[0266]
以编码协议h265为例,当前帧对应的码流中用于与所述当前帧的参考帧相关的标准语法元素,可以如表1所示:
[0267]
表1
[0268][0269]
应该理解的是,表1中所示的语法元素,仅是当前帧对应的码流中,用于标识与所述当前帧的参考帧相关的标准语法元素的一些示例,本技术中当前帧对应的码流中用于标
识与所述当前帧的参考帧相关的标准语法元素,可以具有比表1中更多或更少的语法元素,在此不再赘述。
[0270]
假设当前帧为第6帧(poc=5),且需要参考长期参考帧编码。由于在对当前帧编码之前,编码器对当前帧的参考帧所对应的重建图像进行了帧内编码,得到的帧内编码码流中的poc为0;因此编码器对当前帧进行编码得到的码流中poc为1。为了使得解码器能够正常解码,可以将当前帧对应的码流中图像顺序号poc修改为5,即将pic_order_cnt_lsb的值由0修改为5;以使所述当前帧对应的码流中poc与所述当前帧的前一帧对应的码流中poc连续。
[0271]
假设,当前帧的长期参考帧为第4帧。若外部参考列表包括两个长期参考帧,这两个长期参考帧为第1帧(poc=0)和第4帧(poc=3);则可以将num_long_term_pics的值由0修改为2,将poc_lsb_lt[0]的值由“null”的修改为0,poc_lsb_lt[1]的值由“null”的修改为3;以及将used_by_curr_pic_lt_flag[0]由“null”修改为0,将used_by_curr_pic_lt_flag[1]由“null”修改为1;其中,used_by_curr_pic_lt_flag[0]=0表示该第1帧不用于当前帧参考,used_by_curr_pic_lt_flag[1]=1表示该第4帧用于当前帧参考。
[0272]
图5c为示例性示出的编解码过程示意图。图5c(1)的第一设备中的编码器为硬件编码器,第二设备中的解码器为硬件编解码或软件解码器。图5c(2)中左边的区域中灰色以及黑色的帧为第一设备发送的帧,右边的区域中灰色以及黑色的帧为第二设备接收到的帧;其中,黑色的帧表示长期参考帧。
[0273]
图5c的编码过程与图5b中的编码过程,除了对第3个p帧和第4个p帧的编码过程不同之外,其余帧的编码过程类似,在此不再赘。其中,图5c中,无需在第3个p帧的码流中添加参考帧参数,而是需要修改第4个p帧的码流中的语法元素。其中,修改后的第4个p帧的码流的语法元素的值可以如:pic_order_cnt_lsb=4,num_long_term_pics=1,poc_lsb_lt[0]=2,used_by_curr_pic_lt_flag[0]=1。
[0274]
图5c的解码过程与图5b中的解码过程除了对第4个p帧的解码过程不同之外,其余帧的解码过程类似,在此不再赘述。第二设备接收到第4个p帧的码流后,可以参考第2个p帧的重建图像进行解码,得到第4个p帧的重建图像。
[0275]
图6为示例性示出的编码流程示意图。在图6的实施例中,描述了将时域分层编码场景。其中,图6的实施例中的预设参考规则为时域分层参考规则,预设参考帧设置规则为时域分层参考帧设置规则。
[0276]
s601,获取当前帧。
[0277]
s602,判断是否满足时域分层参考规则。
[0278]
示例性的,可以根据时域分层结构,设置时域分层参考规则。示例性的时域分层参考规则也可以包括:参考判断规则和参考帧确定规则。
[0279]
若时域分层结构为时域分层结构1:第1帧(poc=0)、第3帧(poc=2)、第5帧(poc=4)、第7帧(poc=6)为t0层(即tl(temporal layer,时域层)=0);第2帧(poc=1)、第4帧(poc=3)、第6帧(poc=5)、第8帧(poc=7)为t1层(即tl=1),也就是说,时域层的数量为2。对应的参考方式为参考方式1:第3帧参考第1帧编码,第5帧参考第3帧编码,第7帧参考第5帧编码;第2帧参考第1帧编码,第4帧参考第3帧编码,第6帧参考第5帧编码,第8帧参考第7帧编码。这种情况下,可以设置时域分层参考规则中的参考判断规则为:时域分层结构1,
poc值为除8
×
(n-1)之外的整数(n的取值为0,1,2,......);参考帧确定条件为:参考方式1。
[0280]
若时域分层结构为时域分层结构2:第1帧(poc=0)、第5帧(poc=4)和第9帧(poc=8)为t0层,第3帧(poc=2)、第7帧(poc=6)和第11帧(poc=10)为t1层,第2帧(poc=1)、第4帧(poc=3)、第6帧(poc=5)、第8帧(poc=7)、第10帧(poc=9)和第12帧(poc=11)为t2层(即tl=2)。对应的参考方式是参考方式2:第2帧参考第1帧编码,第3帧参考第1帧编码,第4帧参考第3帧编码;第5帧参考第1帧编码,第6帧参考第5帧编码,第7帧参考第5帧编码,第8帧参考第7帧编码;第9帧参考第5帧编码,第10帧参考第9帧编码,第11帧参考第9帧编码,第12帧参考第11帧编码。这种情况下,可以设置时域分层参考规则中的参考判断规则为:时域分层结构2,poc值为除12
×
(n-1)之外的整数(n的取值为0,1,2,.....);参考帧确定条件为:参考方式2。
[0281]
一种可能的方式中,时域分层结构可以预先设定,也就是说,时域分层结构是固定值。
[0282]
一种可能的方式中,时域分层结构可以根据信道反馈信息确定;例如,当根据信道反馈信息确定信道质量较好时,可以增加时域层的数量;当根据信道反馈信息确定信道质量较差时,可以减少时域层的数量,本技术对此不作限制。这种情况下,时域分层结构是动态的。
[0283]
示例性的,当满足时域分层参考规则时,确定当前帧需要参考时域分层参考帧编码;此时可以执行s603~s606。当不满足时域分层参考规则时,确定当前帧无需参考时域分层参考帧编码,可以执行s607。
[0284]
s603,当确定满足时域分层参考规则时,根据时域分层参考规则确定参考指示信息。
[0285]
示例性的,当确定满足时域分层参考规则时,可以根据时域分层参考规则中参考帧确定条件,确定当前帧的时域分层参考帧所对应的重建图像的帧标识,然后将该帧标识,确定为参考指示信息。
[0286]
例如,假设时域分层参考规则中参考帧确定条件为参考方式1,则当前帧为所属gop的第3帧时,可以确定该gop中的第1帧为其参考帧;此时可以确定外部参考列表中,第1帧的重建图像的帧标识,作为参考指示信息。
[0287]
例如,假设时域分层参考规则中参考帧确定条件为参考方式2,则当前帧为所属gop的第4帧时,可以确定该gop中的第3帧为其参考帧;此时可以确定外部参考列表中,第3帧的重建图像的帧标识,作为参考指示信息。
[0288]
s604,根据所述参考指示信息,从编码器的外部参考列表中,获取所述当前帧的时域分层次参考帧所对应的重建图像。
[0289]
示例性的,可以将参考指示信息,与外部参考列表中各参考帧所对应重建图像的帧标识匹配,来从编码器的外部参考列表中,获取所述当前帧的时域分层参考帧所对应的重建图像。
[0290]
s605,由编码器对当前帧的时域分层参考帧所对应的重建图像进行帧内编码。
[0291]
s606,基于当前帧的时域分层参考帧所对应的重建图像的帧内编码重建图像,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流。
[0292]
示例性的,s605~s606可以参照上述s302~s304的描述,在此不再赘述。
[0293]
s607,当确定不满足时域分层参考规则时,由编码器基于当前帧的上一帧所对应的重建图像对当前帧进行帧间编码,以得到当前帧对应的码流。
[0294]
示例性的,s607可以参照上述s407的描述,在此不再赘述。
[0295]
s608,当确定需要将当前帧作为后续编码的时域分层参考帧时,基于当前帧对应的码流,生成当前帧的重建图像。
[0296]
示例性的,可以根据时域分层结构,设置时域分层设置规则。进而在完成对当前帧的编码后,可以根据时域分层设置规则,来确定是否需要将当前帧作为后续编码的时域分层参考帧。当确定满足时域分层设置规则时,则确定需要将当前帧作为后续编码的时域分层参考帧,可以将当前帧的重建图像加入至编码器的外部参考列表中。当确定不满足时域分层设置规则时,则确定无需将当前帧作为后续编码的时域分层参考帧,此时无需将当前帧的重建图像加入至编码器的外部参考列表中,可以结束编码流程。
[0297]
例如,时域分层设置规则可以是:时域分层结构1,poc值为除8
×
(n-1)之外的整数。假设时域分层结构为上述的时域分层结构1时,若当前帧为第1帧或第3帧或第5帧或第7帧时,则可以确定满足时域分层设置规则,即需要将当前帧作为后续编码的时域分层参考帧。
[0298]
s609,将当前帧的重建图像,加入外部参考列表。
[0299]
示例性的,可以将当前帧的重建图像,加入至外部参考列表中,并为该当前帧的重建图像设置对应的帧标识。
[0300]
示例性的,在得到当前帧对应的码流后,可以在当前帧对应的码流中添加参考帧参数。在图6的示例性中,参考帧参数中的第一标识可以用于标识当前帧是否参考时域分层参考帧帧编码,第一指示信息可以用于指示外部参考列表中当前帧的时域分层参考帧所对应的重建图像,第二标识可以用于标识当前帧是否作为后续编码的时域分层参考帧,第二指示信息用于指示外部参考列表中当前帧的重建图像。
[0301]
示例性的,当确定满足时域分层参考规则,且当前帧已基于外部参考列表中的时域分层参考帧编码后,则可以将第一标识赋值为第五预设信息(如“c1”),且将第一指示信息赋值为外部参考列表中当前帧的重建图像对应的帧标识。当不确定满足时域分层参考规则,则可以将第一标识配置为第六预设信息(如“c0”),且将第一指示信息赋值为“null”。
[0302]
示例性的,当确定需要将当前帧作为后续编码的时域分层参考帧,且将当前帧的重建图像加入外部参考列表后,则可以将第二标识配置为第七预设信息(如“d1”),且将第二指示信息赋值为,外部参考列表中当前帧的时域分层参考帧所对应的重建图像对应的帧标识。当确定无需将当前帧作为后续编码的时域分层参考帧时,则可以将第二标识配置为第八预设信息(如“d0”),并将第二指示信息赋值为“null”。
[0303]
图7a为示例性示出的解码流程示意图。在图7a的实施例中描述的是时域分层解码的场景,与图6实施例中的编码过程对应。
[0304]
s701,接收当前帧对应的码流。
[0305]
s702,解析当前帧对应的码流,以得到参考帧参数。
[0306]
s703,基于参考帧参数,判断是否当前帧是否需要参考时域分层参考帧解码。
[0307]
示例性的,在从当前帧对应的码流中解析出参考帧参数后,可以判断参考帧参数
中是否存在第一标识。当参考帧参数中存在第一标识时,判断第一标识的值是否为第五预设信息。若第一标识的值为第五预设信息,则确定当前帧需要参考时域分层参考帧解码;此时,可以执行s704~s707。若第一标识的值为第六预设信息,或者参考帧参数不包含第一标识,则确定当前帧无需参考时域分层参考帧解码,此时可以执行s708。
[0308]
s704,当确定当前帧需要参考时域分层参考帧解码时,基于参考帧参数从解码器的外部参考列表中,确定当前帧的时域分层参考帧所对应的帧内编码码流,外部参考列表中的时域分层参考帧为已解码的帧。
[0309]
示例性的,当确定当前帧需要参考时域分层参考帧解码时,从解码器的外部参考列表中,将与参考帧参数中第一指示信息匹配的重建图像,确定为当前帧的时域分层参考帧所对应的重建图像。
[0310]
s705,对重建图像进行帧内编码,以得到对应的帧内编码码流。
[0311]
s706,由解码器对帧内编码码流进行帧内解码。
[0312]
s707,基于对帧内编码码流进行解码得到的帧内编码重建图像,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0313]
示例性的,s705~s707可以参照上述s303~s305的描述,在此不再赘述。
[0314]
s708,当确定当前帧无需参考时域分层参考帧解码时,基于当前帧的上一帧所对应的重建图像,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0315]
示例性的,当确定当前帧无需参考时域分层参考帧解码时,可以将当前帧对应的码流直接输入至解码器中,然后由解码器基于当前帧的上一帧所对应的重建图像,对当前帧对应的码流进行解码,以得到当前帧的重建图像。
[0316]
s709,基于参考帧参数,判断是否需要将当前帧作为后续解码的时域分层参考帧。
[0317]
示例性的,可以判断参考帧参数中是否包括第二标识;当参考帧参数中包括第二标识时,可以判断第二标识的值是否为第七预设信息。当第二标识的值为第七预设信息时,可以确定需要将当前帧作为后续解码的时域分层参考帧,此时可以执行s710。当第二标识的值为第八预设信息,或者参考帧参数中不包括第二标识时,可以确定无需将当前帧作为后续解码的时域分层参考帧,可以结束解码流程。
[0318]
s710,当确定需要将当前帧作为后续解码的时域分层参考帧时,将所述当前帧的重建图像,加入至外部参考列表中。
[0319]
示例性的,可以将当前帧的重建图像,加入至外部参考列表中,并为该当前帧的重建图像设置对应的帧标识。
[0320]
当然,也可以对所述当前帧的重建图像进行帧内编码,以得到所述当前帧的重建图像所对应的帧内编码码流;然后将所述当前帧的重建图像所对应的帧内编码码流,加入所述外部参考列表中;具体可以参照上文的描述,在此不再赘述。
[0321]
图7b为示例性示出的编解码过程示意图。图7b(1)的第一设备中的编码器为硬件编码器,第二设备中的解码器为硬件解码器。图7b(2)中左边的区域中灰色以及黑色的帧为第一设备发送的帧,右边的区域中灰色以及黑色的帧为第二设备接收到的帧;其中,黑色的帧为时域分层参考帧。
[0322]
假设,时域分层结构为:第1帧(poc=0)、第3帧(poc=2)、第5帧(poc=4)、为t0层;第2帧(poc=1)、第4帧(poc=3)、第6帧(poc=5)为t1层;对应的参考方式为:第3帧参照第1
帧编码,第5帧参照第3帧编码,第2帧参照第1帧编码,第4帧参照第3帧编码,第6帧参照第5帧编码。
[0323]
结合图7b(1)和图7b(2),硬件编码器在对该视频序列编码的过程中,t0时刻,当前帧为i帧时,可以对i帧进行帧内编码,得到i帧码流。由于i帧需要作为后续编码的时域参考帧,因此可以将i帧的码流输入至解码器,得到解码器输出的i帧的重建图像,然后将i帧的重建图像存储至外部参考列表中。接着,可以在i帧的码流中添加第二标识并将第二标识赋值为第三预设信息,以及添加第二指示信息(如0),然后将添加参考帧参数的i帧的码流发送给第二设备。t1时刻,当前帧为第1个p帧,硬件编码器可以参考i帧的重建图像对第1个p帧进行编码,得到第1个p帧的码流,然后将第1个p帧的码流发送给第二设备。t2时刻,当前帧为第2个p帧,硬件编码器可以从外部参考列表中,获取i帧的重建图像,然后可以对i帧的重建图像进行帧内编码,可以得到i帧的重建图像的帧内编码码流(不发送),以及i帧的重建图像的帧内编码重建图像。然后再将第2个p帧输入至硬件编码器中,由硬件编码器参考i帧的重建图像的帧内编码重建图像,对第2个p帧进行编码,得到第2个p帧的码流。接着,可以在第2个p帧的码流中添加第一标识并将第一标识赋值为第一预设信息,以及添加第一指示信息(如0);以及添加第二标识并将第二标识赋值为第三预设信息,以及添加第二指示信息(如2);然后将添加参考帧参数的第2个p帧的码流发送给第二设备。t3时刻,当前帧为第3个p帧,硬件编码器可以参考第2个p帧的重建图像对第3个p帧进行编码,得到第3个p帧的码流,然后将第3个p帧的码流发送给第二设备。t4时刻,当前帧为第4个p帧,硬件编码器可以从外部参考列表中,获取第3个p帧的重建图像,然后硬件编码器可以对第3个p帧的重建图像进行帧内编码,可以得到第3个p帧的重建图像的帧内编码码流(不发送),以及第3个p帧的重建图像的帧内编码重建图像。然后再将第4个p帧输入至硬件编码器中,由硬件编码器参考第3个p帧的重建图像的帧内编码重建图像,对第4个p帧进行编码,得到第4个p帧的码流。接着,可以在第4个p帧的码流中添加第一标识并将第一标识赋值为第一预设信息,以及添加第一指示信息(如2);以及添加第二标识并将第二标识赋值为第三预设信息,以及添加第二指示信息(如4);然后将添加参考帧参数的第4个p帧的码流发送给第二设备。t5时刻,当前帧为第5个p帧,硬件编码器可以参考第4个p帧的重建图像对第5个p帧进行编码,得到第5个p帧的码流,然后将第5个p帧的码流发送给第二设备。
[0324]
结合图7b(1)和图7b(2),硬件解码器在对该视频序列解码的过程中,t0时刻,当前帧为i帧时,可以对i帧的码流进行帧内解码,得到i帧的重建图像;然后一方面,将i帧重建图像发送给显示模块显示,另一方面,可以根据第二标识和第二指示信息,将i帧的重建图像存储至外部参考列表中。t1时刻,当前帧为第1个p帧,硬件解码器可以参考i帧重建图像对第1个p帧的码流进行解码,得到第1个p帧的重建图像,然后将第1个p帧的重建图像发送给显示模块。t2时刻,当前帧为第2个p帧,可以根据第一标识和第一指示信息,从外部参考列表中,获取i帧的重建图像;然后将i帧的重建图像输入至编码器,编码器可以对i帧的重建图像进行帧内编码,可以得到i帧的重建图像的帧内编码码流。接着,编码器将i帧的重建图像的帧内编码码流发送给硬件解码器,硬件解码器可以解码得到i帧的重建图像的帧内解码重建图像(不发送)。然后再将第2个p帧的码流输入至硬件解码器中,由硬件解码器根据i帧的重建图像的帧内解码重建图像,对第2个p帧的码流进行解码,得到第2个p帧的重建图像,然后一方面,将第2个p帧的重建图像发送给显示模块;另一方面,可以根据第二标识
和第二指示信息,将第2个p帧的重建图像存储至外部参考列表中。t3时刻,当前帧为第3个p帧,硬件解码器可以参考第2个p帧的重建图像对第3个p帧的码流进行解码,得到第3个p帧的重建图像,然后将第3个p帧的重建图像发送给显示模块。t4时刻,当前帧为第4个p帧,可以根据第一标识和第一指示信息,从外部参考列表中,获取第2个p帧的重建图像;然后将第2个p帧的重建图像输入至编码器,编码器可以对第2个p帧的重建图像进行帧内编码,可以得到第2个p帧的重建图像的帧内编码码流。接着,编码器将第2个p帧的重建图像的帧内编码码流发送给硬件解码器,硬件解码器可以解码得到第2个p帧的重建图像的帧内解码重建图像(不发送)。然后再将第4个p帧的码流输入至硬件解码器中,由硬件解码器根据第3个p帧的重建图像的帧内解码重建图像,对第4个p帧的码流进行解码,得到第4个p帧的重建图像,然后,一方面,将第4个p帧的重建图像发送给显示模块;另一方面,可以根据第二标识和第二指示信息,将第4个p帧的重建图像存储至外部参考列表中。t5时刻,当前帧为第5个p帧,硬件解码器可以参考第4个p帧的重建图像对第5个p帧的码流进行解码,得到第5个p帧的重建图像,然后将第5个p帧的重建图像发送给显示模块。
[0325]
一种可能的方式中,第一设备在执行完s601~s608后,可以修改当前帧对应的码流中,用于标识与当前帧的参考帧相关的标准语法元素;其中,标准语法元素是指标准编码协议中所规定的语法元素。
[0326]
示例性的,第一设备在执行完s601~s608后,需要修改的用于标识与所述当前帧的参考帧相关的标准语法元素包括以下至少一种:用于标识当前帧的poc值的语法元素,用于标识是否使用前向参考帧的语法元素;用于标识前向参考帧数量的语法元素;用于标识当前帧与前向参考帧距离的语法元素;用于标识前向参考帧是否用于当前帧参考的语法元素。当然,还可以包括其他用于标识与所述当前帧的参考帧相关的标准语法元素,本技术对此不作限制。
[0327]
以编码协议h265为例,当前帧对应的码流中用于与所述当前帧的参考帧相关的标准语法元素,可以如表2所示:
[0328]
表2
[0329][0330]
应该理解的是,表2中所示的语法元素,仅是当前帧对应的码流中,用于标识与所述当前帧的参考帧相关的标准语法元素的一些示例,本技术中当前帧对应的码流中用于标识与所述当前帧的参考帧相关的标准语法元素,可以具有比表2中更多或更少的语法元素,在此不再赘述。
[0331]
假设时域分层结构为时域分层结构1:第1帧(poc=0)、第3帧(poc=2)、第5帧(poc=4)、第7帧(poc=6)为t0层(即tl(temporal layer,时域层)=0);第2帧(poc=1)、第4帧
(poc=3)、第6帧(poc=5)、第8帧(poc=7)为t1层(即tl=1),也就是说,时域层的数量为2。对应的参考方式为参考方式1,第3帧参考第1帧编码,第5帧参考第3帧编码,第7帧参考第5帧编码;第2帧参考第1帧编码,第4帧参考第3帧编码,第6帧参考第5帧编码,第8帧参考第7帧编码。若当前帧为第6帧,由于在对当前帧编码之前,编码器对当前帧的参考帧(即第5帧)所对应的重建图像进行了帧内编码,得到的帧内编码码流中的poc为0;因此编码器对当前帧进行编码得到的码流中poc为1。为了使得解码器能够正常解码,可以将当前帧对应的码流中图像顺序号poc修改为5,即将pic_order_cnt_lsb的值由0修改为5;以使所述当前帧对应的码流中poc与所述当前帧的前一帧对应的码流中poc连续。以及将当前帧对应的码流中short_term_ref_pic_set_sps_flag的值配置为“1”,表示当前帧参考前向参考帧编码。
[0332]
假设,当前帧的参考帧为第5帧;若外部参考列表包括3个时域分层参考帧,这3个时域分层参考帧为第1帧(poc=0)、第3帧(poc=2)和第5帧(poc=4);则可以将num_negative_pics的值由0修改为3,将delta_poc_s0_minus1[0]的值由“null”的修改为“0”,将delta_poc_s0_minus1[1]的值由“null”的修改为“2”,将delta_poc_s0_minus1[2]的值由“null”的修改为“4”。以及将used_by_curr_pic_s0_flag[0]由“null”修改为“0”,将used_by_curr_pic_s0_flag[1]由“null”修改为“0”,将used_by_curr_pic_s0_flag[2]由“null”修改为“1”;其中,used_by_curr_pic_s0_flag[0]=0,表示第1帧不用于当前帧参考,used_by_curr_pic_s0_flag[1]=0表示第3帧不用于当前帧参考,used_by_curr_pic_s0_flag[2]=1表示第5帧用于当前帧参考。
[0333]
图7c为示例性示出的编解码过程示意图。图7c(1)的第一设备中的编码器为硬件编码器,第二设备中的解码器为硬件编解码或软件解码器。图7c(2)中左边的区域中灰色以及黑色的帧为第一设备发送的帧,右边的区域中灰色以及黑色的帧为第二设备接收到的帧;其中,黑色的帧表示时域分层参考帧。
[0334]
图7c的编码过程与图7b中的编码过程,除了对i帧、第2个p帧和第4个p帧的编码过程不同之外,其余帧的编码过程类似,在此不再赘。其中,图7c中,无需在i帧、第2个p帧和第4个p帧的码流中添加参考帧参数,而是需要修改第2个p帧和第4个p帧的码流中的语法元素。其中,修改后的第2个p帧的码流的语法元素的值可以如:pic_order_cnt_lsb=2,num_long_term_pics=1,poc_lsb_lt[0]=0,used_by_curr_pic_lt_flag[0]=1。修改后的第4个p帧的码流的语法元素的值可以如:pic_order_cnt_lsb=4,num_long_term_pics=2,poc_lsb_lt[0]=0,poc_lsb_lt[1]=2,used_by_curr_pic_lt_flag[0]=0,used_by_curr_pic_lt_flag[1]=1。
[0335]
图7c的解码过程与图5c中的解码过程除了对第2个p帧和第4个p帧的解码过程不同之外,其余帧的解码过程类似,在此不再赘述。第二设备接收到第2个p帧的码流后,可以参考i帧的重建图像进行解码,得到第2个p帧的重建图像。第二设备接收到第4个p帧的码流后,可以参考第2个p帧的重建图像进行解码,得到第4个p帧的重建图像。
[0336]
图8为示例性示出的编码流程示意图。在图8的实施例中,描述了使用参考帧重采样编码的场景。其中,图8的实施例中的预设参考规则为重采样参考规则,预设参考帧设置规则为重采样设置规则。
[0337]
s801,获取当前帧。
[0338]
s802,判断是否满足重采样参考规则。
[0339]
示例性的,可以根据重采样的参考周期,上一帧的重采样情况等,来设置重采样参考规则,本技术对此不作限制。示例性的重采样参考规则也可以包括:参考判断规则和参考帧确定规则。
[0340]
一种可能的方式中,根据重采样的参考周期,设置重采样参考规则。例如,重采样参考规则中的参考判断规则可以设置为:达到重采样的参考周期(可以是指与当前帧距离最近的且参考重采样参考帧的已编码的帧,至当前帧的距离差,达到重采样的参考周期);重采样参考规则中的参考帧确定规则可以设置为:外部参考列表中与当前帧距离最近的重采样参考帧。示例性的,重采样参考帧的参考周期可以可以按照需求设置如10帧,本技术对此不作限制。
[0341]
一种可能的方式中,根据上一帧的重采样情况,来设置重采样参考规则。例如,重采样参考规则中的参考判断规则可以设置为:当前帧的上一帧进行了重采样;重采样参考规则中的参考帧确定规则可以设置为:外部参考列表中与当前帧距离最近的重采样参考帧。
[0342]
示例性的,当满足重采样参考规则时,确定当前帧需要参考重采样参考帧编码;此时可以执行s803~s806。当不满足重采样参考规则时,确定当前帧无需参考重采样参考帧编码,可以执行s807。
[0343]
s803,当确定满足重采样参考规则时,根据重采样参考规则确定参考指示信息。
[0344]
示例性的,当确定满足重采样参考规则时,可以根据重采样参考规则中参考帧确定规则,确定当前帧的重采样参考帧所对应的重建图像的帧标识,然后将该帧标识,确定为参考指示信息。
[0345]
例如,当重采样参考规则中参考帧确定规则为:外部参考列表中与当前帧距离最近的重采样参考帧时,可以将外部参考列表中与当前帧距离最近的重采样参考帧所对应重建图像的帧标识,作为参考指示信息。
[0346]
s804,根据所述参考指示信息,从编码器的外部参考列表中,获取所述当前帧的重采样参考帧所对应的重建图像。
[0347]
示例性的,可以将参考指示信息,与外部参考列表中各参考帧所对应重建图像的帧标识匹配,来从编码器的外部参考列表中,获取所述当前帧的重采样参考帧所对应的重建图像。
[0348]
s805,由编码器对当前帧的重采样参考帧所对应的重建图像进行帧内编码。
[0349]
s806,基于当前帧的重采样参考帧所对应的重建图像的帧内编码重建图像,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流。
[0350]
示例性的,s805~s806可以参照上述s302~s304的描述,在此不再赘述。
[0351]
s807,当确定不满足重采样参考规则时,由编码器基于当前帧的上一帧所对应的重建图像对当前帧进行帧间编码,以得到当前帧对应的码流。
[0352]
示例性的,s807可以参照上述s407的描述,在此不再赘述。
[0353]
s808,当确定需要将当前帧作为后续编码的重采样参考帧时,基于当前帧对应的码流,生成当前帧的重建图像。
[0354]
示例性的,可以根据重采样参考帧的设置周期(也可以称为重采样周期)、信道质量等设置重采样设置规则,本技术对此不作限制。进而在完成对当前帧的编码后,可以通过
判断是否满足重采样设置规则,来判断是否需要将当前帧作为后续编码的重采样参考帧(也就是判断是否需要对当前帧进行重采样)。当确定满足重采样设置规则时,则确定需要将当前帧作为后续编码的重采样参考帧(或需要对当前帧进行重采样),可以执行s809。当确定不满足重采样设置规则时,则无需将当前帧作为后续编码的重采样参考帧(或无需对当前帧进行重采样),此时,可以结束编码流程。
[0355]
一种可能的方式中,根据重采样参考帧的设置周期,来设置重采样参考帧的设置规则。重采样设置规则可以是:达到重采样参考帧的设置周期(可以是指与当前帧距离最近的重采样参考帧,至当前帧的距离差,达到重采样的设置周期)。一种可能的方式中,重采样参考帧的设置周期可以是预先设置的固定值如9;本技术对此不作限制。假设长期参考帧的设置周期为9,若当前帧为第9帧时,则可以确定达到了重采样参考帧的设置周期,此时可以确定满足重采样设置规则,即确定需要将当前帧作为后续编码的重采样参考帧(或需要对当前帧进行重采样)。
[0356]
一种可能的方式中,可以根据信道质量,设置重采样参考帧的设置规则。例如,长期参考帧设置规则可以包括:信道质量变化程度大于第一阈值,或,信道质量变化程度低于第二阈值;其中,第一阈值为正数,第二阈值为负数,可以按照需求设置,本技术对此不作限制。例如,若检测信道质量变化程度大于第一阈值,则说明信道质量变好,此时信道可以承载更大的码率,因此可以增加当前帧的分辨率,进而可以确定满足重采样参考帧的设置规则,即确定需要对当前帧进行重采样(或需要对当前帧进行重采样)。若检测信道质量变化程度小于第二阈值,则说明信道质量变差,此时信道可承载的码率更小,因此可以降低当前帧的分辨率,进而可以确定满足重采样设置规则。否则,则确定满足重采样设置规则,即无需将当前帧作为后续编码的重采样参考帧(或无需对当前帧进行重采样)。
[0357]
s809,对当前帧的重建图像进行重采样。
[0358]
s810,将重采样后的重建图像,加入外部参考列表。
[0359]
示例性的,在设置重采样设置规则时,还可以设置对应的重采样的目标分辨率。例如,重采样设置规则为:达到重采样参考帧的设置周期,对应的重采样的目标分辨率可以设置为:1720*920。又例如,重采样设置规则为:信道质量变化程度大于第一阈值,对应的重采样的目标分辨率可以设置为:1720*1080。还例如,重采样设置规则为:信道质量变化程度大于第一阈值,对应的重采样的目标分辨率可以设置为:960*480。
[0360]
进而,可以按照重采样的目标分辨率,对当前帧的重建图像进行重采样。然后再将重采样后的重建图像,加入至外部参考列表中。
[0361]
示例性的,在得到当前帧对应的码流后,可以在当前帧对应的码流中添加参考帧参数。在图8的示例性中,参考帧参数中的第一标识可以用于标识当前帧是否参考重采样参考帧编码,第一指示信息可以用于指示外部参考列表中当前帧的重采样参考帧所对应的重建图像,第三标识用于标识当前帧是否进行重采样,第三指示信息用于指示外部参考列表中当前帧的重采样后的重建图像,重采样分辨率包括当前帧的重建图像对应的分辨率和重采样后的重建图像对应的分辨率。
[0362]
示例性的,当确定满足重采样参考规则,且当前帧已基于参考重采样参考帧编码后,则可以将第一标识赋值为第九预设信息(如“e1”),且将第一指示信息赋值为外部参考列表中当前帧的重建图像对应的帧标识。当不确定满足重采样参考规则,则可以将第一标
识配置为第十预设信息(如“e0”),且将第一指示信息赋值为“null”。
[0363]
示例性的,当确定需要对当前帧进行重采样时,则可以将第三标识配置为第十一预设信息(如“f1”),且将第三指示信息赋值为,外部参考列表中当前帧的重采样参考帧所对应的重建图像对应的帧标识。当确定无需对当前帧进行重采样时,则可以将第二标识配置为第十二预设信息(如“f0”),并将第二指示信息赋值为“null”。
[0364]
图9a为示例性示出的解码流程示意图。在图9a的实施例中描述的是参考帧重采样解码的场景,与图8实施例中的编码过程对应。
[0365]
s901,接收当前帧对应的码流。
[0366]
s902,解析当前帧对应的码流,以得到参考帧参数。
[0367]
s903,基于参考帧参数,判断是否当前帧是否需要参考重采样参考帧解码。
[0368]
示例性的,在从当前帧对应的码流中解析出参考帧参数后,可以判断参考帧参数中是否存在第一标识。当参考帧参数中存在第一标识时,判断第一标识的值是否为第九预设信息。若第一标识的值为第九预设信息,则确定当前帧需要参考重采样参考帧解码;此时,可以执行s904~s907。若第一标识的值为第十预设信息,或者参考帧参数不包含第一标识,则确定当前帧无需参考重采样参考帧解码,此时可以执行s908。
[0369]
s904,当确定当前帧需要参考重采样参考帧解码时,基于参考帧参数从解码器的外部参考列表中,确定当前帧的重采样参考帧所对应的帧内编码码流,外部参考列表中的重采样参考帧为已解码的帧。
[0370]
示例性的,当确定当前帧需要参考重采样参考帧解码时,从解码器的外部参考列表中,将与参考帧参数中第二指示信息匹配的重建图像,确定为当前帧的重采样参考帧所对应的重建图像。
[0371]
s905,对重建图像进行帧内编码,以得到对应的帧内编码码流。
[0372]
s906,由解码器对帧内编码码流进行帧内解码。
[0373]
s907,基于对帧内编码码流进行解码得到的帧内编码重建图像,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0374]
示例性的,s905~s907可以参照上述s303~s305的描述,在此不再赘述。
[0375]
s908,当确定当前帧无需参考重采样参考帧解码时,基于当前帧的上一帧所对应的重建图像,由解码器对当前帧对应的码流进行帧间解码,以得到当前帧的重建图像。
[0376]
示例性的,当确定当前帧无需参考重采样参考帧解码时,可以将当前帧对应的码流直接输入至解码器中,然后由解码器基于当前帧的上一帧所对应的重建图像,对当前帧对应的码流进行解码,以得到当前帧的重建图像。
[0377]
s909,基于参考帧参数,判断是否需要将当前帧作为后续解码的重采样参考帧。
[0378]
示例性的,可以判断参考帧参数中是否包括第三标识;当参考帧参数中包括第三标识时,可以判断第三标识的值是否为第十一预设信息。当第三标识的值为第十一预设信息时,可以确定需要将当前帧作为后续解码的重采样参考帧,此时可以执行s910。当第三标识的值为第十二预设信息,或者参考帧参数中不包括第三标识时,可以确定无需将当前帧作为后续解码的重采样参考帧,可以结束解码流程。
[0379]
s910,当确定需要将当前帧作为后续解码的重采样参考帧时,对当前帧的重建图像进行重采样。
[0380]
s910,将重采样后的重建图像,加入至外部参考列表中。
[0381]
示例性的,s901~s911,可以参照上述s809~s810的描述,在此不再赘述。
[0382]
当然,也可以对重采样或的重建图像进行帧内编码,以得到重采样后的重建图像所对应的帧内编码码流;然后将重采样后的重建图像所对应的帧内编码码流,加入外部参考列表中;具体可以参照上文的描述,在此不再赘述。
[0383]
图9b为示例性示出的编解码过程示意图。图9b(1)的第一设备中的编码器为硬件编码器,第二设备中的解码器为硬件解码器。图9b(2)中左边的区域中灰色以及黑色的帧为第一设备发送的帧,右边的区域中灰色以及黑色的帧为第二设备接收到的帧;其中,黑色的帧为重采样参考帧。
[0384]
假设待编码的视频序列为ippppp,重采样设置规则为:达到重采样的设置周期,重采样的设置周期为4;重采样参考规则为:达到重采样的参考周期,重采样参考帧的参考周期为5。
[0385]
结合图9b(1)和图9b(2),与图5b(1)和图5b(2)编解码过程类似,在此不再赘述。区别在于,在图9b(1)和图9b(2)中,在编码过程中,可以先对第3个p帧的重建图进行重采样,然后将重采样后的第3个p帧的重建图像存储至外部参考列表。接着,可以在第3个p帧的码流中添加第三标识并将第三标识赋值为第十一预设信息,以及添加第三指示信息(如3)和第3帧的重建图像对应的分辨率和所述重采样后的第3帧的重建图像对应的分辨率。在解码过程中,可以根据第三标识,第3帧的重建图像对应的分辨率和所述重采样后的第3帧的重建图像对应的分辨率,对第3个p帧的重建图进行重采样,然后根据第三指示信息,将重采样后的第3个p帧的重建图像存储至外部参考列表。
[0386]
示例性的,硬件编码器可以结合软件编码进行编码,从而来实现灵活的参考帧管理。
[0387]
图10为示例性示出的编码流程图。在图10的实施例中,可以应用在时域分层编码的场景中,硬件编码器可以结合软件编码器,来实现时域分层编码。其中,第一编码器为硬件编码器,第二编码器为软件编码器。
[0388]
s1001,获取当前帧。
[0389]
示例性的,在获取到当前帧后,可以判断是由第一编码器编码,还是由第二编码器编码。示例性的,由于硬件编码器是逐帧参考进行编码的,而时域分层结构中t0层的帧是逐帧进行编码的,因此可以判断当前帧是否是时域分层结构中的t0层。当当前帧是时域分层结构中的t0层时,确定由第一编码器编码;当当前帧不是时域分层结构中的t0层时,确定由第二编码器编码。
[0390]
示例性的,可以根据时域分层结构和当前帧的帧标识,来判断当前帧是否是时域分层结构中的t0层。
[0391]
例如,假设时域分层结构为参照图6的实施例中的时域分层结构1。若当前帧所在gop有8帧,当当前帧为第1帧或第3帧或第5帧或第7帧时,可以确定当前帧需要由第一编码器编码。当当前帧为第2帧或第4帧或第6帧或第8帧时,可以确定当前帧需要由第二编码器编码。
[0392]
又例如,假设时域分层结构为参照图6的实施例中的时域分层结构2。若当前帧所在gop有12帧,当当前帧为第1帧或第5帧或第9帧,则可以确定当前帧需要由第一编码器编
码。若当前帧为第3帧或第7帧或第2帧或第4帧或第6帧或第8帧或第10帧或第11帧或第12帧,则可以确定当前帧需要由第二编码器编码。
[0393]
s1002,当确定需要由第一编码器进行编码时,由第一编码器对当前帧进行编码,以得到当前帧对应的码流。
[0394]
s1003,将基于当前帧对应的码流生成的重建图像,加入第二编码器的外部参考列表,外部参考列表位于第二编码器的外部。
[0395]
示例性的,当确定当前帧需要由第一编码器进行编码时,可以将当前帧输入至第一编码器编码,由第一编码器对当前帧进行编码,以得到当前帧对应的码流。其中,当当前帧为i帧时,第一编码器可以对当前帧进行帧内编码,以得到当前帧的帧内编码码流。当当前帧为p帧时,第一编码器可以以当前帧的上一帧的重建图像为参考,对当前帧进行帧间编码,以得到当前帧的帧内编码码流。
[0396]
由于第一编码器编码的是t0层,其他时域层(如t1、t2...)的帧通常会以t0层的帧为参考进行编码;因此在得到当前帧对应的码流后,可以基于当前帧对应的码流进行解码,以得到当前帧的重建图像。然后将当前帧的重建图像,加入第二编码器的外部参考列表。这样,第二解码器在编码除t0层之外的其它时域层的帧时,可以从其外部参考列表获取参考帧所对应的重建图像。
[0397]
s1004,当确定需要由第二编码器进行编码时,从外部参考列表中确定当前帧的参考帧所对应的重建图像,基于当前帧的参考帧所对应的重建图像,由第二编码器对当前帧进行编码,以得到当前帧对应的码流。
[0398]
示例性的,第二编码器还存在对应的内部参考列表,第二编码器每编码一帧后,可以将该帧的重建图像加入至内部参考列表中。
[0399]
进而,当确定需要由第二编码器进行编码时,可以根据时域分层参考规则,来确定是基于第二编码器的外部参考列表编码,还是基于第二编码器的内部参考列表编码。示例性的,时域分层参考规则可以按照上述图6中的实施例描述的方式设置,在此不再赘述。
[0400]
例如,假设时域分层参考规则中的参考判断规则为:时域分层结构1,poc值为除8
×
(n-1)之外的整数;参考帧确定条件为:参考方式1。若当前帧为第8帧,则根据时域分层参考规则中的参考帧确定条件,确定第8帧参考第7帧。由于第7帧是由第一编码器编码的,因此可以确定需要基于外部参考列表进行编码。接着,可以继续根据时域分层参考规则中的参考帧确定条件,从外部参考列表中确定当前帧的参考帧所对应的重建图像。随后,第二编码器可以从外部参考列表中选取出当前帧的参考帧所对应的重建图像,将当前帧的参考帧所对应的重建图像放入内部参考列表,然后基于当前帧的参考帧所对应的重建图像,对当前帧进行编码,以得到当前帧对应的码流。
[0401]
例如,假设时域分层参考规则中的参考判断规则为:时域分层结构2,poc值为除12
×
(n-1)之外的整数;参考帧确定条件为:参考方式2。若当前帧为第8帧,则可以根据时域分层参考规则中的参考帧确定条件,确定第8帧参考第7帧。由于第7帧是由第二编码器编码的,因此可以确定需要参照内部参考列表进行编码。接着,可以继续根据时域分层参考规则中的参考帧确定条件,从内部参考列表中确定当前帧的参考帧所对应的重建图像。随后,基于当前帧的参考帧所对应的重建图像,由第二编码器对当前帧进行编码,以得到当前帧对应的码流。
[0402]
示例性的,在第一编码器对当前帧进行编码得到当前帧对应的码流后,可以在当前帧对应的码流中添加第一标识、第一指示信息、第二标识和第二指示信息。其中,第一标识可以用于标识当前帧是否基于外部参考列表编码,可以是当前帧的参考帧所对应的码流的标识(如stream id)。第一指示信息用于指示外部参考列表中当前帧的时域分层参考帧所对应的重建图像。第二标识用于标识当前帧是否作为后续编码的时域分层参考帧,第二指示信息用于指示外部参考列表中当前帧的重建图像。
[0403]
当当前帧的参考帧所对应的重建图像来自于外部参考列表时,可以将第一标识赋值为第一预设信息(如“g1”);且将第一指示信息赋值为,外部参考列表中当前帧的时域分层参考帧所对应的重建图像对应的帧标识。当前帧的参考帧所对应的重建图像来自于内部参考列表时,可以将第一标识赋值为第二预设信息(如“g0”),并将第一指示信息赋值为“null”。
[0404]
示例性的,当确定需要将当前帧作为后续编码的时域分层参考帧,且将当前帧的重建图像加入外部参考列表后,则可以将第二标识配置为第三预设信息(如“h1”),且将第二指示信息赋值为,外部参考列表中当前帧的时域分层参考帧所对应的重建图像对应的帧标识。当确定无需将当前帧作为后续编码的时域分层参考帧时,则可以将第二标识配置为第三预设信息(如“h0”),并将第二指示信息赋值为“null”。
[0405]
图11a为示例性示出的解码流程示意图。在图11a的实施例中描述的是时域分层解码的场景,与图10实施例中的编码过程对应。一种可能的方式中,第一解码器和第二解码器均为软件解码器。另一种可能的方式中,第一解码器为硬件解码器,第二解码器为软件解码器。
[0406]
s1101,接收当前帧对应的码流。
[0407]
示例性的,当接收到当前帧对应的码流后,可以解析当前帧对应的码流,以得到参考帧参数;然后根据参考帧参数,确定是否由第一解码器进行解码。
[0408]
示例性的,在从当前帧对应的码流中解析出参考帧参数后,可以判断参考帧参数中是否存在第一标识。当参考帧参数中存在第一标识时,判断第一标识的值是否为第一预设信息。若第一标识的值为第一预设信息,则确定当前帧需要参考外部参考列表解码,此时可以确定需要由第二解码器解码;此时,可以执行s1104。若第一标识的值为第二预设信息,或者参考帧参数不包含第一标识,则确定当前帧无需参考外部参考列表解码,此时,可以确定需要由第一解码器解码;此时,可以执行s1102。
[0409]
s1102,当确定需要由第一解码器进行解码时,由第一解码器对当前帧对应的码流进行解码,以得到当前帧的重建图像。
[0410]
s1103,将当前帧的重建图像,加入第二解码器的外部参考列表,外部参考列表位于第二解码器的外部。
[0411]
示例性的,当确定由第一解码器进行解码时,可以将当前帧对应的码流输入至第一解码器中,由第一解码器对当前帧对应的码流进行解码,以得到当前帧的重建图像。
[0412]
示例性的,在从当前帧对应的码流中解析出参考帧参数后,可以判断参考帧参数中是否存在第二标识。当参考帧参数中存在第二标识时,判断第二标识的值是否为第三预设信息。若第二标识的值为第三预设信息,则确定当前帧需要作为后续解码的时域分层参考帧,此时可以将当前帧的重建图像,加入第二解码器的外部参考列表。若第二标识的值为
第四预设信息,或者参考帧参数不包含第二标识,则确定当前帧无需作为后续解码的时域分层参考帧。
[0413]
s1103,当确定需要由第二解码器进行解码时,从外部参考列表中确定当前帧的参考帧所对应的重建图像;基于参考帧所对应的重建图像,由第二解码器对当前帧对应的码流进行解码,以得到当前帧的重建图像。
[0414]
示例性的,当确定由第一解码器进行解码时,可以根据参考帧参数中的第一指示信息,从外部参考列表中确定当前帧的参考帧所对应的重建图像。然后将当前帧的参考帧所对应的重建图像从外部参考列表中取出,存储至第二解码器的内部参考列表中。接着,第二解码器基于当前帧的参考帧所对应的重建图像,对当前帧对应的码流进行解码,以得到当前帧的重建图像。
[0415]
图11b为示例性示出的编解码过程示意图。
[0416]
假设,时域分层结构为:第1帧(poc=0)、第3帧(poc=2)为t0层;第2帧(poc=1)、第4帧(poc=3)为t1层;对应的参考方式为:第3帧参照第1帧编码,第2帧参照第1帧编码,第4帧参照第3帧编码。
[0417]
参照图11b,第一设备的编码过程中,t0时刻,当前帧为i帧,可以将i帧输入至第一编码器,由第一编码器对i帧进行帧内编码,得到i帧码流。然后可以将i帧的码流输入至解码器,得到解码器输出的i帧的重建图像,然后将i帧的重建图像存储至第二编码器的外部参考列表中。接着,可以在i帧的码流中添加第二标识并将第二标识赋值为第三预设信息,以及添加第二指示信息(如0),然后将添加参考帧参数的i帧的码流发送给第二设备。t1时刻,当前帧为第1个p帧,可以将第1个p帧输入至第二编码器中,由第二编码器从外部参考列表中读取i帧的重建图像至内部参考列表中;然后基于i帧的重建图像,对第1个p帧进行编码,得到第1个p帧的码流。接着,可以在1个p帧的码流中添加第一标识并将第一标识赋值为第一预设信息,以及添加第一指示信息(如0),然后将添加参考帧参数的第1个p帧的码流发送给第二设备。t2时刻,当前帧为第2个p帧,可以将第2个p帧输入至第一编码器,由第一编码器根据i帧的重建图像,对第2个p帧进行编码,得到第2个p帧的码流。然后可以将第2个p帧的码流输入至解码器,得到解码器输出的第2个p帧的重建图像,然后将第2个p帧的重建图像存储至第二编码器的外部参考列表中。接着,可以在第2个p帧的码流中添加第一标识并将第一标识赋值为第一预设信息,以及添加第一指示信息(如0);以及添加第二标识并将第二标识赋值为第三预设信息,以及添加第二指示信息(如2),然后将添加参考帧参数的第2个p帧的码流发送给第二设备。t3时刻,当前帧为第3个p帧,可以将第3个p帧输入至第二编码器中,由第二编码器从外部参考列表中读取第2个p帧的重建图像至内部参考列表中;然后基于第2个p帧的重建图像,对第3个p帧进行编码,得到第3个p帧的码流。接着,可以在3个p帧的码流中添加第一标识并将第一标识赋值为第一预设信息,以及添加第一指示信息(如2),然后将添加参考帧参数的第3个p帧的码流发送给第二设备。
[0418]
参照图11b,第二设备的解码过程中,t0时刻,当前帧为i帧,可以将i帧的码流输入至第一解码器,由第一解码器对i帧进行帧内解码,得到i帧的重建图像。然后一方面,可以根据第二标识和第二指示信息,将i帧的重建图像存储至第二解码器的外部参考列表中,另一方面,可以将i帧的重建图像发送至显示模块进行显示。t1时刻,当前帧为第1个p帧,可以将第1个p帧的码流输入至第二解码器中,由第二解码器根据第一标识和第一指示信息,从
外部参考列表中读取i帧的重建图像至内部参考列表中;然后基于i帧的重建图像,对第1个p帧的码流进行解码,得到第1个p帧的重建图像。接着,可以将第1个p帧的重建图像发送至显示模块进行显示。t2时刻,当前帧为第2个p帧,可以将第2个p帧的码流输入至第一解码器,由第一解码器根据i帧的重建图像,对第2个p帧的码流进行解码,得到第2个p帧的重建图像。然后,一方面,可以根据第二标识和第二指示信息,将第2个p帧的重建图像存储至第二解码器的外部参考列表中,另一方面,可以将第2个p帧的重建图像发送至显示模块进行显示。t3时刻,当前帧为第3个p帧,可以将第3个p帧的码流输入至第二解码器中,由第二解码器根据第一标识和第一指示信息,从外部参考列表中读取第2个p帧的重建图像至内部参考列表中;然后基于第2个p帧的重建图像,对第3个p帧的码流进行解码,得到第3个p帧的重建图像。可以将第3个p帧的重建图像发送至显示模块进行显示。
[0419]
图10和图11a所示的实施例中,解码端/编码端均无需对参考帧的重建图像进行帧内编码;然后基于帧内编码重建图像进行编码/解码,这样能够提高图像质量。
[0420]
一个示例中,图12示出了本技术实施例的一种示意性框图装置1200可包括:处理器1201和收发器/收发管脚1202,可选地,还包括存储器1203。
[0421]
装置1200的各个组件通过总线1204耦合在一起,其中总线1204除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线1204。
[0422]
可选地,存储器1203可以存储用于前述方法实施例中的指令。该处理器1201可用于执行存储器1203中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。
[0423]
装置1200可以是上述方法实施例中的电子设备或电子设备的芯片。
[0424]
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0425]
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的编解码方法。
[0426]
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的编解码方法。
[0427]
另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的编解码方法。
[0428]
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0429]
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0430]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其
它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0431]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0432]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0433]
本技术各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本技术的范围之内。
[0434]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0435]
上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
[0436]
结合本技术实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read only memory,rom)、可擦除可编程只读存储器(erasable programmable rom,eprom)、电可擦可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。
[0437]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本技术实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0438]
上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
技术特征:
1.一种编码方法,其特征在于,所述方法包括:获取当前帧;从编码器的外部参考列表中,获取所述当前帧的参考帧所对应的重建图像,所述当前帧的参考帧为所述编码器已编码的帧,所述外部参考列表独立于所述编码器;由所述编码器对所述重建图像进行帧内编码;基于所述帧内编码的结果,由所述编码器对所述当前帧进行帧间编码,以得到所述当前帧对应的码流。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当确定需要将所述当前帧作为后续编码的参考帧时,基于所述当前帧对应的码流,生成所述当前帧的重建图像;将所述当前帧的重建图像,加入所述外部参考列表。3.根据权利要求2所述的方法,其特征在于,所述将所述当前帧的重建图像,加入所述外部参考列表,包括:对所述当前帧的重建图像进行重采样;将所述重采样后的重建图像,加入所述外部参考列表。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述当前帧对应的码流包括:第一标识和第一指示信息;所述第一标识用于标识所述当前帧是否基于所述外部参考列表编码,所述第一指示信息用于指示所述外部参考列表中所述当前帧的参考帧所对应的重建图像。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述当前帧对应的码流包括:第二标识和第二指示信息;所述第二标识用于标识所述当前帧是否作为后续编码的参考帧,所述第二指示信息用于指示所述外部参考列表中所述当前帧的重建图像。6.根据权利要求1至4中任一项所述的方法,其特征在于,所述当前帧对应的码流包括:第三标识、第三指示信息和重采样分辨率;所述第三标识用于标识所述当前帧是否进行重采样,所述第三指示信息用于指示所述外部参考列表中所述当前帧的重采样后的重建图像,所述重采样分辨率包括所述当前帧的重建图像对应的分辨率和所述重采样后的重建图像对应的分辨率。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:修改所述当前帧对应的码流中,用于标识与所述当前帧的参考帧相关的标准语法元素;其中,所述标准语法元素为标准编码协议中所规定的语法元素。8.根据权利要求7所述的方法,其特征在于,所述用于标识与所述当前帧的参考帧相关的标准语法元素包括以下至少一种:用于标识长期参考帧数量的语法元素;用于标识长期参考帧图像顺序号poc的语法元素;用于标识长期参考帧是否用于当前帧参考的语法元素;用于标识是否使用前向参考帧的语法元素;用于标识前向参考帧数量的语法元素;
用于标识当前帧与前向参考帧距离的语法元素;用于标识前向参考帧是否用于当前帧参考的语法元素。9.根据权利要求1至8中任一项所述的方法,其特征在于,所述从编码器的外部参考列表中,获取所述当前帧的参考帧所对应的重建图像,包括:判断是否满足预设参考规则;当满足预设参考规则时,根据所述预设参考规则确定参考指示信息;根据所述参考指示信息,从编码器的外部参考列表中,获取所述当前帧的参考帧所对应的重建图像。10.根据权利要求9所述的方法,其特征在于,所述预设参考规则包括以下任意一种:长期参考规则,时域分层参考规则和重采样参考规则。11.根据权利要求10所述的方法,其特征在于,所述长期参考规则包括以下至少一种:达到长期参考帧的参考周期;所述当前帧的预设参考帧对应的码流丢失;所述外部参考列表中,存在与所述当前帧的相似度高于相似度阈值的重建图像。12.根据权利要求1至11中任一项所述的方法,其特征在于,所述帧内编码的结果包括所述当前帧的参考帧所对应的重建图像的帧内编码重建图像;所述基于所述帧内编码的结果,由所述编码器对所述当前帧进行帧间编码,以得到所述当前帧对应的码流,包括:由所述编码器以所述帧内编码重建图像为参考,对所述当前帧进行帧间编码,以得到所述当前帧对应的码流。13.根据权利要求1至12中任一项所述的方法,其特征在于,所述当前帧的参考帧为:长期参考帧或时域分层参考帧或重采样参考帧。14.根据权利要求1至13中任一项所述的方法,其特征在于,所述编码器为硬件编码器。15.一种解码方法,其特征在于,所述方法包括:接收当前帧对应的码流;从解码器的外部参考列表中,确定所述当前帧的参考帧所对应的重建图像,所述当前帧的参考帧为所述解码器已解码的帧,所述外部参考列表独立于所述解码器;对所述重建图像进行帧内编码,以得到对应的帧内编码码流;由所述解码器对所述帧内编码码流进行帧内解码;基于所述帧内解码的结果,由所述解码器对所述当前帧对应的码流进行帧间解码,以得到所述当前帧的重建图像。16.根据权利要求15所述的方法,其特征在于,所述方法还包括:当确定需要将所述当前帧作为后续解码的参考帧时,将所述当前帧的重建图像,加入所述外部参考列表。17.根据权利要求16所述的方法,其特征在于,所述将所述当前帧的重建图像,加入所述外部参考列表,包括:对所述当前帧的重建图像进行重采样;将所述重采样后的重建图像,加入所述外部参考列表。
18.根据权利要求15至17中任一项所述的方法,其特征在于,所述从解码器的外部参考列表中,确定所述当前帧的参考帧所对应的重建图像,包括:解析所述当前帧对应的码流,以得到参考帧参数;基于所述参考帧参数,从解码器的外部参考列表中,确定所述当前帧的参考帧所对应的重建图像。19.根据权利要求18所述的方法,其特征在于,所述参考帧参数包括:第一标识和第一指示信息;所述第一标识用于标识所述当前帧是否基于所述外部参考列表解码,所述第一指示信息用于指示所述外部参考列表中所述当前帧的参考帧所对应的重建图像。20.根据权利要求18或19所述的方法,其特征在于,所述参考帧参数包括:第二标识和第二指示信息;所述第二标识用于标识所述当前帧是否作为后续解码的参考帧,所述第一指示信息用于指示所述外部参考列表中所述当前帧的重建图像。21.根据权利要求18或19所述的方法,其特征在于,所述当前帧对应的码流包括:第三标识、第三指示信息和重采样分辨率;所述第三标识用于标识所述当前帧是否进行重采样,所述第三指示信息用于指示所述外部参考列表中所述当前帧的重采样后的重建图像,所述重采样分辨率包括所述当前帧的重建图像对应的分辨率和所述重采样后的重建图像对应的分辨率。22.根据权利要求15至21中任一项所述的方法,其特征在于,所述当前帧的参考帧为:长期参考帧或时域分层参考帧或重采样参考帧。23.一种编码方法,其特征在于,所述方法包括:获取当前帧;当确定需要由第一编码器编码时,由所述第一编码器对所述当前帧进行编码,以得到所述当前帧对应的码流;以及将基于所述当前帧对应的码流生成的重建图像,加入第二编码器的外部参考列表,所述外部参考列表独立于所述第二编码器;当确定需要由所述第二编码器编码时,从所述外部参考列表中确定所述当前帧的参考帧所对应的重建图像,基于所述当前帧的参考帧所对应的重建图像,由所述第二编码器对所述当前帧进行编码,以得到所述当前帧对应的码流;其中,所述第一编码器为硬件编码器,所述第二编码器为软件编码器。24.根据权利要求23所述的方法,其特征在于,所述方法还包括:判断所述当前帧是否是时域分层结构中的t0层;当所述当前帧是时域分层结构中的t0层时,确定需要由所述第一编码器编码;当所述当前帧不是时域分层结构中的t0层时,确定需要由所述第二编码器编码。25.根据权利要求23或24所述的方法,其特征在于,所述当前帧对应的码流包括:第一标识和第一指示信息;所述第一标识用于标识当前帧是否基于所述外部参考列表编码,所述第一指示信息用于指示所述外部参考列表中所述当前帧的参考帧所对应的重建图像。26.一种解码方法,其特征在于,所述方法包括:接收当前帧对应的码流;
当确定需要由第一解码器进行解码时,由第一解码器对所述当前帧对应的码流进行解码,以得到所述当前帧的重建图像;以及将所述当前帧的重建图像,加入第二解码器的外部参考列表,所述外部参考列表位于所述第二编码器的外部;当确定需要由所述第二解码器进行解码时,从所述外部参考列表中确定所述当前帧的参考帧所对应的重建图像;基于所述参考帧所对应的重建图像,由所述第二解码器对所述当前帧对应的码流进行解码,以得到所述当前帧的重建图像。27.根据权利要求26所述的方法,其特征在于,所述方法还包括:解析所述当前帧对应的码流,以得到参考帧参数;根据所述参考帧参数,确定是否需要由所述第一解码器进行解码。28.根据权利要求27所述的方法,其特征在于,所述参考帧参数包括:第一标识和第一指示信息;所述第一标识用于标识当前帧是否基于所述外部参考列表解码,所述第一指示信息用于指示所述外部参考列表中所述当前帧的参考帧所对应的重建图像。29.根据权利要求28所述的方法,其特征在于,所述从所述外部参考列表中确定所述当前帧的参考帧所对应的重建图像,包括:当所述第一标识的值为第一预设信息时,将所述外部参考列表中,与所述第一指示信息匹配的重建图像,确定为所述当前帧的参考帧所对应的重建图像。30.根据权利要求26至29中任一项所述的方法,其特征在于,所述第一解码器和所述第二解码器均为软件解码器。31.根据权利要求26至29中任一项所述的方法,其特征在于,所述第一解码器为硬件解码器,所述第二解码器为软件解码器。32.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器与所述处理器耦合;所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求1至权利要求14中任一项所述的编码方法,或,执行权利要求23至权利要求25中任一项所述的编码方法。33.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器与所述处理器耦合;所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求15至权利要求22中任一项所述的解码方法,或执行权利要求26至权利要求31中任一项所述的解码方法。34.一种芯片,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行权利要求1至权利要求31中任一项所述的方法。35.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行如权利要求1至31中任一项所述的方法。36.一种计算机程序产品,其特征在于,所述计算机程序产品包含软件程序,当所述软
件程序被计算机或处理器执行时,使得权利要求1至31中任一项所述的方法的步骤被执行。
技术总结
本申请实施例提供了一种编解码方法及电子设备。该方法包括:首先,获取当前帧;接着,从编码器的外部参考列表中,获取当前帧的参考帧所对应的重建图像,当前帧的参考帧为编码器已编码的帧,外部参考列表独立于编码器;随后,由编码器对重建图像进行帧内编码;基于帧内编码的结果,由编码器对当前帧进行帧间编码,以得到当前帧对应的码流。这样,编码器可以从外部参考列表中灵活选取参考帧进行编码,进而能够实现跨帧参考或跨分辨率参考,增加了对编码器参考帧管理的灵活性。从而能够增加编码器的抗弱网能力,可以在RTC场景中网络条件变差时,保证视频的流畅性。证视频的流畅性。证视频的流畅性。
技术研发人员:胡巩 卢宇峰 汪澄 邸佩云
受保护的技术使用者:华为技术有限公司
技术研发日:2022.03.11
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种家具组装排序装置的制作方法 下一篇:绞股线清洁装置的制作方法