图层合成方法、装置、电子设备及存储介质与流程

文档序号:18944638发布日期:2019-10-23 01:27阅读:269来源:国知局
图层合成方法、装置、电子设备及存储介质与流程

本申请涉及图像处理技术领域,更具体地,涉及一种图层合成方法、装置、电子设备及存储介质。



背景技术:

随着电子技术的发展,具有图像显示功能的电子设备(如手机或平板电脑等)越来越多,电子设备的显示界面通常有多个显示图层,通过对多个显示图层进行合成显示在电子设备上。但是,电子设备在合成图层时,功耗较高。



技术实现要素:

鉴于上述问题,本申请提出了一种图层合成方法、装置、电子设备及存储介质,以改善上述问题。

第一方面,本申请实施例提供了一种图层合成方法,获取待显示界面的多个图层中的各个图层的比特数;以比特数小于预设比特数的图层作为第一图层,以比特数大于或等于预设比特数的图层作为第二图层;通过图形处理器(gpu,graphicsprocessingunit)对所述第一图层进行合成,获得中间图层;通过多媒体显示处理器(mdp,multimediadisplayprocessor)将所述第二图层以及所述中间图层进行合成,获得待显示界面用于显示。

第二方面,本申请实施例提供了一种图层合成装置,比特数获取模块,用于获取待显示界面的多个图层中的各个图层的比特数;图层分类模块,用于以比特数小于预设比特数的图层作为第一图层,以比特数大于或等于预设比特数的图层作为第二图层;第一合成模块,用于通过图形处理器(gpu,graphicsprocessingunit)对所述第一图层进行合成,获得中间图层;第二合成模块,用于通过多媒体显示处理器(mdp,multimediadisplayprocessor)将所述第二图层以及所述中间图层进行合成,获得待显示界面用于显示。

第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器、图形处理器(gpu,graphicsprocessingunit)以及多媒体显示处理器(mdp,multimediadisplayprocessor),所述存储器、gpu以及mdp耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时,所述处理器执行上述的方法,所述gpu和所述mdp执行上述方法中的图层合成。。

第四方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述的方法。

本申请实施例提供的图层合成方法、装置、电子设备及存储介质,根据图层的比特数,将图层分为比特数小于预设比特数的第一图层,比特数大于或等于预设比特数的第二图层。将比特数较小的第一图层由功耗较高的gpu进行合成,而将比特数较大的第二图层由功耗低的mdp进行合成,从而降低电子设备的图层合成功耗。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请实施例提供的图像处理的逻辑框架图。

图2示出了本申请实施例提供的一种显示界面示意图。

图3示出了图2所示的显示界面对应的图层示意图。

图4示出了本申请实施例提供的图层合成方法的一种流程图。

图5示出了本申请实施例提供的图层合成方法的另一种流程图。

图6示出了本申请实施例提供的图层合成方法的又一流程图。

图7示出了本申请实施例提供的图层合成装置的功能模块图。

图8示出了本申请实施例提供的电子设备的结构框图。

图9是本申请实施例的用于保存或者携带实现根据本申请实施例的图层合成方法的程序代码的存储介质。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

应用程序(application)可以通过窗口管理器(windowsmanager)创建窗口(window),窗口管理器为每一个窗口创建surface用于在上面绘制各种需要显示的元素,每个surface对应一个图层,即可以在每个surface绘制一个图层。

在显示界面(如activity)中,可以包括多个图层,如导航栏、状态栏、程序界面等。每个图层在相应的surface进行绘制,即在每个surface进行对应的图层的绘制,具体可以通过硬件加速渲染器(hwui)和/或skia图形库等在surface提供的画布(cavas)进行图层绘制。

系统(system)再使用图层传递模块(surfaceflinger)服务将各个surface进行合成,即将各个图层进行合成。其中,surfaceflinger服务运行在系统进程中,用来统一管理系统的帧缓冲区(framebuffer),surfaceflinger获取所有的图层,可以使用图像处理器(gpu,graphicsprocessingunit)对图层进行合成,将合成的结果保存到帧缓存区。在本申请实施例中,gpu可以对所有或者部分图层进行合成。其中,当gpu对一个待显示的显示界面中的部分图层进行合成时,硬件图层混合器(hwc,hardwarecomposer)可以将surfaceflinger通过gpu合成的结果与其他图层一起合成,具体的,如图1所示,hwc可以调用多媒体显示处理器(mdp,multimediadisplayprocessor),对帧缓冲区中gpu合成后获得的图层与其他尚未合成的图层进行图层的合成,最终形成bufferqueue中的一个buffer,再在显示驱动的作用下,将buffer中合成的图像用于显示。

