CN117981310A - 用于多内核图像编码的系统和方法 - Google Patents

用于多内核图像编码的系统和方法 Download PDF

Info

Publication number
CN117981310A
CN117981310A CN202280064167.7A CN202280064167A CN117981310A CN 117981310 A CN117981310 A CN 117981310A CN 202280064167 A CN202280064167 A CN 202280064167A CN 117981310 A CN117981310 A CN 117981310A
Authority
CN
China
Prior art keywords
processing
processing core
data
rows
cores
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280064167.7A
Other languages
English (en)
Inventor
L·R·莫罗甘
A·莱昂塔瑞斯
M·P·吕格
S·C·茜丝玛斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/675,414 external-priority patent/US20230102584A1/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN117981310A publication Critical patent/CN117981310A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开涉及在图像编码期间对图像帧进行多处理内核处理的系统和方法。该多个处理内核可经由专用接口连接,并且在处理内核之间传送近邻数据以实现帧数据的并行处理。该多个处理内核可各自并行地对单个帧的四行图像数据进行处理以减少内存使用量并且减轻视频编码中的延迟。

Description

用于多内核图像编码的系统和方法
相关申请的交叉引用
本申请要求提交于2021年9月24日的名称为“Systems and Methods for Multi-Core Image Encoding”的美国临时申请第63/248,253号的优先权,该美国临时申请的公开内容全文以引用方式并入本文以用于所有目的。
发明内容
本公开涉及使用多个处理内核的图像编码的系统和方法,并且更具体地,涉及使用多个处理内核并行地对同一图像帧进行编码的系统和方法。
下面阐述本文所公开的某些实施方案的概要。应当理解,呈现这些方面是为了向读者提供这些特定实施方案的简要概述,并且这些方面并非旨在限制本公开的范围。
许多电子设备(诸如蜂窝式设备、电视、手持式设备和笔记本电脑)通常在电子显示器上显示图像和视频。为了有效地发送和接收图像数据,许多电子设备包括对视频和图像数据进行编码的视频编码电路。随着图像和视频的分辨率和动态范围越来越高,编码中所涉及的数据量也在增加,这对视频编码电路造成越来越大的负担。
发明内容
下面阐述本文所公开的某些实施方案的概要。应当理解,呈现这些方面是为了向读者提供这些特定实施方案的简要概述,并且这些方面并非旨在限制本公开的范围。
使用多个处理内核的视频数据编码可降低在编码期间所使用的数据存储能力并且提高视频流编码的效率。多个处理内核可通过跨处理内核之间的专用接口通信来并行地对视频数据进行编码。这可以使得处理内核能够开始对帧数据进行编码并且将数据发送至另一处理内核以使得该另一处理内核能够继续对进一步的帧数据进行编码。这通过引入能够在处理内核之间传送数据的多个处理内核来减少用于图像编码的存储量。
因此,本文的实施方案提供各种装置和技术以用于减少延迟并且减少在图像帧的编码中所涉及的内存。为此,本文所公开的实施方案使用多个处理内核来实现多处理内核编码操作。多处理内核编码操作使得两个或更多个处理内核能够在互连模式下操作,其中处理内核可通过专用接口连接,该专用接口使得能够在处理内核之间传送近邻数据。专用接口可使得处理内核能够并行地对同一图像帧进行编码。这使得能够提高单个视频流的处理速度,从而减少图像编码中的延迟。由于处理内核的在处理内核之间传送相邻像素数据的能力,因此使用多个处理内核的能力还减少了处理四行图像帧所涉及的内存。另外,处理内核可彼此独立地运行以使得能够使用多个处理内核并行地编码多个视频流。
附图说明
在阅读以下详细描述并参考下文所述的附图时可更好地理解本公开的各个方面。
图1为根据一个实施方案的电子设备的示意性框图;
图2是根据一个实施方案的表示图1的电子设备的示例的移动电话的前视图;
图3是根据一个实施方案的表示图1的电子设备的示例的平板设备的前视图;
图4是根据一个实施方案的表示图1的电子设备的示例的笔记本电脑的前视图;
图5是根据一个实施方案的表示图1的电子设备的示例的手表的前视图和侧视图;
图6是根据一个实施方案的视频编码器的框图;
图7是根据一个实施方案的两个互连处理内核的框图;
图8是根据一个实施方案的两个处理内核并行图像帧编码的第一示图;
图9是根据一个实施方案的使用两个处理内核的转码器的两个处理内核并行图像帧编码的示图;
图10是根据一个实施方案的多处理内核图像帧编码的流程图;
图11是根据一个实施方案的多处理内核并行图像帧编码的示图;
图12是根据一个实施方案的使用专用接口的两个处理内核并行图像帧编码的示图;并且
图13是根据一个实施方案的使用存储器缓冲区的多处理内核并行图像帧编码的示图。
具体实施方式
下文将描述一个或多个具体实施方案。为了提供这些实施方案的简要描述,本说明书中未描述实际具体实施的所有特征。应当了解,在任何此类实际具体实施的开发中,如在任何工程或设计项目中,必须要作出特定于许多具体实施的决策以实现开发者的具体目标,诸如符合可从一个具体实施变化为另一具体实施的与系统相关和与商业相关的约束。而且,应当理解,此类开发工作有可能复杂并且耗时,但是对于受益于本公开的本领域的普通技术人员而言,其仍将是设计、加工和制造的常规工作。
当介绍本公开的各种实施方案的元件时,冠词“一个/一种”和“该/所述”旨在意指存在元件中的一个或多个元件。术语“包括”和“具有”旨在被包括在内,并且意指可能存在除列出的元件之外的附加元件。附加地,应当理解,参考本公开的“一些实施方案”“多个实施方案”“一个实施方案”或“一实施方案”并非旨在被解释为排除也结合所引述的特征的附加实施方案的存在。此外,短语A“基于”B旨在意指A至少部分地基于B。而且,术语“或”旨在成为包括性的(例如,逻辑或)并且不是排他性的(例如,逻辑异或)。换句话讲,短语A“或”B旨在意指A、B或A和B两者。
本公开涉及并行地对图像帧进行多处理内核编码。在传统的视频流编码方法中,可使用单个处理内核对视频流的每个图像帧进行编码。处理内核可根据高效视频编码(HEVC)压缩方案、高级视频编码压缩方案或任何其他合适的压缩方案来编码图像。处理内核可处理四行(例如,64像素高的图像帧条)图像帧数据以对图像帧数据进行单独编码。这可能导致视频流编码中的延迟,这是由于每一帧必须在下一帧由处理内核编码之前进行编码,并且使用大量内存来容纳已完成的四行图像帧数据以用于由处理内核对下一四行图像帧进行处理。
因此,本文的实施方案提供各种装置和技术以用于减少延迟并且减少在图像帧的编码中所涉及的内存。为此,本文所公开的实施方案使用多个处理内核来实现多处理内核编码操作。多处理内核编码操作使得两个或更多个处理内核能够在互连模式下操作,其中处理内核可通过专用接口连接,该专用接口使得能够在处理内核之间传送近邻数据。专用接口可使得处理内核能够并行地对同一图像帧进行编码。这使得能够提高单个视频流的处理速度,从而减少图像编码中的延迟。由于处理内核的在处理内核之间传送相邻像素数据的能力,因此使用多个处理内核的能力还减少了处理四行图像帧所涉及的内存存储。另外,处理内核可彼此独立地运行以使得能够使用多个处理内核并行地编码多个视频流。
考虑到这一点,图1中示出了电子设备10的示例,其包括可受益于这些特征的电子显示器12。电子设备10可以是任何合适的电子设备,诸如计算机、移动(例如,便携式)电话、便携式媒体设备、平板设备、电视、手持式游戏平台、个人数据管理器、虚拟现实头戴式耳机、混合现实头戴式耳机、车辆仪表板等。因此,应当指出的是,图1仅为特定具体实施的一个示例,并且旨在例示可存在于电子设备10中的部件的类型。
除了电子显示器12之外,如所描绘的,电子设备10还包括一个或多个输入设备14、一个或多个输入/输出(I/O)端口16、具有一个或多个处理器或处理器处理内核和/或图像处理电路的处理器内核复合体18、存储器20、一个或多个存储设备22、网络接口24和电源25。图1中描述的各种部件可包括硬件元件(例如,电路)、软件元件(例如,存储指令的有形非暂态计算机可读介质)或硬件元件和软件元件的组合。应当注意,各种描绘的部件可组合成更少部件或分离成附加部件。例如,存储器20和存储设备22可包括在单个部件中。附加地或另选地,处理器处理内核复合体18的图像处理电路可设置为单独模块或者可设置在电子显示器12内。
处理器处理内核复合体18与存储器20和存储设备22耦接。因此,处理器处理内核复合体18可执行存储在存储器20和/或存储设备22中的指令以执行操作,诸如生成或处理图像数据。处理器处理内核复合体18可包括一个或多个微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)或它们的任何组合。
除了指令之外,存储器20和/或存储设备22还可存储数据,诸如图像数据。因此,存储器20和/或存储设备22可包括一个或多个有形非暂态计算机可读介质,该一个或多个有形非暂态计算机可读介质存储可由处理电路诸如处理器处理内核复合体18执行的指令和/或待由处理电路处理的数据。例如,存储器20可包括随机存取存储器(RAM),并且存储设备22可包括只读存储器(ROM)、可重写非易失性存储器(诸如闪存存储器、硬盘驱动器、光盘等)。
网络接口24可使得电子设备10能够与通信网络和/或另一电子设备10进行通信。例如,网络接口24可将电子设备10连接到个人局域网(PAN)(诸如蓝牙网络)、局域网(LAN)(诸如802.11x Wi-Fi网络)和/或广域网(WAN)(诸如4G、LTE或5G蜂窝网络)。换句话讲,网络接口24可使得电子设备10能够将数据(例如,图像数据)传输到通信网络和/或从通信网络接收数据。
电源25可例如经由一个或多个电源轨提供电力以操作处理器处理内核复合体18和/或电子设备10中的其他部件。因此,电源25可包括任何合适的电源,诸如可再充电的锂聚合物(Li-poly)电池和/或交流电(AC)电源转换器。电源管理集成电路(PMIC)可以控制向电子设备10的各种部件供应和产生电力。
I/O端口16可使得电子设备10能够与另一电子设备10进行交互。例如,便携式存储设备可连接到I/O端口16,从而使得电子设备10能够与便携式存储设备传送数据诸如图像数据。
输入设备14可使得用户能够与电子设备10进行交互。例如,输入设备14可包括一个或多个按钮、一个或多个键盘、一个或多个鼠标、一个或多个触控板等。另外,输入设备14可包括在电子显示器12中实现的触摸感测部件。触摸感测部件可通过检测物体接触电子显示器12的显示表面的发生和/或位置来接收用户输入。
除了实现用户输入之外,电子显示器12还可便于通过显示一个或多个图像(例如,图像帧或图片)来提供信息的视觉表示。例如,电子显示器12可以显示操作系统的图形用户界面(GUI)、应用程序界面、文本、静止图像或视频内容。为了便于显示图像,电子显示器12可包括具有一个或多个显示器像素的显示面板。显示器像素可以表示子像素,每个子像素控制一个颜色分量(例如,用于RGB像素布置的红色、绿色或蓝色)的亮度。
电子显示器12可通过至少部分地基于与图像数据中的对应图像像素相关联的图像数据控制其显示器像素的亮度来显示图像。在一些实施方案中,图像数据可由图像源诸如处理器处理内核复合体18、图形处理单元(GPU)、图像传感器和/或存储器20或存储装置22生成。另外,在一些实施方案中,可例如经由网络接口24和/或I/O端口16从另一个电子设备10接收图像数据。
图2中示出了电子设备10的一个示例,具体地为手持设备10A。手持设备10A可以是便携式电话、媒体播放器、个人数据管理器、手持式游戏平台等。例如,手持设备10A可以是智能电话,诸如可购自Apple inc.的任何型号。
手持设备10A包括壳体28(例如,外壳)。壳体28可保护内部部件免受物理损坏,并且/或者防护这些内部部件免受电磁干扰。在所描绘的实施方案中,电子显示器12正显示具有图标阵列的图形用户界面(GUI)30。例如,当通过输入设备14或电子显示器12的触摸感测部件选择图标时,可启动应用程序。
输入设备14可通过壳体28来提供。如上所述,输入设备14可使得用户能够与手持设备10A进行交互。例如,输入设备14可使得用户能够激活或去激活手持设备10A、将用户界面导航至home屏幕、将用户界面导航到用户可配置的应用屏幕、激活语音识别特征结构、提供音量控制和/或在震动模式与响铃模式之间双态切换。I/O端口16也通过壳体28打开。I/O端口16可包括例如或通用串行总线(USB)端口。
电子设备10可采用平板设备10B的形式,如图3所示。例如,平板设备10B可为可购自Apple inc.的任何型号。图4中示出了合适的电子设备10的另一示例,具体地为计算机10C。例如,计算机10C可为可购自Apple Inc.的任何/>型号。图5中示出了合适的电子设备10的另一示例,具体地为手表10D。例如,手表10D可为可购自AppleInc.的任何Apple />型号。如图所示,平板设备10B、计算机10C和手表10D均包括相应的电子显示器12、输入设备14、I/O端口16和壳体28。
如上所述,视频数据可包括使用多种压缩方案(例如,HEVC、AVC、VP9等)编码的数据。编码器硬件可包括多个流水线,该多个流水线对应于每个压缩方案以使得能够根据视频数据所需的压缩方案对数据进行编码。
考虑到上述内容,图6是根据一个实施方案的视频编码器40的框图。视频编码器部件可包括高级视频编码(AVC)(例如,H.264)编码器流水线42和相关联的转码器48以及高效视频编码(HEVC)(例如,H.265)46编码器流水线和相关联的转码器48以使得能够根据用于对帧进行编码的压缩方案对视频帧进行编码。
视频编码器40部件可耦接到中央处理单元(CPU)41,该中央处理单元可产生或耦接到视频流数据输出和控制输入。视频流数据可被合并并发送到HEVC和AVC编码器硬件。视频流数据还可路由到低分辨率ME(运动估计)块50,该低分辨率ME块收集视频流的图像帧的图像统计数据,并且使得能够创建缩放亮度像素的直方图;还可路由到宏块(MB)输入统计块52,该MB输入统计块使得能够收集不同块大小的统计信息,并且使得能够根据视频流数据创建梯度的方差直方图。MB输入统计52输出可耦接到运动估计块54。由运动估计块54产生的统计图像数据的输出可被传送到直接存取存储器(DMA)60以供存储,并且然后可从DMA60引导以供进一步处理。可以根据视频流压缩规范引入多个视频编码器部件。
另外,视频编码器40可包括控制器53,该控制器可控制视频编码器40的操作,包括对视频编码器40的存储器的访问。控制器53可包括控制器处理器55和控制器存储器57,以控制视频编码器40。控制器处理器55可执行存储在控制器存储器57中的指令。控制器处理器55可包括在处理器处理内核复合体18、图像处理电路26、显示器12中的时序控制器、单独的处理模块或它们的任何组合中。电子设备10可包括控制器存储器57,该控制器存储器至少部分地位于本地存储器、存储器存储设备、单独的有形非暂态计算机可读介质或它们的任何组合中。
如上所述,使用单个处理内核进行视频流编码可能导致图像帧处理中的延迟并且可能涉及大量内存来存储与当前处理的每个四行相对应的数据。为了减轻这些问题,可实现多个处理内核以并行地对视频流的每个图像帧进行编码。
考虑到前述内容,图7是根据本公开的实施方案的用于视频编码的两个处理内核处理的示图。视频编码器40可包括多个处理内核,这些处理内核可用于并行地编码同一图像帧。
例如,视频编码器可以包括第一处理内核70(例如,处理内核0)和第二处理内核72(例如,处理内核1)。两个处理内核70、72可包括多个硬件编码器元件,包括HEVC管线46、AVC管线42(例如,H.264管线)、公共管线61、多个转码器48、49、编程输入/输出(PIO)DMA 60和DMA 44。处理内核能够通过专用接口彼此通信,该专用接口连接每个相应处理内核的CPU41和DMA 44以在编码处理期间传送四行近邻数据。专用接口可包括将处理内核0 70连接到处理内核1 72的导线和/或可使用存储器缓冲区部件来连接处理内核而不使用直接接口连接。处理内核0 70与处理内核172之间的连接可使得能够在视频流的单个图像帧的编码期间传送四行近邻数据。
另外,处理内核0 70和处理内核1 72可被编程为同时对同一图像帧进行编码。两个处理内核70、72编码能力不指定图像数据的独立切片和/或依赖切片,并且两个处理内核70、72可以在编码期间保持环路滤波器的操作。这可减轻跨帧片段的边界的伪影的产生,这些伪影可能是由单独的处理内核编码的帧片段引起的。
例如,处理内核0 70和处理内核1 72可用于以比用于比特流编码的单个处理内核更快的速率对单个比特流进行编码。如上所述,处理内核0 70和处理内核1 72可以以互连模式使用。互连模式中的处理内核70、72可接收划分成四行(例如,针对HEVC压缩格式的两个32x32编码树单元(CTU)行或针对AVC压缩格式的四个16x16宏块行的64个亮度条带)的图像帧数据。处理内核70、72可各自用于对图像帧数据的交替四行进行编码。处理内核70、72可以互锁以使得该两个处理内核的功能能够类似于单个大的处理内核。例如,处理内核70、72可以通过如上所述在处理内核70、72之间交换信息来保持编码依赖关系。
处理内核0 70的CPU和处理内核1 72的CPU可使用接口进行通信,以协调图像帧的上下文的编码。处理内核0 70和处理内核1 72的DMA引擎44也可以通信。DMA引擎44之间的通信可涉及编码信息的交换和流控制通信以促进对处理内核通道间的支持。在一些实施方案中,视频编码器40的控制器53可控制处理内核0 70的CPU与处理内核1 72的CPU之间的通信的操作。控制器处理器55可执行存储在控制器存储器57中的指令,这些指令可涉及从处理内核0 70的CPU和处理内核1 72的CPU的数据传送。控制器处理器55可以执行软件和/或固件,该软件和/或固件可以指示处理内核0 70的CPU和处理内核1 72的CPU如何通过控制处理内核之间的路由路径、详细说明如何在处理内核之间路由数据以及对应于所路由的图像数据的编码顺序来在处理内核之间路由数据和/或引导数据从处理内核0 70路由到处理内核1 72。
另外,视频编码器40的控制器53可向处理内核70、72发送指令以指示使用在处理内核70、72之间路由的数据来编码视频数据。控制器53可以向任一处理内核发送指令以指示视频编码器硬件40在视频数据的编码期间利用在这些内核之间传递的近邻数据。
HEVC管线46和AVC管线42可能够经由上述方法和接口跨处理内核交换信息。例如,HEVC管线46和AVC管线42可以交换类似四行的图像编码数据,以使得处理内核1 72能够在与处理内核1 72通信的处理内核070完成当前四行的编码之前对下一四行进行编码。近邻像素数据和其他编码模式信息(例如,运动向量)还可跨四行用于亮度和色度预测以及HEVC压缩视频模式中的解块和滤波。可通过使用处理内核的DMA引擎44将此图像帧数据从一个处理内核传送到另一处理内核。转码器48可以不在处理内核之间通信,以使得能够针对与每个处理内核相对应的转码器对每个帧进行转码。处理内核之间的通信可以是交叉方向的,并且可以在处理内核0 70向处理内核1 72发送数据和/或处理内核1 72向处理内核070发送数据的情况下发生。
考虑到前述内容,图8是根据本实施方案的两个处理内核对四行进行编码的示意图。如上所述,每一处理内核可用于通过使用已针对前一四行编码的近邻数据来对四行图像数据进行编码。
例如,实线箭头81可对应于由四行内的每个相应处理内核在一个维度中的CTU单元的处理方向。每个四行的处理可由单个处理内核从左到右跨图像帧来完成。每个处理内核可处理组成四行的多个32x32像素块(例如,CTU)。四行中的CTU可以以对角线取向的自上而下的样式顺序(例如,双跳(bishop)顺序)进行处理。当四行正由处理内核处理时,近邻数据可在CTU行之间传播。对于编码相应四行的每个相应处理内核,四行中的近邻数据传播可由实线箭头84表示。
当两个处理内核正用于并行编码图像帧时,近邻数据可以从一个处理内核传送到下一个处理内核,如虚线箭头86所示。每个四行可由两个处理内核中的任一者以锁步方式进行处理,直到整个图像帧处理完毕为止。在每个四行之中,近邻数据可以在两个处理内核之间传送。例如,对于处理内核1的当前四行78,数据可在该四行被编码时存储在存储器中,并且一旦适当的数据量已被处理以开始下一四行的处理,数据就可被传送到处理内核0以用于下一四行80的处理。虚线箭头82展示了处理内核0 70将近邻数据传递到对应于下一四行的下一处理内核1 72。
例如,处理内核0 70可以正在处理当前四行76内的CTU并且可将足够的近邻数据传递到处理内核1 72以使得处理内核1 72能够通过将近邻数据传递到处理内核1 72而开始处理当前四行78(例如,另外的四行)。这可减少用于可在单个处理内核实施方案中存储在缓冲存储器中的近邻数据(例如,用于整个四行的近邻数据)的存储量。另外,这可使得处理内核172能够在处理内核0 70仍在处理前一四行的一部分的同时开始编码下一四行。例如,处理内核1前一四行73可能已传送了处理内核0当前四行76编码所需的数据。另外,处理内核1前一四行73可能已从四行处理内核0前一四行75接收到编码数据。
使用多于一个处理内核的能力减少了整个帧长度的数据存储,并且通过将近邻数据直接从处理内核0 70传递到处理内核1 72而不是将整个四行数据存储在存储器缓冲区中,使得能够仅将CTU的一部分存储在存储器中。这还可以减小用于存储近邻数据的缓冲区大小,从而在缓冲区被用作两个处理内核之间的专用接口的一部分的情况下,可以减少延迟。两个处理内核有助于数据的传送,而不必在视频流编码期间对四行的编码之中将大量数据传送到存储器。
考虑到前述内容,图9是使用具有AVC转码器操作的两个处理内核的视频流编码的示图。如上所述,两个处理内核可以以锁步方式对图像帧进行编码,以实现对图像帧的更高效编码,并且减少视频流编码中所涉及的存储量。在一些实施方案中,每个图像帧可由对应于AVC操作中的单个处理内核的转码器处理。如上所述,视频编码器40的控制器53可控制处理内核0 70与处理内核1 72之间的通信的操作。控制器53的控制器处理器55可执行存储在控制器存储器57中的指令,这些指令可涉及从处理内核0 70的CPU和处理内核1 72的CPU的数据传送。控制器处理器55可以执行软件和/或固件,该软件和/或固件可以向处理内核070和处理内核1 72提供路由指令并且/或者通过控制处理内核之间的路由路径、详细说明如何在处理内核之间路由数据以及对应于所路由的图像数据的编码顺序来引导数据从处理内核0 70路由到处理内核1 72。
另外,视频编码器40的控制器53可向处理内核70、72发送指令以指示使用在处理内核70、72之间路由的数据来编码视频数据。控制器53可以向任一处理内核发送指令以指示视频编码器硬件40在视频数据的编码期间利用在这些内核之间传递的近邻数据。
另外,视频编码器40的控制器53可向处理内核70、72发送指令以指示使用在处理内核70、72之间路由的数据来编码视频数据。控制器53可以向任一处理内核发送指令以指示视频编码器硬件40在视频数据的编码期间利用在这些内核之间传递的近邻数据。
编码器硬件可包括如上所述的处理内核0 70和处理内核1 72。处理内核0 70可开始处理多个图像帧62的帧1 64的四行。一旦处理内核0 70已处理了该四行的合适的数据量,该数据就可被传递给处理内核1 72。处理内核1 72随后可使用处理内核0 70的已处理数据来开始帧1 64的第二个四行的处理。这可以使得处理内核能够以锁步方式运行,以通过传送前一已编码四行的近邻数据来编码交替的四行。
例如,处理内核0 70可在四行0处开始处理,然后移动到四行2处的处理。处理内核72 1可在四行1处开始处理,然后移动到四行3处的处理。处理内核1 72可等待固定的CTU周期数,直到处理内核0 70已产生在四行1处进行处理的必要数据为止。对应于处理内核1 72启动中的延迟的CTU数可为非常小的百分比(例如,4K或8K CTU行)。
对于两个处理内核配置,可以使用处理内核0转码器48对四行0、2和4(63、66、68)进行编码,并且可以使用处理内核1转码器49对四行1、3和5(64、65、67)进行编码。这将导致单个比特流,如在单个处理内核实施方案中那样。这两个处理内核可被互锁以解决如上所述的编码依赖关系。相应的转码器48、49可用于处理如图9所示的单个帧。例如,帧1可由处理内核0 70和处理内核1 72来处理,但可专门地使用处理内核1 72的转码器来转码。每一帧可由来自单个处理内核的单个转码器处理,以减轻由于多个转码器用于单个图像帧所导致的多切片插入和量化参数(QP)调制。
考虑到前述内容,图10是根据本公开的实施方案的两个处理内核帧视频流编码的方法90的流程图。两个处理内核可以经由处理内核的DMA 44和CPU 41的通信在两个处理内核之间传送对应于四行的近邻数据。上述方法可以扩展为具有多于两个处理内核的功能。如上所述,视频编码器40的控制器53可控制处理内核0 70与处理内核1 72之间的通信的操作。控制器53的控制器处理器55可执行存储在控制器存储器57中的指令,这些指令可涉及从处理内核0 70的CPU和处理内核1 72的CPU的数据传送。控制器处理器55可以执行软件和/或固件,该软件和/或固件可以向处理内核0 70和处理内核1 72提供路由指令并且/或者通过控制处理内核之间的路由路径、详细说明如何在处理内核之间路由数据以及对应于所路由的图像数据的编码顺序来引导数据从处理内核0 70路由到处理内核1 72。
另外,视频编码器40的控制器53可向处理内核70、72发送指令以指示使用在处理内核70、72之间路由的数据来编码视频数据。控制器53可以向任一处理内核发送指令以指示视频编码器硬件40在视频数据的编码期间利用在这些内核之间传递的近邻数据。
在过程框92处,处理内核0 70可处理第一四行的一个或多个CTU的第一部分。处理内核0 70可沿着图像帧从左到右对第一四行的一个或多个CTU进行处理。处理内核0 70可能够将该四行的CTU的近邻数据写入到存储器缓冲区中和/或可经由有线专用接口将CTU的第一部分的数据直接传送到处理内核1 72。在各四行之间传递以实现下一四行的编码的近邻数据可包括在当前编码的四行的底部的数据,并且可包括像素数据、矢量统计信息或在下一四行的编码中所涉及的其他图像数据信息。
在过程框94处,处理内核0 70能够将来自第一四行的一个或多个CTU的第一部分的近邻数据传输到处理内核1 72。处理内核1 72可通过从同时耦接到处理内核0 70和处理内核1 72的存储器缓冲区读取数据或经由有线连接直接从处理内核0 70来接收来自处理内核0 70的近邻数据。处理内核0 70可以连接到处理内核1 72的写入通道,或者处理内核172可以连接到处理内核0 70的写入通道。每个处理内核的DMA通道44可以在存储器到存储器(例如,解耦模式)中使用。数据可以从处理内核0 70传送到处理内核1 72和/或从处理内核1 72传送到处理内核0 70。
在过程框96处,处理内核1可使用第一四行的一个或多个CTU的第一部分的近邻数据来开始处理下一四行的一个或多个CTU。对于整个图像帧数据,两个处理内核可以以这种锁步方式处理四行的图像帧。应当理解,两个处理内核或多个处理内核可以实现如上所述的用于多个处理内核编码的各种方法。
基于前述内容,图11是根据一个实施方案的多处理内核并行图像帧编码的示图。编码器硬件可包括一个或多个处理内核,这些处理内核可用于通过经由处理内核之间的通信处理四行的图像帧来并行地对同一图像帧进行编码。如上所述,视频编码器40的控制器53可控制处理内核0 70与处理内核1 72之间的通信的操作。控制器53的控制器处理器55可执行存储在控制器存储器57中的指令,这些指令可涉及从处理内核0 70的CPU和处理内核172的CPU的数据传送。控制器处理器55可以执行软件和/或固件,该软件和/或固件可以向处理内核0 70和处理内核1 72提供路由指令并且/或者通过控制处理内核之间的路由路径、详细说明如何在处理内核之间路由数据以及对应于所路由的图像数据的编码顺序来引导数据从处理内核0 70路由到处理内核1 72。
另外,视频编码器40的控制器53可向处理内核70、72发送指令以指示使用在处理内核70、72之间路由的数据来编码视频数据。控制器53可以向任一处理内核发送指令以指示视频编码器硬件40在视频数据的编码期间利用在这些内核之间传递的近邻数据。
例如,处理内核0 70可以以处理四行的CTU的自上而下对角线顺序模式从左到右开始处理四行的图像帧数据102。经编码的四行数据的一部分可经由处理内核0 70与处理内核1 72之间的通信被发送到处理内核1 72以使得处理内核1 72能够接收与处理内核070正在处理的前一四行相对应的近邻数据。处理内核1 72可使用前一四行数据图像帧数据102来处理下一四行图像帧数据104。处理内核1 72可处理下一四行图像帧数据104的CTU的一部分并且可将该数据传送到处理内核2 100以开始处理下一四行图像帧数据106。
图像编码器硬件可使用任何数量的合适处理内核通过以如上文所述的锁步方式处理四行的图像帧来执行图像帧数据的并行处理。
考虑到前述内容,图12表示在四行的图像帧的处理期间直接通过在专用接口处的处理内核通信(例如,如图7中所示)在多个处理内核之间的近邻数据传送。编码器硬件的多个处理内核可用于通过在专用接口处传送四行近邻数据来处理多个四行的图像帧数据。
例如,处理内核0 70可处理图像帧数据的一个四行的CTU的第一部分。然后,处理内核0 70可经由专用接口112将四行的近邻数据直接发送到处理内核1 72。处理内核1 72可以在专用接口112处接收由处理内核0 70发送的近邻数据。然后,处理内核1 72可用于基于经由处理内核0 70通过专用接口112传送的近邻数据来处理附加四行的第二部分。然后,处理内核170可将经处理的CTU近邻数据从第二四行写入到DMA 44。
处理内核0 70可通过从DMA 44检索由处理内核1 72传送的数据来接收下一四行的近邻数据。这使得两个处理内核能够在不包括附加存储器缓冲区的情况下使用多个处理内核之间的直接接口连接对图像帧进行编码。处理内核0 70和处理内核1 72可各自经由附加接口110来发送数据,从而实现进一步数据存储和检索。此外,附加接口110可将数据传送到存储器缓冲区108部件以实现进一步存储能力。
基于前述内容,图13表示在使用存储器缓冲区处理四行的图像帧期间在多个处理内核之间的近邻数据传送。编码器硬件的多个处理内核可用于使用一个或多个缓冲区处理多个四行的图像帧数据。
例如,处理内核0 70可处理图像帧数据的一个四行的CTU的第一部分。然后,处理内核0 70可将该四行的近邻数据发送到第一存储器缓冲区120。第一缓冲区120(例如,存储器存储区域)可以耦接到处理内核1 72,使得处理内核1 72可以通过与也耦接到处理内核070的第一存储器缓冲区120通信并从其检索数据来检索近邻数据。然后,处理内核1 72可用于基于经由处理内核0 70通过第一存储器缓冲区120传送的近邻数据来处理附加四行的第二部分。然后,处理内核1 70可将经处理的CTU近邻数据从第二四行写入到第二存储器缓冲区122。
然后,处理内核2 100可以建立与处理内核1 72的第二存储器缓冲区122的通信,并且可以读取与附加四行的第二部分相对应的近邻数据。然后,处理内核2 100可使用该近邻数据开始处理附加四行的第三部分。如上所述,处理内核2 100可对附加四行的第三部分进行处理,并且可将与附加四行的第三部分相对应的近邻数据传送(例如,写入)到与处理内核2 100相对应的第三存储器缓冲区124。然后,处理内核3 102可与处理内核2 100的第三存储器缓冲区124通信以检索近邻数据并开始处理附加四行的第四部分。处理内核3可将与附加四行的第四部分相关联的近邻数据写入处理内核3102的第四存储器缓冲区126,该第四存储器缓冲区可由处理内核0 70访问。然后,处理内核0 70可访问处理内核3 102的近邻数据并使用处理内核0 70、处理内核1 72、处理内核2 100和处理内核3 102中的每个处理内核以锁步方式继续上述的处理图像帧数据的过程。
应当理解,可以以类似的方式实现任何适当数量的处理内核,以提高图像帧编码的处理速度。处理内核还可包括用于使得能够在编码器硬件中的每个处理内核之间传送近邻数据的任何对应数量的存储器缓冲区。
已经以示例的方式示出了上述具体实施方案,并且应当理解,这些实施方案可容许各种修改和另选形式。还应当理解,权利要求书并非旨在限于所公开的特定形式,而是旨在覆盖落在本公开的实质和范围内的所有修改、等同物和另选方案。
众所周知,使用个人可标识信息应遵循公认为满足或超过维护用户隐私的行业或政府要求的隐私政策和做法。具体地,应管理和处理个人可识别信息数据,以使无意或未经授权的访问或使用的风险最小化,并应当向用户明确说明授权使用的性质。
本文所述的和受权利要求保护的技术被引用并应用于实物和实际性质的具体示例,其明显改善了本技术领域,并且照此不是抽象、无形或纯理论的。此外,如果附加到本说明书结尾的任何权利要求包含被指定为“用于[执行][功能]......的装置”或“用于[执行][功能]......的步骤”的一个或多个元件,则此类元件将按照35U.S.C.112(f)进行解释。然而,对于任何包含以任何其他方式指定的元件的任何权利要求,此类元件将不会根据35U.S.C.112(f)进行解释。

