CN117793525A - 图像处理方法、可读介质、电子设备及程序产品 - Google Patents

图像处理方法、可读介质、电子设备及程序产品 Download PDF

Info

Publication number
CN117793525A
CN117793525A CN202410218836.2A CN202410218836A CN117793525A CN 117793525 A CN117793525 A CN 117793525A CN 202410218836 A CN202410218836 A CN 202410218836A CN 117793525 A CN117793525 A CN 117793525A
Authority
CN
China
Prior art keywords
image
cpu core
electronic device
cpu
core
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.)
Granted
Application number
CN202410218836.2A
Other languages
English (en)
Other versions
CN117793525B (zh
Inventor
冯宝鹏
马靖煊
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.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
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
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202410218836.2A priority Critical patent/CN117793525B/zh
Priority claimed from CN202410218836.2A external-priority patent/CN117793525B/zh
Publication of CN117793525A publication Critical patent/CN117793525A/zh
Application granted granted Critical
Publication of CN117793525B publication Critical patent/CN117793525B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Studio Devices (AREA)

Abstract

本申请涉及图像处理技术领域,公开了一种图像处理方法、可读介质、电子设备及程序产品,能够避免了小核执行图像复制时采用软件方式更新脏位所引起的耗时,从而避免预览画面出现卡顿。具体地,在相机预览模式下,电子设备采集待预览的图像之后可以对该图像进行处理得到预览图像。然后,判断电子设备的设备信息是否为预设的设备信息,例如预设的设备信息表示产品型号“MGI”。如果判断为是,则说明当前电子设备发生内核基线升级,并开启了宏CONFIG_ARM64_ERRATUM_2051678,此时电子设备可以控制中核或大核将预览图像复制到送显缓存并显示。

Description

图像处理方法、可读介质、电子设备及程序产品
技术领域
本申请涉及图像处理技术领域,特别涉及一种图像处理方法、可读介质、电子设备及程序产品。
背景技术
随着电子技术的发展,手机、平板电脑等电子设备的软硬件系统不断升级,以升级或改善电子设备中的各种功能。
然而,在电子设备的一些升级场景中,可能出现兼容性、数据丢失或升级错误等问题,从而导致升级后的电子设备的一些功能无法正常运行。例如,在一些升级场景中,电子设备中的相机在普通拍照模式下的预览画面有很大概率出现严重卡顿,将影响用户体验。
发明内容
本申请实施例提供了一种图像处理方法、可读介质、电子设备及程序产品,能够避免了小核执行图像复制时采用软件方式更新脏位所引起的耗时,从而避免预览画面出现卡顿。
第一方面,本申请实施例提供了一种图像处理方法,应用于电子设备,该方法包括:采集待预览的第一图像;对第一图像进行后处理得到第二图像;对应于电子设备的设备信息为第一设备信息,确定第二图像对应的第一线程关联的CPU核为第一CPU核;对应于第一CPU核包含第一类CPU核,将第一线程关联的CPU核由第一CPU核切换为第二CPU核,其中第二CPU核的数据处理能力高于第一CPU核的数据处理能力;通过第二CPU核运行第一线程将第二图像存储到第一缓存,其中,第一缓存中存储的图像用于向电子设备的相机预览界面送显。
例如,第一缓存可以为电子设备中相机的送显缓存。第一图像可以为相机预览场景下采集的RAW格式的图像,后处理可以包括取帧、裁剪等图像预处理流程,以及人像识别、人像优化等智能图像处理流程。进而,第二图像可以为待送显的预览图像。第一线程可以为相机预览场景下相机预览相关的线程,如图像复制操作所在的线程。
可以理解,电子设备的设备信息为第一设备信息可以表示电子设备升级了特定的系统,如升级了MagicOS 8.0系统。第一CPU核为第一线程原本管理的CPU核,并且具有第一设备信息的电子设备采用第一CPU核运行第一线程时可能产生较大耗时,如第一CPU核为小核,而第二CPU核为中核或大核。
如此,本申请将原本由小核运行的图像复制的线程切换到中核或大核上执行。从而,在开启宏CONFIG_ARM64_ERRATUM_2051678的情况下,可以避免小核运行图像复制的线程,也就避免了小核执行图像复制中多次执行采用软件方式更新脏位所引起的耗时,从而避免预览画面出现卡顿的情况发生。
在上述第一方面的一种可能的实现中,上述方法还包括:对应于第二图像在第一缓存中复制完成,将第一线程关联的CPU核由第二CPU核切换回第一CPU核,以方便后续基于原始的CPU绑核策略中的第一CPU核执行其他预览图像的相关处理操作。
在上述第一方面的一种可能的实现中,上述方法还包括:对应于电子设备的设备信息为第二设备信息,确定第二图像对应的第一线程关联的CPU核为第三CPU核,其中,第二设备信息与第一设备信息不同;通过第三CPU核运行第一线程将第二图像存储到第一缓存。可以理解,电子设备的设备信息为第二设备信息可以表示电子设备未升级特定的系统,如未升级MagicOS 8.0系统。此时,电子设备的相机预览画面通常不会发生卡顿。
在上述第一方面的一种可能的实现中,设备信息用于指示电子设备的内核基线版本。例如,在电子设备升级MagicOS 8.0系统时,内核基线版本升级为“5.10.168”。
在上述第一方面的一种可能的实现中,设备信息为电子设备的产品型号。例如,在电子设备升级MagicOS 8.0系统时,电子设备的产品型号为“MGI”这一预设产品型号。
在上述第一方面的一种可能的实现中,第二图像存储至第一缓存的流程包括:将后处理得到的第二图像存储至电子设备的第二缓存,其中,第二缓存用于存储对待预览的图像进行后处理过程中的图像;通过第二CPU核运行第一线程将第二图像由第二缓存复制到第一缓存中。例如,第二缓存可以为电子设备中存储图像数据的缓冲区对象。那么,在相机预览场景将第二图像复制到第一缓存的过程中,需要对送显缓存对应的虚拟地址的页表项更新脏位。
在上述第一方面的一种可能的实现中,第一设备信息对应于第一宏信息,并且在具有第一设备信息的电子设备运行时第一宏信息处于开启状态;其中,第一宏信息处于开启状态指示电子设备禁用第一功能,第一功能为电子设备针对第一类CPU核采用硬件方式控制页表项中的第一标志位,第一标志位用于指示页表项对应的物理地址中的数据是否被修改,并且,页表项用于表示一个虚拟地址与一个物理地址之间的映射关系。例如,第一宏信息为宏CONFIG_ARM64_ERRATUM_2051678,禁用第一功能指的是针对型号Cortex-A510的小核禁用硬件更新页表的脏位的功能。
例如,第一标志位为PTE的脏位。第二CPU核将第二图像存储到第一缓存的过程中,可以对第一缓存相关的一些页表项中的脏位进行更新。而上述第一宏信息处于开启状态时,第二CPU核可以正常执行采用硬件方式更新DBM,即可以正常执行硬件方式更新页表脏位。
在上述第一方面的一种可能的实现中,上述方法还包括:针对第二图像中的第一图像数据,获取第一图像数据在第二缓存中的第一起始地址,第一图像数据对应第一缓存的第二起始地址,以及第一图像数据的第一数据长度;通过第二CPU核运行第一线程判断第二起始地址是否有效;对应于第二起始地址有效,通过第二CPU核运行第一线程判断电子设备的页表是否存在与第一映射关系对应的第一页表项,其中,第一映射关系为第二起始地址指示的虚拟地址与物理地址之间的映射关系,第一页表用于存储虚拟地址与物理地址之间的映射关系;对应于页表存在第一页表项,通过第二CPU核采用硬件方式将第一页表项的第一标志位设置为第一数值,其中,取值为第一数值的第一标志位用于指示第一页表项对应物理地址中的数据被修改;其中,第一图像数据是基于第一起始地址和第一数据长度从第二缓存中读取,并基于第二起始地址复制到第一缓存中的。
此时,即使在页表脏位更新时出现缺页异常,也会采用硬件快速修复。因此,第二CPU核将第二图像从第二缓存复制到第一缓存过程耗时较短。从而,不会造成SITNode运行耗时较差,有利于提升送相机预览界面上预览图像显示的流畅性。例如,上述第一数值为1。此外,上述第一图像数据可以为第二图像中一个页表项对应的数据。
在上述第一方面的一种可能的实现中,第一标志位包含页表项的比特位51,即PTE中表示脏位修饰符(DBM)的标志位,该标志位由CPU中的硬件逻辑更新。
在上述第一方面的一种可能的实现中,第二CPU核是根据电子设备的负载信息从电子设备中第二类CPU核中选择的,第二类CPU核的数据处理能力大于第一类CPU核的数据处理能力;其中,负载信息包括以下至少一项:系统负载情况、进程优先级、进程的资源需求。因此,针对第一线程关联的第二CPU核,在实际应用中可以根据具体情况进行CPU核调度的调整和优化,以实现最佳的系统性能和响应能力。
在上述第一方面的一种可能的实现中,第一类CPU核为小核,第二类CPU核包含中核和大核中的至少一种。例如,小核的型号可以为Cortex-A510(即A510)、Cortex-510、Cortex-A55;中核的型号可以为Cortex-A710、Cortex-A77;大核的型号可以为Cortex-X2、Cortex-A77。并且,大核、中核、小核的数据处理能力依次降低。
第二方面,本申请实施例提供了一种可读介质,该可读介质上存储有指令,该指令在电子设备上执行时使电子设备执行上述第一方面及其任一种可能的实现方式中的图像处理方法。
第三方面,本申请实施例提供了一种电子设备,包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及处理器,是电子设备的处理器之一,用于执行上述第一方面及其任一种可能的实现方式中的图像处理方法。
第四方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品在电子设备上运行时,使该电子设备实现上述第一方面及其任一种可能的实现方式中的图像处理方法。
其中,上述第二方面至第四方面的有益效果可以参照第一方面的相关描述,此处不再赘述。
附图说明
图1A根据本申请的一些实施例,示出了一种手机的桌面界面的示意图;
图1B根据本申请的一些实施例,示出了一种手机的相机预览界面的示意图;
图2A根据本申请的一些实施例,示出了一种相机预览场景的图像处理框图;
图2B根据本申请的一些实施例,示出了一种图像复制的流程示意图;
图3A根据本申请的一些实施例,示出了一种相机架构示意图;
图3B根据本申请的一些实施例,示出了一种相机预览场景下的图像处理方法示意图;
图4A根据本申请的一些实施例,示出了一种内核的配置选项的示意图;
图4B根据本申请的一些实施例,示出了一种配置选项的内容示意图;
图4C根据本申请的一些实施例,示出了一种PTE的结构示意图;
图5根据本申请的一些实施例,示出了一种图像处理方法的流程示意图;
图6根据本申请的一些实施例,示出了一种采用硬件方式更新页表脏位的流程示意图;
图7根据本申请的一些实施例,示出了一种图像处理方法的流程示意图;
图8根据本申请的一些实施例,示出了一种手机的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于图像处理方法、介质和电子设备。
接下来,为了方便理解,先对本申请实施例涉及的名词进行解释。
1、内核:在计算机系统中,内核(kernel)是操作系统的核心部分,负责管理和控制系统的硬件资源,提供硬件访问接口,以及实现进程调度、内存管理、文件系统、设备驱动等操作系统服务。
2、CPU核(core):是电子设备的中央处理器(CPU)的核心,是计算机系统中进行计算和逻辑判断的部件。手机等电子设备中通常拥有多个CPU核,以实现多任务并发处理和并行计算。具体地,电子设备的多个CPU核可以包括小核、中核和大核,且大核、中核、小核的数据处理能力依次降低。例如,小核的型号可以为Cortex-A510(即A510)、Cortex-510、Cortex-A55;中核的型号可以为Cortex-A710、Cortex-A77;大核的型号可以为Cortex-X2、Cortex-A77。此外,在其他一些实施例中,CPU中的大核、中核、小核可以依次称为超大核、大核和小核。
3、页表项(page table entry,PTE):是操作系统中页表中的一个条目,用于描述从虚拟地址到物理地址的映射关系。在访问内存时,CPU通过查找页表来确定虚拟地址对应的物理地址,然后将数据存储或读取到相应的物理地址。此外,每个PTE都包含了一些标志位和一些有效位,它们用于控制和描述虚拟内存页的访问权限、状态等信息。具体地,PTE中包括脏位管理标志位(dirty bit modifier,DBM),用于标记PTE中的脏位(dirty bit)。而PTE中的脏位通常被用来表示页面数据是否已经发生改变,需要写入磁盘以同步更新。当一个页面被修改时,对应的脏位会被设置,如设置为1。
4、预览图像处理流程:用于将电子设备中的摄像头采集的图像进行图像处理得到预览图像,并将该预览图像送显,以在相机预览界面实时显示预览图像。具体地,本申请中的预览图像处理流程包括:预处理图像、分析图像、保存图像等。其中,预处理图像,用于对图像进行一些预处理操作,例如调整图像大小、裁剪图像、旋转图像等。分析图像,用于使用计算机视觉技术对图像进行分析,例如检测物体、识别人脸、检测图像中的模式等。保存图像:将处理后的图像保存到文件或内存中以便以后使用,如保存到送显缓存中用于后续预览显示。那么,可以循环执行预览图像处理流程来更新预览画面上的预览图像。
在一些实施例中,背景技术中的电子设备升级场景可以为手机升级MagicOS 8.0系统的场景。具体地,在升级MagicOS 8.0系统后,手机的相机普通拍照模式的预览画面高概率出现严重卡顿,影响用户的体验。
参照图1A所示,为手机10的一种桌面界面的示意图,该桌面界面中包括相机应用的图标101以及时钟、日历等应用的图标。用户点击图1A中的图标101可以触发手机10打开相机应用并显示如图1B所示的预览界面,该预览画面中包括预览图像1。此外,图1B所示的预览画面中相机模式102处于选中状态,并且拍摄控件103用于触发对该预览画面中的预览图像进行拍摄操作。此时,在手机10升级MagicOS 8.0系统后,手机10响应于用户对图1A所示的图标101的操作后,可能无法快速显示图1B示出的预览画面中的预览图像1,以及在将预览画面中的预览图像1切换至下一帧预览图像时发生卡顿。
在一些实施例中,本申请发现手机10升级MagicOS 8.0系统时发生了内核基线版本升级,并默认开启了宏CONFIG_ARM64_ERRATUM_2051678,而开启该宏会默认启用针对小核禁用硬件更新DBM的功能,即禁用小核采用硬件方式更新页表脏位的功能。
然而,在相机预览场景将预览图像复制到送显缓存的过程中,需要对送显缓存对应的虚拟地址的页表项更新脏位。而复制预览图像的流程通常绑定小核执行,由于该小核无法采用硬件方式进行页表脏位更新,因此目前只能采用软件方式更新页表脏位。但是,对一帧图像尤其是包含数据量较大的图像,预览图像复制流程中修改页表的操作次数通常较多,如一帧2MB的预览图像可能需要修改页表的操作512次,而采用软件方式修改页表通常耗时较长。如此,使得相机预览场景中图像复制的耗时较长,导致相机预览画面出现卡顿。
可以理解,通常缓存等存储单元可以按照页表中的各个页表项进行管理,如一个页表项管理缓存中一个预设容量(如4KB)的存储空间。此时,假设预览图像的大小为2兆(MB),则图像复制过程中每4KB的数据就需要一个页表项进行管理,总共需求2MB/4KB=512个页表项进行数据管理。那么,在该图像复制过程中,需要512次采用软件方式更新各个页表的脏位,以完成图像复制。
为了解决上述问题,本申请提供了一种图像处理方法。在相机预览模式下,电子设备采集待预览的图像之后,可以对该图像进行取帧、剪裁以及人脸识别等后处理得到预览图像。然后,判断电子设备的设备信息是否为预设的设备信息,例如预设的设备信息表示产品型号“MGI”。如果判断为否则说明当前电子设备未发生内核基线升级,电子设备可以正常执行图像复制流程以将上述预览图像复制到送显缓存并显示。反之,如果判断为是,则说明当前电子设备发生内核基线升级,并开启了宏CONFIG_ARM64_ERRATUM_2051678,此时电子设备可以控制中核或大核将预览图像复制到送显缓存并显示。作为示例,在判断出电子设备的产品型号为“MGI”时,电子设备可以先确定复制预览图像的线程,再判断该线程绑定的内核是否为小核。如果判断为小核,则将该线程绑定的内核由小核切换为中核或大核,并通过切换后的中核或大核运行该线程完成图像复制。
即本申请将原本由小核运行的图像复制的线程切换到中核或大核上执行。从而,在开启宏CONFIG_ARM64_ERRATUM_2051678的情况下,可以避免小核运行图像复制的线程,也就避免了小核执行图像复制中多次执行采用软件方式更新脏位所引起的耗时,从而避免预览画面出现卡顿的情况发生。
在一些实施例中,上述电子设备的产品型号为“MGI”,表示电子设备发生了内核基线升级,并默认开启了宏CONFIG_ARM64_ERRATUM_2051678。例如,产品型号为“MGI”的电子设备中安装了MagicOS 8.0系统。
接下来,基于图2A和图2B为本申请提供的相机预览的相关流程进行介绍。
参照图2A,为本申请实施例提供的一种相机预览场景的图像处理框图。电子设备的摄像头采集原始图像1,该原始图像1经过预览图像处理流水线(pipeline)生成预览图像1,该预览图像1作为一帧预览图像送显至相机预览界面。具体地,图2A所示的流水线调用多个函数实现,如过程捕获结果函数、执行请求函数和图像复制函数。例如,过程捕获结果函数对原始图像1进行裁剪等处理得到中间图像1并存储在缓存(buffer)1(记为初始缓存)中。随后,缓存1中的中间图像1经过执行请求函数进行人脸识别等处理后得到预览图像1。进而,缓存1中的预览图像1经过图像复制函数调用内存复制函数复制至缓存2(记为送显缓存)中。如此,缓存2中的预览图像1可以送显至相机预览界面。
在一些实施例中,预览图像处理流程可以通过流水线实现,该流水线可以包括多个处理节点(Node),例如取帧、裁剪、调整色彩、添加特效、曝光调整、细节增强以及SIT(一种图像处理算法节点)等。其中,SIT节点(SITNode)用于执行人脸识别、场景识别等智能化图像处理,并将处理后的图像存储至电子设备的送显缓存中。
作为示例,本申请中的处理节点可以调用函数执行图像处理。例如,取帧和裁剪等节点可以调用processCaptureResult()函数(记为过程捕获结果函数)。其中,processCaptureResult()函数是Android™ 相机的应用程序编程接口(applicationprogramming interface,API)中的一个回调函数,用于处理相机拍摄的结果数据。当相机成功获取到了图像数据,如原始图像数据(raw image data,RAW),就会调用processCaptureResult(IBuffer buffer,int width,int height)函数来处理这些数据,如进行取帧和裁剪等处理。具体地,Ibuffer类型的缓存(buffer)表示存储图像数据的缓冲区对象(即缓存),参数int width和参数int height分别表示图像的宽度和高度。例如,图1A中的缓存1可以为过程捕获结果函数中的参数“IBuffer buffer”指示的buffer。
又如,SITNode可以调用ExecuteRequest()函数(记为执行请求函数)运行SIT算法,用于执行人脸识别、场景识别等智能化图像处理。并且,SITNode还可以调用copyImage()(记为图像复制函数)函数,用于将图像数据从一个位置复制到另一个位置。例如,在Android™应用中,通过copyImage()函数将摄像头拍摄的图像可以复制到相机的送显缓存、应用程序本地的缓存或数据库中。
具体地,copyImage()函数可以调用memcpy(dst,srt,size)函数,其中memcpy()函数可以记为内存复制函数,用于将数据从一个内存区域复制到另一个内存区域。其中,参数dst表示目标内存区域的地址,参数src表示源内存区域的地址(即要复制的图像数据所在的内存区域),参数size表示要复制的数据长度(以字节为单位)。
进一步地,参照图2B所示,对图2A示出的图像复制的流程进行说明。其中,内存复制函数(即memcpy(dst,srt,size))中的参数srt指示的地址1为预览图像1中的图像数据在缓存1中的一个起始地址,而参数dst表示的地址2为预览图像1的图像数据在缓存2中的一个起始地址,参数size为预览图像1中待复制的图像数据的数据长度,且地址1和地址2为虚拟地址。如此,通过调用内存复制函数可以将预览图像1从缓存1复制到缓存2中。可以理解,memcpy()函数可以按照图像行或图像列为单元进行图像数据复制。那么,针对一帧预览图像,电子设备通常需要多次调用memcpy()函数实现图像复制。
在一些实施例中,本申请实施例提供的缓存1和缓存2可以为电子设备的高速缓冲区,随机存取存储器(random access memory,RAM)等,本申请实施例对此不做具体限定。
接下来,基于图2A和图2B所示的框图,对手机升级MagicOS 8.0系统的场景中相机预览画面出现卡顿的问题进行分析。
首先,在手机升级MagicOS 8.0系统后,技术人员通过抓trace分析发现相机预览场景中的SITNode(一种处理节点)的耗时为116毫秒(ms),且预览图像处理流程中一个线程循环的耗时为107.9ms。而手机升级MagicOS 8.0系统前,SITNode的执行流程的正常耗时10-20ms,且一个线程循环(thread loop)的正常耗时为33ms。可以理解,一个线程循环包括SIT算法,而SITNode的执行流程不仅包含SIT算法还包括其他算法,且理论上SIT算法的耗时很短。由此可知,系统升级后SITNode的处理耗时过长,且主要耗时点不在SIT算法中。
其中,trace指的是追踪技术,是一种用于记录程序的运行过程的技术。例如,在Android™应用程序中,可以使用systrace工具来抓取trace数据,并使用perfetto工具进行分析。而在图像处理中,线程循环通常涉及到图像读取、滤波、特征提取等一系列操作,每个操作都可以由一个单独的线程来执行。
其次,在手机升级MagicOS 8.0系统后,技术人员分析相机预览相关代码发现相机预览场景存在返帧动作,该返帧动作会调用CopyImage接口。而返帧的动作存在于图像复制环节中。如图2A所示,在相机预览场景中内存复制函数(memcpy())通过调用CopyImage接口将预览图像1从缓存1复制到缓存2。例如,技术人员通过火焰图发现SITNode中的内存复制函数memcpy()耗时很长,约100ms左右。
其中,火焰图中,不同的颜色表示不同的线程或进程,不同的形状表示不同的任务类型。火焰图的顶部是CPU使用率,底部是I/O设备的使用情况。因此,通过观察火焰图,开发人员可以快速识别系统中的性能问题,例如CPU密集型任务、内存密集型任务或磁盘I/O密集型任务等。例如,火焰图可以通过SimplePerf等工具生成。
在一些实施例中,在实际应用中,memcpy函数可以采用安全版本的memcpy_s()函数。例如,memcpy_s(Dst,DstSize,Src,SrcSize)函数中的参数指向要复制数据的目标缓冲区的指针,参数DstSize为目标缓冲区的大小,单位为字节,参数Src指向要复制数据的源缓冲区的指针,参数SrcSize为要复制的字节数。
此外技术人员检查出图像复制函数copyImage()位于SITNode的源代码中。例如,如SITNode的源代码为SITNode.cpp,.cpp为源代码的文件后缀。对应的源代码在SITNode.cpp中(.cpp为文件后缀)。
在一些实施例中,函数memcpy()可以以数据行为单元处理图像,针对多行多列数据的图像,对每行数据中的每个数据依次进行复制。例如,函数memcpy()中包括数据行复制代码,通过循环执行该数据行复制代码,实现对图像中各行数据的复制。具体地,数据行复制代码以m为循环次数,m取值为0≤m<copyHeight中的整数。其中,copyHeight代表源图像和目标图像的高度(行数),即m代表源图像中行的索引,如m为无符号整数的数据类型(UINT)。
在一些实施例中,上述数据行复制代码可以为“memcpy_s((hOutput->pImageList[i].pAddr[0]+outPlaneStride*m),copyPlaneStride,(hInput->pImageList[i].pAddr[0]+inPlaneStride*m),copyPlaneStride))”。
其中,memcpy_s()用于将从源地址(hInput)指向的图像复制到目的地址(hOutput)指向的图像。pImageList[i]表示源图像,hOutput表示图像复制的目的地址(即参数dst),hInput表示图像复制的源地址(即参数srt)。并且,pImageList[i].pAddr[0]表示目的地址或源地址的偏移量,i代表源图像中的数据块的索引,pAddr代表指向图像的指针。此时,memcpy_s用于将hInput->pAddr中的数据复制到((hOutput->pImageList[i]).pAddr[m])中。此外,outPlaneStride:表示复制过程中在目标图像中产生的新的行的像素数量。inPlaneStride表示在源图像中被复制的行的像素数量。copyPlaneStride表示从源图像复制一块数据到目标图像时,数据所在的行的步长。通常outPlaneStride大于inPlaneStride,表示复制后的目标图像中每行数据还包括安全冗余数据量,以保证图像复制的成功率。
例如,需求复制的图像为1440×1080个像素点,通过对上述图像复制函数CopyImage()所在的源代码增加输出信息(即加log),可以确定memcpy_s()的参数包括:copyPlaneStride=1440,inPlaneStride=4536,outPlaneStride=1536,copyHeight=1080。上述代码中m取值为0至1079,说明数据行复制代码的循环次数为1080,即针对上述图像循环执行1080次memcpy()函数(即图像行复制操作)。如此,如果执行一次memcpy()函数的耗时较长,那么将导致一帧预览图像的图像复制过程的整体耗时过长。
进一步地,在手机升级MagicOS 8.0系统后,技术人员根据火焰图分析相机应用程序的行为,可以发现程序在运行时产生了不少缺页异常(page fault),也称为缺页中断。但是,技术人员梳理业务代码流程发现memcpy()函数的dst地址对应的物理pAddr是采用dmabuf mmap技术映射后的地址。其中,dst地址通常为虚拟地址,而pAddr为物理地址。而DMABUF机制通过创建一组直接内存管理(direct memory access,DMA)缓冲区(DMABUF)来实现内存共享,这些缓冲区可以被多个进程或模块共享和访问。dmabuf mmap技术是一种将DMA缓冲区映射到进程的虚拟地址空间的技术,通过这种技术可以方便进程对DMA缓冲区进行读写操作。因此,DMABUF机制下正常情况下不应该引起缺页异常。那么,如果memcpy()函数执行过程中发生的缺页异常无法修复,将导致memcpy()函数无法正常完成图像复制操作。
为了进一步解决缺页异常现象,以下基于相机架构对相机预览图像处理流程进行说明。具体地,参照图3A对本申请实施例提供的相机架构图进行说明。并参照图3B,基于图3A示出的相机架构对相机预览场景的图像处理方法进行说明。
如图3A所示,相机系统架构01包括相机Android应用程序包(Androidapplication package,APK)011、相机框架012、相机硬件抽象层(hardware abstractionlayer,HAL)013、内核(kernel)014。
其中,相机APK 011用于提供视频和照片拍摄功能以及图像预览功能。可以理解,
相机框架012,用于接收来自相机APK 011的图像预览请求、录像请求等请求,同时维护着图像预览请求、录像请求等请求在内部流转的业务逻辑,并将请求的最终结果发送至相机APK 011。
相机HAL 013,可以包括预览流水线,用于提供图像预览功能,产生预览图像。其中,Pipeline作为提供单一特定功能的所有资源的集合,维护着所有硬件资源以及数据的流转,负责整条Pipeline的软硬件资源的维护以及业务逻辑的处理。即,预览流水线是提供视频录制功能的所有资源的集合。
内核014用于驱动相机硬件中的单元工作。
如图3B所示,基于图3A的相机架构执行的相机预览场景下的图像处理方法包括如下流程:
S301:相机APK011检测到切换到预览界面的用户操作。
例如,图1A示出的图标101就是相机APK011的图标,用户点击图标101用于触发手机打开相机APK011的应用并显示出的预览界面。
S302:相机APK011向相机框架012下发帧数据请求。
在一些实施中,上述帧数据请求用于获取一帧预览图像,即对相机实时采集的图像进行处理后的预览图像。
其中,相机APK011的应用打开之后,相机硬件如摄像头可以实时采集图像,如RAW格式的原始图像。
S303:相机框架012向相机HAL 013下发帧数据请求。
可以理解,该帧数据请求可以触发相机HAL 013获取并处理采集的原始图像。
S304:相机HAL 013创建流水线(pipeline)。
具体地,相机HAL 013基于该流水线可以将原始图像进行预处理得到中间图像。具体地,上述流水线可以对摄像头采集的RAW图像进行取帧和裁剪等处理操作以得到中间图像,如将图2A所示的原始图像1处理为中间图像1。此时,中间图像1存储在缓存1。
S305:相机HAL 013基于SITNode处理图像。
具体地,相机HAL013可以中间图像执行SITNode算法处理图像得到预览图像。
例如,SITNode算法可以对中间图像进行人脸识别或场景识别以及添加特效等处理,如将图2A所示中间图像1处理为预览图像1。此时,预览图像1存储在缓存1。
S306:相机HAL013判断memcpy函数中的目标地址dst是否有效以及目标地址dst的虚拟地址VA与物理地址PA是否建立映射关系。
可以理解,针对预览图像1而言,memcpy函数中目标地址dst可以为缓存2中用于存储预览图像1的起始地址。例如,目标地址dst为虚拟地址。
例如,本申请可以判断页表(Page Table,PT)中是否存在目标地址dst的虚拟地址VA与物理地址PA之间的映射关系,即PTE页表中是否存在该映射关系所在的页表项(PTE)。其中,对于PTE的具体结构和使用将在下文中进行详细描述,此处不做赘述。
在一些实施例中,如果相机HAL013判断出memcpy函数中目标地址dst有效且目标地址dst的虚拟地址VA与物理地址PA建立有映射关系,则进入S308。反之,如果相机HAL013判断出memcpy函数中目标地址dst无效或目标地址dst的虚拟地址VA与物理地址PA未建立映射关系,则会触发缺页异常,并进入S307。
在一些实施例中,memcpy函数中目标地址dst无效说明:dst表示的虚拟地址不在当前进程例如相机预览进程的地址空间中;或者,操作系统通过页表保护机制确保不会访问来分配或保护的内存区域,如果尝试访问这些区域,虚拟地址将被无效。此外,目标地址dst的虚拟地址VA与物理地址PA未建立映射关系,则说明访问的物理页中不包含dst的虚拟地址VA。
S307:内核014执行缺页异常处理函数。
在一些实施例中,在Linux系统中,缺页异常会被送到内核处理,内核会调用do_page_fault函数进行处理。此时,缺页异常处理函数为do_page_fault函数。并且,do_page_fault函数会根据缺页异常的原因,调用不同的处理函数。例如,处理页表项(PTE)错误的处理函数为handle_pte_fault函数。
具体地,handle_pte_fault函数的主要功能是根据缺页异常的原因,修改页表,使得进程可以正确访问内存。
S308:相机HAL 013调用memcpy函数进行图像复制。
具体地,相机HAL 013对当前处理得到的预览图像复制到送显缓存中。例如,对预览图像1而言,相机HAL013可以通过memcpy()函数将预览图像1由缓存1复制到缓存2中目标地址dst指示的地址中。
在一些实施例中,本申请可以循环执行S306至S308,直至预览图像1中的图像数据复制完成。
S309:相机HAL013向相机框架012返回图像数据。
具体地,相机HAL 013可以将复制到送显缓存中的预览图像的图像数据返回给相机框架012。例如,相机HAL013可以将缓存2中复制得到的预览图像1的图像数据返回给相机框架012。
S310:相机框架012向相机APK011返回图像数据。
例如,相机框架012可以将预览图像1的图像数据返回给相机APK011。
S311:相机APK 011显示预览画面。
例如,相机APK 011可以向用户显示预览图像1对应的预览画面。
参考上述图1B所示,手机10可以显示预览画面中的预览图像1。
可以理解,在相机预览场景中手机可以重复执行上述S301-S311,以实时逐帧更新相机的预览画面。
那么,为了进一步验证图3B示出的相机预览方法中执行图像复制耗时较长的原因,相关技术人员进一步对手机10升级MagicOS 8.0系统的升级信息进行分析。例如,技术人员对升级MagicOS 8.0系统后的相机、内核基线相关的升级信息进行回退验证,以定位出现缺页异常的原因。并且,经过分析发现缺页异常是内核基线升级造成的。
下面对手机10升级MagicOS 8.0系统过程中的内核基线升级情况进行详细说明。
参照图4A所示,为本申请实施例提供的内核的配置选项的示意图。例如,图4A示出了手机10升级前内核基线版本为边框401示出的“5.10.136”,升级后的内核基线版本为边框402示出的“5.10.168”,即内核基线版本的变化为5.10.136->5.10.168。并且,升级后的内核基线默认打开了边框403示出的宏CONFIG_ARM64_ERRATUM_2051678,使得CONFIG_ARM64_ERRATUM_2051678=y。
可以理解,宏CONFIG_ARM64_ERRATUM_2051678是Linux内核的一个配置选项。此时,手机10升级MagicOS 8.0系统后的配置选项包括CONFIG_ARM64_ERRATUM_2051678。此外,4A示出的CONFIG_ARM64_ERRATUM_102478也是Linux内核的一个配置选项。
作为示例,图4A示出的配置选项为搭载SM8450型号的处理器芯片的手机在升级MagicOS 8.0系统之前和之后内核的配置选项。此时,手机10升级MagicOS 8.0系统后的配置选项包括CONFIG_ARM64_ERRATUM_2051678。
接下来,参照图4B对配置选项CONFIG_ARM64_ERRATUM_2051678的内容进行说明。
如图4B所示,“config ARM64_ERRATUM_2051678”表示的配置选项的配置名称(configname)为“CONFIG_ARM64_ERRATUM_2051678”。具体地,该配置选项为针对型号Cortex-A510的CPU核(core),禁用硬件更新页表的脏位(dirty bit)的选项。该配置选项的配置信息404为:Bool“Cortex-A510:205168:禁止硬件更新页表的脏位”。并且,配置选项生效后将出现图4B示出的错误信息405“default y”,说明禁用硬件更新页表的脏位会引起错误。
其中,“bool”表示布尔类型,即真(True)或假(False)。bool类型的变量可以被赋值为True或False,或者使用0和1来表示。例如,在宏CONFIG_ARM64_ERRATUM_2051678开启时“Cortex-A510:205168:禁止硬件更新页表的脏位”取值为True。可以理解,一个页表项指示的页面可以为该页表项对应的物理地址中的存储空间。因此禁用页表的脏位更新可能会导致内存访问效率降低,因为无法及时检测和更新内存中的修改。
然而,CPU ERRATUM是一些ARM内核知识产权(IP)在设计时的缺陷所致的CPU硬件缺陷(bug),因为IP已经集成在市面上的片上系统(system on chip,SoC)里流片,不可能重新设计,只能通过软件做一些规避。而这些软件规避方法均记录在ARM™的官方CPU勘误手册里。
参照表1所示,为本申请提供的一种ARM64架构的CPU勘误手册的内容示意图。其中,CPU勘误手册也可以称为ARM64架构的芯片(silicon)错误修订(errata)文件。
表1:
表1示出的CPU勘误手册中包括CPU架构、CPU内核型号、错误修订编号、错误修订名称。例如,表1中包括配置选项CONFIG_ARM64_ERRATUM_2051678相关的错误修订信息,如该配置选项对应的CPU架构为ARM™架构、CPU内核型号为Cortex-A510、错误修订编号为#2051678、错误修订名称为ARM64_ERRATUM_2051678。此时,型号为SM8450的处理器芯片中包括的内核型号Cortex-A510存在于表1示出的CPU勘误手册中。
具体地,ARM64_ERRATUM_2051678指的是Cortex-A510 CPU在某些情况下可能会出现不正确的脏位管理(dirty bit management,DBM)行为。针对ARM64_ERRATUM_2051678,可以采用补丁(PATCH)进行修复,例如编号为[PATCH 2/2]和编号为[PATCH 5.16 107/203]的补丁。
例如,以型号为Cortex-A510的内核来说,错误修订编号为2051678,影响范围是所有版本号小于或等于r0p3的Cortex-A510核心IP,因此需要将他们添加到已损坏列表(如cpu_has_broken_dbm)列表中。然而,上述补丁无法解决禁用硬件更新脏位引起的图像复制耗时的问题。
以下参照图4C对本申请提供的PTE的结构进行介绍。ARM64处理器把PTE(即页表项)称为描述符,使用64位的长描述符格式。图4C示出的比特位[59,63)表示基于页的硬件属性。比特位[55,59)保留给软件使用。比特位51(即bit 51)表示脏位修饰符(DBM),指示页或内存块是否被修改过。此外,本申请对图4C示出的PTE中的其他比特位不进行详细描述,可以参照常规技术设定。
在一些实施例中,在开启上述宏CONFIG_ARM64_ERRATUM_2051678之前,手机通过CPU内部判断逻辑(即硬件方式)将DBM设置为1或0,即将比特位51设置为1或0。例如,比特位51为1表示页面为脏页,为0表示页面为干净页。例如,在将预览图像1复制到缓存2时,可以采用硬件方式将预览图像1对应的PTE中的比特位51设置为1,表示缓存2中对应位置的图像被修改。而在开启上述宏CONFIG_ARM64_ERRATUM_2051678之后,禁用硬件更新DBM的功能。
然而,在回退这个宏之后,可能导致DBM持续设置为1,即使干净的页面也会被标记为脏页,将导致磁盘I/O因回收而增加,从而导致I/O性能损失。因此,无法通过回退上述宏来解决禁用硬件更新脏位引起的图像复制耗时的问题。
在一些实施例中,在禁用硬件更新DBM的情况下,本申请可以将采用软件方式将DBM设置为1或0,即将比特位51设置为1或0。具体地,图3B中执行缺页异常处理函数可以控制PTE中的比特位51。
具体地,以下结合不同的实施例对本申请提供的图像处理方法进行详细介绍,以解决上文中现有技术所带来的相机预览场景下预览画面卡顿的问题。
在一些实施例中,适用于本申请的电子设备可以为具有显示屏的电子设备。例如,本申请实施例中,电子设备可以为手机、平板电脑、个人数字助理(personal digitalassistant,PDA)以及移动互联网设备(mobile internet device,MID)等,但不限于此。
实施例
参照图5对本申请实施例提供的图像处理方法进行说明。图5示出的方法的执行主体可以为电子设备,该方法包括如下流程:
S501:采集待预览的第一图像。例如,第一图像可以为上文中的原始图像1。
S502:对第一图像进行后处理得到第二图像,并将第二图像存储在初始缓存中。
例如,第二图像可以为上文中的预览图像1,初始缓存记为第二缓存,可以为缓存1。
在一些实施例中,本申请可以创建流水线对第一图像进行后处理,例如后处理可以包括取帧、裁剪等图像预处理流程,以及人像识别、人像优化等智能图像处理流程。
例如,本申请采集第一图像之后,可以对第一图像中的人像部分进行算法优化如增加瘦脸、大眼等特效后生成第二图像。
S503:判断电子设备的设备信息是否为第一设备信息。
其中,第一设备信息为预设的设备信息,可以为产品型号、内核基线版本号等。作为示例,第一设备信息为产品型号“MGI”。
可以理解,电子设备的设备信息为第一设备信息,说明电子设备发生了内核基线升级并默认开启了宏CONFIG_ARM64_ERRATUM_2051678(记为第一宏信息)。即第一设备信息对应第一宏信息。进而,由上文可知,在第一宏信息处于开启状态指示CPU核电子设备禁用第一功能,第一功能为CPU核电子设备针对第一类CPU核采用硬件方式控制页表项(PTE)中的第一标志位,第一标志位用于指示页表项对应的物理地址中的数据是否被修改,并且,CPU核页表项用于表示一个虚拟地址与一个物理地址之间的映射关系。其中,第一标志位包含页表项的比特位51,即第一标志位为PTE中的DBM。
那么,如果电子设备的设备信息为第一设备信息,说明电子设备开启了宏CONFIG_ARM64_ERRATUM_2051678,禁用了DBM的硬件脏位更新功能,则进入S504。反之,如果不是第一设备信息,说明电子设备未开启宏CONFIG_ARM64_ERRATUM_2051678,则可以进入S508来正常执行图像复制操作。
S504:确定第二图像对应的第一线程。
其中,第一线程用于将第二图像复制到送显缓存,如第一线程为针对该第二图像调用图像复制函数copyIamge()的线程。
在一些实施例中,电子设备可以获取用于将第二图像复制到送显缓存的线程的线程号,以确定出第二图像对应的第一线程。
S505:判断第一线程关联的第一CPU核是否包含第一类CPU核。
在一些实施例中,本申请将小核作为第一类CPU核,并将中核和大核作为第二类CPU核。那么,S505的执行用于判断第一线程关联的CPU核是否为小核。例如,第一类CPU核的型号可以为Cortex-A510(即A510)、Cortex-510或Cortex-A55。
在一些实施例中,第一进程关联的第一CPU核的数量可以为一个或多个。并且,在数量为多个时,可以逐个判断每个第一CPU核是否为第一类CPU核,即判断每个第一CPU核为小核。从而,判断出第一进程关联的CPU核中是否包含小核。
那么,在判断出第一线程关联的CPU核包含第一类CPU核如小核则继续执行S506。反之,在在判断出第一线程关联的CPU核不包含第一类CPU核则进入S508来正常执行图像复制操作。
在一些实施例中,电子设备可以针对各个线程分别设置CPU绑核策略,其中线程的CPU绑核策略用于指示该线程关联的CPU核,即该线程绑定的CPU核。
可以理解,CPU绑核策略是一种处理器调度策略,它将特定进程或线程固定在某个特定的CPU核心上运行,以提高系统性能和响应能力。
在一些实施例中,本申请提供的CPU绑核策略可以针对应用程序、进程或线程所需要的数据处理能力绑定CPU核心(即CPU核)。例如,对于一些高数据处理能力需求较高的进程例如拍照进程或录像进程或线程,可以选择绑定中核或大核;而对于一些数据处理能力需求相对较低的进程或线程例如相机预览进程,可以选择绑定小核。例如,第一线程为相机预览进程中的线程。
在一些实施例中,电子设备可以预先存储多个CPU绑核策略组成的CPU绑核策略列表。具体地,CPU绑核策略列表用于指示各线程与各CPU核之间的关联关系,即各线程号与各CPU核序号之间的关联关系。
在一些实施例中,本申请的电子设备中包括序号为0-7的8个CPU核,其中序号0-3的CPU核为四个小核、序号4-6的CPU核为三个中核、序号7的CPU核为一个大核。
作为一种示例,上述CPU绑核策略列表中包括CPU绑核策略1,该CPU绑核策略1用于表示线程L1与CPU核0、CPU核1、CPU核2、CPU核3之间的关联关系(记为:L1→0、1、2、3),即指示线程L1由CPU核0至CPU核3中的CPU核运行。那么,在电子设备获取到第一线程的线程号为L1时,就可以查询CPU绑核策略列表,获取CPU绑核策略1。进而,基于CPU绑核策略1可以确定出第一线程关联的CPU核,并判断出这些CPU核均为第一类CPU核如小核,并进入S506。此时,第一进程关联的CPU核均为小核,即均为第一类CPU核。
作为另一种示例,上述CPU绑核策略列表中包括CPU绑核策略2,该CPU绑核策略2用于表示线程L2与CPU核0、CPU核1、CPU核2、CPU核4之间的关联关系(记为:L2→0、1、2、4),即指示线程L2由这些CPU核中的CPU核运行。那么,在电子设备获取到第一线程的线程号为L1时,就可以查询CPU绑核策略列表,获取CPU绑核策略2。进而,基于CPU绑核策略2可以确定出第一线程关联的CPU核,并判断出这些CPU核均为第一类CPU核如小核,然后进入S506。此时,第一进程1关联的CPU核中的部分为小核。
S506:将第一进程关联的CPU核由第一CPU核切换为第二CPU核。
其中,第二CPU核的数据处理能力高于第一CPU核的数据处理能力。
例如,第二CPU核可以包括中核和/或大核,且第二CPU核的数量可以为一个或多个。当然,第二CPU核不是第一类CPU核。
在一些实施例中,电子设备中除了第一类CPU核之外,还包括多个第三CPU核。那么,第二CPU核为多个第三CPU核中的一个或多个。
在一些实施例中,电子设备可以根据系统的负载调度CPU核,以从多个第三CPU核中选择出第二CPU核。
例如,根据系统的负载调度CPU核的流程可以包括:根据系统的负载情况,将多个CPU核分配给一个进程,或者将一个CPU核分配给多个进程。在实际应用中,可以根据需要选择不同的根据系统的负载调度CPU核的方法。例如,可以使用Linux内核自带的调度器如完全公平调度器(CFS)、实时调度器(RT)等,还可以使用一些第三方的调度器,来实现根据系统的负载调度CPU核。此外,根据系统的负载调度CPU核可以考虑多个因素,如进程的优先级、进程的资源需求、系统的负载情况等。因此,在实际应用中需要根据具体情况进行CPU核调度的调整和优化,以实现最佳的系统性能和响应能力。
在一些实施例中,电子设备可以先存储第一线程原本的CPU绑核策略,并将该CPU绑核策略中线程号对应的CPU核序号修改为第二CPU核的CPU核序号,以修改第一线程的CPU绑核策略。
作为示例,在切换CPU核之前第一线程对应CPU绑核策略1(L1→0、1、2、3)。那么,可以将第一线程对应的CPU绑核策略修改为CPU绑核策略1'(L1→4、5、6、7),以将第一线程关联的CPU核由CPU核0切换为CPU核4至CPU核7中的CPU核。此时,第二CPU核就是CPU核4至CPU核7中的CPU核。
此外,在其他一些实施中,修改后的CPU绑核策略1'不限于上述示例,还可以为其他CPU核,如CPU绑核策略1'还可以为(L1→4、5、6)。
S507:通过第二CPU核运行第一线程将第二图像从原始缓存复制到送显缓存。
上述送显缓存可以记为第一缓存,如上述缓存2。其中,送显缓存中存储的图像用于向电子设备的相机预览界面送显。
在一些实施例中,第二CPU核将第二图像存储到送显缓存的过程中,可以对送显缓存相关的一些页表项中的脏位进行更新。而上述第一宏信息处于开启状态时,第二CPU核可以正常执行采用硬件方式更新DBM,即可以正常执行硬件方式更新页表脏位。因此,第二CPU核将第二图像从原始缓存复制到送显缓存过程耗时较短。此时,即使在页表脏位更新时出现缺页异常,也会采用硬件快速修复。从而,不会造成SITNode运行耗时较差,有利于提升送相机预览界面上预览图像显示的流畅性。
可以理解,第一线程在运行过程中,同一时刻通常仅由一个CPU核运行。那么,如果第二CPU核包括多个CPU核,则在第一线程运行过程中可能不同时刻使用不同的CPU核,或不同时刻持续使用同一CPU核。
在一些实施例中,对于第二CPU核的多个CPU核,电子设备可以按照预设调度方法调度CPU核执行第一线程。
例如,预设调度方法可以为多核时间片轮转(MTRR)调度算法,那么第二CPU核中每个CPU核被分配一个时间片,在一个时间片内执行,如果未执行完,则进入就绪队列等待下一个时间片的轮转。又如,预设调度方法还可以为进程亲和性调度算法,如将第一线程绑定在特定CPU核上运行,如将第一进程绑定到CPU核4上运行。此外,预设调度方法还可以为其他方法,本申请对此不做具体限定。
S508:对应于第二图像在送显缓存中复制完成,将第一线程关联的CPU核由第二CPU核切换回第一CPU核。
例如,在切换CPU核后第一线程对应CPU绑核策略1'(L1→4、5、6、7)时,可以将第一线程对应CPU绑核策略修改为CPU绑核策略1(L1→0、1、2、3),以将第一线程关联的CPU核由CPU核6切换回CPU核0至CPU核3,从而方便后续基于原始的CPU绑核策略执行其他预览图像的相关处理操作。
S509:通过第一CPU核运行第一线程将第二图像从原始缓存复制到送显缓存。
此时,第一CPU核不受基线升级的影响在执行图像复制的动作时,可以正常采用硬件方式更新页表脏位,因此使得图像复制的过程耗时较短。
S510:确定对应的第一线程关联的CPU核为第三CPU核。
例如,上述电子设备具有第二设备信息,其与第一设备信息不同,即第二设备信息不是预设的设备信息,如第二设备信息不是产品型号“MGI”。
可以理解,第三CPU核可以为第一线程对应的原始的CPU绑核策略中关联的CPU。例如,在第一线程为线程L1时,第三CPU核可以为CPU绑核策略1指示的CPU核0至CPU核3中的CPU核,即第三CPU核为小核。
S511:通过第三CPU核运行第一线程将第二图像从原始缓存复制到送显缓存。
此时,第三CPU核不受基线升级的影响在执行图像复制的动作时,即使第三CPU核为小核,也可以正常采用硬件方式更新页表脏位,因此使得图像复制的过程耗时较短。
如此,本申请提供的图像处理方法,在相机预览场景中,如果电子设备发生基线升级导致默认开启CONFIG_ARM64_ERRATUM_2051678,可以将图像复制动作绑定的小核切换至中核或大核,避免小核执行图像操作过程中因软件方式更新页表脏位造成较大的耗时。如此,有利提升相机预览界面中的预览图像的显示流畅性,避免卡顿。
在一些实施例中,上述S507、S509、S511中各CPU核将第二图像存储到送显缓存的过程,均可以采用函数memcpy()函数进行数据复制,并采用硬件方式更新页表脏位。
接下来,仅以S507中的图像存储过程为例,本申请中提供的图像数据的复制流程进行说明。
对采用硬件方式更新页表脏位的相关流程进行说明。例如,参照图6所示,为采用硬件方式更新页表脏位的流程示意图。具体地,如图6所示,图5中的S507可以通过S601至S605实现:
S601:针对第二图像中的第一图像数据,获取第一图像数据在原始缓存中的第一起始地址,第一图像数据对应送显缓存的第二起始地址,以及第一图像数据的第一数据长度。
可以理解,针对memcpy(dst,srt,size)函数而言,第一起始地址可以为参数dst,第二起始地址可以为参数srt,第一图像数据的数据长度可以为参数size。
在一些实施例中,第一图像数据可以为第二图像中的一行或一列数据,那么在调用memcpy()对第一图像数据进行复制的过程中,可以针对第一起始地址和第二起始地址更新页表脏位。那么,可以调用多次memcpy()函数进行图像数据复制以完成第二图像的复制,并在每次调用memcpy()函数过程中对相应页表项更新脏位。
在一些实施例中,第一图像数据可以为第二图像中对应一个页表项的数据,如4KB的数据。
S602:判断第二起始地址是否有效。
例如,第二起始地址表示的虚拟地址不在当前第一线程所在的进程例如相机预览进程的地址空间中,则第二起始地址无效则结束。反之则第二起始地址有效,则进入S603。
S603:判断电子设备的页表是否存在与第一映射关系对应的第一页表项。
其中,第一映射关系为第二起始地址指示的虚拟地址与物理地址之间的映射关系,页表用于存储虚拟地址与物理地址之间的映射关系。
如果判断为存在第一页表项则进入S604,如果判断为不存在则结束。第一页表项就是一个PTE。
S604:通过第二CPU核采用硬件方式将第一页表项的第一标志位设置为第一数值。
其中,取值为第一数值的第一标志位用于指示第一页表项对应物理地址中的数据被修改。例如,第一标志位为第一页表项所在PTE中的DBM,即比特位51。并且,第一数值可以为1,表示DBM设置为1,用于指示第一页表项指示的页面为脏页。
可以理解,针对第二图像,送显缓存可以对应多个页表项,那么电子设备需要逐个页表项进行脏位修改,以保证第二图像中的数据能够正确复制到送显缓存。例如,在第二图像为2M且一个页表项指示的页面为4KB时,电子设备可以采用硬件方式对512个页表项分别进行脏位更新,如分别设置比特位51为1。
S605:基于第一起始地址和第一数据长度从原始缓存中读取第一图像数据,并基于第二起始地址将第一图像数据复制到送显缓存中。
可以理解,本申请中可以重复执行S601至S605实现将预览图像1从原始缓存复制到送显缓存中。即本申请可以循环多次进行页表脏位更新,以循环多次数据复制操作完成预览图像1的复制。
此外,在一些实施例中,图5示出的方法步骤和图6示出的方法步骤可以通过图3A示出的相机HAL013执行。
如此,在相机预览场景中,本申请可以采用硬件方式进行页表脏位更新,以保证预览图像快速存储送显缓存,有利于保证相机预览界面中预览画面的流程性。
实施例
接来下,在上述实施例一的基础上,针对图3A示出的相机架构,下面结合图7对本申请实施例提供的图像处理方法进行详细介绍。
参照图7所示,本申请提供的图像处理方法包括以下流程:
S701:相机APK011检测到对相机的用户操作。
可以理解,上述对相机的用户操作可以触发相机APK011切换到预览界面,如该用户操作为用户点击图1A示出的图标101的操作。
S702:相机APK011向相机框架012下发帧数据请求。
在一些实施中,上述帧数据请求用于获取一帧预览图像,即对相机实时采集的图像进行处理后的预览图像。其中,相机APK011的应用打开之后,相机硬件如摄像头可以实时采集图像,如RAW格式的原始图像。
S703:相机框架012向相机HAL 013下发帧数据请求。
可以理解,该帧数据请求可以触发相机HAL 013获取并处理采集的原始图像。
S704:相机HAL013调用过程捕获结果函数。
如此,通过过程捕获结果函数获取原始图像1,将原始图像1处理为中间图像1并存储在原始缓存中。
例如,参照图2A,相机HAL013可以调用processCaptureResult()函数,对原始图像1进行裁剪等处理得到中间图像1并存储在原始缓存如缓存1。
S705:相机HAL013调用执行请求函数。如此,可以通过执行请求函数对中间图像1进行处理后得到预览图像1。
例如,参照图2A,在SITNode处理图像的过程中,相机HAL013可以调用ExecuteRequest()函数运行SIT算法对中间图像1执行人脸识别、场景识别等智能化图像处理以得到预览图像1。
S706:相机HAL010判断产品类型是否为预设产品类型。
例如,预设产品类型为MGI。可以理解,电子设备的产品类型为MGI,说明电子设备默认开启了宏CONFIG_ARM64_ERRATUM_2051678(记为第一宏信息),即禁用了小核采用硬件方式的页表脏位更新功能。因此,可以通过将CPU核切换的方式解决禁用该功能禁用所引起的问题。那么,如果判断出产品类型为MGI,则进入S707;反之,则进入S712。
S707:相机HAL获取图像复制函数的线程号。
例如,参照图2A所示,在SITNode处理图像的过程中,图像复制函数为copyImage()函数,用于将预览图像1从原始缓存复制到送显缓存。
其中,图像复制函数的线程号就是该图像复制函数所在线程的线程号。
S708:相机HAL013存储图像复制函数的线程的CPU绑核策略。
例如,图像复制函数的线程号为L1,对应CPU绑核策略1(L1→0、1、2、3)。
可以理解,对于产品型号为MGI的电子设备,图像复制函数的线程号的CPU绑核策略中通常包括小核,如包含的所有CPU均为小核。
S709:相机HAL013将CPU绑核策略修改为中核和/或大核。
例如,可以将图像复制函数的线程号的CPU绑核策略1修改为CPU绑核策略1'(L1→4、5、6、7),即将对应线程的关联应用修改为中核和大核中的CPU核。
S710:相机HAL013基于修改后的CPU核执行图像复制。例如,基于修改后的CPU核将预览图像1从原始缓存复制到送显缓存。
例如,相机HAL013基于重新绑定的CPU核4至CPU核7中的CPU内核调用copyImage()将预览图像1从原始缓存复制到送显缓存。
S711:相机HAL013回退CPU绑核策略。
即相机HAL013将图像复制函数的线程的CPU绑核策略修改为小核,如由CPU绑核策略1'(L1→4、5、6、7)修改回CPU绑核策略1(L1→0、1、2、3),以方便后续基于原始的CPU绑核策略执行其他预览图像的相关处理操作。
S712:相机HAL013基于原始的CPU核执行图像复制。例如,基于原始的CPU核将预览图像1从原始缓存复制到送显缓存。
可以理解,预览图像1所调用的图像复制函数对应的原始CPU核通常为小核,如CPU绑核策略1(L1→0、1、2、3)中的CPU核。此时,电子设备中并未禁用硬件方式的页表脏位更新功能,小核也能够快速正常执行预览图像的图像复制等步骤。
S713:相机HAL013向相机框架012返回图像数据。例如,预览图像1的图像数据。
S714:相机框架012向相机APK011返回预览图像1的图像数据。例如,预览图像1的图像数据。
S715:相机APK011向用户显示预览画面。例如,在预览画面中显示预览图像1。
如此,本申请可以保证的电子设备在升级产品后,即使禁用小核采用硬件方式的页表脏位更新功能,也可以通过修改线程的CPU绑核策略,以实现快速的预览图像复制操作。从而,使得预览图像可以快速返回给相机APK,以保证相机预览界面中的预览图像的流畅性。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例上述方案,相应地,下面还提供用于配合实施上述方案的相关设备的硬件结构和软件结构。
在一些实施例中,本申请以执行图像处理方法的电子设备为手机为例,对电子设备的硬件结构进行介绍。
如图8所示,手机10可以包括处理器110、电源模块140、存储器180,移动通信模块130、无线通信模块120、传感器模块190、音频模块150、摄像头170、接口模块160、按键101以及显示屏102等。
可以理解的是,本发明实施例示意的结构并不构成对手机10的具体限定。在本申请另一些实施例中,手机10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如,可以包括中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)、数字信号处理器DSP、微处理器(micro programmed control unit,MCU)、人工智能(artificialintelligence,AI)处理器或可编程逻辑器件(field programmable gate array,FPGA)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中可以设置存储单元,用于存储指令和数据。在一些实施例中,处理器110中的存储单元为高速缓冲存储器180。
电源模块140可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。在一些实施例中,电源管理部件包括充电管理模块和电源管理模块。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器110。电源管理模块接收电源和/或充电管理模块的输入,为处理器110,显示屏102,摄像头170,及无线通信模块120等供电。
移动通信模块130可以包括但不限于天线、功率放大器、滤波器、低噪声放大器(low noise amplify,LNA)等。移动通信模块130可以提供应用在手机10上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块130可以由天线接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块130还可以对经调制解调处理器调制后的信号放大,经天线转为电磁波辐射出去。在一些实施例中,移动通信模块130的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块130至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wide band code division multipleaccess,WCDMA)等。
无线通信模块120可以包括天线,并经由天线实现对电磁波的收发。无线通信模块120可以提供应用在手机10上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT)等无线通信的解决方案。手机10可以通过无线通信技术与网络以及其他设备进行通信。
在一些实施例中,手机10的移动通信模块130和无线通信模块120也可以位于同一模块中。
显示屏102用于显示人机交互界面、图像、视频等。显示屏102包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flexlight-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。
传感器模块190可以包括接近光传感器、压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
音频模块150用于将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。音频模块150还可以用于对音频信号编码和解码。在一些实施例中,音频模块150可以设置于处理器110中,或将音频模块150的部分功能模块设置于处理器110中。在一些实施例中,音频模块150可以包括扬声器、听筒、麦克风以及耳机接口。
摄像头170用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给图像信号处理(image signalprocessing,ISP)转换成数字图像信号。手机10可以通过ISP,摄像头170,视频编解码器,图形处理器(graphic processing unit,GPU),显示屏102以及应用处理器等实现拍摄功能。
接口模块160包括外部存储器接口、通用串行总线(universal serial bus,USB)接口及用户标识模块(subscriber identification module,SIM)卡接口等。其中外部存储器接口可以用于连接外部存储卡,例如MicroSD卡,实现扩展手机10的存储能力。外部存储卡通过外部存储器接口与处理器110通信,实现数据存储功能。通用串行总线接口用于手机10和其他电子设备进行通信。用户标识模块卡接口用于与安装至手机1010的SIM卡进行通信,例如读取SIM卡中存储的电话号码,或将电话号码写入SIM卡中。
在一些实施例中,手机10还包括按键101、马达以及指示器等。其中,按键101可以包括音量键、开/关机键等。马达用于使手机10产生振动效果,例如在用户的手机10被呼叫的时候产生振动,以提示用户接听手机10来电。指示器可以包括激光指示器、射频指示器、LED指示器等。
需要说明的,图8仅仅是本申请实施例的一种可能的实现方式,实际应用中,手机10还可以包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,可参见前述图5、图6或者图7实施例中的相关阐述,这里不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,图5、图6或者图7所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在处理器上运行时,图5、图6或者图7所示的方法流程得以实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD)、或者半导体介质。半导体介质可以是SSD。
以上所述,仅为本申请的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种图像处理方法,其特征在于,应用于电子设备,所述方法包括:
采集待预览的第一图像;
对所述第一图像进行后处理得到第二图像;
对应于所述电子设备的设备信息为第一设备信息,确定所述第二图像对应的第一线程关联的CPU核为第一CPU核;
对应于所述第一CPU核包含第一类CPU核,将所述第一线程关联的CPU核由所述第一CPU核切换为第二CPU核,其中所述第二CPU核的数据处理能力高于所述第一CPU核的数据处理能力;
通过所述第二CPU核运行所述第一线程将所述第二图像存储到第一缓存,其中,所述第一缓存中存储的图像用于向所述电子设备的相机预览界面送显。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对应于所述第二图像在所述第一缓存中复制完成,将所述第一线程关联的CPU核由所述第二CPU核切换回所述第一CPU核。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对应于所述电子设备的设备信息为第二设备信息,确定所述第二图像对应的第一线程关联的CPU核为第三CPU核,其中,所述第二设备信息与所述第一设备信息不同;
通过所述第三CPU核运行所述第一线程将所述第二图像存储到所述第一缓存。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述设备信息用于指示所述电子设备的内核基线版本。
5.根据权利要求4所述的方法,其特征在于,所述设备信息为所述电子设备的产品型号。
6.根据权利要求1、2、3、5中任一项所述的方法,其特征在于,所述第二图像存储至所述第一缓存的流程包括:
将后处理得到的所述第二图像存储至所述电子设备的第二缓存,其中,所述第二缓存用于存储对待预览的图像进行后处理过程中的图像;
通过所述第二CPU核运行所述第一线程将所述第二图像由所述第二缓存复制到所述第一缓存中。
7.根据权利要求6所述的方法,其特征在于,所述第一设备信息对应于第一宏信息,并且在具有所述第一设备信息的所述电子设备运行时所述第一宏信息处于开启状态;
其中,所述第一宏信息处于开启状态指示所述电子设备禁用第一功能,所述第一功能为所述电子设备针对所述第一类CPU核采用硬件方式控制页表项中的第一标志位,所述第一标志位用于指示所述页表项对应的物理地址中的数据是否被修改,并且,所述页表项用于表示一个虚拟地址与一个物理地址之间的映射关系。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
针对所述第二图像中的第一图像数据,获取所述第一图像数据在所述第二缓存中的第一起始地址,所述第一图像数据对应所述第一缓存的第二起始地址,以及所述第一图像数据的第一数据长度;
通过所述第二CPU核运行所述第一线程判断所述第二起始地址是否有效;
对应于所述第二起始地址有效,通过所述第二CPU核运行所述第一线程判断所述电子设备的页表是否存在与第一映射关系对应的第一页表项,其中,所述第一映射关系为所述第二起始地址指示的虚拟地址与物理地址之间的映射关系,所述第一页表用于存储虚拟地址与物理地址之间的映射关系;
对应于所述页表存在所述第一页表项,通过所述第二CPU核采用硬件方式将所述第一页表项的所述第一标志位设置为第一数值,其中,取值为所述第一数值的所述第一标志位用于指示所述第一页表项对应物理地址中的数据被修改;
其中,所述第一图像数据是基于所述第一起始地址和所述第一数据长度从所述第二缓存中读取,并基于所述第二起始地址复制到第一缓存中的。
9.根据权利要求7或8所述的方法,其特征在于,所述第一标志位包含页表项的比特位51。
10.根据权利要求1、2、3、5、7、8中任一项所述的方法,其特征在于,所述第二CPU核是根据所述电子设备的负载信息从所述电子设备中第二类CPU核中选择的,所述第二类CPU核的数据处理能力大于所述第一类CPU核的数据处理能力;
其中,所述负载信息包括以下至少一项:系统负载情况、进程优先级、进程的资源需求。
11.根据权利要求10所述的方法,其特征在于,所述第一类CPU核为小核,所述第二类CPU核包含中核或大核中的至少一种。
12.一种可读介质,其特征在于,所述可读介质上存储有指令,所述指令在电子设备上执行时使所述电子设备执行权利要求1至11中任一项所述的图像处理方法。
13.一种电子设备,其特征在于,包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及处理器,是所述电子设备的处理器之一,用于执行权利要求1至11中任一项所述的图像处理方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品在电子设备上运行时,使所述电子设备实现权利要求1至11中任一项所述的图像处理方法。
CN202410218836.2A 2024-02-28 图像处理方法、可读介质、电子设备及程序产品 Active CN117793525B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410218836.2A CN117793525B (zh) 2024-02-28 图像处理方法、可读介质、电子设备及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410218836.2A CN117793525B (zh) 2024-02-28 图像处理方法、可读介质、电子设备及程序产品