也就是说,电子设备的显示屏可以进行显示界面的显示,在显示界面中可能包括多个图层,即显示界面由多个图层合成。其中,每一个图层都是由许多像素组成的,各个图层通过叠加的方式组成整个图像,形成电子设备的显示界面。图层可以将页面上的元素精确定位,图层中可以加入文本、图片、表格、插件,也可以在里面再嵌套图层。对于图层以及图层合成的图像,可以通俗地理解为,图层就像是含有文字或图形等元素的胶片,一张张图层按指定的顺序叠放在一起,组合起来形成的最终图像效果,就是由图层组合形成的图像,例如电子设备的显示界面。当然,可以理解的是,图层并不是真的胶片,上述描述只是为了便于理解的比喻。例如图2所示的电子设备的桌面显示界面100,包括的多个图层,分别为状态栏101、导航栏102、墙纸103以及图标层104。

为了使显示界面在显示屏进行显示,需要将显示界面的各个图层进行合成。例如将图3所示的状态栏101、导航栏102、墙纸103以及图标层104合成为图2所示的显示界面100。发明人发现,由于gpu是一个通用的图形处理器,在图形处理上比mdp功能强,除了能够做2维图像处理,还能做3维图像处理、特效等,一次性可以叠加多个图层,仅通过常用的图层合成方式gpu进行图层合成时,可以合成的图层数量基本不受限制,但是功耗相对较高。

而mdp是一个专用的显示图像处理单元,能够做常规的2维图像处理,主要用于做多个图层的合成叠加,且功耗低。但是mdp一次性能合成的图层数量有限。具体的,mdp一次性能合成的图层数量与mdp中fifo管道数量对应,mdp一次性能够叠加的图层越多,在其内部需要更多的fifo管道,这都是比较昂贵的电路,因此,mdp可以合成的图层数量越多,成本越高。在某些厂商的高端平台中,mdp也最多只有8个fifo管道,一次性最多能够合成叠加8个图层,而在中低端平台,一个mdp可能只有4个fifo管道,一次性最多只能够叠加4个图层。因此,若仅通过mdp进行图层合成,由于mdp一次性可以合成图层的数量有限,对于某些图层较多的待显示的显示界面,mdp无法处理,或者需要分多次合成,影响合成速度。因此,发明人提出了本申请实施例的图层合成方法、装置、电子设备及存储介质,通过gpu以及mdp相互协作进行图层合成,克服mdp对合成图层数量的限制且尽可能地降低功耗。其中,对比特数比较大的图层,通过mdp进行合成,从而相对于使用gpu进行合成功耗更低;由于mdp一次可合成的图层数量受限,则其他的比特数比较小的图层则通过gpu合成,以实现图层合成过程中产生尽可能低的功耗。下面对本申请实施例的图层合成方法进行详细介绍。

图4示出了本申请实施例提供的图层合成方法的流程图,该图层合成方法应用于电子设备。具体的,该图层合成方法包括:

步骤s110:获取待显示界面的多个图层中的各个图层的比特数。

电子设备在显示过程中,在显示屏进行显示界面的显示。显示屏显示的显示界面作为待显示界面,包括多个图层。其中,各个图层的比特数不同,比特数越大,图层合成过程中产生的功耗越大,为了尽可能降低电子设备进行图层合成的功耗,可以通过比特数将图层分为两类,以使比特数较大的一类图层由mdp合成,使图层合成过程中产生的功耗尽可能低;另一类比特数较小的图层通过gpu进行合成,克服mdp存在的合成数量限制,并提高合成速度。

因此,可以获取待显示界面中的各个图层的比特数。其中,图层的比特数表示了图层的数据大小,或者说图层所需存储容量的多少,如16比特,32比特等。当然,本申请实施例也可以用字节数或其他的表示方法表示图层的数据大小,数据越大对于的比特越大,本申请实施例以比特数为例进行说明。