Claims (25)

1.一种电子设备,所述电子设备包括:
视频编码器电路,所述视频编码器电路对所接收的视频数据进行处理,其中所述视频编码器电路包括:
多个处理内核,所述多个处理内核对所接收的视频数据进行处理;和
控制器,其中所述控制器被配置为:
指示所述多个处理内核中的第一处理内核处理所述视频数据的第一四行,并且将与所述视频数据的所述第一四行相关联的第一近邻数据发送到所述多个处理内核中的第二处理内核,其中所述多个处理内核中的所述第二处理内核被配置为使用所述第一近邻数据来处理第二四行。
2.根据权利要求1所述的电子设备,其中所述控制器被配置为:
指示所述多个处理内核中的所述第二处理内核经由所述第一处理内核与所述第二处理内核之间的有线连接将第二近邻数据发送到所述多个处理内核中的所述第一处理内核,其中所述多个处理内核中的所述第一处理内核被配置为使用所述第二近邻数据来处理第三四行。
3.根据权利要求1所述的电子设备,其中所述控制器被配置为:
指示所述第二处理内核经由所述第二处理内核与第三处理内核之间的有线连接将第二近邻数据发送到所述第三处理内核,其中所述第三处理内核被配置为使用所述第二近邻数据来处理第三四行。
4.根据权利要求1所述的电子设备,其中所述第一四行和所述第二四行是图像数据的同一帧的一部分。
5.根据权利要求1所述的电子设备,其中所述第一处理内核和所述第二处理内核经由专用接口连接。
6.根据权利要求5所述的电子设备,其中所述专用接口包括所述第一处理内核的处理器与所述第二处理内核的处理器之间的有线连接。
7.一种包括编码器电路的电子设备,其中所述编码器电路包括:
多个处理内核,所述多个处理内核被配置为对图像数据进行编码;和
控制器,其中所述控制器被配置为:
指示所述多个处理内核中的第一处理内核使用所述多个处理内核中的所述第一处理内核来处理图像数据的第一帧的第一四行,并且将近邻数据发送到存储器缓冲区;并且
指示所述多个处理内核中的第二处理内核使用所述多个处理内核中的所述第二处理内核从所述存储器缓冲区检索所述近邻数据,并且处理所述第一帧的第二四行,其中所述多个处理内核中的所述第二处理内核使用所述近邻数据处理所述第一帧的所述第二四行。
8.根据权利要求7所述的电子设备,其中与所述多个处理内核中的一个处理内核相关联的单个转码器被配置为对由所述第一处理内核和所述第二处理内核处理后的所述第一帧的所有图像数据进行转码。
9.根据权利要求8所述的电子设备,其中所述单个转码器是所述多个处理内核中的所述第二处理内核的转码器。
10.根据权利要求7所述的电子设备,其中所述多个处理内核包括包含高效视频编码(HEVC)流水线和高级视频编码(AVC)流水线的相应的编码器处理内核。
11.根据权利要求7所述的电子设备,其中所述多个处理内核被配置为将所述近邻数据从所述第一四行内的第一编码树单元(CTU)传递到第二CTU。
12.根据权利要求7所述的电子设备,其中所述第一处理内核和所述第二处理内核经由专用接口连接。
13.根据权利要求12所述的电子设备,其中所述专用接口包括所述第一处理内核和所述第二处理内核与所述存储器缓冲区之间的连接。
14.根据权利要求13所述的电子设备,其中所述多个处理内核被配置为使用以下的一者或多者来对所述图像数据的多个图像帧进行编码:WPP、多个图块或多个切片。
15.根据权利要求7所述的电子设备,其中所述近邻数据包括以下的一者或多者:运动矢量、解块参数和其他参数。
16.根据权利要求7所述的电子设备,其中所述多个处理内核分别包括直接存储器存取(DMA)、一个或多个编码器流水线、一个或多个转码器和中央处理单元(CPU)。
17.一种有形的非暂态机器可读介质,所述有形的非暂态机器可读介质包括指令,所述指令在由处理电路执行时使得所述处理电路执行操作,所述操作包括:
使用第一处理内核来处理图像帧的第一四行;
将与所述第一四行相关联的近邻数据发送到第二处理内核;以及
使用所述第二处理内核使用所述近邻数据来处理所述图像帧的第二四行。
18.根据权利要求17所述的有形的非暂态机器可读介质,其中所述近邻数据包括以下的一者或多者:运动矢量、解块参数和其他参数。
19.根据17所述的有形的非暂态机器可读介质,其中所述指令在被执行时使得操作进一步包括:将经处理图像数据组合成所述图像帧的经编码比特流,其中所述经编码比特流包括亮度和色度颜色数据。
20.根据权利要求17所述的有形的非暂态机器可读介质,其中所述指令在被执行时使得操作进一步包括:经由专用接口将所述近邻数据从所述第一处理内核发送到所述第二处理内核,其中所述专用接口包括所述第一处理内核的直接存取存储器与所述第二处理内核的直接存取存储器之间的有线连接。
21.一种系统,所述系统包括:
用于单独处理图像帧的第一四行的装置;和
用于使用与所述第一四行相关联的近邻数据单独处理所述图像帧的第二四行的装置。
22.根据权利要求21所述的系统,其中用于处理所述图像帧的所述第一四行的所述装置包括第一处理内核。
23.根据权利要求22所述的系统,其中用于处理所述图像帧的所述第二四行的所述装置包括第二处理内核。
24.根据权利要求21所述的系统,包括用于将所述近邻数据从用于处理所述第一四行的装置发送到用于处理所述第二四行的装置的装置。
25.根据权利要求24所述的系统,其中用于发送所述近邻数据的装置包括专用接口。
CN202280064167.7A 2021-09-24 2022-06-28 用于多内核图像编码的系统和方法 Pending CN117981310A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/248,253 2021-09-24
US17/675,414 US20230102584A1 (en) 2021-09-24 2022-02-18 Systems and Methods for Multi-Core Image Encoding
US17/675,414 2022-02-18
PCT/US2022/035349 WO2023048792A1 (en) 2021-09-24 2022-06-28 Systems and methods for multi-core image encoding