Publications (2)

Publication Number Publication Date
CN117793525A true CN117793525A (zh) 2024-03-29
CN117793525B CN117793525B (zh) 2024-07-02

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140129808A1 (en) * 2012-04-27 2014-05-08 Alon Naveh Migrating tasks between asymmetric computing elements of a multi-core processor
CN109254849A (zh) * 2018-08-31 2019-01-22 北京小米移动软件有限公司 应用程序的运行方法及装置
KR20200068635A (ko) * 2020-06-08 2020-06-15 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
CN111831414A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 线程迁移方法、装置、存储介质及电子设备
CN115048209A (zh) * 2021-03-09 2022-09-13 深圳市万普拉斯科技有限公司 Cpu调度方法、装置、终端设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140129808A1 (en) * 2012-04-27 2014-05-08 Alon Naveh Migrating tasks between asymmetric computing elements of a multi-core processor
CN109254849A (zh) * 2018-08-31 2019-01-22 北京小米移动软件有限公司 应用程序的运行方法及装置
KR20200068635A (ko) * 2020-06-08 2020-06-15 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
CN111831414A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 线程迁移方法、装置、存储介质及电子设备
CN115048209A (zh) * 2021-03-09 2022-09-13 深圳市万普拉斯科技有限公司 Cpu调度方法、装置、终端设备和存储介质