在本申请实施例中,获取图层比特数大小的方式在本申请实施例中并不限制。例如,在一种实施方式中,可以读取图层的像素数量,并根据每个像素所占比特数,通过像素数量乘以每个像素所占比特数计算图层的比特数。

又如,在另一种实施方式中,图层中包括一种或多种元素,可以获取每个图层中各种元素的比特数之和,作为该图层的比特数。其中,图层中的元素为该图层用于显示的、需要占据存储空间的数据,如文本、图片等。例如,某个图层用于显示某图片,则该图层中的元素为该图片的,该图层的比特数为该图片的比特数,例如图2所示,图标层104的比特数为各个图标的比特数之和。又如,某图层用于显示文字,则该图层中的元素为该图层用于显示的文字,图层的比特数可以是该图层中文字的比特数之和。

在该实施方式中,图层中各种元素的比特数计算方式并不限定。如可以是,对于任意一个元素,根据元素的最小组成单位的数量以及每个最小组成单位所占比特数,计算各元素的大小;或者是,某元素的相关数据中,存储有该元素的比特数信息,则可以直接读取该比特数信息确定该元素的比特数。例如,若图层中的元素包括图片,计算图片的比特数的方式可以是,读取图片的像素数量,并根据每个像素所占比特数,通过像素数量乘以每个像素所占比特数计算图片的比特数;或者可以是,在图片的数据信息中存储该图片比特数的相关信息,直接读取该比特数的相关信息,获得图片的比特数。

步骤s120:以比特数小于预设比特数的图层作为第一图层,以比特数大于或等于预设比特数的图层作为第二图层。

将各个图层的比特数与预设比特数进行比对,将其中比特数大于预设比特数的图层作为第一图层,将其中小于或等于预设比特数的图层作为第二图层。

其中,该预设比特数的具体值在本申请实施例中并不限定,可以根据实际需要设置。例如,可以根据电子设备通常合成的图层的数量以及比特数,设置预设比特数的值为,使比预设比特数大的图层数量小于或等于mdp一次性能合成的最大图层数量。

步骤s130:通过图形处理器(gpu,graphicsprocessingunit)对所述第一图层进行合成,获得中间图层。

步骤s140:通过多媒体显示处理器(mdp,multimediadisplayprocessor)将所述第二图层以及所述中间图层进行合成,获得待显示界面用于显示。

通过gpu以及mdp对第一图层以及第二图层进行合成。其中,由于mdp进行合成所限制的为图层的数量,而非图层的比特数,而在同一种合成方式进行合成时,比特数大的图层相对于比特数小的图层功耗更高。因此,将比特数较小的第一图层由gpu进行合成,使gpu既为mdp分担了部分图层,又能以较小的比特数进行合成以降低合成功耗。将其中比特数较大的第二图层由mdp合成。

其中,所有的图层合成以获得最终的待显示界面可以由mdp实现,以使电子设备的图层合成过程中功耗尽可能地低。即gpu将第一图层合成,定义第一图层的合成结果为中间图层。mdp将中间图层以及第二图层进行合成。获得待显示界面用于显示。

例如,图2所示的桌面显示界面100中的多个图层分别为状态栏101、导航栏102、墙纸103以及图标层104,若其中状态栏101以及导航栏102的比特数小于预设比特数,墙纸103以及图标层104的比特数大于或等于预设比特数,则将状态栏101以及导航栏102作为第一图层;将墙纸103以及图标层104作为第二图层。gpu将状态栏101以及导航栏102合成,mdp将gpu的合成结果、墙纸103以及图标层104合成,得到最终合成的待显示界面。

可选的,第一图层合成获得中间图层后,可以存储于帧缓冲区中,若显示于屏幕的待显示界面更新过程中,中间图层包括的各图层都没有更新,则帧缓冲区中的该中间图层保持不变,gpu不需要再次合成该中间图层,降低gpu的合成频率。在待显示界面刷新时,mdp可以读取帧缓冲区中的中间图层,用于与第二图层合称为最终的用于显示的图像。

可选的,在gpu对第一图层进行合成时,mdp可以同时对第二图层进行合成,使第一图层的合成与第二图层的合成过程同步进行,既能降低合成功耗,又能提高合成速度。本申请实施例中,mdp将第二图层合成后获得的图层可以定义为待合成图层。mdp将待合成图层和中间图层进行合成,获得最终的待显示界面。其中,可以将所述中间图层保存到帧缓冲区,mdp将所述第二图层合成为待合成图层后,读取帧缓冲区的中间图层,将所述中间图层与所述待合成图层合成为待显示界面。或者若mdp在将第二图层合成的过程中,中间图层已经合成完成,mdp可以读取帧缓冲区的中间图层,将中间图层与第二图层进行共同合成。

在本申请实施例中,通过gpu合成比特数小于预设比特数的图层作为中间图层,通过mdp合成中间图层以及比特数大于或等于预设比特数的图层,获得最终的图层合成结果用于显示,从而,通过mdp和gpu的结合,使电子设备在图层合成过程中的功耗尽可能地低。

在本申请另一实施例提供的方法中,还可以对用于确定第一图层以及第二图层的预设比特数的大小进行动态调整,以使第一图层数量以及第二图层的数量处于合理的范围内,既使mdp以及gpu的共同合成降低图层合成功耗,又能提高合成速度。具体的,请参见图5,该方法包括:

步骤s210:获取待显示界面的多个图层中的各个图层的比特数。

该步骤可以参见前述实施例的对应描述,在此不再进行赘述。

步骤s220:动态调整预设比特数的大小。

步骤s230:以比特数小于预设比特数的图层作为第一图层,以比特数大于或等于预设比特数的图层作为第二图层。

预设比特数为划分第一图层以及第二图层的标准,但是,不同电子设备,其对应的用户使用倾向不同,则在电子设备显示的界面的图层数量以及图层比特数的结构不同,另外,在不同时刻观看不同的内容,显示界面中图层数量可能差别较大。对于某一待显示界面而言,预设比特数设置偏大或者偏小,都可能导致第一图层的数量过多或者第二图层的数量过多,超出mdp的处理能力或者mdp合成的图层过少,影响图层合成效果。为了使第一图层的数量以及第二图层的数量处于合理的状态,本申请实施例可以动态调整预设比特数的大小。

具体的,用户在一段时间内浏览的内容可能比较接近,则各个待显示界面之间的图层总比特数比较接近,例如,用户在观看视频过程中,显示界面中包括的图层可能都是视频内容所在的视频层以及视频内容以外的背景层,各个显示界面之间比特数比较接近以及包括的图层数量比较接近。因此,可以根据电子设备的历史显示记录动态调整预设比特数。

作为一种实施方式,可以每隔预设时间调整一次预设比特数,并且,根据间隔的预设时间内的显示界面中的比特数进行调整。具体的,可以是,在屏幕处于显示状态下每隔预设时间,确定当前时间之前预设时间范围内所有用于待显示界面的图层的比特数的平均值;以所述平均值作为所述预设比特数。其中,可以记录每个显示界面中各个图层的比特数。确定平均值时,将最近的预设时间范围内总的比特数除以总的图层数量计算平均值。

可选的,在该实施方式中,在以新的预设比特数作为分类标准,将大于预设比特数的图层作为第二图层时,若第二图层的数量大于或等于mdp一次性可以处理的图层数量的最大值,可以将预设比特数再阶梯性调大,直到根据预设比特数进行图层分类时,第二图层的数量小于mdp一次性可以处理的图层数量。其中,调整阶梯在本申请实施例中并不限定,可以是预先设置的一个较小的值,也可以是在预设时间范围内比特数最小的图层的比特数,尽量避免预设比特数一次调整过多导致第二图层数量过小,远远不足mdp的处理能力。

其中,由于在显示屏处于显示状态的预设时间范围内,显示屏显示的内容比较接近,则作为分类标准的预设比特数比较接近,则阶梯性调整预设比特数可以只在根据平均值设置预设比特数后进行一次,而不在预设时间范围内多次调整,降低数据处理量。

作为另一种实施方式,可以在根据预设比特数进行图层分类后,第一图层和第二图层的数量差别过大而调整预设比特数的值。具体的,可以记录每个待显示界面中第一图层以及第二图层的数量;判断是否连续预设数量的待显示界面中,第一图层的数量比第二图层的数量大预设差值。

若连续预设数量的待显示界面中第一图层的数量比第二图层的数量大预设差值,表明第一图层数量过多,而第二图层数量过少,则将所述预设比特数的值减小,以增加后续分类时第二图层的数量,减少第一图层的数量。