Publications (1)

Publication Number Publication Date
CN117981310A true CN117981310A (zh) 2024-05-03

Family

ID=90860263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280064167.7A Pending CN117981310A (zh) 2021-09-24 2022-06-28 用于多内核图像编码的系统和方法

Country Status (1)

Country Link
CN (1) CN117981310A (zh)

Similar Documents

Publication Publication Date Title
CN105684036B (zh) 并行的硬件块处理流水线和软件块处理流水线
US9392292B2 (en) Parallel encoding of bypass binary symbols in CABAC encoder
US10297046B2 (en) Techniques for reducing accesses for retrieving texture images
TW201832561A (zh) 360度環景視頻的解區塊濾波技術
EP2824938B1 (en) Techniques for compression of groups of thumbnail images
US9218639B2 (en) Processing order in block processing pipelines
US9299122B2 (en) Neighbor context processing in block processing pipelines
JP2011077837A (ja) 画像処理装置
US20070279422A1 (en) Processor system including processors and data transfer method thereof
TW200808065A (en) Video data compression system and method
CN112887608A (zh) 图像处理方法、装置、图像处理芯片和电子设备
TWI583180B (zh) 具有上下文切換之視訊編碼器
JP2021519027A (ja) ビデオ符号化方法、ビデオ符号化装置、電子機器およびコンピュータプログラム
WO2012109582A1 (en) System and method for multistage optimized jpeg output
WO2019061475A1 (en) IMAGE PROCESSING
JP6412589B2 (ja) 装置、コンピュータプログラムおよびコンピュータ実装方法
CN117981310A (zh) 用于多内核图像编码的系统和方法
JP6187826B2 (ja) 動画像符号化装置及び動画像符号化方法
KR102476204B1 (ko) 멀티 코덱 인코더 및 이를 포함하는 멀티 코덱 인코딩 시스템
US20230102584A1 (en) Systems and Methods for Multi-Core Image Encoding
US20140189298A1 (en) Configurable ring network
EP4381738A1 (en) Systems and methods for multi-core image encoding
US9888250B2 (en) Techniques for image bitstream processing
TWI603616B (zh) 晶片內/晶片外記憶體管理
US11778211B2 (en) Parallel video parsing for video decoder processing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination