CN116709004B - 一种图像处理方法和电子设备 - Google Patents
一种图像处理方法和电子设备 Download PDFInfo
- Publication number
- CN116709004B CN116709004B CN202211456501.1A CN202211456501A CN116709004B CN 116709004 B CN116709004 B CN 116709004B CN 202211456501 A CN202211456501 A CN 202211456501A CN 116709004 B CN116709004 B CN 116709004B
- Authority
- CN
- China
- Prior art keywords
- original image
- display
- time
- preview stream
- preview
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000015654 memory Effects 0.000 claims description 21
- 238000009877 rendering Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 31
- 238000012545 processing Methods 0.000 abstract description 27
- 230000000903 blocking effect Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 28
- 239000000872 buffer Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 12
- 238000012795 verification Methods 0.000 description 10
- 230000003993 interaction Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例公开了一种图像处理方法和电子设备,涉及图像处理领域,能够避免显示屏显示过程中的丢帧卡顿等问题。具体方案为:相机应用运行后,电子设备通过第一摄像模组采集获取多个原始图像形成第一预览流,电子设备根据期望绘制时间,为第一预览流中的第一原始图像以及第二原始图像分别配置时间戳。电子设备根据第一预览流获取第二预览流以及第三预览流,第二预览流与第一显示屏对应,第三预览流与第二显示屏对应。电子设备根据第二预览流,基于第一视图单元,绘制获取第一显示屏的第一送显图像。电子设备根据第三预览流,基于第二视图单元,绘制获取第二显示屏的第二送显图像。
Description
技术领域
本申请涉及图像处理技术领域,尤其涉及一种图像处理方法和电子设备。
背景技术
设置有折叠屏的可折叠设备可以提供协同预览功能。在该协同预览功能触发后,预览图像可以同时在内屏(如折叠屏)以及外屏上进行显示。
在目前的方案实现中,该协同预览功能可能存在丢帧卡顿,甚至黑屏的问题。
例如,由于拍摄环境一般较为复杂,导致提供送显的原始图像出帧不均匀。这也就会使得在根据原始图像进行送显图像的处理时,出现一些原始图像被丢弃的情况。这也就导致了丢帧。又如,由于两路预览流中的图像数据共享,那么在主屏已经消费一个原始图像进行送显后,副屏就无法再次使用该原始图像进行处理。这也就会使得外屏出现丢帧甚至黑屏的问题。
那么,为了使得可折叠设备能够顺利地提供协同预览功能,就需要解决上述问题。
发明内容
本申请实施例提供一种图像处理方法和电子设备,能够根据与下一个出帧时间对应的期望绘制时间,灵活调整各个原始图像的时间戳,使得任意两个出帧时间之间仅包括一个原始图像。由此避免丢帧以及由此导致的卡顿等问题。进一步的,在该方案应用于可折叠设备时,在触发协同预览后,可以在SurfaceView上进行主屏送显图像的绘制,在TextureView上进行副屏送显图像的绘制。从而避免所有送显图像都在SurfaceView上绘制时,由于图像数据已经被消费,导致的副屏的送显图像无法正常绘制,进而使得副屏黑屏的问题。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种图像处理方法,该方法应用于电子设备中,该电子设备设置有第一显示屏和第二显示屏,该电子设备中还包括至少一个摄像模组。该电子设备中安装有相机应用。该电子设备中还设置有至少两个视图单元,该视图单元用于绘制送显图像。该方法包括:该相机应用运行后,该电子设备通过第一摄像模组采集获取多个原始图像形成第一预览流,该第一摄像模组包括在该至少一个摄像模组中。该多个原始图像包括第一原始图像以及第二原始图像。该电子设备根据期望绘制时间,为该第一预览流中的第一原始图像以及该第二原始图像分别配置时间戳,该时间戳用于标示不同原始图像的获取时间顺序。该电子设备根据该第一预览流获取第二预览流以及第三预览流,该第二预览流与该第一显示屏对应,该第三预览流与该第二显示屏对应。该第二预览流以及该第三预览流均包括携带有时间戳的第一原始图像以及第二原始图像。该电子设备根据该第二预览流,基于第一视图单元,绘制获取该第一显示屏的第一送显图像,该第一视图单元包括在该至少两个视图单元中。该电子设备根据该第三预览流,基于第二视图单元,绘制获取该第二显示屏的第二送显图像,该第一视图单元包括在该至少两个视图单元中。
基于该方案,在分别为两个显示屏提供送显图像的处理机制中,可以根据期望绘制时间,灵活调整各个原始图像的时间戳。由此使得相邻两个帧显示时间之间,仅包括一个可用的原始图像。其中,该可用的原始图像的时间戳落在相邻两个帧显示时间的时间范围内。这样,在获取原始图像时,就不会出现原始图像的丢弃问题,也就避免了丢帧问题。此外,通过在不同的视图单元上进行绘制,避免了同一个数据被消费后无法再次校验的问题,进而解决了由此导致的副屏送显图像无法正常绘制的问题。
可选的,该第一原始图像的出帧时间早于该第二原始图像的出帧时间。原始图像的出帧时间用于标示该原始图像的获取时间。该第一原始图像的出帧时间早于该期望绘制时间,该第二原始图像的出帧时间晚于该期望绘制时间。该电子设备根据期望绘制时间,为该第一预览流中的第一原始图像以及该第二原始图像分别配置时间戳,包括:该电子设备为该第一原始图像配置第一时间戳,该第一时间戳在该期望绘制时间之前。该电子设备为该第二原始图像配置第二时间戳,该第二时间戳在该期望绘制时间之后。这样,即使第二原始图像的出帧时间在下一次帧显示时间(即期望绘制时间)之前,也可以灵活地将该第二原始图像的时间戳调整到期望绘制时间之后,使得在上一次帧显示时间(已完成送显的帧显示时间)以及将要送显的下一次帧显示时间之间,仅包括一个可用的第一原始图像。由此避免了原始图像的丢弃。
可选的,该第一视图单元为表面视图SurfaceView。该第二视图单元为纹理视图TextureView。
可选的,该第一显示屏的显示面积大于该第二显示屏的显示面积。
这样,SurfaceView可以与第一显示屏(如主屏)对应,TextureView可以与第二显示屏(如副屏)对应。由此通过SurfaceView为主屏提供高质量的送显图像,通过TextureView向副屏提供快速高效送显图像绘制效果。
可选的,在该电子设备通过第一摄像模组采集获取多个原始图像形成第一预览流之前,该方法还包括:接收用户的第一操作,该第一操作用于指示电子设备运行该相机应用。响应于该第一操作,该电子设备运行该相机应用。
可选的,在该电子设备根据该第一预览流获取第二预览流以及第三预览流之前,该方法还包括:接收用户的第二操作,该第二操作用于指示该电子设备开始协同预览。
可选的,该电子设备中还包括相机服务,以及SurfaceFlinger服务。该电子设备根据期望绘制时间,为该第一预览流中的第一原始图像以及该第二原始图像分别配置时间戳,包括:该相机服务从该SurfaceFlinger服务获取该期望绘制时间。该相机服务获取该第一预览流,并根据该期望绘制时间,为该第一原始图像以及该第二原始图像分别配置时间戳。
可选的,该电子设备根据该第一预览流获取第二预览流以及第三预览流,包括:该相机服务根据携带有时间戳的第一原始图像,以及携带有时间戳的第二原始图像,生成该第二预览流以及第三预览流。可以理解的是,在第二预览流以及第三预览流中包括的原始图像的信息可以相同。由此保证两个显示屏的同步显示。
可选的,在该电子设备绘制获取该第一显示屏的第一送显图像之前,该方法还包括:该相机服务向该第一视图单元和该第二视图单元发送可用指示,该可用指示用于标示该第二预览流以及该第三预览流对应的送显队列可用。
可选的,方法还包括:响应于该可用指示,该SurfaceFlinger服务从该第二预览流对应的送显队列中,选取第一原始图像,该第一原始图像的时间戳在下一个帧显示时间之前,该SurfaceFlinger服务根据该第一原始图像,在该第一视图单元上绘制获取该第一送显图像。这样,即可实现基于SurfaceView的主屏送显图像的绘制。
可选的,方法还包括:响应于该可用指示,该SurfaceFlinger服务从该第三预览流对应的送显队列中,选取第一原始图像,该第一原始图像的时间戳在下一个帧显示时间之前,该SurfaceFlinger服务根据该第一原始图像,在该第二视图单元上绘制获取该第二送显图像。这样,即可实现基于TextureView的副屏送显图像的绘制。
第二方面,提供一种电子设备。该电子设备中可以包括处理器以及存储器。在一些实现中,该电子设备可以为设置有折叠屏的可折叠设备。那么该电子设备可以设置有折叠屏(主屏)以及外侧的副屏。在存储器中可以存储有计算机程序,处理器可以调用该计算机程序,用于执行如第一方面及其任一种可能的设计中提供的方案。
第三方面,提供一种芯片系统。该芯片系统可以设置在电子设备(如可折叠设备)中。芯片系统包括接口电路和处理器;接口电路和处理器通过线路互联;接口电路用于从存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,芯片系统支持电子设备执行如上述第一方面以及各种可能的设计中任一种提供的技术方案。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质包括计算机指令,当计算机指令运行时,使得电子设备执行如上述第一方面以及各种可能的设计中任一种提供的技术方案。
第五方面,提供一种计算机程序产品,计算机程序产品中包括指令,当计算机程序产品在电子设备上运行时,使得电子设备执行如上述第一方面以及各种可能的设计中任一种提供的技术方案。
应当理解的是,上述第二方面至第五方面提供的技术方案,其技术特征均可对应到第一方面及其可能的设计中提供的方法,因此能够达到的有益效果类似,此处不再赘述。
附图说明
图1为一种可折叠设备的示意图;
图2为一种内屏预览的示意图;
图3为一种协同预览的示意图;
图4为一种送显队列的逻辑示意图;
图5为一种出帧时间与曝光时间的对应示意图;
图6为一种送显队列的逻辑示意图;
图7为本申请实施例提供的一种电子设备的组成示意图;
图8为本申请实施例提供的一种模块间交互的示意图;
图9为本申请实施例提供的一种原始图像在存储器中的存储示意图;
图10为本申请实施例提供的一种模块间交互的示意图;
图11为本申请实施例提供的一种模块间交互的示意图;
图12为本申请实施例提供的一种曝光时间与时间戳以及送显队列的对应关系示意图;
图13为本申请实施例提供的一种曝光时间与时间戳以及送显队列的对应关系示意图;
图14为本申请实施例提供的一种模块间交互的示意图;
图15为本申请实施例提供的一种模块间交互的示意图;
图16为本申请实施例提供的一种电子设备的组成示意图;
图17为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
目前,设置有折叠屏的可折叠设备作为电子设备的一种新发展趋势,正在逐渐普及。
示例性的,可折叠设备上的折叠屏可以通过可折叠设备上的折叠轴进行弯曲或展开,从而在不同场景下向用户提供不同的显示能力。
在以下说明中,可折叠设备可以包括内侧和外侧。其中,折叠屏所在一侧可以称为可折叠设备的内侧,折叠屏可以称为可折叠设备的内屏。在可折叠设备上,与内侧相对的外侧也可以设置有显示屏,该设置在外侧的显示屏也可称为外屏。一般的,外屏的显示面积可以小于内屏。
本申请中,可折叠设备的折叠状态可以包括闭合状态以及展开状态。以下结合图1的示例分别进行说明。
如图1中的101所示,在折叠角为0度的情况下,可折叠设备上的折叠屏可以处于向内闭合。此时可折叠设备的折叠状态可以称为闭合状态,通过设置在外侧的显示屏向用户提供显示能力。比如,折叠屏可以包括具有显示能力的A屏以及B屏。A屏与B屏可以为同一块显示屏的不同显示区域,或者,A屏和B屏可以分别对应到两块不同的显示屏。在可折叠设备处于闭合状态下时,A屏和B屏互相扣合。在需要进行图像显示时,可折叠设备可以通过外屏(如C屏)向用户提供显示能力。
如图1中的102所示,在折叠角为180度的情况下,可折叠设备上的折叠屏展开。此时可折叠设备的折叠状态可以称为展开状态,通过该折叠屏向用户提供显示能力。该102的示例中,以折叠屏展开时面向握持可折叠设备的用户为例进行说明。也即,在该102的示例中,为可折叠设备展开状态下的内侧图示。
在该展开状态下,A屏和B屏可以处于同一水平面,同时向用户提供显示能力。在该情况下,C屏对于握持可折叠设备的用户不可见。因此,C屏可以根据当前具体的配置进行对应显示,或者息屏。
如图1中的103则示出了展开状态下可折叠设备外侧的图示。在该示例中,C屏可以占据可折叠设备外侧的一部分。例如,C屏可以设置在可折叠设备外侧折叠轴的右侧。对应的,折叠轴的左侧可以设置有其他部件。比如,用于进行拍摄的外置摄像头(也可以称为后置摄像头,或者后摄)。
与常规的电子设备类似的,可折叠设备上也可以设置摄像模组(如外置摄像头),用于向用户提供不同折叠状态下的拍摄功能。
在一些实现中,结合如图1的102的示例,在B屏上可以设置有内置摄像头(也可称为内侧摄像头,或者前摄)。该内置摄像头可以在可折叠设备处于展开状态下时,向用户提供自拍能力。
在另一些实现中,结合如图1的103的示例,在不同于C屏的可折叠设备外侧区域,可以设置有外置摄像头。该外置摄像头可以在可折叠设备处于展开状态下时,拍摄外侧对象。或者,该外置摄像头可以在可折叠设备处于闭合状态下时,向用户提供拍摄功能。
以可折叠设备处于展开状态,通过后摄拍摄人像为例。
结合图2,可折叠设备可以在用户的控制下,运行相机应用。在相机应用开始运行后,可折叠设备可以通过外置摄像头形成预览流。该预览流可以包括连续时刻下,外置摄像头采集的多帧图像的图像数据。本申请中,摄像模组采集到的图像数据可以称为原始图像,或者原始图像的数据。
可折叠设备可以对该预览流中的原始图像进行处理,从而获取预览流中各个帧图像对应的送显图像。该送显图像可以依次在内屏上进行展示。由此使得内屏上可以显示如图2所示的预览效果。
在一些实施例中,可折叠设备还可以提供协同预览的功能。该协同预览功能可以使得内屏显示预览图像的同时,外屏(如C屏)也可以同步显示该预览图像。由此使得被拍摄用户也能够看到当前预览图像。
示例性的,如图3所示,在内屏界面上可以包括多个功能按钮。比如,该多个功能按钮中可以包括按钮201。该按钮201可以用于触发协同预览功能。
例如,可折叠设备在接收到用户对该按钮201的操作后,就可以在外屏(即C屏)上同步显示预览图像。可以理解的是,由于外屏的显示面积与内屏不同。因此在一些实现中,在外屏上显示的图像可以根据外屏显示区域进行灵活调整。
需要说明的是,可折叠设备在进行上述原始图像到送显图像的处理过程中,可以使用送显队列。示例性的,在获取预览流中的各个帧的原始图像后,各个原始图像可以分别进入送显队列,以便于可折叠设备能够根据送显队列获取当前送显所需的图像数据。进而据此进行处理(如绘制处理等)后获取对应的送显图像进行显示。
示例性的,结合图4。预览流中可以包括原始图像1。该原始图像1可以被传输到送显队列中。此后,可折叠设备可以从送显队列中获取该原始图像1,由此对该原始图像1进行处理获取对应的送显图像1。那么,该原始图像1对应的送显图像1就可以被传输给内屏进行显示。而在开启协同预览的情况下,该送显图像1还可以用于外屏显示。
在本申请实施例中,该从送显队列中获取原始图像(如原始图像1)进行绘制,获取送显图像的时间,可以称为帧显示时间。
示例性的,该帧显示时间可以与屏幕的刷新率相关。一般而言,在屏幕的刷新率没有变化的情况下,任意相邻的两个帧显示时间之间的时长均相同。
请参考图5,按照时间先后顺序,从送显图像中获取原始图像进行绘制的时间可以包括:帧显示时间1-帧显示时间4。相邻帧显示时间间隔可以为60ms。
可以理解的是,在摄像模组获取原始图像对应的预览流后,可以将该预览流通过相机驱动、抽象层中的相机抽象发送给框架层进行处理。在如图5的示例中,出帧时间可以对应到电子设备的框架层从抽象层获取原始图像的时间。
可以看到,出帧时间与摄像模组获取图像的速率是相关的。摄像模组获取图像的速率越高,相邻的出帧时间间隔越短。反之,摄像模组获取图像的速率月低,相邻的出帧时间间隔越长。
而在预览流获取过程中,摄像模组获取图像的速率会根据当前场景而随时变化。比如,当前场景亮度较高时,则曝光时间短,对应的获取图像的速率较高。反之,当前场景亮度较暗时,则曝光时间长,对应的获取图像的速率较低。
在如图5的示例中,帧显示时间1和帧显示时间2之间,电子设备的框架层可以从抽象层获取一个原始图像。即帧显示时间1和帧显示时间2之间包括一个出帧时间。
而在帧显示时间2和帧显示时间3之间,电子设备的框架层可以从抽象层获取两个原始图像。如时刻1对应的原始图像1,以及时刻2对应的原始图像2。
其中,时刻1与时刻2均在帧显示时间2和帧显示时间3之间,时刻1早于时刻2。
那么,结合图4的示意,如图6所示,该帧显示时间2和帧显示时间3之间的送显队列中,就会同时包括出帧时间1对应的原始图像1,以及出帧时间2对应的原始图像2。
在一些实现中,电子设备在将各个原始图像放入送显队列之前,可以为各个原始图像设置时间戳。时间戳可以用于指示对应原始图像的出帧时间。例如,在一些实现中,可以将框架层获取原始图像的出帧时间,设置为该原始图像的时间戳。
结合图5,如图6的所示,原始图像1的时间戳A可以设置为其出帧时间,如时刻1。原始图像2的时间戳B可以设置为其出帧时间,如时刻2。
由此,基于如图6所示的送显队列,在完成出帧时间2的送显后,在执行出帧时间3的送显操作时,电子设备就可以选取送显队列中,最晚进入的数据进行绘制,获取对应的送显图像2进行显示。
例如,电子设备可以根据送显队列中各个原始图像的时间戳,选取时间戳在出帧时间3之前,最晚的原始图像。该示例中,送显队列中包括时间戳A对应的原始图像1,以及时间戳B对应的原始图像2。那么时间戳B是最晚的时间戳,由此电子设备可以对原始图像2进行绘制,获取对应的送显图像2进行显示。而这也就会造成原始图像1的丢帧。
可以理解的是,在其他场景下,如果在相邻的两个帧显示时间之间,存在两个或更多的出帧,也就会出现类似于如图6中的较早出帧的原始图像为丢弃的丢帧问题。
而对于前述示例中涉及的可折叠设备。在触发协同预览后,可折叠设备的框架层可以将来自抽象层的一路预览流,分为两路分别放入两个送显队列中。比如,送显队列1对应于主屏,送显队列2对应于副屏。进入送显队列1的原始图像,以及进入送显队列2的原始图像可以相同,且与来自抽象层的一路预览流相对应。
结合前述图6中的说明,针对进入送显队列1以及进入送显队列2的原始图像,电子设备都可以为其设置时间戳。这样,电子设备可以根据进入送显队列1的原始图像的时间戳进行主屏的送显处理。电子设备可以根据进入送显队列2的原始图像的时间戳进行副屏的送显处理。
可以理解的是,类似于如图6中的情况,对于送显队列1或送显队列2,如果在相邻的两个帧显示时间之间包括两个或更多原始图像,就会造成丢帧的情况出现。以送显对列1中原始图像的时间戳,与送显对列2中原始图像的时间戳相同,主屏和副屏的刷新率相同(即两个屏幕的帧显示时间间隔相同)为例。那么在任意两个帧显示时间间隔中出现两个或多个原始图像对应的时间戳时,在主屏以及副屏上就都会出现丢帧卡顿的问题。
为了解决上述问题,本申请实施例提供一种图像处理方法,能够根据与显示屏的刷新率相对应的期望绘制时间,调整各个原始图像的时间戳。从而使得相邻两次帧显示时间之间,仅存在最多一个原始图像的时间戳。那么,电子设备的框架层在从送显队列中选取原始图像送显时,就不会出现由于在下一个帧显示时间之前存在多个原始图像的时间戳,而丢弃原始图像的问题。进而解决丢帧、卡顿的问题。
该方案可以应用于可折叠设备中。由于主屏和副屏的送显队列中的原始图像的时间戳都可以被适应性调整。因此,在触发协同预览的情况下,主屏显示以及副屏显示都可以避免丢帧卡顿的问题。
在本申请的一些实现中,主屏的预览控件和副屏的预览控件可以不同。主屏的送显图像可以是基于SurfaceView绘制的,副屏的送显图像可以是基于TextureView绘制的。这样,就避免了主屏调用数据后,由于该数据已经被消费导致的副屏预览绘制无法顺利进行的问题。
由此,能够进一步避免副屏在协同预览过程中的丢帧卡顿甚至黑屏的问题。
以下将结合附图对本申请实施例提供的技术方案进行详细说明。
需要说明的是,本申请实施例提供的技术方案可以应用于电子设备中。该电子设备可以设置有折叠屏,即为可折叠设备。在一些实施例中,该电子设备可以包括手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、蜂窝电话、个人数字助理(personaldigital assistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtualreality,VR)设备、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备、或智慧城市设备中的至少一种。本申请实施例对该电子设备的具体类型不作特殊限制。
示例性的,在一些实施例中,从硬件组成的角度,电子设备可以包括处理器,外部存储器接口,内部存储器,通用串行总线(universal serial bus,USB)接头,充电管理模块,电源管理模块,电池,天线1,天线2,移动通信模块,无线通信模块,音频模块,扬声器,受话器,麦克风,耳机接口,传感器模块,按键,马达,指示器,摄像模组,显示屏,以及用户标识模块(subscriber identification module,SIM)卡接口等。其中传感器模块可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
在另一些实施例中,电子设备中可以包括有软件系统。该软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的 系统为例,示例性说明电子设备的软件结构。
该分层架构可以将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
在一些实施例中,将系统可以包括应用程序(Application,APP)层,应用程序框架(APP Framework)层,硬件抽象层(Hardware Abstract Layer,HAL)以及内核层。其中,应用程序框架层也可以简称为框架层。硬件抽象层也可以简称为抽象层。
请参考图7。应用程序层可以包括一系列应用程序包。应用程序包可以包括相机应用等。
框架层为应用程序层的应用程序提供应用编程接口(application programminginterface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
示例性的,框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。
窗口管理器提供窗口管理服务(Window Manager Service,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
在本申请实施例中,框架层中还可以包括相机API(Camera API)。该相机应用在需要调用框架层中的模块时,可以通过调用该相机API中的对应接口实现。
相机服务(Camera Service)可以对应到MediaFramework。该相机服务可以是运行在CameraFramework中的进程。在一些实现中,该相机服务可以用于对相机应用的指令进行处理响应。比如,相机服务可以在相机应用通过相机API下发预览流指示时,通过其他模块控制摄像模组(如内置摄像头或外置摄像头)进行图像采集。在另一些实现中,该相机服务还可以用于根据来自摄像模组的图像(即原始图像)进行调度分配等处理,以便于其他框架层中的模块对此进行处理获取相应的送显结果。
可以理解的是,相机服务作为CameraFramework中的一个进程,其能够实现的功能也可以由CameraFramework中的其他具有类似功能的进程实现。
在本示例中,框架层中可以设置有视图单元。比如,视图单元可以包括至少一个表面视图(SurfaceView),和/或至少一个纹理视图(TextureView)。一个视图单元对应于一个显示窗口。比如,SurfaceView可以用于主屏(即内屏,可折叠屏)的送显图像的绘制。TextureView可以用于副屏(即外屏)的送显图像的绘制。
在框架层中可以设置有SurfaceFlinger。该SurfaceFlinger作为一个独立的Service,可以接收所有Window的Surface作为输入,根据ZOrder、透明度、大小、位置等参数,计算出每个Surface在最终合成图像中的位置,然后交由HWComposer或OpenGL生成最终的显示Buffer,然后显示到特定的显示设备上。本示例中,SurfaceFlinger也可称为SurfaceFlinger服务。
示例性的,SurfaceFlinger可以在SurfaceView可用的情况下,基于SurfaceView进行主屏送显图像的绘制,并获取对应的送显图像。SurfaceFlinger可以在TextureView可用的情况下,基于TextureView进行副屏送显图像的绘制,并获取对应的送显图像。
本申请实施例中,该SurfaceFlinger以及视图单元可以统称为绘制模块。该绘制模块可以用于根据原始图像生成送显图像。
在如图7的示例中,硬件抽象层运行于用户空间(user space),对内核层驱动进行封装,向上层提供调用接口。例如,硬件抽象层可以包括相机抽象(CameraHAL)。该相机抽象可以用于实现框架层中相机相关模块与硬件之间的命令、数据转接。
内核层是硬件和软件之间的层。内核层至少包含各个硬件部件的驱动模块。比如,该内核层中可以包括用于驱动摄像模组的相机驱动(CameraDriver)。
为了便于说明,在如图7中还示出了可折叠电子设备中的部分硬件部件。比如,用于进行图像拍摄的外置摄像头、内置摄像头等。又如,用于进行数据存储的存储器等。
需要说明的是,在另一些实施例中,在框架层以及HAL层之间还可以设置有安卓运行时(Android runtime,ART)和原生C/C++库。
安卓运行时包括核心库和安卓运行时。安卓运行时负责将源代码转换为机器码。安卓运行时主要包括采用提前(ahead or time,AOT)编译技术和及时(just in time,JIT)编译技术。
核心库主要用于提供基本的Java类库的功能,例如基础数据结构、数学、IO、工具、数据库、网络等库。核心库为用户进行安卓应用开发提供了API。
原生C/C++库可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Media Framework),libc,OpenGL ES、SQLite、Webkit等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。OpenGL ES提供应用程序中2D图形和3D图形的绘制和操作。SQLite为可折叠电子设备100的应用程序提供轻量级关系型数据库。
以下以如图7所示的软件组成为例,对如图2所示的可折叠设备处于展开状态下,通过外置摄像头获取预览流并在主屏显示的过程进行举例。
如图8所示,在接收到用户打开相机应用的操作后,可折叠设备可以运行相机应用。相机应用可以通过相机API,调用相机服务。相机应用可以通过指令指示相机服务打开外置摄像头,开始获取预览流。响应于该指令,相机服务可以通过相机抽象该打开外置摄像头,开始获取预览流。比如,相机抽象可以通过摄像头驱动(如外置摄像头驱动),打开外置摄像头(即外置摄像头)。该过程也即如图8所示的S401的过程。
响应于上述S401的执行,外置摄像头可以开始采集图像信息形成预览流。该预览流中的各个原始图像可以被存储在可折叠设备的存储器中。示例性的,在存储器中可以为各个原始图像分别配置有用于存储的存储空间。比如,该存储空间可以包括多个帧缓冲(FrameBuffer,FB)。那么,每个原始图像都可以被存储在一个对应的FB中。即执行S402。
示例性的,在外置摄像头获取多个原始图像组成的预览流后,对应的在存储器中就可以存储有各个原始图像对应的帧缓冲。例如,如图9所示,预览流可以包括原始图像1以及原始图像2。那么,在存储器中就可以配置FB1用于存储原始图像1的数据,配置FB2用于存储原始图像2的数据。其中,FB1可以为存储原始图像1的帧缓冲ID,FB2可以为存储原始图像2的帧缓冲ID。那么,根据FB1,就可以读取原始图像1。根据FB2,就可以读取原始图像2。
此外,外置摄像头还可以将存储原始图像的帧缓冲信息向上层传输,以便于后续调用。比如,该帧缓冲信息可以包括存储各个原始图像的帧缓冲ID和/或存储原始图像的存储地址等。以帧缓冲信息包括帧缓冲ID为例。这样相机抽象可以将该帧缓冲ID反馈给相机服务。即执行S403。
例如,外置摄像头可以通过摄像头驱动将FB1以及FB2依次传输给相机抽象。对应的,相机抽象可以将该FB1以及FB2依次传输给框架层中的模块,比如传输给相机服务用于后续处理。
相机服务可以在获取帧缓冲ID后,通过SurfaceFlinger以及视图单元(如SurfaceView),实现原始图像到送显图像的转换。即执行S404。
示例性的,结合图10,相机抽象可以将预览流数据发送给相机服务进行后续处理。其中,该预览数据中可以包括FB1以及FB2。
相机服务接收到相机抽象发送的FB1的时间,即可为原始图像1对应的出帧时间,如时刻1。相机服务接收到相机抽象发送的FB2的时间,即可为原始图像2对应的出帧时间,如时刻2。
如图10中的S501所示,相机服务可以对FB1对应的原始图像1设置时间戳,如设置为时刻1。相机服务可以对FB2对应的原始图像2设置时间戳,如设置为时刻2。
接着,相机服务可以将时间戳为时刻1的FB1,以及时间戳为时刻2的FB2,放入送显队列中。
完场上述S501的操作后,相机服务可以执行S502,向SurfaceView发送可用指示1。该可用指示1可以用于告知SurfaceView送显队列中的数据已经可用。
响应于该可用指示1,SurfaceView可以将送显队列中的数据交由SurfaceFlinger进行绘制。这样,SurfaceFlinger就可以执行S503,即选取送显队列中时间戳最晚的数据进行校验处理。该校验处理可以包括校验时间戳最晚的数据(如时刻2对应的FB2中存储的数据)是否已经被消费。确定FB2中的数据(即原始图像2)未被消费的情况下,则校验通过。那么SurfaceFlinger就可以根据原始图像2进行绘制获取对应的送显图像2,即执行S504。由此,该送显图像2可以被传输给主屏进行显示。
在一些实施例中,SurfaceFlinger作为绘制获取送显图像的主体,能够知晓显示屏(如主屏)的下一次帧显示时间。那么,SurfaceFlinger可以在执行S503时,从送显队列中,选取时间戳在该下一次帧显示时间之前的数据进行相关处理。在该时间戳在该下一次帧显示时间之前的数据包括多个时,则SurfaceFlinger可以从中选取时间戳最晚的一个。
例如,如图10所示的,时刻1以及时刻2均在该下一次帧显示时间之前。那么SurfaceFlinger可以选取最晚的时刻2对应的FB中存储的数据进行校验以及绘制获取送显图像的处理。
由此,针对预览流中的各个原始图像可以执行上述如图8-图10的流程,实现主屏预览流的连续显示。
然而,如图10所示,在相邻的帧显示时间之间存在两个或更多时间戳对应的数据时,就会导致原始图像的丢弃。这样也就会出现丢帧的情况。
对此,在本申请实施例中,相机服务能够根据下一个帧显示时间,灵活调整原始图像的时间戳。以便于在相邻的两个帧显示时间之间,仅包括一个原始图像对应的时间戳落在该范围内。这样,就不会出现丢弃原始图像的情况。
示例性的,如图11所示,相机服务可以在接收到来自相机抽象的预览流数据后,执行S601,即从SurfaceFlinger获取期望绘制时间。该帧显示时间可以为已经完成出帧处理的帧显示时间后的一个帧显示时间。
比如,结合图5的示例,以帧显示时间2对应的出帧操作已经完成,那么该获取的期望绘制时间即可为帧显示时间2后的帧显示时间3。
接着,相机服务可以执行S602,即根据期望绘制时间,设置各个原始图像的时间戳。
示例性的,相机服务可以将预览流中携带的原始图像1对应的FB1以及原始图像2对应的FB2放入送显队列,并分别设置时间戳。
不同于如图10中的示例,本示例中,该对原始图像1以及原始图像2的时间戳设置,可以是根据期望绘制时间进行的。
以已经完成出帧操作的帧显示时间(如帧显示时间2)与期望绘制时间(如帧显示时间3)之间仅包括原始图像1以及原始图像2为例。
相机服务可以为出帧时间较早的原始图像1设置时间戳。例如,该原始图像1的时间戳可以设置为时刻1。
相机服务可以在原始图像2的出帧时间(如时刻2)晚于时刻1,并且早于帧显示时间3的情况下,调整原始图像2的时间戳。比如,相机服务可以为原始图像2设置时间戳为时刻3。该时刻3可以晚于帧显示时间3。
由此,使得在帧显示时间2以及帧显示时间3之间,仅包括时间戳为时刻1对应的原始图像1。
可以理解的是,在帧显示时间2以及帧显示时间3之间包括更多帧图像的原始图像的情况下,也可以参考上述时间戳的设置机制,使得仅有一个时间戳落在相邻的两个帧显示时间之间。
在完成上述时间戳的设置后,相机服务可以执行S603,向包括SurfaceFlinger以及SurfaceView的绘制模块发送可用指示1。对应的,绘制模块中的SurfaceFlinger可以执行S604,选取送显队列中在下一次帧时间之前的,时间戳最晚的数据进行校验处理获取当前送显队列中的原始图像。例如,在下一次帧时间之前的,时间戳最晚的数据可以为FB1对应的原始图像1。
这样,SurfaceFlinger可以执行S605,对原始图像1进行校验。在确定原始图像1的根据获取的原始图像1,在SurfaceView上绘制获取对应的送显图像1。那么,该送显图像1就可以作为帧显示时间3对应的送显图像。
结合图12-图13对上述时间戳调整前后的效果进行对比。
如图12所示,按照如图10所示的方案,在帧显示时间2以及帧显示时间3之间包括时间戳为时刻1的原始图像1,以及时间戳为时刻2的原始图像2。这样,在帧显示时间2与帧显示时间3之间的送显队列中,就可以同时包括两个原始图像的数据。由此,SurfaceFlinger可以丢弃时间戳较早的原始图像(如原始图像1),根据原始图像2进行送显处理。这样也就会造成丢帧的情况。
对应的,如图13所示,按照如图11所示的进行时间戳自适应调整的方案,在帧显示时间2以及帧显示时间3之间依然可以包括原始图像1以及原始图像2。该原始图像1的出帧时间可以为时刻1,原始图像2的出帧时间可以为时刻2。相机服务可以为原始图像1设置时刻1为时间戳。由于时刻2同样早于帧显示时间3,并且时刻2晚于时刻1。那么,相机服务可以调整原始图像2的时间戳为晚于帧显示时间3的时刻3。这样,在帧显示时间2以及帧显示时间3之间的时间戳仅剩一个时刻1。由此,SurfaceFlinger可以根据原始图像1进行送显处理。这样也就避免了丢帧。
需要说明的是,上述图8-图13的方案说明中,均以主屏显示预览流为例进行说明。比如,绘制模块中可以包括SurfaceView用于进行主屏送显图像的处理。
而在协同预览的情况下,基于图11提供的方案,还可以实现副屏的预览流显示。
结合前述说明,在触发协同预览的情况下,相机服务可以将一路输入的预览流,划分为两路预览流分别供主屏和副屏使用。
以输入预览流为预览流0,主屏预览流为预览流1,副屏预览流为预览流2为例。
那么,预览流0可以为相机抽象发送给相机服务的预览流。该预览流0中可以包括原始图像1以及原始图像2的帧缓冲信息。比如,以帧缓冲信息包括帧缓冲ID为例。预览流0中可以包括FB1以及FB2。
那么,根据该预览流0,相机服务可以划分获取预览流1以及预览流2。该预览流1中可以包括FB1以及FB2,该预览流2中可以包括FB1以及FB2。
相机服务还可以对FB1对应的原始图像1,以及FB2对应的相机服务2配置时间戳。
结合图11的方案说明,在本示例中,该对原始图像1以及原始图像2的时间戳配置,可以是根据期望绘制时间进行的。具体实施可以参考前述说明,此处不再赘述。
需要说明的是,在一些实施例中,该设置时间戳的动作,可以是针对预览流0进行的。那么,预览流0中的FB1可以对应到时间戳(如时刻1)。预览流0中的FB2可以对应到时间戳(如时刻3)。
在另一些实施例中,该设置时间戳的动作,也可以是分别针对预览流1以及预览流2中的数据进行的。
由此,在根据预览流0划分获取的预览流1以及预览流2中,FB1的时间戳可以为时刻1,FB2的时间戳可以为时刻3。其中,时刻1可以在期望绘制时间之前,时刻3可以在期望绘制时间之后。
在设置时间戳之后,相机服务可以分别将预览流1中的数据放入送显队列1,用于进行主屏显示。相机服务可以分别将预览流2中的数据放入送显队列2,用于进行副屏显示。
示例性的,对于主屏显示的过程,可以参考如图11的示例。这样,在下一次帧显示时间(即期望绘制时间)为帧显示时间3时,可以显示时刻1对应的原始图像1相应的送显图像1。
需要说明的是,结合前述说明,在预览流中可以传递原始图像的帧缓冲信息,而并非原始图像本身。也就是说,在电子设备中仅存储一份原始图像的数据即可,其他模块可以根据帧缓冲信息进行调用。
那么,为了避免数据调用出错,各个数据都可以设置有使用标识。在该数据被使用(即被消费)后,该数据的使用标识可以用于标识“已消费”。那么,在其他模块再次调用该数据时,可以对使用标识进行校验。如果使用标识标识当前数据已经消费,则校验不通过。由此该模块不会对该数据进行重复调用。
示例性的,使用标识为第一值时,可以用于标示“已消费”。使用标识为第二值时,则用于标识“未消费”。
结合本申请实施例中的方案,在SurfaceFlinger从送显队列1中,对原始图像1进行校验时,由于该原始图像1未被调用过,因此其使用标识可以为第二值。那么对于该原始图像1的校验可以通过,进而使得SurfaceFlinger可以基于SurfaceView对原始图像1进行绘制后,获取对应的送显图像1在主屏上显示。对应的,经过调用绘制后,该原始图像1的使用标识可以变更为第一值,用于标示该原始图像1已经被消费。
那么,在SurfaceFlinger从送显队列2中调用原始图像1时,在对该原始图像的使用标识的校验中,由于该使用标识为第一值,就会出现校验失败的情况。那么,SurfaceFlinger就无法顺利地调用原始图像1进行绘制。这也就使得在副屏无法在帧显示时间3进行正常显示。由此也会使得外屏出现卡顿甚至黑屏的问题。
为了应对上述问题,本申请实施例提供的技术方案中,可以在如图11所示的方案基础上,为副屏配置TextureView作为其视图单元。由此,在进行副屏绘制时,基于该TextureView的配置,SurfaceFlinger可以将原始图像1的数据进行复制以及格式的转换,存储到新的帧缓冲上。那么,即使FB1中的原始图像1的使用标识为第一值,也不影响新的帧缓冲上数据的使用。SurfaceFlinger可以在该新的帧缓冲上执行贴图绘制,从而获取副屏的送显图像。
作为一种示例,图14示出的模块间交互,对应于触发协同预览情况下,主屏以及副屏的送显图像的获取机制示意。其中,S701的执行过程可以对应到如图11所示的S601的执行过程。
在本示例中,由于两块屏幕需要同时显示,因此可以设置两个送显队列。如为主屏设置送显队列1,为副屏设置送显队列2。那么,如S702所示,相机服务可以根据期望绘制时间,为各个原始图像设置时间戳,并分别放入两个队列中。
接着,如S703所示,相机服务可以向绘制模块发送可用指示2。该可用指示2可以用于指示SurfaceView以及TextureView当前送显队列中的数据可以被调用处理。
响应于该可用指示2,如S704所示,SurfaceView可以获取送显队列1中的原始图像,如原始图像1。SurfaceFlinger可以对该原始图像1进行校验。在校验通过的情况下,基于SurfaceView进行绘制处理,获取如S705所示的主屏的送显图像。
响应于该可用指示2,TextureView还可以从送显队列2中获取原始图像1。SurfaceFlinger可以基于TextureView进行原始图像1的绘制,获取S706对应的副屏的送显图像。示例性的,SurfaceFlinger可以基于TextureView,将FB1中的原始图像1复制转换到新的帧缓冲的贴图上。基于该贴图进行绘制获取副屏的送显图像。
由此,基于TextureView的绘制,不受SurfaceView对应绘制的数据是否消费的影响。因此,在对于副屏的送显图像处理过程中,即使原始图像1的使用标识已经修改为已消费,也不会影响副屏图像的送显处理。
可以理解的是,本申请实施例提供的技术方案中,通过如图11所示的方案能够使得相机服务可以根据与其帧显示时间灵活调整送显队列中的各个原始数据的时间戳。从而使得相邻的两个帧显示时间之间,可用的原始数据不超过1个。这样就不会导致由于多个原始数据在送显队列中,对较早的原始图像丢弃的问题。也就避免了丢帧的情况发生。
在该如图11的基础上,在针对可折叠设备的协同预览场景,本申请中通过SurfaceView实现主屏的绘制,通过TextureView实现副屏的绘制。从而避免了由于送显队列中的数据已经被消费导致的校验不通过,副屏无法正常绘制导致的副屏黑屏的问题。
这样,基于上述改进,使得可折叠设备的主屏以及副屏都可以提供较高质量的协同预览功能。
为了能够更加清楚地对本申请实施例提供的技术方案进行说明,以下结合如图15所示的模块间交互示意图继续进行说明。本示例中,以配置SurfaceView用于进行主屏绘制,TextureView用于进行副屏绘制为例。
如图15所示,该方案可以包括:
S801、相机应用接收用户的第一操作,相机应用开始运行,开启主屏预览。
其中,第一操作可以是点击可折叠设备界面上,相机应用图标的操作。或者,该第一操作可以是其他指示可折叠设备运行相依应用的操作。
S802、相机应用设置主屏预览控件。
该主屏预览控件可以对应到SurfaceView。那么,响应于该S803的设置操作,可以为主屏配置SurfaceView,以便于后续可以在SurfaceView上进行主屏送显图像的绘制。
S803、相机应用设置副屏预览控件。
结合前述说明,可折叠设备可以具有提供协同预览的能力。那么,在相机应用开始运行后,即可设置该副屏预览控件,用于支持该功能。例如,该副屏预览控件可以对应到TextureView。响应于该S804的设置操作,可以为副屏配置TextureView,以便于后续可以在TextureView上进行副屏送显图像的绘制。
在本申请实施例中,通过上述S801-S803的操作,可以实现后续预览流送显图像的绘制。在一些实现中,该S801-S804的操作也可称为初始化。
需要说明的是,SurfaceFlinger作为一个独立的进程,可以在开机后开始运行。那么在后续绘制过程中,电子设备可以直接调用该SurfaceFlinger执行相关操作。
S804、相机应用向相机服务发送预览流获取指示。
可以理解的是,在相机应用开始运行后,可以在默认在主屏上向用户提供预览功能。
那么,该预览功能对应的预览流可以是相机应用在该S805中向下指示实现的。
S805、相机服务向相机抽象发送预览流获取指示。
S806、相机抽象获取持续反馈的预览流数据。
S807、相机抽象向相机服务发送预览流数据。
本示例中,以当前可折叠设备处于展开状态为例。那么,相机服务可以在确定当前处于展开状态的情况下,指示相机抽象开启外置摄像头并获取预览流数据。需要说明的是,本示例中,相机抽象可以持续不断地向相机服务反馈该预览流数据,以便于其他模块根据该持续不断的预览流数据进行送显图像的绘制,最终显示在主屏或者主屏以及副屏上。
作为一种具体的实现,外置摄像头在获取原始图像后,可以将原始图像按照帧为单位,分别存储在存储器中的不同帧缓冲中。不同帧缓冲可以对应于不同的帧缓冲ID。在该预览流数据中可以携带有各个帧缓冲ID。
S808、相机服务从SurfaceFlinger获取期望绘制时间1。
其中,该期望绘制时间1可以包括最近的下一次帧显示时间。该帧显示时间可以是SurfaceFlinger根据当前显示屏的刷新率确定的。比如,在该主屏显示预览流的情况下,该当前显示屏的刷新率可以为主屏的刷新率。
S809、相机服务根据期望绘制时间1,为各个原始图像设置时间戳。
结合前述图11-图13的示例,相机服务可以通过该步骤,使得相邻的两个帧显示时间之间,仅包括一个时间戳对应的原始图像。由此保证在取用原始图像时,不会出现丢帧的情况。
S810、相机服务将预览流数据中的各个原始图像放入第一送显队列。
其中,第一送显队列用于承载主屏送显图像处理过程中的原始图像的信息。该第一送显队列也即上述示例中的送显队列1。该预览流中的各个原始图像都可以携带有上述过程中配置的时间戳。
S811、相机服务发送可用指示1。示例性的,相机服务可以向SurfaceView发送该可用指示1。
S812、SurfaceFlinger绘制主屏送显图像。
示例性的,SurfaceFlinger可以在SurfaceView上进行主屏送显图像的绘制。
可以理解的是,由于S811中,执行了根据期望绘制时间的时间戳设置方案,使得相邻的两个帧显示时间之间,仅包括一个时间戳对应的原始图像。从而避免了绘制送显图像过程中的原始图像丢弃的情况发生,进而避免了丢帧的情况出现。
这样,即可避免单一屏幕(如主屏)预览过程中的丢帧。可以理解的是,本申请中是以该方案应用于可折叠设备为例进行说明的。而对于仅设置有一个显示屏的直板设备(如直板手机),也可能存在相邻帧显示时间之间的送显队列中包括多个原始图像的情况,也就可能会出现对应的丢帧问题。那么,在另一些实施例中,上述S809-S813的方案实现,也可以灵活应用于直板设备的预览过程中,从而避免丢帧问题的出现。
S813、相机应用接收用户的第二操作,开始执行协同预览。
示例性的,该第二操作可以对应的如图3所示的对按钮201的操作。由此指示可折叠设备触发协同预览功能。当然,在另一些实施例中,该第二操作还可以是其他形式的操作。比如,语音指示、预设手势的指示等。
S814、相机服务获取期望绘制时间2。
S815、相机服务根据期望绘制时间2,为各个原始图像设置时间戳。
结合前述说明,本示例中,以主屏和副屏的刷新率相同为例。则该期望绘制时间2可以对应到主屏以及副屏的刷新率。比如,该期望绘制时间2可以包括:主屏和/或副屏的刷新率对应的下一次帧显示时间。
S816、相机服务将预览流数据中的各个原始图像放入第一送显队列。
S817、相机服务将预览流数据中的各个原始图像放入第二送显队列。
其中,第一送显队列可以是为主屏送显图像的处理过程配置的送显队列。第二送显队列可以是为副屏送显图像的处理过程配置的送显队列。
该第一送显队列和第二送显队列中的原始图像的数据可以同步。比如,在原始图像1和原始图像2进入第一送显队列时,该原始图像1和原始图像2也进入第二送显队列。
S818、相机服务向SurfaceViewTextureView以及发送可用指示2。
S819、SurfaceFlinger绘制主屏送显图像。
示例性的,SurfaceFlinger可以根据第一送显队列中的原始图像,在SurfaceView上绘制主屏送显图像。进而根据该主屏送显图像进行主屏送显。
S820、SurfaceFlinger绘制副屏送显图像。
示例性的,SurfaceFlinger可以根据第一送显队列中的原始图像,在TextureView上绘制副屏送显图像。进而根据该副屏送显图像进行副屏送显。
可以理解的是,该如图15所示的方案实现,其具体细节可以参考前述图11-图14的说明,因此能够获取的有益效果类似,此处不再赘述。
上述主要从可折叠设备中的各个模块角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,可折叠设备中包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对其中涉及的设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性的,图16示出了的一种电子设备1600的组成示意图。如图16所示,该电子设备1600可以包括:处理器1601和存储器1602。该存储器1602用于存储计算机执行指令。示例性的,在一些实施例中,当该处理器1601执行该存储器1602存储的指令时,可以使得该电子设备1600执行上述实施例中提供的技术方案。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图17示出了的一种芯片系统1700的组成示意图。该芯片系统1700可以包括:处理器1701和通信接口1702,用于支持相关设备(如可折叠设备)实现上述实施例中所涉及的功能。在一种示例中,芯片系统还包括存储器,用于保存终端必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。需要说明的是,在本申请的一些实现方式中,该通信接口1702也可称为接口电路。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在上述实施例中的功能或动作或操作或步骤等,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (15)
1.一种图像处理方法,其特征在于,所述方法应用于电子设备中,所述电子设备设置有第一显示屏和第二显示屏,所述电子设备中还包括至少一个摄像模组;所述电子设备中安装有相机应用;所述电子设备中还设置有至少两个视图单元,所述视图单元用于绘制送显图像;
所述方法包括:
所述相机应用运行后,所述电子设备通过第一摄像模组采集获取多个原始图像形成第一预览流,所述第一摄像模组包括在所述至少一个摄像模组中;所述多个原始图像包括第一原始图像以及第二原始图像;
所述电子设备根据期望绘制时间,为所述第一预览流中的第一原始图像以及所述第二原始图像分别配置时间戳,所述时间戳用于标示不同原始图像的获取时间顺序;
所述电子设备根据所述第一预览流获取第二预览流以及第三预览流,所述第二预览流与所述第一显示屏对应,所述第三预览流与所述第二显示屏对应;所述第二预览流以及所述第三预览流均包括携带有时间戳的第一原始图像以及第二原始图像;
所述电子设备根据所述第二预览流,基于第一视图单元,绘制获取所述第一显示屏的第一送显图像,所述第一视图单元包括在所述至少两个视图单元中;
所述电子设备根据所述第三预览流,基于第二视图单元,绘制获取所述第二显示屏的第二送显图像,所述第二视图单元包括在所述至少两个视图单元中。
2.根据权利要求1所述的方法,其特征在于,所述第一原始图像的出帧时间早于所述第二原始图像的出帧时间;原始图像的出帧时间用于标示所述原始图像的获取时间;
所述第一原始图像的出帧时间早于所述期望绘制时间,所述第二原始图像的出帧时间晚于所述期望绘制时间;
所述电子设备根据期望绘制时间,为所述第一预览流中的第一原始图像以及所述第二原始图像分别配置时间戳,包括:
所述电子设备为所述第一原始图像配置第一时间戳,所述第一时间戳在所述期望绘制时间之前;
所述电子设备为所述第二原始图像配置第二时间戳,所述第二时间戳在所述期望绘制时间之后。
3.根据权利要求1或2所述的方法,其特征在于,
所述第一视图单元为表面视图SurfaceView;
所述第二视图单元为纹理视图TextureView。
4.根据权利要求3所述的方法,其特征在于,
所述第一显示屏的显示面积大于所述第二显示屏的显示面积。
5.根据权利要求1或2或4所述的方法,其特征在于,在所述电子设备通过第一摄像模组采集获取多个原始图像形成第一预览流之前,所述方法还包括:
接收用户的第一操作,所述第一操作用于指示电子设备运行所述相机应用;
响应于所述第一操作,所述电子设备运行所述相机应用。
6.根据权利要求5所述的方法,其特征在于,在所述电子设备根据所述第一预览流获取第二预览流以及第三预览流之前,所述方法还包括:
接收用户的第二操作,所述第二操作用于指示所述电子设备开始协同预览。
7.根据权利要求1或2所述的方法,其特征在于,所述电子设备中还包括相机服务,以及SurfaceFlinger服务;
所述电子设备根据期望绘制时间,为所述第一预览流中的第一原始图像以及所述第二原始图像分别配置时间戳,包括:
所述相机服务从所述SurfaceFlinger服务获取所述期望绘制时间;
所述相机服务获取所述第一预览流,并根据所述期望绘制时间,为所述第一原始图像以及所述第二原始图像分别配置时间戳。
8.根据权利要求7所述的方法,其特征在于,所述电子设备根据所述第一预览流获取第二预览流以及第三预览流,包括:
所述相机服务根据携带有时间戳的第一原始图像,以及携带有时间戳的第二原始图像,生成所述第二预览流以及第三预览流。
9.根据权利要求8所述的方法,其特征在于,在所述电子设备绘制获取所述第一显示屏的第一送显图像之前,所述方法还包括:
所述相机服务向所述第一视图单元和所述第二视图单元发送可用指示,所述可用指示用于标示所述第二预览流以及所述第三预览流对应的送显队列可用。
10.根据权利要求9所述的方法,其特征在于,方法还包括:
响应于所述可用指示,所述SurfaceFlinger服务从所述第二预览流对应的送显队列中,选取第一原始图像,所述第一原始图像的时间戳在下一个帧显示时间之前,
所述SurfaceFlinger服务根据所述第一原始图像,在所述第一视图单元上绘制获取所述第一送显图像。
11.根据权利要求9或10所述的方法,其特征在于,方法还包括:
响应于所述可用指示,所述SurfaceFlinger服务从所述第三预览流对应的送显队列中,选取第一原始图像,所述第一原始图像的时间戳在下一个帧显示时间之前,
所述SurfaceFlinger服务根据所述第一原始图像,在所述第二视图单元上绘制获取所述第二送显图像。
12.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器;所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器存储有计算机指令;
当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-11中任一项所述的方法。
13.根据权利要求12所述的电子设备,其特征在于,所述电子设备中的第一显示屏和/或第二显示屏为折叠屏。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令运行时,执行如权利要求1-11中任一项所述的方法。
15.一种芯片系统,其特征在于,所述芯片系统包括处理器和通信接口;所述处理器用于从存储介质中调用并运行所述存储介质中存储的计算机程序,执行如权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211456501.1A CN116709004B (zh) | 2022-11-21 | 2022-11-21 | 一种图像处理方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211456501.1A CN116709004B (zh) | 2022-11-21 | 2022-11-21 | 一种图像处理方法和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116709004A CN116709004A (zh) | 2023-09-05 |
CN116709004B true CN116709004B (zh) | 2024-04-05 |
Family
ID=87828117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211456501.1A Active CN116709004B (zh) | 2022-11-21 | 2022-11-21 | 一种图像处理方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116709004B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114531519A (zh) * | 2020-10-31 | 2022-05-24 | 华为技术有限公司 | 一种基于垂直同步信号的控制方法及电子设备 |
CN114579076A (zh) * | 2022-01-30 | 2022-06-03 | 荣耀终端有限公司 | 数据处理方法和相关装置 |
CN114697527A (zh) * | 2020-12-29 | 2022-07-01 | 华为技术有限公司 | 一种拍摄方法、系统及电子设备 |
CN114816286A (zh) * | 2021-01-22 | 2022-07-29 | 华为技术有限公司 | 拼接屏同步显示方法、电子设备和拼接屏系统 |
CN115048012A (zh) * | 2021-09-30 | 2022-09-13 | 荣耀终端有限公司 | 数据处理方法和相关装置 |
WO2022205734A1 (zh) * | 2021-04-02 | 2022-10-06 | 亿咖通(湖北)科技有限公司 | 图像时间同步方法、装置、电子设备及存储介质 |
-
2022
- 2022-11-21 CN CN202211456501.1A patent/CN116709004B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114531519A (zh) * | 2020-10-31 | 2022-05-24 | 华为技术有限公司 | 一种基于垂直同步信号的控制方法及电子设备 |
CN114697527A (zh) * | 2020-12-29 | 2022-07-01 | 华为技术有限公司 | 一种拍摄方法、系统及电子设备 |
CN114816286A (zh) * | 2021-01-22 | 2022-07-29 | 华为技术有限公司 | 拼接屏同步显示方法、电子设备和拼接屏系统 |
WO2022205734A1 (zh) * | 2021-04-02 | 2022-10-06 | 亿咖通(湖北)科技有限公司 | 图像时间同步方法、装置、电子设备及存储介质 |
CN115048012A (zh) * | 2021-09-30 | 2022-09-13 | 荣耀终端有限公司 | 数据处理方法和相关装置 |
CN114579076A (zh) * | 2022-01-30 | 2022-06-03 | 荣耀终端有限公司 | 数据处理方法和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116709004A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845856B (zh) | 基于对象的同步更新方法、装置、存储介质及设备 | |
US20170235435A1 (en) | Electronic device and method of application data display therefor | |
CN113741840A (zh) | 多窗口投屏场景下的应用界面显示方法及电子设备 | |
EP3287866A1 (en) | Electronic device and method of providing image acquired by image sensor to application | |
CN112527174B (zh) | 一种信息处理方法及电子设备 | |
CN110070496B (zh) | 图像特效的生成方法、装置和硬件装置 | |
CN111221845A (zh) | 一种跨设备信息搜索方法及终端设备 | |
CN112114733B (zh) | 一种截屏、录屏方法、移动终端及计算机存储介质 | |
CN112527222A (zh) | 一种信息处理方法及电子设备 | |
CN113190362B (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
WO2023109764A1 (zh) | 一种壁纸显示方法及电子设备 | |
CN113220366A (zh) | 子应用启动方法、装置、终端及服务器 | |
CN113596175A (zh) | 场景同步方法、终端、服务器及系统 | |
CN116709004B (zh) | 一种图像处理方法和电子设备 | |
CN114449171B (zh) | 控制摄像头的方法、终端设备、存储介质及程序产品 | |
CN111600862B (zh) | 一种用户账户管理方法及设备 | |
JP7500776B2 (ja) | ビデオ特殊効果の配置方法、ビデオ特殊効果の配置装置、デバイス及び記憶媒体 | |
CN113642010B (zh) | 一种获取扩展存储设备数据的方法及移动终端 | |
CN114595203A (zh) | 基于双系统的文件同步方法、终端设备及存储介质 | |
CN114356559A (zh) | 一种多线程控制方法及终端设备 | |
US20170048292A1 (en) | Electronic device and method for providing content | |
CN111158563A (zh) | 电子终端及图片矫正方法 | |
CN111159734A (zh) | 通信终端及多应用数据互访处理方法 | |
CN111142648B (zh) | 一种数据处理方法和智能终端 | |
CN116701134B (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 | ||
GR01 | Patent grant |