若连续预设数量的待显示界面不是都满足第一图层的数量比第二图层的数量大预设差值,再判断是否连续预设数量的待显示界面都满足第二图层的数量比第一图层的数量大预设差值。若连续预设数量的待显示界面都满足第二图层的数量比第一图层的数量大预设差值,表明第二图层数量过多,而第一图层数量过少,将所述预设比特数的值增大,以增加后续分类时第一图层的数量,减少第二图层的数量。

若连续预设数量的待显示界面不是都满足第二图层的数量比第一图层的数量大预设差值,也不是都满足第一图层的数量比第二图层的数量大预设差值,表示当前预设比特数设置较为合理,可以保持所述预设比特数的值不变。

在本申请实施例中,动态调整预设比特数的大小的执行时序可以不受其他步骤的执行时序限制,在根据预设比特数将待显示界面的图层分为第一图层和第二图层时,以当前预设比特数作为分类依据,即在进行分类时,若预设比特数被调整,则以调整后的作为分类依据;若预设比特数未被调整,则以该未被调整的预设比特数作为分类依据。

可选的,在本申请实施例中,由于待显示界面中图层数量一般不会过多,从而以预设比特数作为分类标准时,第二图层的数量通常不会超出mdp的合成能力限制。假设在某次第二图层数量过多,可以将该次超出mdp合成能力的比特数最小的图层分给gpu进行合成。或者是,mdp分多次合成,即mdp合成一部分存储,再合成另一部分,再将所有中间的合成结果进行合成。

步骤s240:通过图形处理器(gpu,graphicsprocessingunit)对所述第一图层进行合成,获得中间图层。

步骤s250:通过多媒体显示处理器(mdp,multimediadisplayprocessor)将所述第二图层以及所述中间图层进行合成,获得待显示界面用于显示。

步骤s240和步骤s250的描述可以参见前述实施例,在此不再赘述。

可以理解的,在本申请实施例中,考虑mdp的合成能力限制时,若仅仅通过mdp进行合成,由mdp合成的图层数量可以是小于或等于mdp一次性可以合成的最多图层数量,即由mdp合成的图层数量可以是小于或等于mdp的fifo数量。若由mdp和gpu同时合成,即mdp不仅需要合成分配给其的第二图层,还需要将gpu合成的中间图层与第二图层共同合成为待显示界面,则由mdp合成的第二图层的数量需要小于或等于mdp一次性可以合成的最多图层数量减一,由mdp合成的第二图层的数量可以是小于或等于mdp的fifo数量减一。总之,gpu合成获得的中间图层也作为一种图层,占用mdp的合成能力,即gpu合成的中间图层由mdp合成为待显示界面时也占用mdp的fifo管道,mdp一次可以合成的包括中间图层在内的图层总数量不超过mdp一次性可以合成的最多图层数量,即不超过mdp的fifo数量。

在本申请实施例提供的图层合成方法中,动态调整预设比特数的大小,使预设比特数契合于电子设备的实际使用情况,不会因为预设比特数过大导致第一图层的数量过大,也不会因为预设比特数过小导致第二图层数量过多,从而使gpu和mdp混合合成时各自进行合成的图层数量合理,在节省功耗的情况下,也可以合成速度更快。

本申请实施例还提供了一种实施例。在该实施例中,该图层合成的方法应用于分辨率调整的场景下。具体的,在需要进行分辨率调整的情况下,对待显示界面的图层进行分辨率调整。具体的,请参见图6,该方法包括:

步骤s310:获取各个图层的分辨率。

步骤s320:判断各个图层的分辨率与屏幕分辨率是否适配。

步骤s330:对于分辨率与屏幕分辨率不适配的图层,调整该图层的分辨率到和所述屏幕分辨率适配。

电子设备的显示屏具有相应的屏幕分辨率,用于在显示屏显示的图像也具有相应的图像分辨率。其中,屏幕分辨率是指在屏幕横纵向上的像素点数,单位是px,1px=1个像素点,例如,若以纵向像素*横向像素表示屏幕分辨率,纵向上有1960个像素点、横向上有1080个像素点的屏幕的分辨率为1960*1080。本申请实施例中,为了便于理解,对应屏幕分辨率的表示方式定义图像分辨率,即定义图像分辨率为图像的像素尺寸,即图像在横纵向上的像素点数,单位是px,1px=1个像素点,如以纵向像素*横向像素表示图像分辨率,纵向上有1960个像素点、横向上有1080个像素点的图像的分辨率为1960*1080。

