一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频帧编解码器架构的制作方法

2022-12-09 23:15:52 来源:中国专利 TAG:

视频帧编解码器架构
1.分案说明
2.本技术属于申请日为2018年7月13日的中国发明专利申请no.201880028788.3的分案申请。
技术领域
3.本技术涉及视频帧编解码器架构。


背景技术:

4.电子设备在制造、通信、医疗保健、商业、社交和娱乐领域发挥着不可或缺的作用。例如,电子设备为服务器群供电,服务器群为商业和通信提供基于云的分布式计算功能。具有计算能力的设备也嵌入到许多不同类型的现代装备中,从医疗设备到电器,从车辆到工业工具。此外,一种电子设备——智能手机——已经成为必须随身携带的东西。
5.许多电子设备,例如带有相机或显示屏的那些设备,可以操纵视频数据。例如,可以使用安全相机获得视频,然后对其进行增强以改善某些视觉方面,例如清晰度或对比度。现有的视频数据也可以被操纵来改善用于在智能手机或电视监视器的显示屏上呈现的个别视频帧的外观。例如,可以对电影的视频数据进行处理,以提高人工图形的真实感或提高显示分辨率。视频图像数据也在工业和医疗环境中被操纵。例如,来自三维身体扫描的图像数据可以被缝合在一起成为视频呈现,以供医生检查和分析。
6.在这些情况中的任何情况下,视频数据的操纵都是一项处理密集型任务。这部分是由于视频数据中通常存在的信息的大小或数量。因此,专用于处理视频数据的集成电路(ic)芯片的面积可以大于用于其它类型数据的面积。电子设备预期要处理的视频的显示分辨率不断提高,加剧了处理视频数据的难度。例如,高清晰度(hd)视频的视频数据大约是标准清晰度(sd)视频的四倍,超高清(uhd)或4k视频的视频数据大约是hd视频的四倍。
7.因此,电子设备预期处理的视频数据量在过去十年左右大幅增加。随着虚拟现实(vr)和人工现实(ar)的使用变得更加普遍,视频数据处理需求有望在未来几年进一步增加。因此,电子设备制造商继续努力提高电子设备处理不断增加的视频数据量的能力。
8.该背景描述被提供以总体呈现本公开的上下文。除非本文另有说明,否则本部分中描述的材料既不明确也不隐含地被认为是本公开或所附权利要求的现有技术。


技术实现要素:

9.描述了用于视频帧编解码器架构的技术和装置。这些技术和装置使得集成电路(ic)芯片能够使用较少量的电路资源来处理高带宽视频数据,同时也便于简化工作流程以升级到较新的帧压缩/解压缩技术,包括无损技术。为此,避免了在ic芯片的多个不同核心中包括多个单独的帧解压缩单元。相反,帧解压缩器可以向充当帧解压缩器客户端电路的多个不同核心提供帧解压缩服务。帧解压缩器控制器使用对从多个核心的一个或多个核心接收的解压缩请求进行排序的排队或优先级机制来促进解压缩服务的共享。帧解压缩器控
制器还可以根据分时协议仲裁对帧解压缩器的访问。在示例实施方式中,帧解压缩器与视频解码器客户端电路位于同一位置,并且帧解压缩器至少与显示器控制器共享。类似地,帧压缩器可以向充当帧压缩器客户端电路的多个不同核心提供帧压缩服务。帧压缩器控制器便于与多个核心共享压缩服务。此外,帧压缩服务和帧解压缩服务都可以在单个ic芯片中提供,以便在多个核心之间共享。
10.下面描述的方面包括一种电子设备,该电子设备包括帧解压缩器和帧解压缩器控制器。帧解压缩器被配置成解压缩多个已压缩的帧以产生多个已解压缩的帧。帧解压缩器控制器耦合到帧解压缩器,并且被配置成为多个核心仲裁对帧解压缩器的访问。多个核心包括第一核心和第二核心。第一核心耦合到帧解压缩器控制器,并且被配置成经由帧解压缩器控制器获得由帧解压缩器产生的多个已解压缩的帧中的一个已解压缩的帧。第二核心耦合到帧解压缩器控制器,并且被配置成经由帧解压缩器控制器获得由帧解压缩器产生的多个已解压缩的帧中的另一个已解压缩的帧。例如,第一核心可以被配置成经由帧解压缩器控制器获得由帧解压缩器产生的多个已解压缩的帧中的第一已解压缩的帧。第二核心可以被配置成经由帧解压缩器控制器获得由帧解压缩器产生的多个已解压缩的帧中的第二已解压缩的帧。
11.下面描述的方面还包括一种用于在多个核心之间共享帧解压缩电路的方法。该方法包括从第一核心接受对第一已解压缩的帧的第一请求。该方法还包括解压缩第一已压缩的帧以产生第一已解压缩的帧。响应于第一请求,第一已解压缩的帧被提供给第一核心。该方法还包括从第二核心接受对第二已解压缩的帧的第二请求。该方法还包括解压缩第二已压缩的帧以产生第二已解压缩的帧。响应于第二请求,将第二已解压缩的帧提供给第二核心。
12.下面描述的方面包括另一种电子设备,该电子设备包括视频解码器和显示器控制器。视频解码器被配置成解码视频流以产生多个已解码的帧。视频解码器包括帧压缩器、帧解压缩器和帧解压缩器控制器。帧压缩器被配置成压缩多个已解码的帧以产生多个已压缩的帧。帧解压缩器被配置成解压缩多个已压缩的帧以产生多个已解压缩的帧。帧解压缩器控制器耦合到帧解压缩器,并且被配置成仲裁对帧解压缩器的访问。显示器控制器耦合到帧解压缩器控制器。显示器控制器被配置成经由帧解压缩器控制器获得由帧解压缩器产生的多个已解压缩的帧中的一个已解压缩的帧。
13.下面描述的方面还包括一种系统,该系统包括帧解压缩器和多个核心。帧解压缩器被配置成解压缩多个已压缩的帧以产生多个已解压缩的帧。多个核心包括第一核心和第二核心。第一核心耦合到帧解压缩器,并且被配置成获得多个已解压缩的帧中的一个已解压缩的帧。第二核心耦合到帧解压缩器,并且被配置成获得多个已解压缩的帧中的另一个已解压缩的帧。例如,第一核心可以被配置成获得多个已解压缩的帧中的第一已解压缩的帧。第二核心可以被配置成获得多个已解压缩的帧中的第二已解压缩的帧。该系统还包括用于控制帧解压缩器为多个核心(包括第一核心和第二核心)仲裁对帧解压缩器的访问的控制装置。附加地或替代地,该系统可以包括帧压缩器,该帧压缩器被配置成压缩多个未压缩的帧以产生多个已压缩的帧。第一核心和第二核心可以各自获得多个已压缩的帧中的相应已压缩的帧。因此,该系统还可以包括用于控制帧压缩器为多个核心(包括第一核心和第二核心)仲裁对帧压缩器的访问的控制装置。
附图说明
14.参考以下附图描述用于实施视频帧编解码器架构的装置和技术。
15.在所有附图中,相同的数字用于指代相似的特征和组件:
16.图1示出了包括印刷电路板的示例环境,其中可以实施视频帧编解码器架构。
17.图2示出了可以实施视频帧编解码器架构的示例环境的其他方面。
18.图3示出了具有视频帧编解码器架构的示例实施方式的片上系统(soc),该架构包括帧压缩器-解压缩器、帧压缩器-解压缩器控制器和多个核心。
19.图3-1示出了具有包括帧压缩器、帧压缩器控制器和多个核心的视频帧编解码器架构的示例实施方式的soc。
20.图3-2示出了具有包括帧解压缩器、帧解压缩器控制器和多个核心的视频帧编解码器架构的示例实施方式的soc。
21.图4示出了与帧解压缩器和核心结合的示例帧压缩器-解压缩器控制器。
22.图5示出了实施视频帧编解码器架构的示例办法,其中多个核心包括视频解码器和显示器控制器。
23.图6示出了用于将已解压缩的显示帧从视频解码器路由到显示器控制器的示例技术。
24.图7示出了帧解压缩器控制器管理多个核心发出的已解压缩的帧请求的示例方案。
25.图8示出了帧压缩器-解压缩器控制器建立用于共享帧压缩资源或帧解压缩资源的分时协议的示例方案。
26.图9示出了用于操作本文所描述的视频帧编解码器架构的示例方法。
27.图10示出了根据一个或多个实施方式的可以实施视频帧编解码器架构的示例电子设备的各种组件。
具体实施方式
28.概述
29.电影或其他视频的数据在闲置时消耗大量的存储带宽,在电子设备或其内部组件之间传播时也消耗大量的传输带宽。随着视频显示分辨率的提高,带宽需求也随之增加。例如,使用超高清(uhd)或4k视频,要处理的视频数据大约是十年前常用的sd视频的15-20倍。这种数据量的增加使得管理视频变得困难,即使在单个集成电路(ic)芯片中也是如此。例如,典型的片上系统(soc)有一个系统总线,如果使用系统总线在不同soc组件之间输送原始解码视频数据,该总线可能会过载。
30.众所周知,可以通过使用某种有损编解码器(如h.264)对视频进行编码来降低视频的带宽。然后,可以将编码后的视频从云服务器流传输到平板计算机,或者保存在蓝光光盘或闪速存储器中。例如,终端用户电子设备然后负责解码视频以呈现在显示屏上。解码需要将二进制1和0或位的流转换成个别的解码的视频帧,这些帧可以顺序显示以表示视频。作为这种视频编码和解码过程的一部分,视频数据被压缩和解压缩。利用这种视频级过程(例如,利用h.264编解码器),压缩量很大,但是压缩也是有损的。因此,由于视频级压缩/解压缩过程,一些视频信息丢失到图像品质可能明显改变的程度。
31.视频信息的这种丢失被接受,以便能够在设备之间传输大量视频数据,或者使用合理的存储量进行存储。在电子设备处解码视频流以产生解码的视频帧之后,在逐帧的基础上,将这大量视频数据重建为一组帧或许多个别帧。这些个别帧中的每一个仍然是可观的数据量。为了在电子设备处处理这一数量的视频数据,如果解码的视频帧当前没有被处理或显示,则解码的视频帧被压缩以产生压缩的视频帧。因为在任何给定时间从流中解码有限数量的帧,所以在一些实施方式中无损压缩算法可以应用于已解码的帧。无损压缩和已解压缩的帧级过程可以防止任何进一步的图像劣化。压缩的视频帧占用较少的存储器空间,在互连(如soc的系统总线)上消耗更少的带宽。因此,压缩的视频帧可以在印刷电路板上的不同芯片之间、soc与主存储器之间、甚至在单个soc的不同组件之间转移。
32.为了能够在现有系统中使用每视频帧或帧级压缩,处理视频数据的soc的每个相应组件或核心包括相应的解压缩单元。利用这种直观的常规办法,每个核心可以从压缩的视频帧中独立地产生解压缩的视频帧,然后根据给定核心的视频相关目的来处理解压缩的视频帧。然而,这种直观办法有几个附带的成本。首先,ic管芯上的一个可观的区域专门用于复制视频帧解压缩电路或压缩电路。第二,用于在显示屏上呈现视频的显示路径包括单独的解压缩单元。第三,升级soc的视频帧压缩和解压缩技术的工作流程非常复杂。这种复杂性源于多个不同的核心,每个核心包括个别的解压缩单元或个别的压缩单元(在某些情况下,包括两种单元)。换句话说,要升级到更新、更高效的解压缩算法,必须同时修改包括压缩单元或解压缩单元的每个核心,然后将其与soc的其余部分重新集成。因此,这种工作流程升级的复杂性减缓了改进的压缩/解压缩算法在多个核心芯片中的采用。
33.相反,这里描述的某些实施方式使用共享的帧压缩器-解压缩器。帧压缩器-解压缩器可以包括帧压缩器或帧解压缩器,或者两者。ic芯片(例如soc)的多个核心可以从例如共享帧解压缩器获得已压缩的帧的解压缩版本。给定的核心可以请求已解压缩的帧,并且帧解压缩器可以提供包括所请求的已解压缩的帧的响应。因此,帧解压缩器可以起到提供帧解压缩服务的作用,并且每个核心可以起到帧解压缩服务的客户端的作用。类似地,帧压缩器可以起到提供帧压缩服务的作用,并且每个核心可以起到帧压缩服务的客户端的作用。这些帧级压缩和解压缩服务可以使用无损算法。
34.在一些实施方式中,soc包括多个不同的组件,例如视频解码器和显示器控制器,它们作为不同的核心操作。视频解码器包括对视频流进行解码以产生已解码的帧的流解码器。视频解码器还包括帧压缩器,其从已解码的帧产生已压缩的帧。soc的多个不同组件被配置成处理已解压缩的帧。例如,视频解码器可以使用已解压缩的参考帧来进一步解码视频流。另外,显示器控制器可以使用已解压缩的显示帧在显示屏上呈现视频。
35.为了获得这些示例类型的已解压缩的帧中的任何一种,帧解压缩器对对应的已压缩的帧进行解压缩。帧解压缩器可以使用一个或多个总线、至少一个缓冲器或一些其他路由机制将所请求的已解压缩的帧路由到请求核心。帧解压缩器控制器仲裁至少两个核心(例如视频解码器与显示器控制器)之间对帧解压缩器的共享访问。帧解压缩器控制器可以管理已压缩的帧请求的请求队列。管理可能需要根据优先级方案对帧请求的服务进行排序。帧解压缩器控制器还可以建立用于访问帧解压缩器的分时协议。分时协议可以包括分配给不同核心的时隙、接受核心发出的中断以取得对帧解压缩器的控制,等等。
36.以这些方式,帧压缩器资源或帧解压缩器资源可以在处理视频数据的两个或多个
客户端核心之间共享。通过共享例如帧解压缩器,专用于帧解压缩的soc的面积减少。此外,不需要沿着视频显示路径插入单独的帧解压缩器。此外,压缩/解压缩算法与整个soc架构解耦。因此,压缩/解压缩算法可以更容易地并且因此更频繁地更新,因为soc上包括更少或者甚至一个帧压缩器或者帧解压缩器,并且因此易于进行更新工作流程。
37.下面参考相关附图讨论不同细节层次的示例实施方式。下面的讨论首先描述示例操作环境,然后是示例方案和硬件,接着是示例方法,并以示例电子设备和相关示例方面结束。
38.示例环境
39.图1示出了包括印刷电路板104(pcb)的示例环境100,其中可以实施视频帧编解码器架构。如图所示,环境100包括电子设备102。电子设备102包括至少一个pcb 104。pcb 104包括一个或多个集成电路,例如集成电路106(ic)。如下参考图2和图3所述,pcb 104可以包括其他集成电路,例如与ic 106分立的至少一个存储器。ic 106包括:至少一个帧解压缩器108-2;多个核心110-1、110-2

