背景技术
现有浏览器内核的引擎基本上是三分天下:Trident引擎、Gecko引擎和WebKit引擎。其中,Trident引擎也称为MSHTML,是IE使用的排版引擎。Gecko引擎是Mozilla、Firefox使用的排版引擎。WebKit是一个开源的浏览器引擎,Safari、Google Chrome、搜狗浏览器均是基于Webkit引擎开发的。WebKit在手机上的应用十分广泛,例如 Google的手机Gphone、Apple的iPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit。
WebKit引擎也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari、Dashboard、Mail和其他一些Mac OS X 程序。WebKit引擎所包含的WebCore排版引擎和JSCore引擎来自于KDE的KHTML和KJS。
WebKit从Qt 4.4开始被作为一个Module被集成到Qt中。Qt 4.7 使QtWebKit集成的稳定性和性能均得到提升的更新。QtWebKit提供了一个web浏览器引擎使World Wide Web更容易集成到Qt应用中. 使web页面能显示各种本地控件,通过JavaScript和本地对象交互。
QtWebKit是一个用Qt封装了WebKit浏览器引擎的工具包。QtWebKit也可以用来将网页保存为图片的工具。
电视芯片等嵌入式设备,由于其资源有限,电视芯片的CPU和内存等不能和个人电脑设备相比。这样一些软件,如浏览器等,运行在嵌入式设备上时,反应缓慢。无法正常运行,为此,stb等嵌入式设备为分担CPU的工作量,采用外置gpu(图形处理器)的方式,来实现对图形操作的处理。但各个厂家提供不同的gpu图形接口。性能差异很大。
QtWebKit移植一般采用方案有两种:基于framebuffer和directfb。前者完全基于软件处理,无法使用gpu,所以工作量均在CPU。会导致CPU负载沉重。Directfb的方案一般由stb 芯片厂家提供,可以部分利用平台提供的二维加速接口。但其图形加速功能利用有限。本文所述的celestial 芯片方案中,celestial厂商提供的directfb方案不稳定,且厂商不承诺可用。
目前在celestial平台上QtWebKit移植采用了基于framebuffer的方式。图形操作完全由软件操作,在有网页特效较多时,浏览器反应缓慢。在采用本方法提供的方案可以明显提高反应速度。
具体实施方式
下面结合附图和优选的实施方式对本发明作进一步详细描述。权利要求中构成要件和实施例中具体实例之间的对应关系可以如下例证。这里的描述意图在于确认在实施例中描述了用来支持在权利要求中陈述的主题的具体实例,由于在实施例中描述了实例,不意味着该具体实例不表示构成要件。相反地,即使在此包含了具体实例作为对应一个构成要件的要素特征,也不意味着该具体实例不表示任何其它构成要件。
此外,这里的描述不意味着对应于实施例中陈述的具体实例的所有主题都在权利要求中引用了。换句话说,这里的描述不否认这种实体,即对应实施例包含的具体实例,但不包含在其任何一项权利要求中,即,能够在以后的修正被分案并申请、或增加的可能发明的实体。
应当注意的是,“系统”在此意味着由两个或更多设备构成的处理。
显而易见地,用户终端可以由个人计算机构成。此外,所述用户终端还可以由例如蜂窝电话、任何其它PDA(个人数字助理)工具、AV(音频视频)装置、诸如家用电气(家庭用电气化)设备的CE(消费电子设备)等构成。
“网络”意味着至少连接了两个设备的机构,并且在其中,一条信息能够从一个设备发送到另一个设备。经由网络建立通信的设备可以是彼此分离的,也可以是构成一个机器的内部模块。
“通信”可表示无线通信和有线通信。然而,还可以是混合无线和有线通信的通信,更具体地,在某个区段采取无线通信而在另一个区段采取有线通信的通信。同样,它也可以是这样的通信:从一个设备向另一设备的通信是有线的,且相反方向的通信是无线的。
本发明的一优选实施例中采用celestial的1800l芯片。在通常情况下,QtWebKit的图形驱动是基于framebuffer,所述图形驱动的实现均通过软件合成。图形驱动引擎的实现是通过QRasterPaintEngine,所述图形驱动引擎结合framebuffer图形驱动插件,可实现各种图形操作。这种采用软件合成的方式,当解析的网页较复杂、网页特效较多的时候,比如具有动画效果的图片较多或需要不断刷新渲染时,浏览器的反应速度缓慢,CPU在一定时间内一直处于100%占用的状态,这样会严重影响用户体验。
本发明的一优选实施例利用1800l芯片的gpu提供的二维加速功能来实现图形操作以减轻CPU的图形操作的任务,降低CPU的使用率。考虑到QtWebKit移植的通用性,在该实施例中实现了一个二维加速的通用接口。这样,在移植到其他平台后,只需要根据相应平台的二维编程接口实现该通用接口,即可实现QtWebKit的图形接口,从而缩短移植周期。
图1示出本发明一优选实施例的流程示意图。本发明的优选实施例中首先实现了二维加速的通用接口,使得上层API接口与操作平台无关。
首先,实现二维引擎dma内存管理接口。例如:
unsigned char *graphic_mem_malloc(int size);
int graphic_mem_free(unsigned char *mem_addr);
二维加速管理物理内存,需要重新映射到虚拟地址空间,通过上述代码中的接口就可以实现该功能。
然后,实现图像的复制、缩放、颜色填充和alpha渲染接口。例如:
int graphic_surface_blit(void *dest, int w, int h, int x, int y, void *src, int src_w, int src_h, int dx, int dy, int dw, int dh);
通过上述代码实现复制接口。
int graphic_surface_scalor(unsigned char *dest, int w, int h, int x, int y, int dst_w, int dst_h,unsigned char *src, int src_w, int src_h, int dx, int dy, int dw, int dh);
通过上述代码可以实现缩放接口。
int graphic_surface_fill(int x, int y, int w, int h, char a, char r, char g, char b);
通过上述代码可以实现颜色填充接口。
int graphic_surface_blending_color(unsigned char *dest, int w, int h, int x, int y, int dw, int dh, int in_color);
通过上述代码可以实现基于颜色的alpha渲染。
int graphic_surface_blending_rect(unsigned char *dest, int w, int h, int x, int y, const unsigned char *src, int src_w, int src_h, int dx, int dy, int dw, int dh);
通过上述代码可以实现基于块的alpha渲染。
然后,在上述二维加速的通用接口的基础上,实现QtWebKit新图形的plugin驱动。qt的图形引擎能够提供自动扩展功能,用户可以根据不同的硬件类型实现相应的图形驱动接口。所述图形驱动接口以插件形式存在,可以被qt调用来实现图形的显示和操作。
例如,实现class qtGraphicScreen。qtGraphicScreen类用于实现主屏幕,所有数据通过该接口发送到显示区域。
最后,将QRasterPaintEngine中的基于软件的图形操作函数更换为上述的二维加速通用接口。
上述详细描述通过实施例和/或示意图阐明了系统和/或过程的各种实施例。就这些示意图和/或包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些示意图或实施例中的每一个功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。
应该理解,本文描述的方法可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本发明的方法,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API,可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
需要说明的是,本发明的一种基于机顶盒中间件的QtWebKit优化方法的方案范畴包括但不限于上述各部分之间的任意组合。
尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以做出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。以上结合本发明的具体实施例做了详细描述,但并非是对本发明的限制。凡是依据本发明的技术实质对以上实施例所做的任何简单修改,均仍属于本发明技术方案的范围。