若电子设备的屏幕分辨率与图像的图像分辨率不适配,则图像显示则会异常,具体可能表现为图像的实际显示物理尺寸与设计该图像时的物理尺寸不同。其中,图像的物理尺寸通过设备独立像素(dp,deviceindependentpixels)进行限定,屏幕分辨率与图像分辨率的适配为使图像的dp保持不变,例如,一个启动图标的尺寸为48x48dp,则不管在何种屏幕分辨率的屏幕中,该启动图标都应当为48x48dp,该图标才与屏幕分辨率适配。

在图层进行渲染之前,可以获取各个图层的分辨率。其中,获取图层分辨率的方式可以是,获取各个图层中图片的相关描述信息,从描述信息中获得各个图片的分辨率,从而获得各个图层的分辨率。其中,每个图片即为一个图像。

另外,还可以获取屏幕的分辨率。获取屏幕分辨率的方式在本申请实施例中并不限定,例如可以是,通过窗口管理器获取,通过资源数据(resources)获取、通过获取设备性能参数的函数获取等。

再判断各个图层的分辨率与屏幕分辨率是否适配,具体可以为判断各个图层中各元素的分辨率与屏幕分辨率是否适配,本申请实施例以图片为例进行说明。图片的分辨率与屏幕分辨率是否适配,即判断在该屏幕分辨率下,图片在当前分辨率的情况下是否能以图片所要显示的dp进行显示。结合前述描述,该判断过程例如可以是,获取图片的dp数值,根据屏幕分辨率确定屏幕密度,确定图片的dp数值在该屏幕密度下对应的分辨率与图片当前实际的分辨率是否一致,若不一致,则图片的分辨率与屏幕分辨率不适配。可选的,若判定文字分辨率是否适配,则可以根据文字的sp(scale-independentpixel)进行判断。

若有图层的分辨率与屏幕分辨率不适配,则对该图层的分辨率进行调整。具体的,有图层中的图片与屏幕分辨率不适配,则调整该图片的分辨率至与屏幕的分辨率适配。例如图2所示的桌面显示界面100中,若图标层104中的图标不适配屏幕当前的分辨率,则图标层中各个图标的分辨率进行调整以适配屏幕分辨率。具体调整过程在本申请实施例中并不限定。结合前述描述,例如可以是,将图片的实际分辨率调整为图片的dp数值在当前屏幕密度下应当达到的分辨率。

在渲染图层时,以调整后的分辨率对图层中各个图片进行渲染。若图层的分辨率与屏幕分辨率适配,则以当前分辨率进行渲染。

另外,存在某些图层在屏幕中显示内容不变,在不同的显示界面中都是一致的,例如导航栏对应的图层,定义屏幕中的显示内容不变的图层为固定图层。对于固定图层,电子设备在一次渲染后可以将其存储,在待显示界面中有固定图层时,可以不再重新渲染固定图层,直接读取渲染好的固定图层进行合成,减少图像处理时间。也就是说,若待显示界面的多个图层中包括固定图层,以待显示界面的多个图层中包括的固定图层作为目标图层。在需要对图层进行合成时,获取待显示界面的各个图层的方式可以是,读取存储的固定图层中的目标图层,以及渲染所述多个图层中目标图层以外的图层,获得待显示界面的多个图层用于进行合成。

可选的,某些电子设备具有分辨率调整功能,即用户可以将电子设备的显示屏由一种屏幕分辨率调整到另一种屏幕分辨率,或者电子设备根据当前剩余电量将显示屏的从一种屏幕分辨率调整到另一种屏幕分辨率。由于显示屏的屏幕分辨率调整后,固定图层也应当调整为与新的屏幕分辨率适配。因此,可选的,在本申请实施例中,当监测到屏幕分辨率发生改变,获取用于显示的固定图层,将所述固定图层的分辨率调整到与所述屏幕分辨率适配并保存。其中,检测到屏幕分辨率发生改变,可以是监测到屏幕分辨率调整操作,并响应该调整操作进行分辨率调整的情况;或者是,获取到屏幕的分辨率与前一次获取的屏幕分辨率不一致,或者通过其他方式监测到。另外,将固定图层的分辨率调整到屏幕分辨率适配并保存可以是,将固定图层以适配屏幕分辨率的分辨率进行渲染,将渲染完成的图层保存。

