一种确定解码任务的方法和装置与流程

文档序号:13281814阅读:111来源:国知局
一种确定解码任务的方法和装置与流程
本发明涉及页面渲染
技术领域
,并且更具体地,涉及一种确定解码任务的方法和装置。
背景技术
:随着通信技术的发展,用户越来越多的使用客户端中的网络应用程序(webapp)或浏览器进行页面浏览等操作。页面浏览的重要性能之一为页面的渲染速度,渲染速度越快,则页面显示的越快,用户浏览页面感觉越流畅。页面浏览用户体验以其流畅性为重要衡量指标,流畅性的关键因素便是帧率的大小,理想帧率是达到60帧/秒,即1秒内完成60帧的渲染,也就是说,一帧的整个渲染流程的耗时需要保持在16ms之内。以浏览器为例,浏览器将用户选择的网络资源通过网页的形式呈现出来,通常称这个过程为页面渲染流程。渲染流程主要包括以下几方面:用户输入网址,浏览器向服务器发出请求,服务器端把超级文本标记语言(hypertextmarkuplanguage,html)和层叠样式表(cascadingstylesheet,css)传给浏览器,浏览器通过解析html与css,生成文档对象模型(documentobjectmodel,dom)树;然后根据dom树生成一个渲染树(rendertree);根据rendertree生成布局树(layertree);再通过布局和绘图把图像绘到屏幕上。其中,图像的解码是生成图像以及将图像绘制到屏幕的前提。对于一帧页面图像的渲染流程来说,影响整个渲染流程的耗时的关键因素是这一帧的解码耗时。现有的渲染技术中,每次渲染流程的解码任务的耗时不固定,使得整个渲染流程的耗时也不固定,且通常大于16ms,使得渲染流程的帧率很难达到60帧/秒,出现卡顿现象,用户体验较差。技术实现要素:本发明提供一种确定解码任务的方法和装置,能够控制渲染流程的解码耗时在阈值内,从而控制整个渲染流程的耗时在预期范围内,例如在16ms内,从而可以提高页面渲染的流畅性,提高用户体验。第一方面,提供了一种确定解码任务的方法,该方法包括:获取待渲染页面中的待加载内容;获取所述待加载内容的解码耗时;根据所述待加载内容的解码耗时,确定目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值;执行所述目标解码任务队列中包括的解码任务。应理解,解码耗时针对的是各个解码任务,而解码任务是根据待加载内容生成的。在本发明技术方案中,通过获取待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够提高用户体验。因此,本发明技术方案能够有效提高页面渲染的流畅性,提高用户体验。在上述实现方式中,具体地,可以通过计算手段计算得到所述待加载内容的解码耗时;也可以通过查表等方法直接获取所述待加载内容的解码耗时。结合第一方面,在第一方面的第一种可能的实现方式中,所述获取所述待加载内容的解码耗时,包括:基于所述待加载内容的属性,获取所述待加载内容的解码耗时,所述待加载内容的属性包括下列属性中的至少一项:所述待加载内容对应的解码区域的大小和像素值。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述基于所述待加载内容的属性,获取所述待加载内容的解码耗时,包括:基于所述待加载内容的属性,以及所述属性与解码耗时之间的对应关系,获取所述待加载内容的解码耗时。具体地,预先建立所述对应关系。例如,预先建立的对应关系包括:像素值a×b对应于解码耗时t1,该解码耗时t1表示在单位解码区域内针对像素值a×b所需的解码耗时,例如该解码耗时t1的单位为(ms/cm2);像素值c×d对应于解码耗时t2,该解码耗时t2表示在单位解码区域内针对像素值c×d所需的解码耗时,例如该解码耗时t2的单位为(ms/cm2)。假设待加载内容对应的解码区域的像素值为a×b,根据已知的页面分辨率可知该解码区域的大小为s1(单位例如为cm2),则该待加载内容对应的解码耗时等于t1与s1的乘积。再例如,该待加载内容对应的解码区域的像素值为x×y,根据已知的页面分辨率可知该解码区域的大小为s2(单位例如为cm2),假设在该对应关系中找不到对应于x与y的匹配值,这种情况下,可以在该对应关系的基础上,利用数学拟合或插值等方法计算得到像素值为x×y所对应的解码耗时tx,该解码耗时tx表示在单位解码区域内针对像素值x×y所需的解码耗时,例如该解码耗时tx的单位为(ms/cm2),通过tx与s2相乘,计算该待加载内容对应的解码耗时。在上述实现方式中,所述对应关系可以是静态表的形式,也可以利用程序代码实现。在上述实现方式中,根据所述对应关系获取待加载内容的解码耗时的方式以是查表方式、或数学拟合方式、或数学插值方式、或以上多种方式的组合。在本发明技术方案中,通过待加载内容的属性与待加载内容的解码耗时之间的对应关系,计算待加载内容的解码耗时,因此,能够缩短解码耗时的计算时间,从而缩短整个渲染流程的总耗时。结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述对应关系为硬件解码能力表。具体地,所述硬件解码能力用于指示解码器的解码性能。例如,所述硬件解码能力表的标题行元素包括:像素值与解码耗时。所述硬件解码能力表可以通过经验获得,也可以通过实验手段获得。结合第一方面或第一方面的第一种至第三种可能的实现方式中任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述待加载内容的解码耗时,确定目标解码任务队列,包括:根据所述待加载内容,生成初始解码任务队列,所述初始解码任务队列中包括的所有解码任务对应于所述待加载内容的所有解码需求;根据所述初始解码任务队列中解码任务的解码耗时,确定所述目标解码任务队列,所述初始解码任务队列中包括的解码任务的解码耗时之和大于或等于所述目标解码任务队列中包括的解码任务的解码耗时之和。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述初始解码任务队列中包括的解码任务的解码耗时之和大于所述目标解码任务队列中包括的解码任务的解码耗时之和,所述初始解码任务队列中包括的解码任务的任务数量大于或等于所述目标解码任务队列中包括的解码任务的任务数量,所述方法还包括:将所述初始解码任务队列中未加入所述目标解码任务队列中的剩余解码任务加入到遗留解码任务队列中,以便于在下一次渲染流程中优先处理所述遗留解码任务队列中的解码任务。在本发明技术方案中,通过将剩余解码任务加入到遗留解码队列中,使得在下一次渲染流程中优先处理这部分剩余解码任务,能够提高下一次渲染流程的效率,从而整体提高页面渲染的帧率。结合第一方面或第一方面的第一种至第五种可能的实现方式中任一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述阈值与其它耗时之和小于或等于16ms,所述其它耗时指示所述待渲染页面的渲染流程中除解码任务之外的其它任务的总耗时。在本发明技术方案中,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,所述阈值与其它时长之和不超过16ms,其他时长指示整个渲染流程中除解码任务之外的其它任务的总耗时,即使得整个渲染流程的耗时也在16ms内,从而使得页面渲染的帧率达到60帧/秒,且帧率较为稳定,能够有效提高页面显示的流畅性,进而提高用户体验。结合第一方面或第一方面的第一种至第六种可能的实现方式中任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述执行所述目标解码任务队列中包括的解码任务,包括:利用两个线程执行所述目标解码任务队列中包括的解码任务。具体地,利用所述两个线性并行执行所述目标解码任务队列中包括的解码任务,能够有效缩短执行解码任务的耗时。结合第一方面或第一方面的第一种至第七种可能的实现方式中任一种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法应用于网络应用程序(webapp)或浏览器的页面浏览的场景。结合第一方面或第一方面的第一种至第八种可能的实现方式中任一种可能的实现方式,在第一方面的第九种可能的实现方式中,在执行相应的解码任务之后,所述方法还包括:对执行解码之后的内容进行绘图与渲染,并将其显示到屏幕上。上述各个实现方式可以由渲染引擎执行。具体地,获取待渲染页面中的待加载内容可以由渲染线程执行;计算所述待加载内容的解码耗时,并根据所述待加载内容的解码耗时,确定目标解码任务队列的步骤可以由解码任务生成模块执行;按照所述目标解码任务队列执行相应的解码任务的步骤可以由解码线程执行。在上述各个实现方式中,所述待加载内容包括未解码内容,或者,所述待加载内容既包括未解码内容,也包括已经解码的内容。例如,用户先对页面进行从上往下滑的操作,然后再进行从下往上滑的操作,在从下往上滑的过程中屏幕内容要重新加载,这个过程中的待加载内容包括未解码内容,也包括已经解码的内容(已经存在缓存里)。如果所述待加载内容包括已解码内容,则上述实现方式中所述待加载内容的解码耗时指的是,所述待加载内容中未解码内容的解码耗时。在上述各个实现方式中,计算多个解码任务耗时之和的时候还可以考虑各个解码任务的权重,或对各个解码任务的耗时进行取整后再计算总和,等其他处理手段。在上述各个实现方式中,在执行所述目标解码任务队列中包括的解码任务的过程中,具体地,按照所述目标解码任务队列顺序执行队列中的解码任务。第二方面提供了一种渲染引擎,该渲染引擎用于执行上述第一方面或第一方面的任一可能的实现方式中的方法。具体地,该渲染引擎可以包括用于执行第一方面或第一方面的任一可能的实现方式中的方法的模块。本发明提供的渲染引擎,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够有效提高页面渲染的流畅性,提高用户体验。第三方面提供了一种终端设备,所述终端设备包括存储器和处理器,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且对该存储器中存储的指令的执行使得该处理器执行第一方面或第一方面的任一可能的实现方式中的方法。本发明提供的终端设备,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够有效提高页面渲染的流畅性,提高用户体验。第四方面提供了一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括当被执行时使得一个或多个处理器执行第一方面或第一方面的任一可能的实现方式中的操作的指令。在本发明技术方案中,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够提高用户体验。因此,本发明技术方案能够有效提高页面渲染的流畅性,提高用户体验。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1示出了本发明实施例的应用场景的示意图。图2示出了根据本发明实施例提供的确定解码任务的方法的示意性流程图。图3示出了根据本发明实施例提供的确定解码任务的方法的另一示意性流程图。图4示出了根据本发明实施例提供的渲染引擎的示意性框图。图5示出了根据本发明实施例提供的终端设备的示意性框图。图6示出了根据本发明实施例提供的终端设备的另一示意性框图。图7示出了根据本发明实施例提供的终端设备的再一示意性框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了便于理解和描述本发明实施例提供的确定解码任务的方法,首先结合图1简单描述一下页面渲染流程。从图1中可以看出,一个渲染流程主要涉及html解释器、css解释器、javascript引擎,布局模块与绘图模块。其中,html为超级文本标记语言(hypertextmarkuplanguage)解释器,html解释器为解释html语言的解释器,其作用是将html文本解释成文档对象模型(documentobjectmodel,dom)树。css为层叠样式表(cascadingstylesheet),css解释器是解释样式表的解释器,其作用是将dom树中的各个元素对象加上样式信息,从而为计算最后结果的布局提供依据。javascript引擎可以修改网页的内容,也能修改css解释器的信息,javascript引擎解释javascript代码并把代码的逻辑和对dom和css的改动信息应用到布局中去,从而改变渲染的结果。一个典型的渲染过程如图1所示,webapp或网页内容送到html解释器。html解释器解释webapp或网页内容之后形成dom树,解释过程中如果遇到javascript代码则交给javascript引擎去处理;如果webapp或网页内容包含css,则交给css解释器去解析。在建立dom的时候,接收来自css解释器的样式信息,构建渲染树(rendertree),并由渲染树生成层树(layertree)。由布局模块计算层树的各个元素的位置和大小信息,最后由绘图模块完成从层树到图像的绘制。其中,在布局与绘图过程中,图像的解码是生成图像以及将图像绘制到屏幕的前提。在布局与绘图过程中,会生成光栅化(raster)任务,在raster任务中会生成解码任务队列。在现有技术中,根据层树的信息生成raster任务中的解码任务队列。利用这样的方式生成的解码任务队列中,所包括的解码任务的数量不固定,而且每个解码任务的解码耗时不固定且不完全相同,因此,该解码任务队列中包括的所有解码任务所需的解码耗时不固定。应理解,针对一个渲染流程,该渲染流程中包括的解码任务的解码耗时之和是影响整个渲染流程的耗时的重要因素。现有技术中生成解码任务的方案,使得整个渲染流程的耗时不固定,且通常都大于16ms,使得较难保证60帧/秒的帧率,容易出现卡顿现象,用户体验较差。针对上述技术问题,本发明提出一种确定解码任务的方法与装置,能够有效提高页面渲染的流畅性,提高用户体验。图2示出了根据本发明实施例提供的确定解码任务的方法100的示意性流程图,该方法100例如由渲染引擎执行,该方法100包括:s110,获取待渲染页面中的待加载内容。具体地,根据如图1所示的层树,获取待加载内容。该待加载内容包括但不限于图片、图标、控件等其他页面显示内容。s120,获取该待加载内容的解码耗时。具体地,该待加载内容的解码耗时指的是解码该待加载内容所需的耗时。可以根据数学计算手段获取该待加载内容的解码耗时,也可以通过查表等方式直接获取该待加载内容的解码耗时。可选地,在本发明实施例中,基于该待加载内容的属性,获取该待加载内容的解码耗时,该待加载内容的属性包括下列属性中的至少一项:该待加载内容对应的解码区域的大小和像素值。s130,根据该待加载内容的解码耗时,确定目标解码任务队列,该目标解码任务队列中包括的解码任务的解码耗时之和小于阈值。具体地,该阈值与其它耗时之和小于或等于16ms,该其它耗时指示该待渲染页面的渲染流程中除解码任务之外的其它任务的总耗时。例如,其他耗时包括如图1所示的html解析过程、生成dom树的过程、生成渲染树的过程、生成层树的过程、以及将解码后的图像进行绘制、渲染以及显示在屏幕上的过程的总耗时。换句话说,假设整个渲染流程的耗时t=t1+t2,其中t1为该渲染流程所执行的解码任务的总耗时,t2为该渲染流程中除了解码任务之外的其他任务的处理总耗时,应理解,t2比较固定,因此,保证t1小于阈值,就能够使得t在一定预期范围内。在本发明实施例中,t1的时长使得t小于或等于16ms,则使得一次渲染流程的耗时在16ms之内或者等于16ms,从而实现了页面渲染的帧率为60帧/秒,能够满足用户对页面渲染的流畅度的要求。s140,执行该目标解码任务队列中包括的解码任务。具体地,按照该目标解码任务队列的队列顺序,依次执行队列中的解码任务。在本发明实施例中,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够提高用户体验。因此,本发明技术方案能够有效提高页面渲染的流畅性,提高用户体验。可选地,在本发明实施例中,s120获取该待加载内容的解码耗时,包括:基于该待加载内容的属性,以及该属性与解码耗时之间的对应关系,获取该待加载内容的解码耗时,该待加载内容的属性包括下列属性中的至少一项:该待加载内容对应的解码区域的大小和像素值。具体地,该对应关系包括像素值与解码耗时之间的对应关系。例如,该对应关系包括:像素值a×b对应于解码耗时t1,该解码耗时t1表示在单位解码区域内针对像素值a×b所需的解码耗时,例如该解码耗时t1的单位为(ms/cm2);像素值c×d对应于解码耗时t2,该解码耗时t2表示在单位解码区域内针对像素值c×d所需的解码耗时,例如该解码耗时t2的单位为(ms/cm2)。可以通过查找匹配法、数学拟合法、或者数学插值法等方法,基于该对应关系与待加载内容的属性,计算待加载内容的解码耗时。例如,待加载内容对应的解码区域的像素值为a×b,根据已知的页面分辨率可知该解码区域的大小为s1(单位例如为cm2),则该待加载内容对应的解码耗时等于t1(ms/cm2)与s1(cm2)的乘积。再例如,待加载内容对应的解码区域的像素值为x×y,根据已知的页面分辨率可知该解码区域的大小为s2(单位例如为cm2),假设在该对应关系中找不到对应于x与y的匹配值,这种情况下,可以在该对应关系的基础上,利用数学拟合或插值等方法计算得到像素值为x×y所对应的解码耗时tx,该解码耗时tx表示在单位解码区域内针对像素值x×y所需的解码耗时,例如该解码耗时tx的单位为(ms/cm2),则该待加载内容对应的解码耗时等于tx(ms/cm2)与s2(cm2)的乘积。应理解,本发明实施例中举例的对应关系中的解码耗时均为单位区域内的解码耗时,例如1cm2的区域的解码耗时。但本发明实施例并非限定于此。可选地,在本发明实施例中,该对应关系中包括某一像素值对应某一解码耗时t,其中该某一解码耗时表示在某一尺寸大小的解码区域内针对该某一像素值所需的解码耗时,例如该某一尺寸大小的解码区域大小为5cm2,则该某一解码耗时t的单位为(ms/5cm2)。具体地,在本发明实施例中,该对应关系包括像素值、解码区域大小与解码耗时之间的对应关系。例如,该对应关系包括像素值e×f、解码区域大小s3(单位例如为cm2),对应于解码耗时t3,该解码耗时t3表示在解码区域s3内针对像素值e×f所需的解码耗时,则该解码耗时t3的单位为(ms/s3cm2)。假设待加载内容对应的解码区域的像素值为e×f,根据已知的页面分辨率可知该解码区域的大小正好为s3cm2,则根据该对应关系可以直接获取该待加载内容的解码耗时为t3ms。因此,在本发明实施例中,基于该对应关系,可以通过一定的计算过程获得待加载内容的解码耗时,在某种情况下,也可以基于该对应关系直接获得待加载内容的解码耗时。总的来说,基于该对应关系,可以较为高效地获取到待加载内容的解码耗时。具体地,该对应关系可以利用静态表形式呈现,也可以利用程序代码实现。可选地,在本发明实施例中,该对应关系的表现形式为硬件解码能力表。具体地,如表1所示,该硬件解码能力表的标题行元素包括像素值和解码耗时(以单位区域为例)。例如,在该硬件解码能力表中,像素值1280*1500对应解码耗时2(ms/cm2);像素值1280×2000对应解码耗时3(ms/cm2)。假设现有个解码任务的像素值为1280×1500,该解码任务对应的解码区域大小为2cm2,则该解码任务的解码耗时计算为:2(ms/cm2)×2cm2=4ms。表1像素值解码耗时(ms/cm2)1280×150021280×20003在本发明实施例中,硬件解码能力表可以保存在本地存储介质上或通过网络访问存储在远端存储介质上。应理解,表1作为示例而非限定,本发明实施例中的硬件解码能力表中存储的解码耗时可以是单位区域所需的解码耗时,也可以是任意尺寸大小的区域所需的解码耗时,具体地,可以根据性能需求具体确定硬件解码能力表中解码耗时的定义,本发明实施例对此不作限定。例如,该硬件解码能力表中的解码耗时表示大小为5cm2的区域所需解码耗时,则对应的解码耗时的单位为(ms/5cm2)。还应理解,本发明实施例中的硬件解码能力表的标题行中还可以包括解码区域大小,即硬件解码能力表的标题行包括三个表项:像素值、解码区域大小与解码耗时,这种情况下,该解码耗时表示在该解码区域大小所指示的区域内针对该像素值所需的解码耗时。可选地,在本发明实施例中,s130根据该待加载内容的解码耗时,确定目标解码任务队列,包括:根据该待加载内容,生成初始解码任务队列,该初始解码任务队列中包括的所有解码任务对应于该待加载内容的所有解码需求;计算该初始解码任务队列中的解码任务的解码耗时,具体地,根据该初始解码任务队列中的每个解码任务对应的解码区域的大小与像素值,计算该每个解码任务的解码耗时;根据该初始解码任务队列中解码任务的解码耗时,确定该目标解码任务队列,该初始解码任务队列中包括的解码任务的解码耗时之和大于或等于该目标解码任务队列中包括的解码任务的解码耗时之和。具体地,对该待渲染页面的待加载内容进行块(tile)划分,经过块划分之后,得到多个块。每个块对应一个或多个解码任务。如果一个块包括多个解码任务,则以该块为单位生成解码任务小队列。最后,划分所得的所有块对应的解码任务汇总成初始解码任务队列。应理解,一个块对应的可能是一个图片的一部分,也可能正好是一个完整图片,也有可能是多个完整图片的组合,还可能是多个图片的局部的组合,还可能是m个图片的局部与m个完整图片的组合。按照屏幕页面从上至下、从左至右的顺序,将划分好的所有块各自对应的解码任务形成初始解码任务队列。应理解,该初始解码任务队列中的解码任务包括了该待渲染页面中待加载内容的所有解码需求。然后,在该初始解码任务队列中,选择符合阈值条件的解码任务作为目标解码任务队列。具体地,从该初始解码任务队列的队尾开始逐个累加解码任务的解码耗时,直到累加之和即将超过阈值时,将这时候经过累加的解码任务加入到该目标解码任务队列中。需要说明的是,上述的累加之和即将超过阈值指的是,如果再累加一个解码任务的解码耗时,对应的累加之和就超过该阈值了。通过上述方法得到的目标解码任务队列,保证了对该目标解码任务队列中包括的解码任务进行解码所需耗时总和小于阈值。因此,在本发明实施例中,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够有效提高页面渲染的流畅性,提高用户体验。下文以本发明实施例的应用场景为网络应用程序(webapp)的页面滑动场景为例描述本发明实施例的方法。具体地,例如webapp为智能手机上的图库应用为例,应理解,该图库应用是采用web写的应用。应理解,在图库应用的场景中,需要解码的对象为图片,则方法100中的解码任务可以表述为图片解码任务。图库应用是基于animation框架开发的,在chromium渲染内核上运行,在图库滑动过程中,如图3所示,整个渲染流程中布局与绘制的步骤包括:渲染进程(renderthread)201通过消息循环(messageloop)机制循环触发图层树(layertree)202的更新构建,并判断当前用户对屏幕页面的操作是否为滑动操作,若是,就触发执行setneedsanimate203。在setneedsanimate203中,会通知tilemanager是图库滑动的场景。换句话说,渲染进程201通知合成器(compositor)图层树已经完成更新,以便于合成器进行合成显示操作。具体地,合成器接收到渲染进程201的通知后,触发tilemanager去执行preparetiles204。在preparetiles204中,调用buildrasterqueue205,buildrasterqueue205用于根据图层树202进行块(tile)划分,生成多个块,并根据多个块生成光栅化(raster)队列。在preparetiles204中,还会调用assigngpumemorytotiles206,assigngpumemorytotiles206用于计算分配内存。在preparetiles204中,还会调用tilemanager的scheduletasks207,在scheduletasks207中调用creatdrastertask208,creatdrastertask208用于生成图片解码任务。在creatdrastertask208中,调用skpixelref类209。通过skpixelref类209能够获得生成的每个块(tile)中待解码的图片的像素值或尺寸等数据信息。然后基于该数据信息,生成多个解码任务,通过查询硬件解码能力表,可以得到这些解码任务所需的解码耗时,最后汇总所有块的解码任务形成一个初始解码任务队列。具体地,该硬件解码能力表可以是本发明实施例中的智能手机中维护的一张表,该硬件解码能力表的表头元素例如为图片像素值与解码耗时/单位解码区域,或者例如为图片像素值、图片尺寸与解码耗时。该硬件解码能力表可以根据该智能手机中硬件的解码能力来确定。在scheduletasks207中,调用creatdrastertask208之后,调用gputiletaskworkerpool的scheduletasks函数210。在gputiletaskworkerpool的scheduletasks函数210中,先调用insertnodesforrastertask函数211。insertnodesforrastertask函数211用于,维护一个初始解码任务队列。具体地,insertnodesforrastertask函数211用于,按照页面从上到下、从左到右的顺序,根据creatdrastertask208获得的图片解码任务,形成该初始解码任务队列。然后,按照creatdrastertask208中得到的解码耗时,从初始解码任务队列中选择满足阈值条件的解码任务,具体地,从该初始解码任务队列的队尾开始逐个累加解码任务的解码耗时,直到累加之和即将超过阈值时,将这时候经过累加的解码任务作为此次渲染流程要执行的解码任务。需要说明的是,上述的累加之和即将超过阈值指的是,如果再累加一个解码任务的解码耗时,对应的累加之和就超过该阈值了。具体地,该满足该阈值条件的解码任务使得此次渲染流程的整体耗时在16ms之内。在gputiletaskworkerpool的scheduletasks函数210中,调用insertnodesforrastertask函数211之后,调用tiletaskworkerpool的insertnodefortask212函数,tiletaskworkerpool的insertnodefortask212函数用于,将初始解码任务队列中满足阈值条件的解码任务放到最终要执行的解码任务队列(对应于本发明实施例的目标解码任务队列)中。在gputiletaskworkerpool的scheduletasks函数210中,调用insertnodesforrastertask函数212之后,调用taskgraphrunner的scheduletasks213,taskgraphrunner的scheduletasks213用于,启用一个线程去执行最终要执行的解码任务队列(即目标解码任务队列)中的解码任务。最后,渲染进程将解码后的图片进行合成处理、绘图处理,最终渲染到屏幕上。具体地,若渲染进程201判断当前用户对屏幕页面的操作不是滑动操作,则确定当前为图库启动或图库预览的场景,这种情况下,需要一次性把当前页面中待加载的全部图片解码完。具体地,在tiletaskworkerpool的insertnodefortask212中,如果将初始解码任务队列中满足阈值条件的解码任务放到最终要执行的解码任务队列(对应于本发明实施例的目标解码任务队列)中后,该初始解码任务队列中还有剩余的解码任务,可以将这些剩余的解码任务放到遗留解码任务队列中,在下一次渲染流程中优先处理所述遗留解码任务队列中的解码任务。本发明实施例的方法也可应用于浏览器滑动的场景,图3示意的流程也可适用于浏览器滑动的场景。但是需要说明的是,在浏览器滑动场景中,不是由渲染进程201去触发tilemanager,而是由任务调度器(scheduler)隔一定时间触发一次tilemanager。此外,在浏览器滑动场景中,需要在tiletaskworkerpool中,维护一个遗留解码任务队列,如果将初始解码任务队列中满足阈值条件的解码任务放到最终要执行的任务队列中后,该初始解码任务队列中还有剩余的解码任务,则将这些剩余的解码任务放到该遗留解码任务队列中。维护遗留解码任务队列的tiletaskworkerpool只要确定该遗留解码任务队列不为空,则通知任务调度器继续触发tilemanager。可选地,在本发明实施例中,在无法判定页面滑动场景的情况下(例如浏览器滑动场景),通过监控遗留解码任务队列是否为空,来判断页面滑动,若确定该遗留解码任务队列不为空,则确定当前为页面滑动场景,触发执行渲染流程。本发明实施例提供的确定解码任务的方法的应用场景包括网络应用程序(webapp)滑动场景与浏览器滑动场景。本发明实施例提供的确定解码任务的方法可以具体地应用于智能手机上,也可以应用其他智能终端设备上,例如平板电脑或个人计算机(pc)上。应理解,图3以chromium渲染内核为例描述了本发明实施例提供的确定解码任务的方法,本发明实施例并非限定于此,例如,本发明实施例还可以基于crosswalk来实现,crosswalk是一款开源的web引擎。图4示出了根据本发明实施例提供的渲染引擎300的示意性框图,该渲染引擎300包括:页面渲染模块310,用于获取待渲染页面中的待加载内容;解码任务队列生成模块320,用于获取该待加载内容的解码耗时,根据该待加载内容的解码耗时,确定目标解码任务队列,该目标解码任务队列中包括的解码任务的解码耗时之和小于阈值;解码模块330,用于执行该目标解码任务队列中包括的解码任务。因此,本发明提供的渲染引擎,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够有效提高页面渲染的流畅性,提高用户体验。可选地,在本发明实施例中,该解码任务队列生成模块具体用于,基于该待加载内容的属性,获取该待加载内容的解码耗时,该待加载内容的属性包括下列属性中的至少一项:该待加载内容对应的解码区域的大小和像素值。可选地,在本发明实施例中,该解码任务队列生成模块具体用于,基于该待加载内容的属性,以及该属性与解码耗时之间的对应关系,获取该待加载内容的解码耗时。可选地,在本发明实施例中,该对应关系为硬件解码能力表。可选地,在本发明实施例中,该解码任务队列生成模块具体用于,根据该待加载内容的解码耗时,生成初始解码任务队列,该初始解码任务队列中包括的所有解码任务对应于该待加载内容的所有解码需求;根据该初始解码任务队列,确定该目标解码任务队列,该初始解码任务队列中包括的解码任务的解码耗时之和大于或等于该目标解码任务队列中包括的解码任务的解码耗时之和。可选地,在本发明实施例中,该阈值与其它耗时之和小于或等于16ms,该其它耗时指示该待渲染页面的渲染流程中除解码任务之外的其它任务的总耗时。可选地,在本发明实施例中,该解码模块包括两个解码线程,该两个解码线程用于执行该目标解码任务队列中的解码任务。本发明实施例还提供了一种计算机可读存储介质,在该计算机可读存储介质上存储有指令,该指令包括当被执行时使得一个或多个处理器执行本发明实施例提供的确定解码任务的方法中的操作的指令。应理解,将本发明实施例提供的计算机可读存储介质应用到终端设备上,能够有效提高页面渲染的流畅性,提高用户体验。图5描述了本发明实施例提供的一种终端设备400的结构示意性框图,该终端设备400包括:至少一个处理器410、至少一个网络接口450或用户接口440,存储器430、至少一个系统总线420。通信总线420用于实现上述组件之间的连接通信。存储器430中存储如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统431,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。应用程序432,包含webapp和浏览器,还可以包括其他各种应用程序,用于实现各种应用业务。可选地,该终端设备400包含的用户接口440,包括显示器(例如,触摸屏、lcd、crt、全息成像(holographic)或者投影(projector)等),键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触摸屏等)。存储器430可以包括只读存储器和随机存取存储器,并向处理器410提供指令和数据。存储器430的一部分还可以包括非易失性随机存取存储器(nvram)。在本发明实施例中,通过调用存储器430存储的程序或指令,处理器410用于:获取待渲染页面中的待加载内容;获取该待加载内容的解码耗时;根据该待加载内容的解码耗时,确定目标解码任务队列,该目标解码任务队列中包括的解码任务的解码耗时之和小于阈值;执行该目标解码任务队列中包括的解码任务。因此,本发明实施例提供的终端设备,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够提高用户体验。因此,本发明技术方案能够有效提高页面渲染的流畅性,提高用户体验。具体地,该阈值与其它耗时之和小于或等于16ms,该其它耗时指示该待渲染页面的渲染流程中除解码任务之外的其它任务的总耗时。可选地,作为一个实施例,该处理器410用于,基于该待加载内容的属性,获取该待加载内容的解码耗时,该待加载内容的属性包括下列属性中的至少一项:该待加载内容对应的解码区域的大小和像素值。可选地,作为一个实施例,该处理器410用于,基于该待加载内容的属性,以及该属性与解码耗时之间的对应关系,获取该待加载内容的解码耗时。具体地,该对应关系为硬件解码能力表。可选地,作为一个实施例,该处理器410用于,根据该待加载内容的解码耗时,生成初始解码任务队列,该初始解码任务队列中包括的所有解码任务对应于该待加载内容的所有解码需求;根据该初始解码任务队列,确定该目标解码任务队列,该初始解码任务队列中包括的解码任务的解码耗时之和大于或等于该目标解码任务队列中包括的解码任务的解码耗时之和。另外,终端设备600还可执行图2和图3的方法及实施例,本发明实施例在此不再赘述。因此,本发明实施例提供的终端设备,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够提高用户体验。因此,本发明技术方案能够有效提高页面渲染的流畅性,提高用户体验。本发明实施例的确定解码任务的方法可以应用于安卓系统,也可以应用于苹果操作系统(ios系统),还可应用于任何web操作系统中。如图6所示,本发明实施例还提供了一种终端设备500,该终端设备500包括:处理器510与存储器520,该存储器520用于存储指令或程序,处理器510用于执行存储器520存储的指令或程序,通过执行存储器520存储的指令或程序,使得处理器510用于:获取待渲染页面中的待加载内容;获取该待加载内容的解码耗时;根据该待加载内容的解码耗时,确定目标解码任务队列,该目标解码任务队列中包括的解码任务的解码耗时之和小于阈值;执行该目标解码任务队列中包括的解码任务。如图6所示,该终端设备500还包括显示单元530,该显示单元530可用于显示由用户输入的信息或提供给用户的信息以及终端500的各种菜单界面。在本发明实施例中,该显示单元530具体用于显示待渲染页面的渲染结果,具体地,处理器510用于,在执行该目标解码任务队列中包括的解码任务之后,解码后的信息合成图像(画面),显示单元530用于将合成图像显示出来。该显示单元530可包括显示面板,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)或有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板。如图6所示,该终端设备500还包括输入单元540,用于接收用户滑动屏幕页面的信号。具体地,处理器510用于根据用户滑动屏幕页面的信号,获取待渲染页面中的待加载内容。具体地,本发明实施例中,该输入单元540可以包括触控面板。触控面板也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给该处理器510,并能接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板。除了触控面板,输入单元540还可以包括其他输入设备,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。可选地,如图6所示,该终端设备500还包括电源模块550、音频电路560、射频电路570、wifi模块580等。电源模块550用于提供该终端设备500的供电电源。音频电路560用于提供音频功能。射频电路570用于将无线电磁波发射出去,一般指带调制的高频载波。wifi模块580用于实现终端设备500的无线上网功能。具体地,该终端设备500例如可以为手机、平板电脑、个人数字助理(personaldigitalassistant,pda)、销售终端(pointofsales,pos)或车载电脑等。以图7为例,介绍本发明实施例提供的确定解码任务的方法所应用的计算节点的逻辑结构。该计算节点可以是终端设备,该终端设备具体可以为一智能手机。如图7所示,该终端设备的硬件层(hardware)包括中央处理器(centralprocessingunit,cpu)、图形处理器(graphicsprocessingunit,gpu)等,还可以包括存储器、输入/输出设备、内存、内存控制器、网络接口等。输入设备可包括键盘、鼠标、触摸屏等。输出设备可包括显示设备如液晶显示器(liquidcrystaldisplay,lcd)、阴极射线管(cathoderaytube,crt)显示器、全息成像(holographic)、投影(projector)等。在硬件层之上可运行有操作系统(如android等)以及一些应用程序。核心库层(kernellibrary)是操作系统的核心部分,包括输入/输出服务、核心服务、图形设备接口以及实现cpu、gpu图形处理的图形引擎(graphicsengine)等。图形引擎可包括2d引擎、3d引擎、合成器(composition)、帧缓冲区(framebuffer)、egl(embedded-systemgraphicslibrary)等,其中egl是一种渲染api与底层原始平台窗口系统之间的接口,api指的是应用程序编程接口(applicationprogramminginterface)。除此之外,该终端还包括驱动层(driver)、框架层(framework)和应用层(application)。驱动层可包括cpu驱动、gpu驱动、显示控制器驱动等。应用层主要包括原生应用程序(nativeapp)、网络应用程序(webapp)、浏览器(browser),还可以包括一些媒体播放应用(mediaplayer)等。框架层主要包括原生用户界面(nativeuserinterface,nativeui)模块与chromiumcontent服务,该chromiumcontent服务可包括布局/层(layout/layer)模块、webgl(webgraphicslibrary)、画布(canvas)、媒体音频(camera/video)等。框架层与应用层的nativeapp对接的是nativeui;与应用层的webapp、browser对接的是chromiumcontent服务。框架层(framework)与核心库层(kernellibrary)通过chromium合成(chromiumcompositor)模块对接,该chromiumcompositor模块具体为compositor/chromium-ui/skia。则应用层的webapp与browser通过chromiumcontent服务与核心库层对接,具体地,对接到2d、3d图形系统。本发明实施例的确定解码任务的方法的步骤主要在webapp与browser通过chromiumcontent服务与核心库层对接的渲染过程中。应理解,本发明实施例的确定解码任务的方法对应的代码要实现的操作包括:解析webapp或浏览器内容生成层树(layertree),根据层树生成块(tile)队列,根据块(tile)队列生成目标解码任务队列,解码目标解码任务队列中的解码任务。则本发明实施例的代码实现在如图5所示的框架层的chromiumcontent服务中的相关模块中。还应理解,根据解码后的信息合成屏幕图像的代码实现在核心层库的图形合成相关模块中。应理解,本发明实施例方法的执行主体的逻辑结构可参考图7。因此,在本发明实施例中,通过计算待加载内容的解码耗时,确定渲染流程的目标解码任务队列,所述目标解码任务队列中包括的解码任务的解码耗时之和小于阈值,从而能够使得整个渲染流程的耗时也在预期范围内,例如16ms内,能够有效提高页面渲染的流畅性,提高用户体验。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1