CN117676325A - 多摄场景中的控制方法及相关装置 - Google Patents
多摄场景中的控制方法及相关装置 Download PDFInfo
- Publication number
- CN117676325A CN117676325A CN202311422170.4A CN202311422170A CN117676325A CN 117676325 A CN117676325 A CN 117676325A CN 202311422170 A CN202311422170 A CN 202311422170A CN 117676325 A CN117676325 A CN 117676325A
- Authority
- CN
- China
- Prior art keywords
- metadata
- pipeline
- camera
- real
- buffer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 239000000872 buffer Substances 0.000 claims abstract description 406
- 238000012545 processing Methods 0.000 claims description 83
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012546 transfer Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 206010016754 Flashback Diseases 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 101100368725 Bacillus subtilis (strain 168) tagF gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
Landscapes
- Studio Devices (AREA)
Abstract
本申请实施例提供一种多摄场景中的控制方法及相关装置,应用于终端技术领域,其中,方法包括:电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换;在脱机管线确定摄像头发生切换的情况下,脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效;第一实时管线为管理切换之后的摄像头所采集图像的管线;将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区,第一实时管线的输出元数据缓冲区中的无效元数据未合并在脱机管线的输出元数据缓冲区。这样,可以减少相机应用因读取到无效的元数据而闪退的发生概率,提升用户体验感。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种多摄场景中的控制方法及相关装置。
背景技术
一些电子设备具有多摄功能,用户使用具有多摄功能的电子设备进行拍照,可以得到成像质量较好的照片。
然而,在用户使用具有多摄功能的电子设备拍照的过程中,当用户切换缩放倍率时可能出现相机应用闪退的现象。
发明内容
本申请实施例提供一种多摄场景中的控制方法及相关装置,应用于终端技术领域。电子设备可以在确定摄像头发生切换时,对切换后的摄像头对应的实时管线的输出元数据缓冲区中的元数据进行有效性判断,从而可以实现以向应用框架层传输有效的元数据,减少无效的元数据被传输到应用框架层的发生概率,进而减少相机应用因读取到无效的元数据而闪退的发生概率,提升用户体验感。
第一方面,本申请实施例提出一种多摄场景中的控制方法,该方法包括:电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换。在脱机管线确定摄像头发生切换的情况下,脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效。第一实时管线为管理切换之后的摄像头所采集图像的管线。将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区,第一实时管线的输出元数据缓冲区中的无效元数据未合并在脱机管线的输出元数据缓冲区。
这样,在脱机管线确定摄像头发生切换的情况下,可以减少第一实时管线的输出元数据缓冲区中的无效元数据被合并到脱机管线的输出元数据缓冲区的发生概率,进而可以减少相机应用因读取到无效的元数据而闪退的发生概率。其中,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换可以理解为脱机管线判断相机应用的缩放倍率关联的摄像头是否发生切换。第一实时管线可以是实施例中的实时管线1。第一实时管线的输出元数据缓冲区可以是实施例中的输出元数据缓冲区1。脱机管线的输出元数据缓冲区可以是实施例中的输出元数据缓冲区2。在脱机管线确定摄像头发生切换的情况下,脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效,脱机管线将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区的具体实现可以参见图7所示实施例。
在一种可能的实现方式中,脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效,包括:脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据,第二实时管线为摄像头切换之前,用于管理切换前摄像头所采集图像的管线。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第一目标元数据是否有效。第一目标元数据为:在第一实时管线的输出元数据缓冲区中,与第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据。将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区,包括:在第一目标元数据有效的情况下,将第一目标元数据合并在脱机管线的输出元数据缓冲区。
这样,在脱机管线确定摄像头发生切换的情况下,可以通过切换前摄像头对应的第二实时管线中元数据的索引,对切换后摄像头对应第一实时管线的输出元数据缓冲区中的元数据的有效性进行判断,可以实现将第一实时管线的输出元数据缓冲区中的有效元数据合并到脱机管线的输出元数据缓冲区,避免第一实时管线的输出元数据缓冲区中的无效元数据被合并到脱机管线的输出元数据缓冲区,进而被相机应用读取而使得相机应用闪退现象的发生。其中,第二实时管线可以是实施例中的实时管线0。第二实时管线的输出元数据缓冲区可以是实施例中的输出元数据缓冲区0。索引可以是实施例中的tag。脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据的具体实现方式可以参见图7实施例中S703的描述。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第一目标元数据是否有效的具体实现方式可以参见图7实施例中S705-S706的描述。
在一种可能的实现方式中,判断第一目标元数据是否有效之前,还包括:在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第二目标元数据是否有效。第二目标元数据为:在脱机管线的输出元数据缓冲区中,与第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据。在第二目标元数据无效的情况下,判断第一目标元数据是否有效。
这样,可以减少电子设备的功耗。其中,在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下判断第二目标元数据是否有效的具体实现方式可以参见图7实施例中S704的描述。
在一种可能的实现方式中,在脱机管线完成对第二实时管线的输出元数据缓冲区中全部元数据的有效性判断后,脱机管线向应用程序框架层传输脱机管线的输出元数据缓冲区中的元数据。
这样,可以使得相机应用通过应用程序框架层的接口读取到脱机管线上报的元数据,以实现预览图像的显示或照片生成。其中,应用程序框架层可以是实施例中的应用框架层。
在一种可能的实现方式中,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换之前,方法还包括:采用第一实时管线的输入元数据缓存区中的图像处理相关参数对第一摄像头采集的图像进行处理,并将处理后的图像的特征描述参数存储在第一实时管线的输出元数据缓存区中,第一摄像头为切换后的摄像头。在第一实时管线处理完一帧图像后,将第一实时管线的输入元数据缓存区中的元数据合并在第一实时管线的输出元数据缓存区中。
这样,可以实现对摄像头采集的图像进行处理,以减少后续上层(如应用程序框架层和应用层)的处理量,在第一实时管线处理完一帧图像后,将第一实时管线的输入元数据缓存区中的元数据合并在第一实时管线的输出元数据缓存区中,可以实现通过后续的步骤将第一实时管线的输入元数据缓存区中的元数据上报给应用程序框架层,以便相机应用的读取。其中,第一摄像头可以是实施例中的摄像头1。第一实时管线的输入元数据缓存区可以是实施例中的输入元数据缓存区1。第一实时管线的输入元数据缓存区中的图像处理相关参数可以是实施例中输入元数据缓存区1中的预设的元数据,例如实施例中的曝光时间等参数。处理后的图像的特征描述参数可以是实时管线1在图像处理阶段描述处理后所得到的图像数据的数据。
在一种可能的实现方式中,脱机管线运行在硬件抽象层,采用第一实时管线的输入元数据缓存区中的图像处理相关参数对第一摄像头采集的图像进行处理之前,还包括:脱机管线从应用框架层获取到捕获请求。捕获请求用于指示第一实时管线对第一摄像头采集的图像进行处理。
这样,实现脱机管线每收到一个捕获请求就对摄像头采集的一帧图像进行处理。
在一种可能的实现方式中,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换之前,方法还包括:采用第二实时管线的输入元数据缓存区中的图像处理相关参数对第二摄像头采集的图像进行处理,并将处理后的图像的特征描述参数存储在第二实时管线的输出元数据缓存区中,第二摄像头为切换前的摄像头。在第二实时管线处理完一帧图像后,将第二实时管线的输入元数据缓存区中的元数据合并在第二实时管线的输出元数据缓存区中。
这样,实现在多摄场景下,电子设备的多个摄像头均处于开启状态,以便在摄像头切换的场景下,脱机管线能从及时从切换后的摄像头对应的实时管线的输出元数据缓冲区中获取元数据,进而可以实时相机应用可以及时读取到切换后的摄像头对应的实时管线的元数据,以对切换后的摄像头采集的图像进行预览显示或照片生成处理。其中,第二摄像头可以是实施例中的摄像头0。第二实时管线的输入元数据缓存区可以是实施例中的输入元数据缓存区0。
在一种可能的实现方式中,判断电子设备中使用的摄像头是否发生切换,包括:脱机管线判断虚拟摄像头标识是否发生切换。其中,若虚拟摄像头标识发生切换则表示电子设备中使用的摄像头发生切换,若虚拟摄像头标识未发生切换则表示电子设备中使用的摄像头未发生切换。
这样,实现通过对虚拟摄像头标识的判断,实现对摄像头是否切换的判断。其中,脱机管线判断虚拟摄像头标识是否发生切换的具体实现可以参见图7实施例中的S702的描述。
在一种可能的实现方式中,判断电子设备中使用的摄像头是否发生切换之前,方法还包括:电子设备接收到将相机应用的缩放倍率从第一倍率调整到第二倍率的操作,其中,采集第一倍率的图像时需要采用第二摄像头,采集第二倍率的图像时需要采用第一摄像头。
这样,用户可以通过切换缩放倍率的方式以实现对摄像头的切换,进而在相机应用不因缩放倍率切换而闪退的情况下使得电子设备显示与缩放倍率对应的图像。其中,第一倍率可以是实施例中的缩放倍率1×。第二倍率可以是实施例中的缩放倍率0.5×。
在一种可能的实现方式中,方法还包括:在脱机管线确定摄像头没有发生切换的情况下,脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第三目标元数据是否有效。第三目标元数据为:在脱机管线的输出元数据缓冲区中,与第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据。在第三目标元数据无效的情况下,将第二实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区。
这样,在脱机管线确定摄像头没有发生切换的情况下,可以减少第二实时管线的输出元数据缓冲区中的无效元数据被合并到脱机管线的输出元数据缓冲区的发生概率,进而可以减少相机应用因读取到无效的元数据而闪退的发生概率。
第二方面,本申请实施例提供一种电子设备,该电子设备包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得电子设备执行如第一方面的方法。
第三方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现如第一方面的方法。
第四方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面的方法。
第五方面,本申请实施例提供了一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行如第一方面所述的方法。
应当理解的是,本申请的第二方面至第五方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的元数据缓冲区和元数据的示意图;
图2为本申请实施例提供的电子设备100的结构示意图;
图3为本申请实施例的电子设备100的软件相关框图;
图4为可能的实现方式中相机应用闪退的场景图;
图5为本申请实施例提供的一种模块交互流程图;
图6为本申请实施例提供一种软件架构的交互流程图;
图7为本申请实施例提供的一种合并流程图;
图8为本申请实施例提供的一种合并流程图;
图9为本申请实施例提供的摄像头切换的场景图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1、pipeline:可以称为管线或流水线。管线可以理解为一组串联连接的数据处理节点(node),其中一个数据处理节点的输出是下一个数据处理节点的输入。例如,在图像处理中,数据处理节点可以包括传感器处理节点、ISP节点和/或算法处理节点等。
2、realtime pipeline:可以称为实时管线。实时管线可以用于处理摄像头驱动传输的摄像头所采集的图像。一条实现管线与一个摄像头对应。
3、offline pipeline:可以脱机管线。脱机管线可以用于进一步处理实时管线输出的数据,并向应用框架层传输相机应用的缩放倍率对应实时管线相关的数据。相机应用的缩放倍率可以理解为相机应用开启状态下电子设备显示的缩放倍率或电子设备使用的缩放倍率。电子设备显示的缩放倍率在本申请实施例中也可以称为电子设备的缩放倍率。
4、buffer:可以称为缓冲区或缓存。
5、meta:可以称为元数据。在本申请实施例中,元数据可以是采集图像所用的参数,也可以是处理图像所用的参数,还可以是描述图像数据的参数。
元数据可以由结构体(entry)部分和数据(data)部分组成。
其中,entry可以包括元数据的唯一标识(tag)、元数据的data部分的类型(type)、元数据的data部分的的数量(count)、用于指向元数据的data部分的存放位置的指针(vaddr)。若元数据的data部分的大小小于或等于8字节(byte),则元数据的的data部分和entry部分一起存放在存放entry的区域,vaddr会指向存放entry的区域中元数据的entry中data的位置。若元数据的data部分的大小大于8字节,则元数据的data部分会存放在存放data的区域,vaddr会指向存放data的区域中元数据的data部分对应的位置。可以理解的是,根据type与count可以计算得到data的大小(size)。
示例性地,图1示出了元数据缓冲区和元数据的示意图。如图1示出了元缓冲区(metabuffer)存放了多个元数据。元缓冲区(metabuffer)参见后续术语解释。多个元数据例如图1中的entry1和data1构成的元数据1,图1中的entry2和data2构成的元数据2,图1中的entry3和data3构成的元数据3,图1中的entry4和data4构成的元数据4等元数据。如图1所示,元数据1的entry1中包含tag1、type1、count1和vaddr1。由于元数据1的data部分(或data1)的大小大于8字节,则data1会存放在存放data的区域,vaddr1会指向存放data的区域中data1对应的位置。元数据3的entry3中包含tag3、type3、count3和vaddr3。由于元数据3的data部分(或data3)的大小小于或等于8字节,则data3和entry3一起存放在存放entry的区域,vaddr3会指向存放entry的区域中entry3自身或指向entry3中data3的位置。
元数据可以是有效的元数据,也可以是无效的元数据。
有效的元数据是指data部分不为空(null)的元数据。由于有效的元数据的data部分不为空,因此,有效的元数据的vaddr部分也不为空。
无效的元数据是指data部分为空的元数据。由于无效的元数据的data部分为空,因此,无效的元数据的vaddr部分也为空。
6、metabuffer:可以称为元数据缓冲区。
metabuffer中可以包括存放元数据的结构体(entry)的区域和存放元数据的数据(data)的区域。元数据缓冲区可以参见图1所示。
7、input metabuffer:可以称为输入元数据缓冲区。输入元数据缓冲区与一个或多个管线对应。输入元数据缓冲区用于存放对应管线所需的预设的多个元数据,以便对应管线从输入元数据缓冲区充获取所需的元数据对待处理数据进行处理。
8、output metabuffer:可以称为输出元数据缓冲区。输出元数据缓冲区用于存放管线对待处理数据进行处理时所输出的元数据。一个输出元数据缓冲区与一个管线对应。输出元数据缓冲区中包含对应管线的输入元数据缓冲区所包含的预设的多个元数据中各元数据的tag,各tag对应的type、count、vaddr和data均为空,以便于管线对待处理数据进行处理时基于tag将管线输出的元数据写入对应位置。
9、camera id:可以称为虚拟摄像头标识。例如,在多摄场景下,可以将多个摄像头虚拟成一个虚拟摄像头标识,当然也可以是一个摄像头对应一个虚拟摄像头标识。若虚拟摄像头标识为多个摄像头虚拟而成,则该虚拟摄像头标识中可以包含与相机应用的缩放倍率关联的摄像头的标识。
10、framework result meta:可以称为框架结果元数据。在本申请实施例中,框架结果元数据可以理解为应用框架层对所获得的元数据进行处理后向应用层传输的元数据。
11、部分术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a--c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
需要说明的是,本申请实施例中的“在……时”,可以为在某种情况发生的瞬时,也可以为在某种情况发生后的一段时间内,本申请实施例对此不作具体限定。此外,本申请实施例提供的显示界面仅作为示例,显示界面还可以包括更多或更少的内容。
12、电子设备
本申请实施例的电子设备可以包括具有图像处理功能的手持式设备、车载设备等。例如,一些电子设备为:手机(mobile phone)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(publicland mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
作为示例而非限定,在本申请实施例中,该电子设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如助听器、眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
此外,在本申请实施例中,电子设备还可以是物联网(internet of things,IoT)系统中的电子设备,IoT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。
本申请实施例中的电子设备也可以称为:用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置等。
在本申请实施例中,电子设备或各个网络设备包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括中央处理器(centralprocessing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。该操作系统可以是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
为了能够更好地理解本申请实施例,下面结合图1和图2对本申请实施例的电子设备的结构进行介绍:
图2示出了电子设备100的结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器可以在多摄场景下对电子设备的多个摄像头采集的图像分别进行处理。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图3是本申请实施例的电子设备100的软件相关框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用层,应用程序框架层(framework),硬件抽象层(hardware abstraction layer,HAL),内核驱动层以及硬件层。其中,应用程序框架层(framework)可以简称为应用框架层或FWK。
应用层可以包括一系列应用程序包。
应用程序包可以包括如图3所示的相机,图库,日历,电话,地图,导航,WLAN,蓝牙,音乐,视频,信息等应用程序。
应用框架层为应用层的应用程序提供应用编程接口(application programminginterface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图3所示,应用框架层可以包括相机访问接口,窗口管理器。
相机访问接口用于建立相机应用分别与相机管理和摄像头的通信通道,可以实现在多摄场景下相机应用对相机应用的缩放倍率所关联摄像头对应管线的元数据进行读取。相机访问接口可以包括Java本地接口(java native interface,JNI接口)。通过使用Java接口书写程序,可以使代码在不同的平台上方便移植。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
硬件抽象层可以包含摄像头模块、相机算法库和相机服务层(camera servicelevel,CSL)。摄像头模块包括至少一个管线。相机算法库中包含与摄像头模块的管线对应的算法,算法包括图像算法。管线可以包括传感器节点、图像信号处理节点、数字信号处理节点。相机服务层用于硬件抽象层与内核驱动层之间的数据交互。相机服务层为硬件抽象层与内核驱动层之间的交互提供接口。
内核驱动层是硬件和软件之间的层。内核驱动层至少包含摄像头驱动,数字信号处理器驱动,图像处理器驱动。内核驱动层可以采用视频设备的内核驱动框架(Video forlinux2,V4L2),以便于对诸如摄像头传感器之类的相机设备进行读写。
硬件层包括至少一个摄像头传感器、图像信号处理器、数字信号处理器、图像处理器。
电子设备的多摄功能使得用户采用电子设备拍照时得到色彩鲜明、轮廓清清晰、虚化效果好的照片,提升了用户的拍摄体验。
但是,在多摄场景下,当用户切换缩放倍率导致摄像头发生切换时,容易出现相机应用闪退的现象。
示例性地,图4示出了可能的实现方式中相机应用闪退的场景图。如图4中的a所示,在相机应用打开的情况下,电子设备可以显示图4中的a所示的界面。如图4中的a所示的界面,该界面包括控件401、控件402、控件403和控件404。其中,控件401可以用于广角切换。控件402可以用于切换缩放倍率为1×。控件403可以用于切换缩放倍率为3×。控件404可以用于切换缩放倍率为5×。在图4中a所示界面中,控件402高亮显示,表示电子设备使用的缩放倍率为1×。在如图4中的a所示的界面上,可以对控件401进行点击操作以将缩放倍率切换为广角模式的缩放倍率。若对控件401进行点击操作,相机应用闪退,电子设备显示图4中的b所示的系统应用桌面。在电子设备显示图4中的b所示的界面上,用户若需进行拍照,则需进行打开相机应用的操作以打开相机应用,用户体验感较差。
这是因为,为实现电子设备的多摄功能,一些电子设备具有一个主摄摄像头和至少一个辅摄摄像头。辅摄摄像头可以是广角摄像头,也可以是实现其他辅摄功能的摄像头。
下面以电子设备具有摄像头0和摄像头1,其中,摄像头0为主摄摄像头,摄像头1为辅摄摄像头,且摄像头1为广角摄像头为例,对本申请实施例提供的多摄功能实现原理进行说明。
图5示出了本申请实施例提供的一种模块交互流程图。
如图5所示,电子设备的物理相机包括摄像头0和摄像头1,其中,摄像头0对应摄像头驱动0,摄像头1对应摄像头驱动1。HAL层包括实时管线0、实时管线1和脱机管线。
其中,实时管线0用于处理摄像头驱动0传输的图像数据。实时管线1用于处理摄像头驱动1传输的图像数据。脱机管线用于进一步处理实时管线0或实时管线1输出的数据,并可以向应用框架层传输相机应用的缩放倍率关联的摄像头对应的实时管线相关的元数据。应理解,摄像头驱动0用于向摄像头0下发配置参数并传输摄像头0采集的图像数据,摄像头驱动1用于向摄像头1下发配置参数并传输摄像头1采集的图像数据。
在本申请实施例中,相机应用的缩放倍率可以理解为电子设备显示的缩放倍率或电子设备使用的缩放倍率。电子设备显示的缩放倍率在后文中可以简称为电子设备的缩放倍率。
在多摄场景下,电子设备的摄像头0和摄像头1均处于开启状态,摄像头0和摄像头1均可以采集图像,这是因为,多摄场景中,用户可能选择任一个摄像头对应的功能,为快速响应用户需求,使得摄像头之间能够尽快实现切换,所以要保持多个摄像头均采集图像的方式,用户选了那种功能则使用该功能对应的摄像头采集的图像进行预览显示或照片生成。
示例性的,电子设备具体采用哪个摄像头采集的图像实现预览显示或拍照可以与电子设备中相机应用的缩放倍率有关。例如缩放倍率1×与摄像头0对应,当缩放倍率为1×时,电子设备中虽然摄像头0和摄像头1均在采集图像,但是,电子设备采用摄像头0采集的图像实现预览显示或照片生成,摄像头1采集的图像不用于预览显示或照片生成。或例如,广角模式的缩放倍率0.5×与摄像头1对应,当缩放倍率为0.5×时,电子设备中虽然摄像头0和摄像头1均在采集图像,但是,电子设备采用摄像头1采集的图像实现预览显示或照片生成,摄像头0采集的图像不用于预览显示或照片生成。
下面结合图5,对相机应用获取电子设备显示预览图像所需的元数据的过程进行说明。
如图5所示,相机应用可以指示应用框架层传输显示预览图像所需的元数据。应用框架层指示HAL层向应用框架层传输显示预览图像所需的元数据。HAL层向应用框架层传输电子设备相机应用的缩放倍率所关联摄像头对应管线的元数据。相机应用可以通过应用框架层的接口读取HAL层所传输的元数据,以实现预览图像的显示。
示例性地,若电子设备的缩放倍率为1×,缩放倍率为1×对应的摄像头为摄像头0,则HAL层的脱机管线可以对实时管线0对应摄像头采集的图像进一步做处理,该处理过程包括对实时管线0对应摄像头采集的图像的图像处理和元数据合并两个阶段。其中,元数据合并阶段为:脱机管线完成对摄像头0对应摄像头采集的图像的进一步处理时,脱机管线判断摄像头是否切换,若没有切换,则脱机管线判断脱机管线的输入元数据缓冲区的元数据是否有效,并将脱机管线的输入元数据缓冲区的有效元数据合并在脱机管线的输出元数据缓冲区中。其中,脱机管线的输入元数据缓冲区引用的是实时管线0的输出元数据缓冲区,所以脱机管线的输入元数据缓冲区中存储的是实时管线0的输出元数据缓冲区的元数据。进一步的,HAL层向FWK层上报脱机管线的输出元数据缓冲区的元数据,以实现对缩放倍率1×对应管线的元数据的上报。该过程中,虽然摄像头1也在采集数据,摄像头1也对应有实时管线1,脱机管线不对实时管线1对应的摄像头1采集的图像进一步做处理。
在一种场景中,在脱机管线对实时管线0对应摄像头采集的图像的图像处理和元数据合并的过程中,用户更新缩放倍率,例如用户将相机应用的缩放倍率切换为0.5×,由于脱机管线的输入元数据缓冲区仍然保持对实时管线0的输出元数据缓冲区的引用,因此,脱机管线仍判断脱机管线的输入元数据缓冲区的元数据是否有效,却基于脱机管线的输入元数据缓冲区中有效的元数据的标识,将缩放倍率0.5×对应摄像头1的实时管线1的输出元数据缓冲区中对应的元数据合并在脱机管线的输出元数据缓冲区中。进一步的,HAL层向FWK层上报脱机管线的输出元数据缓冲区的元数据,以实现对电子设备的缩放倍率切换为0.5×关联管线的元数据的上报。
然而,在脱机管线的输入元数据缓冲区仍然保持对实时管线0的输出元数据缓冲区的引用的情况下,将缩放倍率0.5×对应的实时管线1的输出元数据缓冲区中对应的元数据合并在脱机管线的输出元数据缓冲区中时,并未对实时管线1的输出元数据缓冲区中对应的元数据的有效性进行判断,这会导致HAL层向FWK层上报的缩放倍率切换0.5×关联管线的元数据中存在无效的元数据,进一步会使得相机应用因为读取到HAL层所传输的无效元数据时报错而崩溃,出现相机应用闪退的现象。
有鉴于此,本申请实施例提供一种多摄场景中的控制方法,电子设备可以在确定摄像头发生切换时,在存在判断切换前的摄像头对应的实时管线的输出元数据缓冲区中的元数据的有效性的情况下,还对切换后的摄像头对应的实时管线的输出元数据缓冲区中的元数据进行有效性判断,从而可以实现以向应用框架层传输有效的元数据,减少无效的元数据被传输到应用框架层的发生概率,进而减少相机应用闪退的发生概率,提升用户体验感。
图6示出了本申请实施例提供一种软件架构的交互流程图。
如图6所示,相机应用可以向应用框架层(framework)传输循环请求(repeatingrequest)。应用框架层的线程循环(thread loop)可以获取循环请求(repeating request)中的参数。应用框架层可以基于thread loop获取的参数生成捕获请求(capture request)模板。应用框架层按预设的帧率获得捕获请求(capture request)模板并向捕获请求模板中写入一个帧号(frame number)。每向捕获请求模板写入一个帧号,即得到一个帧号对应的捕获请求。应用框架层向HAL层传输所获得的捕获请求。
捕获请求中包含了与HAL层的相机模块中各管线对应的输入元数据缓冲区和输出元数据缓冲区。例如,捕获请求中包含实时管线0对应的输入元数据缓冲区0和输出元数据缓冲区0,实时管线1对应的输入元数据缓冲区1和输出元数据缓冲区1以及脱机管线对应的输出元数据缓冲区2。可选地,输入元数据缓冲区0与输入元数据缓冲区1可以是同一个输入元数据缓冲区。
输入元数据缓冲区0中可以包含相机模块执行实时管线0所需的预设的多个元数据,以及相机模块执行脱机管线所需的预设的多个元数据。输入元数据缓冲区1中可以包含相机模块执行实时管线1所需的预设的多个元数据,以及相机模块执行脱机管线所需的预设的多个元数据。输入元数据缓冲区0和输入元数据缓冲区1中包含的多个元数据均为有效的元数据。输出元数据缓冲区0、输出元数据缓冲区1和输出元数据缓冲区2中均包含输入元数据缓冲区0和输入元数据缓冲区1所包含的预设的多个元数据中各元数据的tag,各tag对应的type、count、vaddr和data均为空,以便于后续执行对应的管线时基于tag将管线输出的元数据写入对应位置。
在HAL层接收到捕获请求时,HAL层中的实时管线0和实时管线1被同时启动。
实时管线0对数据的处理包括对图像数据的图像处理阶段和输入元数据缓冲区与输出元数据缓冲区的元数据合并阶段。
其中,实时管线0的图像处理阶段包括:实时管线0可以从输入元数据缓冲区0获取预设的元数据,并采用所获取的元数据对摄像头0采集的图像数据进行处理,并将实时管线0输出的元数据写入输出元数据缓冲区0,还将处理后得到的图像数据写入存放图像数据的图像缓冲区。图像缓冲区可以是随着其他请求由应用框架层向HAL层下发的。
实时管线0可以包括多个处理节点。以实时管线包括传感器节点(sensor node)、ISP节点和算法处理节点为例,对实时管线0的图像处理阶段进行说明。
示例性地,参见图6中示出的实时管线0的处理过程,实时管线0被启动时,传感器节点从输入元数据缓冲区0获取曝光时间等参数并对所获取的参数进行处理,得到摄像头0的配置参数。传感器节点向摄像头驱动0传输摄像头0的配置参数。摄像头驱动0向摄像头0下发摄像头0的配置参数。摄像头驱动0向传感器节点传输摄像头0采集的图像。例如,摄像头驱动0向传感器节点传输摄像头0采集的一帧图像。传感器节点对摄像头0采集的图像进行处理,得到第一图像数据和与第一图像数据相关的元数据。与第一图像数据相关的元数据例如描述第一图像数据的数据。与第一图像数据相关的元数据可以是第一图像数据的格式,也可以是第一图像数据的大小。传感器节点向输出元数据缓冲区0写入与第一图像数据相关的元数据,并向ISP节点传输第一图像数据。
ISP节点从输入元数据缓冲区0获取处理第一图像数据所需的元数据,并采用所获取的元数据对第一图像数据进行处理,得到第二图像数据和与第二图像数据相关的元数据。与第二图像数据相关的元数据例如描述第二图像数据的数据。ISP节点向输出元数据缓冲区0写入与第二图像数据相关的元数据,并向算法处理节点传输第二图像数据。
算法处理节点从输入元数据缓冲区0获取处理第二图像数据所需的元数据,并采用所获取的元数据对第二图像数据进行处理,得到第三图像数据和与第三图像数据相关的元数据。与第三图像数据相关的元数据例如描述第三图像数据的数据。算法处理节点向输出元数据缓冲区0写入与第三图像数据相关的元数据,并向图像缓冲区写入第三图像数据。与第三图像数据相关的元数据即实时管线0的目标缓存内容(target buffer)
实时管线0完成对摄像头0采集的图像数据的处理时,实时管线0进行输入元数据缓冲区与输出元数据缓冲区的元数据合并,以将输入元数据缓冲区0中有效的元数据合并到输出元数据缓冲区0。
示例性地,实时管线0完成对摄像头0采集的图像数据的处理时,实时管线0遍历输入元数据缓冲区0中的元数据并对每一个元数据的有效性进行判断。例如,实时管线0每遍历到一个元数据就获取该一个元数据的tag。实时管线0判断在输入元数据缓冲区0中该tag对应元数据的vaddr是否为空。若不为空,表示该tag对应元数据在输入元数据缓冲区0中有效,则基于该tag判断在输出元数据缓冲区0中该tag对应元数据的vaddr是否为空,若为空,则从输入元数据缓冲区0中拷贝该tag对应的有效元数据并赋值到输出元数据缓冲区0,使得在输出元数据缓冲区0中该tag对应元数据是有效的。可以理解的是,元数据的vaddr不为空,表示元数据的data部分不为空。元数据的vaddr为空,表示元数据的data部分为空。
若实时管线0判断在输入元数据缓冲区0中该tag对应元数据的vaddr为空,表示该tag对应的元数据在输入元数据缓冲区0中无效,则继续遍历获得下一个元数据的tag。
这样,可以实现将输入元数据缓冲区0中有效的元数据合并到输出元数据缓冲区0,可以减少将无效的元数据合并到输出元数据缓冲区0进而被后续传输给应用框架层的发生概率,可以减少后续相机应用从应用框架层读取到无效的元数据而闪退的发生概率。
可以理解的是,实时管线1对数据的处理包括对图像数据的图像处理阶段和输入元数据缓冲区与输出元数据缓冲区的元数据合并阶段。实时管线1对数据的处理的具体实现与实时管线0对数据的处理的具体实现类似,此处不再赘述。
在实时管线0完成元数据合并,且实时管线1完成元数据合并时,相机模块读取第一标志位中的虚拟摄像头标识。所读取的虚拟摄像头标识可以与电子设备的缩放倍率对应。示例性地,HAL层可以基于相机应用下发的表示缩放倍率切换的信息或表示相机应用开启的信息维护第一标志位中的虚拟摄像头标识。其中,表示缩放倍率切换的信息和表示相机应用开启的信息中均可以包含电子设备的缩放倍率和/或虚拟摄像头标识。
基于所读取的虚拟摄像头标识,相机模块可以查找到与电子设备的缩放倍率对应实时管线的输出元数据缓冲区。脱机管线建立脱机管线的输入元数据缓冲区对所查找到的输出元数据缓冲区的引用,实现脱机管线将脱机管线的输入元数据缓冲区所引用的输出元数据缓冲区作为脱机管线的输入元数据缓冲区进行数据处理。脱机管线还建立各摄像头的输出元数据缓冲区之间的相互引用,以在脱机管线进行数据处理时使得各摄像头的输出元数据缓冲区不被释放,减少摄像头切换后从切换后的摄像头的输出元数据缓冲区中获取元数据的耗时。
可以理解的是,在脱机管线完成数据处理并完成向应用框架层上报数据时,脱机管线解除所建立的引用。
在脱机管线保持对一个实时管线的输出元数据缓冲区的引用,且脱机管线还未进行元数据合并的情况下,可能存在摄像头切换的场景,也可能存在摄像头没有切换的场景。
下面以电子设备的缩放倍率为1×,脱机管线的输入元数据缓冲区保持对实时管线0的输出元数据缓冲区(即输出元数据缓冲区0)的引用,继续结合图6分别对摄像头未切换的场景下脱机管线的处理过程和摄像头切换的场景下脱机管线的处理过程进行说明。应理解,在脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用的情况下,输出元数据缓冲区0作为脱机管线的输入元数据缓冲区。
针对摄像头未切换的场景,脱机管线的数据处理如图6中的摄像头未切换情况下的脱机管线处理过程所示,脱机管线可以从输出元数据缓冲区0获取元数据对从图像缓冲区获取的图像数据进行处理,得到第四图像数据和与第四图像数据相关的元数据。与第四图像数据相关的元数据例如描述第四图像数据的数据。脱机管线向输出元数据缓冲区2写入与第四图像数据相关的元数据,并向图像缓冲区写入第四图像数据。脱机管线以脱机管线的输入元数据缓冲区(即输出元数据缓冲区0)中的各元数据的tag作为目标tag,在判断在输出元数据缓冲区0中目标tag对应的元数据有效,且在输出元数据缓冲区2中目标tag对应的元数据无效时,将输出元数据缓冲区0中目标tag对应的元数据合并到输出元数据缓冲区2,以实现在摄像头未切换的场景中将电子设备的缩放倍率1×对应实时管线0的输出元数据缓冲区0中有效的元数据合并到输出元数据缓冲区2。脱机管线完成将输出元数据缓冲区0中有效的元数据合并到输出元数据缓冲区2中的具体实现可以参见后续图8所示实施例,为便于理解,图8所示实施例在后续进行描述。
在脱机管线完成将输出元数据缓冲区0中有效的元数据合并到输出元数据缓冲区2中时,脱机管线向应用框架层传输输出元数据缓冲区2中有效的元数据。相机应用可以通过应用框架层的接口读取脱机管线向应用框架层传输的元数据,以实现预览图像的显示。
这样,可以实现向应用框架层传输与电子设备的缩放倍率对应管线的有效元数据。
针对摄像头切换的场景,以电子设备的缩放倍率从1×切换到0.5×,使得摄像头0切换为摄像头1为例,脱机管线的数据处理如图6中的摄像头切换情况下的脱机管线处理过程所示,脱机管线可以从输出元数据缓冲区0获取元数据对从图像缓冲区获取的图像数据进行处理,得到第五图像数据和与第五图像数据相关的元数据。与第五图像数据相关的元数据例如描述第五图像数据的数据。可选地,第五图像数据可以与第四图像数据相同。脱机管线向输出元数据缓冲区2写入与第五图像数据相关的元数据,并向图像缓冲区写入第五图像数据。
由于在摄像头切换之前,脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用。脱机管线以输出元数据缓冲区0中的各元数据的tag作为目标tag,在判断在输出元数据缓冲区0中目标tag对应的元数据有效,在输出元数据缓冲区1中目标tag对应的元数据有效,且在输出元数据缓冲区2中目标tag对应的元数据无效的情况下,将输出元数据缓冲区1中目标tag对应的元数据合并到输出元数据缓冲区2,以实现将电子设备的缩放倍率0.5×对应实时管线1的输出元数据缓冲区1中有效的元数据合并到输出元数据缓冲区2。脱机管线将输出元数据缓冲区1中有效的元数据合并到输出元数据缓冲区2中的具体实现可以参见后续图7所示实施例,为便于理解,图7所示实施例在后续进行描述。
在完成将输出元数据缓冲区1中有效的元数据合并到输出元数据缓冲区2中时,脱机管线向应用框架层传输输出元数据缓冲区2中有效的元数据。相机应用可以通过应用框架层的接口读取脱机管线向应用框架层传输的元数据,以实现图像的显示。
示例性地,脱机管线可以采用拷贝内存内容(memcpy)的方式将输出元数据缓冲区1中有效的元数据赋值到输出元数据缓冲区2中,以实现输出元数据缓冲区1中有效的元数据合并到输出元数据缓冲区2中。
这样,可以实现向应用框架层传输的元数据均为有效的元数据,且在摄像头切换的场景下,向应用框架层传输的元数据是与电子设备的缩放倍率对应管线的元数据。
图7示出了本申请实施例提供的一种合并流程图。仍以脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用的情况下电子设备使用的摄像头从摄像头0切换到摄像头1为例,结合图7对脱机管线进行元数据合并的方式进行说明。
如图7所示,在摄像头切换的情况下,脱机管线进行元数据合并的方式包括:
S701、脱机管线开始执行合并流程。
S702、脱机管线判断摄像头是否切换。
若是,则执行步骤S703。
若否,则执行图8实施例中的步骤S803。为便于理解,图8实施例在后续进行描述。
示例性地,脱机管线从第一标志位中读取虚拟摄像头标识。由于虚拟摄像头标识与电子设备的缩放倍率关联的摄像头的摄像头标识对应。因此,脱机管线可以得到所读取的虚拟摄像头标识对应的摄像头标识。可以理解的是,摄像头标识为物理摄像头的标识。脱机管线判断所读取的虚拟摄像头标识对应的摄像头标识与上一次读取的虚拟摄像头标识对应的摄像头标识是否不相同。脱机管线上一次读取的虚拟摄像头标识可以理解为脱机管线建立脱机管线的输入元数据缓冲区对输出元数据缓冲区0的引用时读取的虚拟摄像头标识。
若是,则执行步骤S703。
若否,则执行图8实施例中的步骤S803。
判断所读取的虚拟摄像头标识与上一次读取的虚拟摄像头标识是否不相同的伪代码可以为:If previous master id!=new master id,其中,previous master id表示上一次读取的虚拟摄像头标识,new master id表示所读取的虚拟摄像头标识。
S703、脱机管线对脱机管线的输入元数据缓冲区的元数据的有效性进行判断。
可以理解的是,脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用。脱机管线的输入元数据缓冲区即输出元数据缓冲区0。虽然实时管线0从输入元数据缓冲区0中合并到输出元数据缓冲区0中的元数据均是有效的,但由于输出元数据缓冲区0本身包含了输入元数据缓冲区0和输入元数据缓冲区1所包含的预设的多个元数据中各元数据的tag,且各tag对应的type、count、vaddr和data均为空,也就是说若输出元数据缓冲区0本身包含的元数据的type、count、vaddr和data在实时管线0处理图像数据时没有被写入值,则该元数据仍为无效的元数据。因此,基于摄像头未切换时需判断脱机管线的输入元数据缓冲区中各元数据有效性的逻辑,本步骤仍与图8中S803所示出的摄像头未切换情况下在对脱机管线的输入元数据缓冲区的元数据的有效性进行判断的步骤保持一致。
示例性地,脱机管线采用遍历的方式,每判断出脱机管线的输入元数据缓冲区(即输出元数据缓冲区0)中的一个元数据有效,则执行步骤S704,每判断出输出元数据缓冲区0中的一个元数据无效,则重复执行步骤S703。
示例性地,脱机管线每遍历到一个元数据,则获得该元数据的tag,并判断该元数据的vaddr是否为空(null)。
若该元数据的vaddr为不为空,则脱机管线判断输出元数据缓冲区0中该元数据是有效的,脱机管线采用该元数据的tag执行步骤S704。该元数据的vaddr不为空,表示该元数据的data部分不为空。
若该元数据的vaddr为空,则脱机管线判断输出元数据缓冲区0中该元数据是无效的,脱机管线判断该元数据之后是否存在另一个元数据。该元数据的vaddr为空,表示该元数据的data部分为空。
若该元数据的vaddr不为空,脱机管线还判断该元数据之后是否存在另一个元数据。若存在,则获得该另一个元数据的tag,并判断该另一个元数据的vaddr是否为空(null),以重复执行S703。若不存在,则执行步骤S709。
若该元数据的vaddr为空,则脱机管线也判断该元数据之后是否存在另一个元数据。
S704、脱机管线基于步骤S703获得的元数据的tag,判断脱机管线的输出元数据缓冲区2中该tag对应的元数据是否无效。
若无效,则执行步骤S705。
若有效,则执行步骤S703。
示例性地,脱机管线判断在输出元数据缓冲区2中,该tag对应元数据的vaddr是否为空(null)。
若为空,则执行步骤S705。
若不为空,则执行步骤S703。
可以理解的是,相机模块从步骤S703中每获得的一个tag,则执行一次步骤S704。
S705、脱机管线基于输出元数据缓冲区0与输出元数据缓冲区1的引用关系中查到到输出元数据缓冲区1。
在实时管线0和实时管线1被启动时,输出元数据缓冲区0与输出元数据缓冲区1之间建立有引用关系,以便脱机管线在向应用框架层传输元数据之前根据需要从输出元数据缓冲区0和/或输出元数据缓冲区1中获取元数据。
若摄像头发生切换,则表示摄像头已经从输出元数据缓冲区0对应的摄像头切换为与输出元数据缓冲区0有引用关系的输出元数据缓冲区1对应的摄像头1,也就表示电子设备使用的缩放倍率关联的摄像头为摄像头1,因此,需要将电子设备使用的缩放倍率1对应实时管线1相关的元数据提供给相机应用,实现图像的显示与电子设备使用的缩放倍率保持一致。
S706、脱机管线基于步骤S703获得的元数据的tag,判断输出元数据缓冲区1中该tag对应的元数据是否有效。
若是,则执行步骤S707。
若否,则执行步骤S703。
示例性地,脱机管线判断在输出元数据缓冲区1中,该tag对应元数据的vaddr是否为空(null)。
若不为空,则执行步骤S707。
若为空,则执行步骤S703。
可以理解的是,脱机管线从步骤S703中每获得的一个tag,则执行一次步骤S706。
S707、脱机管线从输出元数据缓冲区1中获取该tag对应的元数据。
示例性地,脱机管线从输出元数据缓冲区1中拷贝该tag对应的元数据。
S708、脱机管线将获取的该tag对应的元数据赋值给输出元数据缓冲区2,使得在输出元数据缓冲区2中该tag对应元数据的vaddr不为空。
S709、脱机管线对应的合并流程结束。
在本实施例中,若取消步骤S706,则出现在判断元数据在输出元数据缓冲区0中有效,在输出元数据缓冲区2中无效的情况下,直接从电子设的缩放倍率1对应输出元数据缓冲区1中拷贝该元数据并赋值到输出元数据缓冲区2。虽然可以实现向相机应用提供电子设备的缩放倍率对应实时管线的元数据,但可能存在该元数据在输出元数据缓冲区1中是无效的。由于该元数据在输出元数据缓冲区1中无效,即在输出元数据缓冲区1中该元数据的data部分为空。该无效的元数据被拷贝赋值到输出元数据缓冲区2,在输出元数据缓冲区2中该元数据的vaddr会指向存放该元数据的data部分的位置,虽然使得在输出元数据缓冲区2中该元数据的vaddr不为空,但在输出元数据缓冲区2中该元数据的vaddr指向的位置处仍为空。由于在输出元数据缓冲区2中该元数据的vaddr指向的位置处为空,在输出元数据缓冲区2中该元数据的count为0。输出元数据缓冲区2中的该元数据被传输给应用框架层,当相机应用通过应用框架层的接口(API)读取该元数据时会读取到一个长度为0的缓存(buffer)。相机应用从长度为0的buffer中获取该元数据的类型变量时出现报错(buffer underflow exception),导致相机应用闪退。
因此,如本实施例所示,在脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用且摄像头发生切换的情况下,在判断元数据在输出元数据缓冲区0中有效,在输出元数据缓冲区2中无效的情况下,还判断该元数据在输出元数据缓冲区1中是否有效,只有当该元数据在输出元数据缓冲区0和输出元数据缓冲区1中均有效时,才从输出元数据缓冲区1中将该元数据拷贝赋值到输出元数据缓冲区2,减少输出元数据缓冲区1中无效的元数据被拷贝赋值到输出元数据缓冲区2的发生概率,进而减少无效的元数据被相机应用读取导致相机应用闪退的发生概率。在判断元数据在输出元数据缓冲区2中无效时才将输出元数据缓冲区1中对应有效的元数据拷贝赋值到输出元数据缓冲区2,可以减少功耗。
示例性地,在本实施例中,在摄像头发生切换的情况下,可以使用代码if((TRUE==rSrcContent.IsValid())&&(TRUE==rMasterSrcContent.IsValid())&&(FALSE==rDstContent.IsValid())),实现判断待赋值到输出元数据缓冲区2中的元数据是否满足:在输出元数据缓冲区0中有效,在输出元数据缓冲区1中有效,在输出元数据缓冲区2中无效。
其中,TRUE==rSrcContent.IsValid()表示目标元数据在脱机管线的输入元数据缓冲区所引用的输出元数据缓冲区中是有效的。目标元数据为待赋值到脱机管线的输出元数据缓冲区的元数据。&&表示和(或且)。TRUE==rMasterSrcContent.IsValid()表示目标元数据在脱机管线的输入元数据缓冲区引用的输出元数据缓冲区所引用的输出元数据缓冲区中是有效的。FALSE==rDstContent.IsValid())表示目标元数据在脱机管线的输出元数据缓冲区中是无效的。
图8示出了本申请实施例提供的一种合并流程图。仍以脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用的情况下电子设备使用的摄像头没有切换,电子设备的缩放倍率仍为0.5×为例,结合图8对脱机管线进行元数据合并的方式进行说明。图8中的S801-S804的具体实现原理与图7中的S701-S704的具体实现原理类似,图8中的S805-S806的具体实现原理与图7中的S708-S709的具体实现原理类似。图8与图7的区别在于,图8中不包含步骤S705-S707。
如图8所示,在摄像头未切换的情况下,脱机管线将输出元数据缓冲区0中有效的元数据合并到输出元数据缓冲区2中的方式包括:
S801、脱机管线开始执行该合并流程。
S802、脱机管线判断摄像头是否切换。
若否,则执行步骤S803。
若是,则执行图7实施例中的步骤S703。
脱机管线判断摄像头是否切换是具体实现原理参见图7中的S702所示,此处不再赘述。
S803、脱机管线对脱机管线的输入元数据缓冲区的元数据的有效性进行判断。
可以理解的是,脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用。脱机管线的输入元数据缓冲区即输出元数据缓冲区0。虽然实时管线0从输入元数据缓冲区0中合并到输出元数据缓冲区0中的元数据均是有效的,但由于输出元数据缓冲区0本身包含了输入元数据缓冲区0和输入元数据缓冲区1所包含的预设的多个元数据中各元数据的tag,且各tag对应的type、count、vaddr和data均为空,也就是说若输出元数据缓冲区0本身包含的元数据的type、count、vaddr和data在实时管线0处理图像数据时没有被写入值,则该元数据仍为无效的元数据。因此,在将输出元数据缓冲区0中的元数据合并到输出元数据缓冲区2之前,有必要对待合并入输出元数据缓冲区2的元数据的有效性进行判断。
示例性地,脱机管线采用遍历的方式,每判断出输出元数据缓冲区0中的一个元数据有效,则执行步骤S804,每判断出输出元数据缓冲区0中的一个元数据无效,则重复执行步骤S803。
示例性地,脱机管线每遍历到一个元数据,则获得该元数据的tag,并判断该元数据的vaddr是否为空(null)。
若该元数据的vaddr为不为空,则脱机管线采用该元数据的tag执行步骤S804。
若该元数据的vaddr为空,则脱机管线判断该元数据之后是否存在另一个元数据。
若该元数据的vaddr不为空,脱机管线还判断该元数据之后是否存在另一个元数据。若存在,则获得该另一个元数据的tag,并判断该另一个元数据的vaddr是否为空(null),以重复执行S803。若不存在,则执行步骤S806。
若该元数据的vaddr为空,则脱机管线也判断该元数据之后是否存在另一个元数据。
S804、脱机管线基于步骤S803获得的元数据的tag,判断脱机管线的输出元数据缓冲区2中该tag对应的元数据是否无效。
若无效,则执行步骤S805。
若有效,则执行步骤S803。
示例性地,脱机管线判断在输出元数据缓冲区2中,该tag对应元数据的vaddr是否为空(null)。
若为空,则执行步骤S805。
若不为空,则执行步骤S803。
可以理解的是,脱机管线从步骤S803中每获得的一个tag,则执行一次步骤S804。
S805、脱机管线从输出元数据缓冲区0中拷贝该tag对应的元数据并赋值给输出元数据缓冲区2,使得在输出元数据缓冲区2中该tag对应元数据的vaddr不为空。
S806、脱机管线对应的合并流程结束。
如本实施例所示,在脱机管线的输入元数据缓冲区保持对输出元数据缓冲区0的引用且摄像头没有发生切换的情况下,在判断元数据在输出元数据缓冲区0中有效,在输出元数据缓冲区2中无效时,将该元数据拷贝赋值到输出元数据缓冲区2,减少输出元数据缓冲区0中无效的元数据被拷贝赋值到输出元数据缓冲区2的发生概率,进而减少无效的元数据被相机应用读取导致相机应用闪退的发生概率,在判断元数据在输出元数据缓冲区2中无效时才将输出元数据缓冲区0中对应有效的元数据拷贝赋值到输出元数据缓冲区2,可以减少多个相同的元数据在输出元数据缓冲区2中占用较多内存的发生概率,进而可以减少输出元数据缓冲区2的内存不足的发生概率。
可以理解的是,各软件框架层中执行本申请实施例方法的执行主体均可以称为相机模块。
示例性地,图9示出了本申请实施例提供的摄像头切换的场景图。如图9中的a所示,在相机应用打开的情况下,电子设备可以显示图9中的a所示的界面。图9中的a所示的界面的内容可以参见图4中的a所示界面的内容,此处不再赘述。在如图9中的a所示的界面上,可以对控件401进行点击操作以将缩放倍率切换为广角模式的缩放倍率。若对控件401进行点击操作,相机应用不会闪退,电子设备显示图9中的b所示的界面。图9中的b所示界面的内容参见图9中的a所示界面的内容。图9中b所示界面与图9中的a所示界面的区别在于,在图9中b所示界面中,控件401高亮显示,表示电子设备使用的缩放倍率为广角模式的缩放倍率。
从图9可知,电子设备采用本申请实施例提供的多摄场景中的控制方法,在缩放倍率切换导致摄像头切换的场景下,相机应用不会闪退,可以提高用户体验感。
下面再结合部分实施例对本申请实施例提出的多摄场景中的控制方法进行说明。
本申请实施例提出一种多摄场景中的控制方法,该方法可以包括:电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换。在脱机管线确定摄像头发生切换的情况下,脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效。第一实时管线为管理切换之后的摄像头所采集图像的管线。将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区,第一实时管线的输出元数据缓冲区中的无效元数据未合并在脱机管线的输出元数据缓冲区。
其中,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换可以理解为脱机管线判断相机应用的缩放倍率关联的摄像头是否发生切换。第一实时管线可以是本申请实施例中的实时管线1。第一实时管线的输出元数据缓冲区可以是本申请实施例中的输出元数据缓冲区1。脱机管线的输出元数据缓冲区可以是本申请实施例中的输出元数据缓冲区2。
示例性地,参照图7实施例中步骤S702所示的实现原理,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换。在脱机管线确定摄像头发生切换的情况下,脱机管线可以从第一实时管线的输出元数据缓冲区中的元数据中获取第一实时管线的输出元数据缓冲区中的各元数据的索引(如tag),并基于所获取的索引判断第一实时管线的输出元数据缓冲区中的元数据是否有效。脱机管线将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区。其中,基于所获取的索引判断第一实时管线的输出元数据缓冲区中的元数据是否有效的具体实现原理参照图7实施例中步骤S706所示具体实现原理。脱机管线将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区的具体实现原理可以参照图7实施例中步骤S707和S708所示的实现原理。
这样,在脱机管线确定摄像头发生切换的情况下,可以减少第一实时管线的输出元数据缓冲区中的无效元数据被合并到脱机管线的输出元数据缓冲区的发生概率,进而可以减少相机应用因读取到无效的元数据而闪退的发生概率。
可选地,脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效,包括:脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据,第二实时管线为摄像头切换之前,用于管理切换前摄像头所采集图像的管线。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第一目标元数据是否有效。第一目标元数据为:在第一实时管线的输出元数据缓冲区中,与第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据。将第一实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区,包括:在第一目标元数据有效的情况下,将第一目标元数据合并在脱机管线的输出元数据缓冲区。
其中,第二实时管线可以是本申请实施例中的实时管线0。第二实时管线的输出元数据缓冲区可以是本申请实施例中的输出元数据缓冲区0。索引可以是本申请实施例中的tag。
示例性地,脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据的具体实现原理可以参见图7实施例中S703的具体实现原理。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第一目标元数据是否有效的具体实现原理可以参见图7本申请实施例中S705-S706的具体实现原理。可以理解的是,第一目标元数据可以是在输出元数据缓冲区0中上述实施例中的目标tag对应的元数据。
这样,在脱机管线确定摄像头发生切换的情况下,可以通过切换前摄像头对应的第二实时管线中元数据的索引,对切换后摄像头对应第一实时管线的输出元数据缓冲区中的元数据的有效性进行判断,可以实现将第一实时管线的输出元数据缓冲区中的有效元数据合并到脱机管线的输出元数据缓冲区,避免第一实时管线的输出元数据缓冲区中的无效元数据被合并到脱机管线的输出元数据缓冲区,进而被相机应用读取而使得相机应用闪退现象的发生。
可选地,判断第一目标元数据是否有效之前,还包括:在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第二目标元数据是否有效。第二目标元数据为:在脱机管线的输出元数据缓冲区中,与第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据。在第二目标元数据无效的情况下,判断第一目标元数据是否有效。
这样,可以减少电子设备的功耗。其中,在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下判断第二目标元数据是否有效的具体实现方式可以参见图7实施例中S704的描述。第二目标元数据为:在输出元数据缓冲区2中,与输出元数据缓冲区0中的有效元数据的tag相同的元数据。
可选地,在脱机管线完成对第二实时管线的输出元数据缓冲区中全部元数据的有效性判断后,脱机管线向应用程序框架层传输脱机管线的输出元数据缓冲区中的元数据。
这样,可以使得相机应用通过应用程序框架层的接口读取到脱机管线上报的元数据,以实现预览图像的显示或照片生成。
可选地,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换之前,方法还包括:采用第一实时管线的输入元数据缓存区中的图像处理相关参数对第一摄像头采集的图像进行处理,并将处理后的图像的特征描述参数存储在第一实时管线的输出元数据缓存区中,第一摄像头为切换后的摄像头。在第一实时管线处理完一帧图像后,将第一实时管线的输入元数据缓存区中的元数据合并在第一实时管线的输出元数据缓存区中。
其中,第一摄像头可以是实施例中的摄像头1。第一实时管线的输入元数据缓存区可以是实施例中的输入元数据缓存区1。第一实时管线的输入元数据缓存区中的图像处理相关参数可以是实施例中输入元数据缓存区1中的预设的元数据,例如实施例中的曝光时间等参数。处理后的图像的特征描述参数可以是实时管线1在图像处理阶段描述处理后所得到的图像数据的数据。
这样,可以实现对摄像头采集的图像进行处理,以减少后续上层(如应用程序框架层和应用层)的处理量,在第一实时管线处理完一帧图像后,将第一实时管线的输入元数据缓存区中的元数据合并在第一实时管线的输出元数据缓存区中,可以实现通过后续的步骤将第一实时管线的输入元数据缓存区中的元数据上报给应用程序框架层,以便相机应用的读取。
可选地,脱机管线运行在硬件抽象层,采用第一实时管线的输入元数据缓存区中的图像处理相关参数对第一摄像头采集的图像进行处理之前,还包括:脱机管线从应用框架层获取到捕获请求。捕获请求用于指示第一实时管线对第一摄像头采集的图像进行处理。
这样,实现脱机管线每收到一个捕获请求就对摄像头采集的一帧图像进行处理。
可选地,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换之前,方法还包括:采用第二实时管线的输入元数据缓存区中的图像处理相关参数对第二摄像头采集的图像进行处理,并将处理后的图像的特征描述参数存储在第二实时管线的输出元数据缓存区中,第二摄像头为切换前的摄像头。在第二实时管线处理完一帧图像后,将第二实时管线的输入元数据缓存区中的元数据合并在第二实时管线的输出元数据缓存区中。
这样,实现在多摄场景下,电子设备的多个摄像头均处于开启状态,以便在摄像头切换的场景下,脱机管线能从及时从切换后的摄像头对应的实时管线的输出元数据缓冲区中获取元数据,进而可以实时相机应用可以及时读取到切换后的摄像头对应的实时管线的元数据,以对切换后的摄像头采集的图像进行预览显示或照片生成处理。其中,第二摄像头可以是实施例中的摄像头0。第二实时管线的输入元数据缓存区可以是实施例中的输入元数据缓存区0。
可选地,判断电子设备中使用的摄像头是否发生切换,包括:脱机管线判断虚拟摄像头标识是否发生切换。其中,若虚拟摄像头标识发生切换则表示电子设备中使用的摄像头发生切换,若虚拟摄像头标识未发生切换则表示电子设备中使用的摄像头未发生切换。
这样,实现通过对虚拟摄像头标识的判断,实现对摄像头是否切换的判断。其中,脱机管线判断虚拟摄像头标识是否发生切换的具体实现可以参见图7实施例中的S702的描述。
可选地,判断电子设备中使用的摄像头是否发生切换之前,方法还包括:电子设备接收到将相机应用的缩放倍率从第一倍率调整到第二倍率的操作,其中,采集第一倍率的图像时需要采用第二摄像头,采集第二倍率的图像时需要采用第一摄像头。
这样,用户可以通过切换缩放倍率的方式以实现对摄像头的切换,进而在相机应用不因缩放倍率切换而闪退的情况下使得电子设备显示与缩放倍率对应的图像。其中,第一倍率可以是实施例中的缩放倍率1×。第二倍率可以是实施例中的缩放倍率0.5×。
可选地,方法还包括:在脱机管线确定摄像头没有发生切换的情况下,脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第三目标元数据是否有效。第三目标元数据为:在脱机管线的输出元数据缓冲区中,与第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据。在第三目标元数据无效的情况下,将第二实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区。
示例性地,参照图8实施例中步骤S802所示的实现原理,电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换。在脱机管线确定摄像头没有发生切换的情况下,脱机管线可以按照图8实施例中的步骤S803判断第二实时管线的输出元数据缓冲区中是否存在有效元数据。在第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,脱机管线可以按照图8实施例中的步骤S804判断第三目标元数据是否有效。第三目标元数据为:在输出元数据缓冲区2中,与输出元数据缓冲区0中的有效元数据的tag相同的元数据。在第三目标元数据无效的情况下,按照图8实施例中的步骤S805将第二实时管线的输出元数据缓冲区中的有效元数据合并在脱机管线的输出元数据缓冲区。
这样,在脱机管线确定摄像头没有发生切换的情况下,可以减少第二实时管线的输出元数据缓冲区中的无效元数据被合并到脱机管线的输出元数据缓冲区的发生概率,进而可以减少相机应用因读取到无效的元数据而闪退的发生概率。
上面已对本申请实施例的多摄场景中的控制方法进行了说明,下面对本申请实施例提供的执行上述多摄场景中的控制方法的装置进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本申请实施例提供的相关装置可以执行上述多摄场景中的控制方法中的步骤。
本申请实施例提供的多摄场景中的控制方法,可以应用在具备通信功能的电子设备中。电子设备包括终端设备,终端设备的具体设备形态等可以参照上述相关说明,此处不再赘述。
本申请实施例提供一种电子设备,该电子设备包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得电子设备执行上述方法。
本申请实施例提供一种芯片。芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现上述方法。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
一种可能的实现方式中,计算机可读介质可以包括RAM,ROM,只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行上述方法。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (12)
1.一种多摄场景中的控制方法,其特征在于,包括:
电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换;
在所述脱机管线确定摄像头发生切换的情况下,所述脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效;所述第一实时管线为管理切换之后的摄像头所采集图像的管线;
将所述第一实时管线的输出元数据缓冲区中的有效元数据合并在所述脱机管线的输出元数据缓冲区,所述第一实时管线的输出元数据缓冲区中的无效元数据未合并在所述脱机管线的输出元数据缓冲区。
2.根据权利要求1所述的方法,其特征在于,所述脱机管线判断第一实时管线的输出元数据缓冲区中的元数据是否有效,包括:
所述脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据,所述第二实时管线为摄像头切换之前,用于管理切换前摄像头所采集图像的管线;
在所述第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第一目标元数据是否有效;所述第一目标元数据为:在所述第一实时管线的输出元数据缓冲区中,与所述第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据;
所述将所述第一实时管线的输出元数据缓冲区中的有效元数据合并在所述脱机管线的输出元数据缓冲区,包括:
在所述第一目标元数据有效的情况下,将所述第一目标元数据合并在所述脱机管线的输出元数据缓冲区。
3.根据权利要求2所述的方法,其特征在于,所述判断第一目标元数据是否有效之前,还包括:
在所述第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第二目标元数据是否有效;所述第二目标元数据为:在所述脱机管线的输出元数据缓冲区中,与所述第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据;
在所述第二目标元数据无效的情况下,判断第一目标元数据是否有效。
4.根据权利要求2或3所述的方法,其特征在于,在所述脱机管线完成对所述第二实时管线的输出元数据缓冲区中全部元数据的有效性判断后,所述脱机管线向应用程序框架层传输所述脱机管线的输出元数据缓冲区中的元数据。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换之前,所述方法还包括:采用所述第一实时管线的输入元数据缓存区中的图像处理相关参数对第一摄像头采集的图像进行处理,并将处理后的图像的特征描述参数存储在所述第一实时管线的输出元数据缓存区中,所述第一摄像头为所述切换后的摄像头;
在所述第一实时管线处理完一帧图像后,将所述第一实时管线的输入元数据缓存区中的元数据合并在所述第一实时管线的输出元数据缓存区中。
6.根据权利要求5所述的方法,其特征在于,所述脱机管线运行在硬件抽象层,所述采用所述第一实时管线的输入元数据缓存区中的图像处理相关参数对第一摄像头采集的图像进行处理之前,还包括:
所述脱机管线从应用框架层获取到捕获请求;所述捕获请求用于指示所述第一实时管线对所述第一摄像头采集的图像进行处理。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述电子设备中的脱机管线判断电子设备中使用的摄像头是否发生切换之前,所述方法还包括:
采用第二实时管线的输入元数据缓存区中的图像处理相关参数对第二摄像头采集的图像进行处理,并将处理后的图像的特征描述参数存储在所述第二实时管线的输出元数据缓存区中,所述第二摄像头为所述切换前的摄像头;
在所述第二实时管线处理完一帧图像后,将所述第二实时管线的输入元数据缓存区中的元数据合并在所述第二实时管线的输出元数据缓存区中。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述判断电子设备中使用的摄像头是否发生切换,包括:
脱机管线判断虚拟摄像头标识是否发生切换;其中,若所述虚拟摄像头标识发生切换则表示所述电子设备中使用的摄像头发生切换,若所述虚拟摄像头标识未发生切换则表示所述电子设备中使用的摄像头未发生切换。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述判断电子设备中使用的摄像头是否发生切换之前,所述方法还包括:
所述电子设备接收到将相机应用的缩放倍率从第一倍率调整到第二倍率的操作,其中,采集所述第一倍率的图像时需要采用第二摄像头,采集所述第二倍率的图像时需要采用第一摄像头。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
在所述脱机管线确定摄像头没有发生切换的情况下,所述脱机管线判断第二实时管线的输出元数据缓冲区中是否存在有效元数据;
在所述第二实时管线的输出元数据缓冲区中存在有效元数据的情况下,判断第三目标元数据是否有效;所述第三目标元数据为:在所述脱机管线的输出元数据缓冲区中,与所述第二实时管线的输出元数据缓冲区中的有效元数据的索引相同的元数据;
在所述第三目标元数据无效的情况下,将所述第二实时管线的输出元数据缓冲区中的有效元数据合并在所述脱机管线的输出元数据缓冲区。
11.一种电子设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311422170.4A CN117676325A (zh) | 2023-10-27 | 2023-10-27 | 多摄场景中的控制方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311422170.4A CN117676325A (zh) | 2023-10-27 | 2023-10-27 | 多摄场景中的控制方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117676325A true CN117676325A (zh) | 2024-03-08 |
Family
ID=90074231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311422170.4A Pending CN117676325A (zh) | 2023-10-27 | 2023-10-27 | 多摄场景中的控制方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117676325A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110090381A1 (en) * | 2009-10-20 | 2011-04-21 | Apple Inc. | System and method for processing image data using an image processing pipeline of an image signal processor |
US20180091773A1 (en) * | 2016-09-23 | 2018-03-29 | Apple Inc. | Feed-forward and feed-back metadata exchange in image processing pipelines to improve image quality |
CN115379126A (zh) * | 2022-10-27 | 2022-11-22 | 荣耀终端有限公司 | 一种摄像头切换方法及相关电子设备 |
WO2023077939A1 (zh) * | 2021-11-05 | 2023-05-11 | 荣耀终端有限公司 | 摄像头的切换方法、装置、电子设备及存储介质 |
CN116582748A (zh) * | 2022-01-29 | 2023-08-11 | Oppo广东移动通信有限公司 | 电子设备、处理图像数据的方法和装置 |
CN116709021A (zh) * | 2023-02-13 | 2023-09-05 | 荣耀终端有限公司 | 变焦响应方法、电子设备及存储介质 |
-
2023
- 2023-10-27 CN CN202311422170.4A patent/CN117676325A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110090381A1 (en) * | 2009-10-20 | 2011-04-21 | Apple Inc. | System and method for processing image data using an image processing pipeline of an image signal processor |
US20180091773A1 (en) * | 2016-09-23 | 2018-03-29 | Apple Inc. | Feed-forward and feed-back metadata exchange in image processing pipelines to improve image quality |
WO2023077939A1 (zh) * | 2021-11-05 | 2023-05-11 | 荣耀终端有限公司 | 摄像头的切换方法、装置、电子设备及存储介质 |
CN116582748A (zh) * | 2022-01-29 | 2023-08-11 | Oppo广东移动通信有限公司 | 电子设备、处理图像数据的方法和装置 |
CN115379126A (zh) * | 2022-10-27 | 2022-11-22 | 荣耀终端有限公司 | 一种摄像头切换方法及相关电子设备 |
CN116709021A (zh) * | 2023-02-13 | 2023-09-05 | 荣耀终端有限公司 | 变焦响应方法、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
李大伟;刘成;郑建华;刘一腾;: "适用于探空火箭的图像采集与压缩系统", 国防科技大学学报, no. 02, 28 April 2017 (2017-04-28) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3287866A1 (en) | Electronic device and method of providing image acquired by image sensor to application | |
WO2022100222A1 (zh) | 信息检索方法、装置、系统及存储介质 | |
WO2021185352A1 (zh) | 一种版本升级方法及相关装置 | |
CN116089056B (zh) | 用于图像绘制的方法及相关装置 | |
CN116339877A (zh) | 跨系统运行应用程序的方法及电子设备 | |
CN116152122B (zh) | 图像处理方法和电子设备 | |
WO2024002065A1 (zh) | 视频编码方法、装置、电子设备及介质 | |
CN117077703A (zh) | 图像处理方法及电子设备 | |
WO2023216957A1 (zh) | 一种目标定位方法、系统和电子设备 | |
CN116028148B (zh) | 一种界面处理方法、装置及电子设备 | |
CN117676325A (zh) | 多摄场景中的控制方法及相关装置 | |
CN115633255B (zh) | 视频处理方法和电子设备 | |
CN112711636B (zh) | 数据同步方法、装置、设备及介质 | |
CN114399622A (zh) | 图像处理方法和相关装置 | |
CN115543496A (zh) | 消息处理方法及相关装置 | |
CN117690177B (zh) | 人脸对焦方法、人脸对焦装置、电子设备及存储介质 | |
CN112699906A (zh) | 获取训练数据的方法、装置及存储介质 | |
CN115623318B (zh) | 对焦方法及相关装置 | |
CN116196621B (zh) | 应用处理方法及相关装置 | |
CN117727073B (zh) | 模型训练方法及相关设备 | |
CN116095225B (zh) | 终端设备的图像处理方法及装置 | |
CN116662150B (zh) | 应用启动耗时检测方法及相关装置 | |
CN116688494B (zh) | 生成游戏预测帧的方法和电子设备 | |
CN117156293B (zh) | 拍照方法和相关装置 | |
CN114513575B (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 |