从而,在判断各个图层的分辨率与屏幕分辨率是否适配时,若各个图层中包括固定图层,由于固定图层的分辨率已经在监测到屏幕分辨率调整时已经更改并渲染保存,则可以不再判断固定图层的分辨率是否与屏幕适配,而是判断固定图层以外的其他图层与所述屏幕分辨率是否适配,从而减少处理时间以及处理流程。若固定图层以外的其他图层中存在不适配屏幕分辨率的图层,对不适配屏幕分辨率的图层调整至适配屏幕分辨率。

另外,对于可以进行分辨率调整的电子设备,若电子设备的屏幕分辨率被调整,则同一图片,如电子设备中的某图标,或者对于同一分辨率的图片,显示效果相对于调整前发生变化。其中,若屏幕分辨率被调高,则同一图片或者同一分辨率的图片的显示缩小;若屏幕分辨率被调低,则同一图片或者同一分辨率的图片的显示增大,在同一屏幕调整屏幕分辨率后,对同一图片的显示呈现不同的显示效果,不利于养成用户的观看习惯,并且给用户的查看带来不适,影响用户的体验。具体可以理解为,如果屏幕的像素密度为160dpi(dotsperinch),1dp=1px;如果屏幕的像素密度为320dpi,1dp=2px;如果屏幕的像素密度为480dpi,1dp=3px,以此类推,随着屏幕的像素密度成倍改变,1dp对应的像素数以对应的倍数改变。对于同一显示屏,当屏幕分辨率被调高,屏幕的像素密度(dpi,dotsperinch)增大,若要图片适配于屏幕的分辨率,保持图片的dp不变,在图片的分辨率适配调整前的屏幕分辨率的情况下,图片的像素尺寸,即分辨率,应以对应屏幕密度增加的倍数增大;对于同一显示屏,当屏幕分辨率被调低,屏幕的像素密度(dpi,dotsperinch)降低,若要图片适配于屏幕的分辨率,保持图片的dp不变,在图片的分辨率适配调整前的屏幕分辨率的情况下则图片的像素尺寸,即分辨率,以对应屏幕密度降低的倍数降低。当然,若图片的分辨率本身并不适配调整前或者调整后的分辨率,则直接根据图片的dp以及当前屏幕密度调整图片的分辨率。

步骤s340:获取待显示界面的多个图层中的各个图层的比特数。

步骤s350:以比特数小于预设比特数的图层作为第一图层,以比特数大于或等于预设比特数的图层作为第二图层。

对待显示界面的各个图层的比特数进行确定。

可选的,确定图层的比特数可以在图层合成前进行,可以在图层渲染前、图层渲染过程中或者图层渲染结束后,在本申请实施例中并不限定。其中,若在图层渲染结束前完成对比特数的确定以及对图层的分类,可以提高处理速度。该对图层的分类即根据图层的比特数确定图层属于第一图层还是第二图层。

可选的,确定图层的比特数可以在调整分辨率前或者调整分辨率后。其中,若图层的分辨率需要调整,若确定图层的比特数在分辨率调整前,可以在确定图层需要调整到的分辨率后,根据新的分辨率确定图层的比特数。具体确定图层比特数的方式在本申请实施例中并不限定,具体可以参照前述描述,在此不再赘述。

步骤s360:通过图形处理器(gpu,graphicsprocessingunit)对所述第一图层进行合成,获得中间图层。

步骤s370:通过多媒体显示处理器(mdp,multimediadisplayprocessor)将所述第二图层以及所述中间图层进行合成,获得待显示界面用于显示。

对分辨率调整后的各个图层进行合成,获得适配屏幕的待显示界面进行显示。具体描述可以参见前述实施例,在此不再进行赘述。

在本申请实施例中,对待显示界面适配屏幕的调整,通过基于图层的调整实现。也就是说,对待显示界面中各个图层进行调整,使各个图层与屏幕分辨率适配,提高分辨率调整的处理效果,尽可能降低分辨率调整以及渲染所需要的时间,再对调整后的各图层进行合成,进一步降低电子设备的功耗。