Similar Documents

Publication Publication Date Title
CN111625431B (zh) 一种日志信息生成方法、装置及电子设备
US11803451B2 (en) Application exception recovery
KR100760227B1 (ko) 화상파일 관리장치 및 방법과, 기억매체
CN113727035B (zh) 图像处理方法、系统、电子设备及存储介质
CN112035272A (zh) 进程间通信的方法、装置以及计算机设备
CN109213613B (zh) 图像信息的传输方法、装置、存储介质及电子设备
CN114168065B (zh) 调整内存配置参数的方法和装置
US20190227918A1 (en) Method for allocating memory resources, chip and non-transitory readable medium
CN113495744A (zh) 一种版本升级方法及相关装置
CN115016631B (zh) 进程调度方法和终端设备
CN114205529A (zh) 一种单摄像头的调用方法、装置、终端和可读存储介质
WO2021218370A1 (zh) 一种内存管理方法及终端设备
CN116483294B (zh) 基于Linux内核管控的打印机水印添加方法和装置
CN117793525B (zh) 图像处理方法、可读介质、电子设备及程序产品
CN117793525A (zh) 图像处理方法、可读介质、电子设备及程序产品
CN115292199B (zh) 一种显存泄露的处理方法及相关装置
US9659041B2 (en) Model for capturing audit trail data with reduced probability of loss of critical data
CN116468882A (zh) 图像处理方法、装置、设备、存储介质和程序产品
CN113535293A (zh) 一种安卓设备截屏的方法、系统及介质
CN112311985A (zh) 一种多摄拍照处理方法、装置及存储介质
WO2024046260A1 (zh) 一种热补丁方法及相关装置
WO2024108499A1 (zh) 一种图像信号处理驱动方法、控制模块、处理模块及介质
CN116688494B (zh) 生成游戏预测帧的方法和电子设备
WO2023185684A1 (zh) 一种应用程序的进程查杀方法及电子设备
CN116528043B (zh) 一种对象标记方法及电子设备

Legal Events

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