110-n,n代表大于1的整数;和多个视频帧,例如至少一个已压缩的帧112和至少一个已解压缩的帧114。为了简单起见,图1仅描绘了帧解压缩器108-2,同时描述了示例环境100。然而,下面相应地参考图3和图3-1描述帧压缩器-解压缩器108和帧压缩器108-1。
40.在示例实施方式中,帧解压缩器108-2通信地耦合到多个核心110-1至110-n的至少一部分。帧解压缩器108-2包括解压缩已压缩的视频帧的电路。因此,帧解压缩器108-2可以解压缩已压缩的帧112,以产生已解压缩的帧114。在操作中,核心110使用帧解压缩器108-2来获得已压缩的帧的解压缩版本。例如,第n个核心110-n向帧解压缩器108-2发送指示正在请求所识别的已压缩的帧112的解压缩版本的请求116。帧解压缩器108-2提供包括已解压缩的帧114的响应118。尽管视频帧作为示例上下文被引用,但是这里描述的帧可以包括具有视觉数据的任何帧,包括计算机生成的图形帧、视频帧、组合帧等。
41.以类似方式,帧解压缩器108-2向多个核心110-1至110-n的个别核心提供解压缩服务。类似地,(例如,图3-1的)帧压缩器108-1可以向多个核心110-1至110-n的个别核心提供压缩服务。因此,帧解压缩器108-2或帧压缩器108-1(或两者)实现用于ic 106的帧压缩-解压缩(fcd)服务器电路122的至少一部分。类似地,多个核心110-1至110-n实现多帧压缩-解压缩(fcd)客户端电路120。使用这种客户端-服务器架构,帧压缩器单元或帧解压缩器单元可以在两个或更多个核心110之间共享,以节省ic 106上的空间,并简化用于升级ic 106的用来压缩/解压缩视频帧的压缩/解压缩技术的工作流程。下面参照图3、图3-1和图3-2描述ic 106和pcb 104的更详细的示例架构。然而,接下来参考图2描述示例实施方式的附加方面。
42.图2示出了其中可以实施如本文所描述的视频帧编解码器架构的示例环境200的其他方面。电子设备102用各种非限制性示例设备示出:智能手机102-1、笔记本计算机102-2、电视102-3、台式计算机102-4、平板电脑102-5和可穿戴设备102-6。如右侧所示,电子设备102包括一个或多个处理器202、一个或多个计算机可读介质204和至少一个互连216。计算机可读介质204可以存储、保持或以其他方式包括代码、数据、指令、其他信息等。电子设备102还可以包括操作系统212。尽管单独描述,但是操作系统212可以存储在一个或多个计算机可读介质204上。
43.被实现为计算机可读介质204上的计算机可读指令的应用(未示出)或操作系统212可以由处理器202执行。操作系统212或基本输入/输出系统(bios)可以包括帧编解码器参数模块214。帧编解码器参数模块214可以设置一个或多个参数,以启用、授权、调谐或以其他方式促进这里描述的共享帧压缩和解压缩功能的执行。
44.如图所示,计算机可读介质204可以包括至少一个视频缓冲器206、至少一个共享本地高速缓存208和至少一个主存储器210。在一些实施方式中,视频缓冲器206和共享本地高速缓存208是ic上的单独存储块。在其他实施方式中,视频缓冲器206和共享本地高速缓存208是同一存储块的一部分,例如如果共享本地高速缓存208的一部分在动态变化或固定分配方案中用作视频缓冲器206。互连216可以包括至少一个系统总线218、至少一个视频总线220和至少一个外部总线222。在一些实施方式中,视频总线220和系统总线218是不同的总线。在其他实施方式中,没有单独的视频总线,因此视频数据使用系统总线218在ic周围传播。下面参考图4至图6描述这些计算机可读介质204和这些互连216的示例实施方式。
45.示例组件和技术
46.图3示出了pcb 104的一部分。pcb 104包括片上系统302(soc)和主存储器210。soc 302描绘了视频帧编解码器架构的示例实施方式,该架构包括帧压缩器-解压缩器108(fcd)、帧压缩器-解压缩器控制器304和多个核心110-1至110-n。soc 302还包括共享本地高速缓存208和系统总线218。主存储器210经由外部总线222耦合到soc 302,外部总线222被包括为pcb 104的一部分(例如,设置在pcb 104上)。
47.pcb 104可以用刚性或柔性材料实施,用于安装或固定多个ic芯片、互连、接口等。主存储器210可以使用例如周期性地刷新以保持存储器内容的动态随机存取存储器(dram)或者可以在没有电力的情况下保持存储器内容的闪速存储器来实现。通常,访问存储在主存储器210上的数据比访问存储在soc 302(例如共享本地高速缓存208)上的数据消耗更多的能量。共享本地高速缓存208可以使用例如静态随机存取存储器(sram)、dram、闪速存储器或它们的某种组合来实现。
48.系统总线218互连多个核心110-1至110-n、共享本地高速缓存208、帧压缩器-解压缩器控制器304以及其他组件和接口(例如,帧压缩器-解压缩器108可以直接耦合到系统总线218)。多个核心110-1至110-n中的每个核心110可以使用系统总线218在共享本地高速缓存208处存储数据或者从共享本地高速缓存208检索数据。类似地,多个核心110-1至110-n中的每个核心110可以使用外部总线222,例如也通过使用系统总线218或共享本地高速缓存208,在主存储器210处存储数据或从主存储器210检索数据。例如,第一核心110-1可以将数据存储在共享本地高速缓存208中,然后第二核心110-2可以从共享本地高速缓存208中检索存储的数据。
49.在示例操作中,帧压缩器-解压缩器108(fcd)处理(例如,压缩或解压缩)多个未处理的帧306,以产生多个已处理的帧308。帧压缩器-解压缩器控制器304(fcd控制器)耦合到帧压缩器-解压缩器108,并为多个核心110-1至110-n仲裁对帧压缩器-解压缩器108的访问。尽管单独示出,但是帧压缩器-解压缩器108和帧压缩器-解压缩器控制器304可以逻辑集成在一起。多个核心110-1至110-n中的至少两个核心110耦合到帧压缩器-解压缩器控制器304。因此,每个核心110可以经由帧压缩器-解压缩器控制器304获得由帧压缩器-解压缩器108从其未处理的帧版本产生的已处理帧308。已处理帧308可以使用例如请求116和对应
的响应118来获得。
50.帧压缩器-解压缩器108可以包括帧压缩器308-1(例如,如图3-1所描绘)、帧解压缩器108-2(例如,如图3-2所示)或两者。类似地,帧压缩器-解压缩器控制器304可以包括帧压缩器控制器304-1(例如,如图3-1所示)、帧解压缩器控制器304-2(例如,如图3-2所示)或两者。根据帧压缩器-解压缩器108的处理操作是压缩还是解压缩操作,未处理帧306或已处理帧308中的一个对应于已压缩的帧,并且另一个对应于已解压缩的帧。如果给定的实施方式包括帧压缩器108-1和帧解压缩器108-2(和/或帧压缩器控制器304-1和帧解压缩器控制器304-2两者),则这些组件可以位于同一位置、彼此邻近或位于ic上的不同位置。例如,每个都可以位于更靠近核心的位置,该核心可能是对应的压缩或解压缩服务的最常见客户端。此外,如果芯片包括位于同一位置的帧压缩器108-1和帧解压缩器108-2,则每个都可以包括完全单独的电路或者它们可以共享电路。在一些实施方式中,帧压缩器-解压缩器108可以被实现为无损帧数据操纵器,其根据请求116调整用于帧的数据的存储大小作为无损压缩操作或无损解压缩操作的一部分。下面相应地参考图3-1和图3-2描述压缩操作和解压缩操作的示例实施方式。
51.图3-1示出了具有视频帧编解码器架构的示例实施方式的soc,该架构包括帧压缩器108-1(fc)、帧压缩器控制器304-1(fc控制器)和多个核心。帧压缩器108-1压缩未压缩的帧(例如,已解压缩的帧114或尚未压缩的帧)以产生已压缩的帧112。帧压缩器控制器304-1耦合到帧压缩器108-1,并且为多个核心110-1至110-n仲裁对帧压缩器108-1的访问。尽管单独示出,但是帧压缩器108-1和帧压缩器控制器304-1可以逻辑上集成在一起。
52.多个核心110-1至110-n中的至少两个核心110耦合到帧压缩器控制器304-1。这里,每个核心110可以包括产生视觉数据的组件或块。因此,每个核心110可以经由帧压缩器控制器304-1获得由帧压缩器108-1从其已解压缩的帧114版本产生的已压缩的帧112。因此,可以使用例如请求116和对应的响应118来获得已压缩的帧112。在操作中,帧压缩器控制器304-1可以以流水线方式向系统总线218上的一些请求核心110授予对帧压缩器108-1的压缩引擎的访问,以避免增加到外部总线222的流量,外部总线222提供对主存储器210的访问。在一些实施方式中,帧压缩器控制器304-1可以临时授予对请求核心110的独占访问,以访问压缩资源。
53.图3-2示出了具有视频帧编解码器架构的示例实施方式的soc,该架构包括帧解压缩器108-2(fd)、帧解压缩器控制器304-2(fd控制器)和多个核心。帧解压缩器控制器304-2耦合到帧解压缩器108-2,并且为多个核心110-1至110-n仲裁对帧解压缩器108-2的访问。尽管单独示出,但是帧解压缩器108-2和帧解压缩器控制器304-2可以逻辑上集成在一起。多个核心110-1至110-n中的至少两个核心110耦合到帧解压缩器控制器304-2。因此,每个核心110可以经由帧解压缩器控制器304-2获得由帧解压缩器108-2从其已压缩的帧112版本产生的已解压缩的帧114。因此,已解压缩的帧114可以使用例如请求116和对应的响应118来获得。
54.下面的一些描述集中在至少可以执行解压缩操作的实施方式上。因此,每个可以明确地包括帧解压缩器108-2和帧压缩器-解压缩器控制器304或帧解压缩器控制器304-2。然而,每个实施方式可以附加地或替代地包括用于执行压缩操作的帧压缩器108-2。此外,压缩操作和已压缩的帧112的移动如何能够以至少类似于参考图4至图6针对解压缩操作描
述的方式来实现是显而易见的。此外,参考图7描述的请求处理和参考图8描述的分时协议同样可以以类似的方式用于压缩操作。
55.核心110中的至少一些可以出于视频相关目的对视频数据进行操作。视频相关目的包括:视频解码、视频显示、视频转码(例如,使用一种算法从一种编码格式解码并使用另一种算法编码成另一种编码格式)、视频补偿(例如,图形处理单元(gpu)对视频帧进行操作以改善或增强图像)等等。参考图5,下面描述示例实施方式,其中第一核心实现为视频解码器,第二核心实现为显示器控制器。然而,首先参考图4描述帧解压缩器控制器304的示例实施方式。
56.图4以400总体示出了与帧解压缩器108-2和核心110结合的示例帧压缩器-解压缩器控制器304。核心110包括fcd客户端接口410,并且帧解压缩器控制器304包括fcd服务接口408。fcd客户端接口410和fcd服务接口408共同实现核心110与帧压缩器-解压缩器控制器304之间的通信。因此,使用这两个接口,核心110可以向帧压缩器-解压缩器控制器304发送请求116,并且帧压缩器-解压缩器控制器304可以向核心110发送响应118。
57.fcd客户端接口410和fcd服务接口408可以通过系统总线218(未示出)、视频总线218等进行通信。请求116可以使用位线、寄存器的一个或多个位、被公式化为至少一个分组等的消息等来传送。包括已解压缩的帧114的响应118可以使用将核心110耦合到帧解压缩器108-2的总线、使用核心110和帧解压缩器108-2都可以访问的存储器、它们的某种组合等来传送。下面参照图5和图6描述不同接口通信的示例。
58.如图所示,帧压缩器-解压缩器控制器304包括请求管理器402、请求队列404、优先级管理器406和分时协议处置器(handler)412。fcd服务接口408至少耦合到请求管理器402、优先级管理器406和分时协议处置器412。下面参考图7描述用于管理请求的示例方案,包括对请求的服务进行优先级排序。下面参考图8描述使用分时协议处置器412来建立分时协议以访问帧解压缩器108-2的示例方案。
59.图5示出了实施视频帧编解码器架构的示例办法500,其中soc的多个核心包括视频解码器502和显示器控制器504。在左边,视频解码器502包括流解码器506,流解码器506包括帧压缩器108-1。然而,帧压缩器108-1可以与流解码器506或视频解码器502分开实施。在右侧,显示器控制器504包括帧缓冲器518。帧解压缩器108-2、帧压缩器-解压缩器控制器304(fcd控制器)和视频缓冲器206与视频解码器502相关联。例如,这三个组件可以与视频解码器502位于同一位置(例如,设置在视频解码器502旁边或者物理上与之混合),可以至少部分地与视频解码器502逻辑上集成,或者它们的某种组合。尽管参考视频解码器502和显示器控制器504进行了描述,但是这些原理通常适用于核心110。此外,尽管视频缓冲器206与共享本地高速缓存208分开描述,但是视频缓冲器206也可以作为共享本地高速缓存208的一部分并入或者从共享本地高速缓存208分配。
60.在示例实施方式中,电子设备获得视频流514,视频流514可以包括被编码以表示视频的比特流。视频流514由多个原始帧516组成,这些原始帧使用诸如h.264的某种编解码器编码。流解码器506经由系统总线218接收视频流514,并解码视频流514以产生多个已解码的帧512,其中一个被明确示出。帧压缩器108-1压缩多个已解码的帧512以产生多个已压缩的帧112。如图所示,帧压缩器108-1与流解码器506集成。因此,帧压缩器108-1可以压缩已解码的帧512,作为解码过程的一部分;然而,帧压缩可以以替代方式实施。这些解码的和
已压缩的帧112可以被存储在视频缓冲器206、共享本地高速缓存208或主存储器210,以供视频解码器502或另一个核心随后使用。
61.解码的和已压缩的帧112可以用于不同的视频相关目的。例如,如果已压缩的帧要用于进一步的视频解码目的,则已压缩的帧112可以包括已压缩的参考帧112r。替代地,如果另一已压缩的帧用于视频显示目的,则另一已压缩的帧112可以包括已压缩的显示帧112d。对于视频解码器502的视频解码功能,帧解压缩器108-2解压缩已压缩的参考帧112r以产生已解压缩的参考帧114r。视频解码器502可以使用已解压缩的参考帧114继续解码视频流514。
62.对于显示器控制器504的视频显示功能,帧解压缩器108-2解压缩已压缩的显示帧112d以产生已解压缩的显示帧114d。显示器控制器504可以经由帧解压缩器控制器客户端接口410和帧解压缩器控制器服务接口408(图4的两个)从帧压缩器-解压缩器控制器304(例如,其至少包括图3-2的帧解压缩器控制器304-2)请求该解压缩服务。帧压缩器-解压缩器控制器304经由路由机制510(由实线波形箭头表示)向显示器控制器504提供已解压缩的显示帧114d。显示器控制器504可以将已解压缩的显示帧114d存储在帧缓冲器518中。显示器控制器504因此可以使用存储的已解压缩的显示帧114d在显示屏上呈现视频帧的图像。尽管图5的帧压缩器-解压缩器控制器304是根据利用帧解压缩器108-2向多个核心提供解压缩服务来描述的,但是这些原理也适用于利用帧压缩器108-1向多个核心提供压缩服务的帧压缩器-解压缩器控制器304。
63.图5中使用小虚线指示了多个示例路由机制510。路由机制510代表帧压缩器-解压缩器控制器304向请求核心(例如视频解码器502或显示器控制器504)提供已解压缩的帧114的不同途径。在第一路由机制510-1中,帧压缩器-解压缩器控制器304经由系统总线218向显示器控制器504的帧缓冲器518提供已解压缩的显示帧114d。在第二路由机制510-2中,帧压缩器-解压缩器控制器304经由系统总线218和共享本地高速缓存208向显示器控制器504提供已解压缩的显示帧114d。例如,帧压缩器-解压缩器控制器304可以在共享本地高速缓存208中存储已解压缩的显示帧114d,并且显示器控制器504可以从共享本地高速缓存208中检索所存储的已解压缩的显示帧114d。
64.在第三路由机制510-3中,帧压缩器-解压缩器控制器304经由系统总线218和主存储器210向显示器控制器504提供已解压缩的显示帧114d。例如,帧压缩器-解压缩器控制器304可以经由系统总线218和外部总线222将已解压缩的显示帧114d片外存储在主存储器210中。显示器控制器504可以使用两条总线从主存储器210检索所存储的已解压缩的显示帧114d,然后将该帧存储在帧缓冲器518中。
65.第四路由机制510-4涉及将视频解码器502服务为帧解压缩服务的客户端。在第四路由机制510-4中,帧压缩器-解压缩器控制器304向视频解码器502提供已解压缩的参考帧114r。为此,帧压缩器-解压缩器控制器304将已解压缩的参考帧114r转移到视频缓冲器206。视频解码器502可以从视频缓冲器206访问已解压缩的参考帧114r。
66.在第五路由机制510-5中,如果集成电路包括视频总线220以及系统总线218,则帧压缩器-解压缩器控制器304经由至少部分与系统总线218分离的视频总线220向显示器控制器504提供已解压缩的显示帧114d。如图所示,视频总线220专用于传播视频数据,并且至少在帧压缩器-解压缩器控制器304与显示器控制器504之间延伸。然而,视频总线220可以
不同地实施,例如通过将其他视频数据传送到其他核心和从其他核心传送其他视频数据。
67.在第六路由机制510-6中,帧压缩器-解压缩器控制器304经由视频缓冲器206向显示器控制器504提供已解压缩的显示帧114d。帧压缩器-解压缩器控制器304将已解压缩的显示帧114d的至少一部分存储在视频缓冲器206中。在一种办法中,显示器控制器504至少使用系统总线218从视频缓冲器206中检索已解压缩的显示帧114d。在另一种办法中,显示器控制器504至少使用视频总线220(例如,如果与系统总线218分开存在)从视频缓冲器206检索已解压缩的显示帧114d。无论采用哪种办法,第六路由机制510-6都可以进一步需要显示器控制器504访问视频缓冲器206的存储器映射机制。接下来参考图6描述存储器映射机制的示例实施方式。
68.图6示出了用于使用第六路由机制510-6将已解压缩的显示帧114d从视频解码器502路由到显示器控制器504的示例技术600。在这个示例中,视频解码器502与帧解压缩器108-2和帧压缩器-解压缩器控制器304集成。除了视频缓冲器206之外,视频解码器502还包括同步寄存器602。在这个示例中,视频缓冲器206用作输出缓冲器。因此,帧压缩器-解压缩器控制器304使得帧解压缩器108-2将已解压缩的显示帧114d的至少一部分存储在视频缓冲器206中。
69.第六路由机制510-6的示例技术600涉及至少一个状态通信606。第一状态通信606-1发生在帧压缩器-解压缩器控制器304与同步寄存器602之间。第二状态通信606-2发生在显示器控制器504与同步寄存器602之间。每个状态通信606可以包括轮询操作或更新操作,并且可以通过系统总线218或视频总线220来执行。
70.响应于将已解压缩的显示帧114d的至少一部分存储在视频缓冲器206中,帧压缩器-解压缩器控制器304将值604写入同步寄存器602中,作为第一状态通信606-1的更新操作的一部分。该值604指示视频缓冲器206的内容的存储状态。这里,值604指示特定视频数据(例如已解压缩的显示帧114d的一个或多个显示行608)已经被新放置在视频缓冲器206中。因此,视频缓冲器206可以用作保持一个或多个显示行608的行缓冲器。
71.同时,显示器控制器504从同步寄存器602中提取值604作为第二状态通信606-2的轮询操作的一部分。基于值604,显示器控制器504确定所请求的已解压缩的显示帧114d的一个或多个新显示行608在视频缓冲器206中存在并且可用。显示器控制器504因此根据值604经由系统总线218或视频总线220从视频缓冲器206检索至少一个显示行608。响应于检索,显示器控制器504在同步寄存器602中写入另一个值604,作为第二状态通信606-2的更新操作的一部分,以指示对应的显示行608的检索状态。该另一个值604因此指示至少一个对应的显示行608已经从视频缓冲器206中读出。
72.周期性地,或者作为某些操作的一部分,帧压缩器-解压缩器控制器304轮询同步寄存器602,作为第一状态通信606-1的一部分。帧压缩器-解压缩器控制器304检查另一个值604,以确定对应的显示行608是否已经被显示器控制器504访问和检索。如果是,帧压缩器-解压缩器控制器304知道对应的显示行608的存储位置可以用新数据重写。
73.值604或另一个值604可以包括例如一个或多个比特。值604和另一个值604可以对应于同步寄存器602的不同存储位置或相同存储位置。尽管参考视频解码器502和显示器控制器504进行了描述,但是这些原理通常适用于核心110。通过轮询和更新同步寄存器602中的值604,可以使用存储器映射转移机制来控制已解压缩的显示帧114d的路由。
74.图7示出了由帧压缩器-解压缩器控制器304管理由多个核心针对已解压缩的帧发出的请求116的示例方案700。在这个示例中,视频解码器502与帧解压缩器108-2和帧压缩器-解压缩器控制器304集成。帧压缩器-解压缩器控制器304由请求管理器402、请求队列404和优先级管理器406(也在图4中示出)表示。如图所示,请求队列404包括多个请求116。每个请求116对应于优先级706。每个请求116还包括或对应于请求者标识702和帧标识704。
75.对已解压缩的帧的某些请求可能比其他请求更重要或在时间上相关。例如,对于终端用户来说,与流视频的实时呈现相关的请求可能比可以在后台以尽力速率(best-efforts rate)执行的视频转码操作的请求更重要。因此,前者视频相关目的的请求可以优先于后者视频相关目的的请求。为此,优先级706可以与请求、核心、帧等相关联。
76.在示例实施方式中,请求者标识702标识请求核心110,例如(图5和6的)视频解码器502或显示器控制器504。帧标识704例如通过帧号、时间索引或其偏移量来标识所请求的已解压缩的帧114。请求者标识702可以基于用于提供请求116的起源或总线(例如,如果为每个核心相应地提供专用总线),使用一个或多个位线上的特定电压值,用与请求116一起转移的分配的标识值来实现。帧标识704可以明确地包括在每个请求116中,可以隐含地包括在请求116中(例如,如果需要下一个连续帧),可以包括在先前的请求中作为帧范围的一部分,等等。
77.在操作中,请求管理器402例如经由帧解压缩器控制器服务接口408从核心110接收请求116。请求管理器402将请求116插入请求队列404中。在一种办法中,请求管理器402以先进先出(fifo)的方式操作请求队列404。替代地,请求管理器402可以基于对应的优先级706将每个请求116插入到请求队列404中。每个个别请求116的对应的优先级706可以被包括或者可以伴随对应的个别请求116。替代地,优先级706可以被明确地批量分配给一组请求116,或者每个核心110可以与特定优先级706相关联,该特定优先级706被隐含地分配给由相关核心110发出的每个请求116。
78.如图所示,每个请求116与对应的优先级706相关联地存储在请求队列404中,使得具有不同优先级706的请求116存储在同一请求队列404中。替代地,帧压缩器-解压缩器控制器304可以使用多个请求队列404来实施所示的请求队列404,每个请求队列404与对应的优先级706相关联。因此,每个请求116存储在与对应于该请求116的相应优先级706相关联的相应请求队列404中。
79.不管用于实施所示的请求队列404的办法如何,优先级管理器406根据相应地对应于多个请求116的多个优先级706来给多个请求116的服务排序。因此,优先级管理器406使用基于两个或更多个请求116之间的相对优先级的优先级方案提取下一个请求116。优先级管理器406将下一个请求116转发给帧解压缩器108-2。帧解压缩器108-2检索对应于所请求的已解压缩的帧114的已压缩的帧112。继续图5和6的示例场景,帧解压缩器108-2检索压缩的显示帧112d,并执行解压缩操作以产生已解压缩的显示帧114d。帧压缩器-解压缩器控制器接口408使得帧解压缩器108-2将已解压缩的显示帧114d路由到视频解码器502,作为响应118的一部分。
80.图8示出了帧压缩器-解压缩器控制器304建立用于共享帧压缩资源(例如帧压缩器108-1(例如,图3-1))或者帧解压缩资源(例如帧解压缩器108-2(例如,图3-2))的至少一个分时协议800的示例方案。帧压缩器-解压缩器控制器304(未明确示出)的分时协议处置
器412可以建立至少一个示例分时协议800-1、800-2或800-3。如箭头812所示,时间沿向右方向增加。每个示例分时协议800是根据在两个核心之间共享帧解压缩资源来描述的;然而,所公开的分时协议800可以应用于在多于两个核心之间共享帧解压缩资源。虽然图8是根据帧解压缩的分时描述的,但是这些原理也适用于实现帧压缩的分时协议。
81.利用第一分时协议800-1,时间被分成多个时隙。这些时隙具有固定时间,并且每个相应的时隙被分配给相应核心。时隙802-1对应于第一核心,例如视频解码器502。时隙802-2对应于第二核心,例如显示器控制器504。在操作中,分时协议处置器412在两个不同时隙的规定长度上轮转(rotate)两个核心之间对帧解压缩资源的访问。在第一分时协议800-1中,中断不被启用。
82.相反,对于第二分时协议800-2启用中断806。这里,帧解压缩资源通常是为两个客户端之一(在本例中是第一个核心)保留的。因此,时隙804-1对应于第一核心,并且可以无限期地延伸。这些时隙804-1延伸直到分时协议处置器412接收到中断806为止。核心110可以经由系统总线上的消息、使用专用视频总线、通过将中断线路驱动为高电平等来发信号通知中断806。响应于检测到中断806,分时协议处置器412初始化上下文切换,以将对帧解压缩资源的访问转移到不同的核心,并开始另一个时隙。
83.如第二分时协议800-2所示,第二核心发出中断806a。分时协议处置器412检测中断806a,并将对帧解压缩器108-2的访问转移到进行中断的第二核心。因此,帧解压缩器108-2执行至少一个解压缩操作,以在中断806a之后的时隙804-2期间为请求第二核心产生已解压缩的帧114。每个时隙804-2的长度可以是固定的,可以取决于为第二核心排队的请求的数量,可以取决于每个排队请求的优先级等等。在第一核心被再次授权访问帧解压缩资源持续另一个时隙804-1之后,第二核心可以随后发出另一个中断806b。在替代办法中,分配给第二核心的每个时隙804-2可以继续,直到另一个核心发出中断(未示出)为止。因此,在该替代办法中,上下文切换可以响应于中断806而发生,并且与经过的时间无关。
84.利用第三分时协议800-3,时间被分成多个时隙。第三分时协议800-3是第一分时协议和第二分时协议的混合。一些时隙,例如时隙808-1,具有不可中断的固定时间。其他时隙,诸如时隙810-1,具有可以被另一个核心中断的可变时间。如图所示,第一核心被分配给时隙808-1和810-1。来自第二核心的中断806c在时隙808-1期间到达。然而,分时协议处置器412忽略该中断806c(或使该中断806c排队)。另一方面,在时隙810-1期间到达的中断806d触发上下文切换。利用上下文切换,在中断806d之后,帧解压缩资源被分配给第二核心持续时隙804-2。如果中断806c在时隙808-1期间排队(而不是被解除),则响应于中断806c,可以在时隙808-1结束时或者在时隙810-1开始时初始化上下文切换。
85.已经大致描述了其中可以实施视频帧编解码器架构的技术和装置的环境,现在讨论转向示例方法。
86.示例方法
87.以下讨论描述了用于操作视频帧编解码器架构的方法。这些方法可以利用前面描述的示例来实施,诸如如图1和图3所示的电子设备102和pcb 104,以及图10所描绘的电子设备1000。这些方法的方面在图9中示出,其被示为由至少一个ic芯片的一个或多个组件执行的操作902-912。这些方法的操作被示出和/或描述的顺序不旨在被解释为限制,并且所描述的方法操作的任何数量或组合可以以任何顺序组合以实施方法或替代方法。尽管图9
的流程图是根据操作帧解压缩器108-2来描述的,但是这些原理可以类似地应用于操作帧压缩器108-1。
88.图9示出了用于操作视频帧编解码器架构的示例方法900,其可以由向多个不同核心提供帧解压缩服务的电路来实施。在902,从第一核心接受对第一已解压缩的帧的第一请求。例如,帧压缩器-解压缩器控制器304(例如,其帧解压缩器控制器304-2)可以从第一核心110-1接受对第一已解压缩的帧114的第一请求116。接受可以经由系统总线218、视频总线220、同步寄存器602等来执行。
89.在904,第一已压缩的帧被解压缩以产生第一已解压缩的帧。例如,帧解压缩器108-2可以解压缩第一已压缩的帧112,以产生第一已解压缩的帧114。第一请求116的服务可以根据相关联的优先级706来执行。
90.在906,响应于第一请求,第一已解压缩的帧被提供给第一核心。例如,帧压缩器-解压缩器控制器304可以响应于第一请求116向第一核心110-1提供第一已解压缩的帧114。可以使用路由机制500将第一已解压缩的帧114从帧解压缩器108-2转移到第一核心110-1。
91.在908,从第二核心接受对第二已解压缩的帧的第二请求。例如,帧压缩器-解压缩器控制器304可以从第二核心110-2接受对第二已解压缩的帧114的第二请求116。第一核心110-1可以包括显示器控制器504,并且第二核心110-2可以包括视频解码器502。
92.在910,第二已压缩的帧被解压缩以产生第二已解压缩的帧。例如,帧解压缩器108-2可以解压缩第二已压缩的帧112,以产生第二已解压缩的帧114。解压缩可以使用无损压缩/解压缩算法来执行。在912,响应于第二请求,第二已解压缩的帧被提供给第二核心。例如,帧压缩器-解压缩器控制器304可以响应于第二请求116向第二核心110-2提供第二已解压缩的帧114。在获得第二已解压缩的帧114之后,第二核心110-2可以根据对应的视频相关功能来处理该帧。
93.前面的讨论描述了与视频帧编解码器架构相关的方法。这些方法的方面可以在例如硬件(例如,固定逻辑电路)、固件或其某种组合中实施。这些技术可以使用图1至图8和图10所示的一个或多个实体或组件(电子设备1000在下面的图10中描述)来实现,这些实体或组件可以被进一步划分、组合等。因此,这些附图说明了能够采用所述技术的许多可能的系统或装置中的一些。这些图的实体和组件通常代表固件、硬件、ic芯片、电路或它们的组合。
94.示例电子设备
95.图10示出了示例电子设备1000的各种组件,示例电子设备1000可以根据参考先前图1至图9中的任何一个描述的一个或多个实施方式来实施视频帧编解码器架构。电子设备1000可以实施为固定或移动设备中的任何一个或其组合,呈消费器(consumer)、计算机、便携式、用户、服务器、通信、电话、导航、游戏、音频、相机、消息、媒体回放和/或其他类型的电子设备102(例如图1所示的智能电话)的任何形式。
96.电子设备1000包括通信收发器1002,通信收发器1002允许设备数据1004的有线和/或无线通信,设备数据1004例如是如上所描述的接收数据、传输数据或其他信息。示例通信收发器1002包括nfc收发器、符合各种ieee 802.15(蓝牙
tm
)标准的wpan无线电、符合各种ieee 802.11(wifi
tm
)标准中的任一标准的wlan无线电、用于蜂窝电话的wwan(符合3gpp)无线电、符合各种ieee 802.16(wimax
tm
)标准的无线城域网(wman)无线电以及有线局域网(lan)以太网收发器。
解压缩器控制器304。在图10中,视频缓冲器206、共享本地高速缓存208和主存储器210(例如,也是图2、图3、图5或图6中的每一个)被描绘为形成存储系统的至少一部分,例如通过成为一个或多个存储设备1012的一部分。如上所述,这些存储器组件中的一个或多个可以是与处理器1008的集成电路相同的集成电路的一部分(例如,视频缓冲器206和共享本地高速缓存208是图3中soc 302的一部分),或者替代地位于单独的管芯上,或者甚至设置在不同的印刷电路板上。因此,这里描述的视频帧编解码器架构的原理可以由图10的电子设备1000实施,或者结合图10的电子设备1000实施。
104.尽管已经用特定于某些特征和/或方法的语言描述了视频帧编解码器架构的实施方式,但是所附权利要求的主题不一定限于所描述的特定特征或方法。相反,特定特征和方法被公开为视频帧编解码器架构的示例实施方式。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献