本申请实施例还提供了一种图层合成装置400。具体的,请参见图7,该装置400包括:比特数获取模块410,用于获取待显示界面的多个图层中的各个图层的比特数;图层分类模块420,用于以比特数小于预设比特数的图层作为第一图层,以比特数大于或等于预设比特数的图层作为第二图层;第一合成模块430,用于通过图形处理器(gpu,graphicsprocessingunit)对所述第一图层进行合成,获得中间图层;第二合成模块440,用于通过多媒体显示处理器(mdp,multimediadisplayprocessor)将所述第二图层以及所述中间图层进行合成,获得待显示界面用于显示。

可选的,该装置400还可以包括分辨率调整模块。具体的,分辨率调整模块可以包括分辨率获取单元,用于获取各个图层的分辨率;适配判断单元,用于判断各个图层的分辨率与屏幕分辨率是否适配;适配单元,对于分辨率与屏幕分辨率不适配的图层,调整该图层的分辨率到和所述屏幕分辨率适配。

可选的,分辨率调整模块还可以包括:图层单元,用于当监测到屏幕分辨率发生改变,获取用于显示的固定图层,所述固定图层为在屏幕中的显示内容不变的图层。适配单元还用于将所述固定图层的分辨率调整到与所述屏幕分辨率适配并保存。适配判断单元用于,若待显示界面包括的各个图层中包括所述固定图层,判断固定图层以外的其他图层与所述屏幕分辨率是否一致。

可选的,该装置400还可以包括比特数调整模块,用于动态调整所述预设比特数的大小。

可选的,该比特数调整模块可以用于在屏幕处于显示状态下每隔预设时间,确定当前时间之前预设时间范围内所有用于待显示界面的图层的比特数的平均值;以所述平均值作为所述预设比特数。

可选的,该比特数调整模块可以用于记录每个待显示界面中第一图层以及第二图层的数量;判断是否连续预设数量的待显示界面都满足第一图层的数量比第二图层的数量大预设差值;若连续预设数量的待显示界面都满足第一图层的数量比第二图层的数量大预设差值,将所述预设比特数的值减小;若连续预设数量的待显示界面不是都满足第一图层的数量比第二图层的数量大预设差值,判断是否连续预设数量的待显示界面都满足第二图层的数量比第一图层的数量大预设差值;若连续预设数量的待显示界面都满足第二图层的数量比第一图层的数量大预设差值,将所述预设比特数的值增大;若连续预设数量的待显示界面不是都满足第二图层的数量比第一图层的数量大预设差值,保持所述预设比特数的值不变。

可选的,该装置还可以包括缓存模块,用于将所述中间图层保存到帧缓冲区。第二合成模块440可以用于所述mdp将所述第二图层合成为待合成图层;所述mdp读取帧缓冲区的中间图层,将所述中间图层与所述待合成图层合成为待显示界面。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中各种实施方式都可以有对应的模块进行实现,本申请实施例中不再一一进行对应赘述。

请参考图8,其示出了本申请实施例提供的一种电子设备700的结构框图。该电子设备700可以是手机、平板电脑、电子书等电子设备。该电子设备700包括存储器710、处理器720、、gpu730以及mdp740。所述存储器710、gpu730以及mdp740耦接到所述处理器,所述存储器710存储指令,当所述指令由所述处理器720执行时,所述处理器执行上述一个或多个实施例所描述的方法,gpu730以及mdp740对应执行方法中的图层合成过程。

处理器710可以包括一个或者多个处理核。处理器710利用各种接口和线路连接整个电子设备700内的各个部分,通过运行或执行存储在存储器720内的指令、程序、代码集或指令集,以及调用存储在存储器720内的数据,执行电子设备700的各种功能和处理数据。可选地,处理器710可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器710可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器710中,单独通过一块通信芯片进行实现。

存储器720可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。存储器720可用于存储指令、程序、代码、代码集或指令集,如用于实现本申请实施例提供的图层合成方法的指令或代码集。存储器720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令、用于实现上述各个方法实施例的指令等。存储数据区还可以电子设备在使用中所创建的数据(比如音视频数据、聊天记录数据)等。

请参考图9,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。

计算机可读存储介质800可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitorycomputer-readablestoragemedium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1