一种图形合成方法、信息交互方法及***
技术领域
本申请涉及通信技术领域,尤其涉及一种图形合成方法、信息交互方法及***。
背景技术
云操作***又称云OS,是以云计算、云存储技术作为支撑的操作***。云操作***因其能够整合海量的计算能力并能够提供强大的资源调配能力,未来将得到更广泛的应用。
云操作***既可以用于传统的桌面***设备(比如PC)又适用于移动设备。基于云操作***的应用或服务,以及基于传统操作***的应用或服务,将会在云操作***框架内运行,这就要求云操作***框架能够将基于不同操作***的应用或服务进行融合。
目前,针对在一种操作***框架内,基于不同操作***的应用或服务如何在图形合成层面融合或者在控制层面融合,目前尚未有相应的解决方案。
申请内容
本申请实施例提供了一种图形合成方法及***,用以在图形处理层面实现不同操作***间的兼容。
本申请实施例提供的图形合成方法,包括:
第一子***中的第一控件接收第二子***图形合成器中与所述第一控件对应的图形对象发送的图形数据;
所述第一控件将所述图形数据发送给第一子***图形合成器。
进一步地,该方法还包括:第一子***图形合成器接收第一子***中的图形对象发送的图形数据。
进一步地,该方法还包括:第一子***图形合成器对所述第一控件发送的图形数据以及第一子***中的图形对象发送的图形数据进行合成。
优选地,第一控件为多个,所述第一控件将所述图形数据发送给第一子***图形合成器,包括:
所述多个第一控件将各自接收到的图形数据发送给第一子***中的图形对象;
所述第一子***中的图形对象将所述多个第一控件发送的图形数据作为本图形对象对应的图形数据发送给第一子***图形合成器。
优选地,该方法还包括:所述第一控件接收第一子***中的应用组件发送的图形对象设置信息;所述第一控件将接收到的图形对象设置信息发送给第一子***图形合成器。
其中,所述图形对象为应用程序窗口,所述图形对象设置信息包括窗口属性信息。
进一步地,第一子***中的第一控件接收第二子***图形合成器发送的图形数据之前,还包括:创建所述第一控件。
其中,创建所述第一控件,包括:第一子***中的应用组件根据使用第二子***中的图形数据的请求,创建与第二子***中用于提供图形数据的图形对象所对应的第一控件。
进一步地,第一控件将第二子***图形合成器发送的图形数据发送给第一子***图形合成器之后,还包括:销毁所述第一控件。
其中,销毁所述第一控件,包括:第一子***中的应用组件接收到第二子***中与所述第一控件对应的图形对象被销毁的信息,则销毁所述第一控件;或者,第一子***中的应用组件接收到结束使用第二子***中的图形数据的指示,则销毁与第二子***中用于提供所述图形数据的图形对象所对应的第一控件。
进一步地,第一子***中的第一控件接收第二子***图形合成器中与所述第一控件对应的图形对象发送的图形数据之前,还包括:
第一子***中的第一应用组件向第一子***中的第一***服务组件发送控制信息,所述控制信息用于指示获取第二子***中的图形数据;
所述第一***服务组件将所述控制信息发送给第二子***中的第二***服务组件;
所述第二***服务组件将所述控制信息发送给第二子***中的第二应用组件。
优选地,所述第一子***为Host子***,所述第二子***为Guest子***。
本申请实施例提供的图形合成***,包括:第一子***图形合成器、第二子***图形合成器,以及第一子***中的第一控件;
第一子***中的第一控件,用于接收第二子***图形合成器中与所述第一控件对应的图形对象发送的图形数据,并将所述图形数据发送给第一子***图形合成器。
进一步地,第一子***图形合成器还用于:接收第一子***中的图形对象发送的图形数据。
进一步地,第一子***图形合成器还用于:对所述第一控件发送的图形数据以及第一子***中的图形对象发送的图形数据进行合成。
优选地,第一控件为多个,所述多个第一控件将各自接收到的图形数据发送给第一子***中的图形对象;
第一子***图形合成器具体用于:接收所述第一子***中的图形对象发送的图形数据;其中,所述图形对象将所述多个第一控件发送的图形数据作为本图形对象对应的图形数据发送给第一子***图形合成器。
进一步地,所述第一控件还用于:
接收第一子***中的应用组件发送的图形对象设置信息;
将接收到的图形对象设置信息发送给第一子***图形合成器。
其中,所述图形对象为应用程序窗口,所述图形对象设置信息包括窗口属性信息。
优选地,第一子***中还包括应用组件;所述第一子***中的应用组件,用于创建所述第一控件。
其中,所述第一子***中的应用组件具体用于:根据使用第二子***中的图形数据的请求,创建与第二子***中用于提供图形数据的图形对象所对应的第一控件。
优选地,第一子***中还包括应用组件;所述第一子***中的应用组件,用于销毁所述第一控件。
其中,所述第一子***中的应用组件具体用于:
接收到第二子***中与所述第一控件对应的图形对象被销毁的信息,则销毁所述第一控件;或者,
接收到结束使用第二子***中的图形数据的指示,则销毁与第二子***中用于提供所述图形数据的图形对象所对应的第一控件。
优选地,第一子***中还包括第一应用组件,第二子***中还包括第二应用组件;
第一子***中的第一应用组件,用于向第一子***中的第一***服务组件发送控制信息,所述控制信息用于指示获取第二子***中的图形数据;
第一***服务组件具体用于,将所述控制信息发送给第二子***中的第二***服务组件;
所述第二***服务组件具体用于,将所述控制信息发送给第二子***中的第二应用组件。
优选地,所述第一子***为Host子***,所述第二子***为Guest子***。
本申请的上述实施例中,第一子***中的第一控件接收第二子***图形合成器中与所述第一控件对应的图形对象发送的图形数据,第一控件将接收到的图形数据发送给第一子***图形合成器,可以看出,第一子***中,对应于第二子***图形合成器中的图形对象存在对应的第一控件,该第一控件提供了两个子***间图形数据的传输功能,从而在图形处理层面实现了不同操作***间的兼容。
本申请实施例提供了一种信息交互方法及***,用以在控制层面实现不同操作***间的兼容。
本申请实施例提供的信息交互方法,包括:
第一子***中的第一***服务组件接收第一子***中的第一应用组件发送的控制信息;
所述第一***服务组件将所述控制信息发送给第二子***中的第二***服务组件;
所述第二***服务组件将所述控制信息发送给第二子***中的第二应用组件。
优选地,该方法还包括:
所述第二***服务组件接收所述第二应用组件发送的第二信息,所述第二信息为所述第一应用组件根据所述控制信息得到的;
所述第二***服务组件将所述第二信息发送给所述第一***服务组件;
所述第一***服务组件将所述第二信息发送给所述第一应用组件。
优选地,所述第一应用组件在以下之一或多种情况下,向所述第一***服务组件发送控制信息:
需要使用第二子***中的图形数据;
需要通知第二子***中的应用组件进行处理。
优选地,该方法还包括:创建所述第一***服务组件。
其中,所述第一应用组件被创建时,创建所述第一***服务组件。
优选地,该方法还包括:销毁所述第一***服务组件。
其中,所述第一应用组件被销毁时,销毁所述第一***服务组件。
优选地,所述第一子***为Host子***,所述第二子***为Guest子***;或者,所述第一子***为Guest子***,所述第二子***为Host子***。
本申请实施例提供的信息交互***,包括:
第一子***中的第一***服务组件,用于接收第一子***中的第一应用组件发送的控制信息;
所述第一***服务组件,用于将所述控制信息发送给第二子***中的第二***服务组件;
所述第二***服务组件,用于将所述控制信息发送给第二子***中的第二应用组件。
优选地,所述第二***服务组件还用于:接收所述第二应用组件发送的第二信息,将所述第二信息发送给所述第一***服务组件;其中,所述第二信息为所述第一应用组件根据所述控制信息得到的;
所述第一***服务组件还用于:将所述第二信息发送给所述第一应用组件。
优选地,所述第一应用组件具体用于:在以下之一或多种情况下,向所述第一***服务组件发送控制信息:
需要使用第二子***中的图形数据;
需要通知第二子***中的应用组件进行处理。
优选地,所述第一子***为Host子***,所述第二子***为Guest子***;或者,所述第一子***为Guest子***,所述第二子***为Host子***。
本申请的上述实施例中,第一子***中的第一***服务组件接收第一子***中的第一应用组件发送的信息;第一***服务组件将该信息发送给第二子***中的第二***服务组件,第二***服务组件将该信息发送给第二子***中的第二应用组件,从而实现了不同子***中的应用组件之间的信息交互。
附图说明
图1为本申请实施例所适用的操作***框架示意图;
图2为本申请实施例提供的跨***的信息交互架构示意图;
图3为本申请实施例提供的图形合成层面的双***兼容架构示意图;
图4为本申请实施例提供的视频回放应用程序的用户界面示意图;
图5为本申请实施例提供的图形合成***的结构示意图;
图6为本申请实施例提供的信息交互***的结构示意图。
具体实施方式
为了在第一操作***框架内更好地兼容第二操作***,为用户提供更加自然平滑的体验过渡,本申请实施例提供了在第一操作***框架内,在图形处理层面上的融合和统一,为用户提供无缝的双***用户体验。本申请实施例可适用于针对需要跨操作***运行的应用程序,也可适用于基于不同操作***的应用程序之间需要传递图形数据或控制信息的场景,对此本申请实施例不作限制。
其中,第一操作***和第二操作***为不同的操作***。具体地,第一操作***可以是云操作***,第二操作***可以是传统的操作***。更具体地,第一操作***可以是YunOS,第二操作***可以是Android。
下面结合附图对本申请实施例进行详细描述。
参见图1,为本申请实施例适用的操作***框架示意图。以YunOS作为第一操作***,Android为第二操作***为例,图1示出了在YunOS框架内的双***兼容架构。
如图1所示,***框架中包括Host与Guest两个子***,其中,YunOS即为Host子***,Android即为Guest子***,两个子***通过container(容器)技术隔离。该框架内的硬件抽象层(Hardware Abstraction Layer,HAL)提供了图形显示等方面的接口和驱动服务。
Host子***中的Glibc,即C运行库,是linux中最底层的API(ApplicationProgramming Interface,应用程序编程接口)。Guest子***中的Bioric,是Android的linux内核库。
Libhybris为兼容层,能够使基于Glibc的操作***重用现有的Android的驱动(driver)服务;在图形(Graphics)处理方面,libhybris还实现了EGL platform。EGLplatform这是一套后台(backend)无关的遵循EGL接口的图形平台,以及多个后台(backend)实现。
Gralloc模块位于硬件抽象层中,封装了对帧缓冲区的所有访问操作。
Guest子***中的InputManageerService(输入管理模块)主要用于对输入事件进行监控和管理。
SurfaceFlinger是Guest子***的图形合成器;Wayland Compositor(或Weston)是Host子***的图形合成器,其中,Weston是Wayland Compositor的参考实现。
本申请实施例中,Guest子***的图形合成器与Host子***的图形合成器之间可采用Wayland协议进行通信。Wayland协议定义了如何与内核通信,如何与客户端(client)通信;Wayland复用了所有Linux内核的图形、输入输出技术。
本申请实施例中Andriod的图形合成器与YunOS的图形合成器之间可采用Wayland协议进行通信,使得Android中的图形***架空,并桥接到YunOS的图形***,实现了双***的统一合成渲染,从而提供了较好地双***兼容性,又实现了双***的无缝用户体验。
需要说明的是,上述***架构仅以YunOS和Andriod为例进行说明,对于其他类型的操作***,也可基于上述原理实现双***在图形合成层面的兼容以及有效融合。
基于上述框架,本申请实施例提供了在以下两个层面上的双***兼容:
(一)信息交互层面的双***兼容方案
(二)图形合成层面的双***兼容方案
在实际应用场景中,上述两种双***兼容方案可能独立使用,也可能结合使用。
下面以第一子***为Host子***、第二子***为Guest子***为例,分别对这两种双***兼容方案进行描述。其中,Host子***为YunOS,Guest子***为Android。
(一)信息交互层面的双***兼容方案
为了实现交互和控制上的统一,本申请实施例建立了从第一子***到第二子***的跨操作***环境的数据和/或控制信息的连接通路,即,提供了一种IPC(Inter-processcommunication,进程间通信)机制,以实现不同子***的应用组件(或进程)之间的信息交互。
参见图2,为本申请实施例提供的信息交互架构。
如图2所示,在Host子***中建立有Bridge Proxy,在Guest子***中建立有Bridge Service。其中,Bridge Proxy和Bridge Service均为***服务组件。
通常,Android***采用Binder机制作为IPC(Inter-Process Communication,进程间通信)机制,YunOS采用socket或dbus作为IPC通信机制,为了使信息在不同操作***的应用组件(也即应用程序进程)间进行交互,本申请实施例采用Bridage Proxy作为***服务对于这两个***之间的IPC机制进行转换。
应用组件是应用程序(Application)的组件之一,在Android***中称为Activity,在YunOS中称为Page,是实现应用程序的主体。进程是运行态的应用程序或应用组件。
Bridge Service通常为常驻服务,Bridge Proxy可在需要时创建或启用。例如,在一些实施例中,当在Host子***中有应用组件(进程)被创建时,Bridge Proxy被创建或启用,从而通过该Bridge Proxy实现在不同子***中的信息交互。进一步地,当在Host子进程中有应用组件(进程)被销毁时,该Bridge Proxy被销毁或关闭。其中,本申请实施例中所描述的“应用组件(进程)”表示应用组件和进程为可替代关系,这里的进程可理解为运行态的应用组件。
在一些实施例中,Host子***中的应用组件(进程)可将信息,比如数据和/或控制信息,发送给Bridge Proxy,Bridge Proxy将Bridge Proxy发送来的数据和/或控制信息发送给Bridge Service,Bridge Service将该数据和/或控制信息发送给Guest子***中的应用组件(进程)。
其中,Bridge Proxy与Bridge Service之间可基于Binder机制进行通信。BridgeService可通过intent或socket方式与Guest子***中的应用组件(进程)进行交互。
进一步地,Guest子***中的应用组件(进程)根据接收到的数据和/或控制信息进行处理后,可将作为处理结果的数据和/或控制信息发送给Bridge Service,BridgeService将该数据和/或控制信息发送给Bridge Proxy,Bridge Proxy将该数据和/或控制信息发送给Host子***中的应用组件(进程)。
在另一些实施例中,Guest子***中的应用组件(进程)可将信息,比如数据和/或控制信息,发送给Bridge Service,Bridge Service将该数据和/或控制信息发送给BridgeProxy,Bridge Proxy将该数据和/或控制信息发送给Host子***中的应用组件(进程)。
进一步地,Host子***中的应用组件(进程)根据接收到的数据和/或控制信息进行处理后,可将作为处理结果的数据和/或控制信息发送给Bridge Proxy,Bridge Proxy将该数据和/或控制信息发送给Bridge Service,Bridge Service将该数据和/或控制信息发送给Guest子***中的应用组件(进程)。
上述IPC架构中,不同子***中的进程之间所交互的信息可以是数据也可以是控制信息,所述控制信息可包括事件,或者请求信息,或者窗口属性信息等。
在具体实施时,基于上述IPC架构,当Host子***中的应用组件(进程)需要使用Guest子***中的图形对象的数据,或者需要通知Guest子***中的应用组件(进程)进行某种或某些操作时,可通过Bridge Proxy将控制信息发送给Bridge Service,由BridgeService发送给Guest子***中的应用组件(进程),由该应用组件(进程)根据该控制信息进行相应处理,并将处理结果通过Bridge Service发送给Bridge Proxy,由Bridge Proxy发送给Host子***中的应用组件(进程)。
上述信息交互方法可适用于一个应用程序的部分功能需要基于Host子***实现,部分功能需要基于Guest子***实现的场景。例如,以视频回放应用程序(video playbackapp)为例,当用户通过video playback app用户界面提交播放影片的请求后,该事件被video playback app在Host子***中的进程获取到,由于受到视频内容提供商加密及版权限制,只提供了Android平台的SDK(Software Development Kit,软件开发工具包),因此视频内容相关的逻辑在Android环境中开发,即,该事件所请求的对象是Guse子***中的图形数据,因此,video playback app在Host子***中的进程将该事件发送给Bridge Proxy,Bridge Proxy将该事件发送给Bridge Service,由Bridge Service发送给video playbackapp在Guest子***中的进程,从而使video playback app在Guest子***中的进程将所请求的视频数据发送给Host子***的图形合成器进行处理。
可以看出,通过本申请实施例提供的IPC架构实现了跨操作***的信息交互,使得不同操作***之间在控制层面得到融合,从而使得应用级融合的交互体验变得无缝。
(二)图形合成层面的双***兼容方案
参见图3,为本申请实施例提供的图形合成层面的双***兼容架构示意图。
如图3所示,Guest子***的图形合成器SurfaceFlinger中创建有layer,图中仅示例性地示出了两个layer,分别为layer1和layer2。
在Host子***中,创建有p_surface1和p_surface2,其中,p_surface1与Guest子***中的layer1对应,并与Host子***的图形合成器中的surface1对应(未在图中示出),用于连接layer1和Host子***的图形合成器Weston,更具体地是用于连接layer1和Weston中的surface1;p_surface2与layer2对应,并与Host子***的图形合成器中的surface2对应(未在图中示出),用于连接layer2和Host子***的图形合成器Weston,更具体地是用于连接layer2和Weston中的surface2。
p_surface可以是控件,用于连接Guest子***图形合成器中的layer与Host子***的图形合成器,作为Guest子***中的layer的代理(proxy),将Guest子***的图形数据传递给Host子***的图形合成器。具体地,layer1可将图形数据发送给p_surface1,p_surface1可将layer1发送来的图形数据发送给Host子***的图形合成器Weston;layer2可将图形数据发送给p_surface1,p_surface2可将layer2发送来的图形数据发送给Host子***的图形合成器Weston。
进一步地,在Host子***中,应用组件(进程)还可以在Host子***中创建localsurface,通过local surface将Host子***中的图形数据发送给Host子***的图形合成器Weston。其中,local surface是Host子***中的surface。这样,Host子***的图形合成器既可以对Host子***的图形数据进行合成处理,又可以对Guest子***的图形数据进行合成处理,实现了跨操作***的图形合成。
进一步地,在Guest子***中,应用组件(进程)还可以创建layer3。layer3可将Guest子***中的图形数据发送给Host子***中的图形合成器Weston,由Weston对图形数据进行合成处理。
基于Android框架特点,大部分的图形数据是以layer的形式提交给Surfaceflinger进行合成的,因此,本申请实施例以layer content作为两个子***融合的基本单位,即,通过p_surface发送的图形数据可以是layer content,更具体地,可以是layer所对应的GraphicBuffer队列中存储的图形数据。layer是应用程序进程创建的图形对象,一般地,一个layer代表一个图层,多个layer可按照Z-order顺序叠加以形成用户界面。一个layer可对应一个GraphicBuffer队列,GraphicBuffer队列中包含多个GraphicBuffer。本实施例中,GraphicBuffer是应用组件在Guest子***中的进程创建的,其中存储有图形数据,比如存储有应用组件在Guest子***中的进程所渲染的图形数据。
当然,图3的架构是以YunOS和Android为例描述的,且图形数据以layer为单位提交给Surfaceflinger进行合成,在其他情况下,连接Guest子***中的图形对象和Host子***图形合成器的控件,也可以以其他类型的图形对象为单位,将该图形对象对应的图形数据发送给Host子***图形合成器进行合成。
进一步地,p_surface还可以接收Host子***中的应用组件发送的图形对象设置信息,并将该图形对象设置信息发送给Host子***的图形合成器Weston。Weston可根据该图形对象设置信息进行图形对象设置或更新。具体地,该图形对象可以是应用程序窗口,该图形对象设置信息可以是窗口属性信息,Weston可根据该窗口属性信息对相应窗口进行更新,比如改变窗口透明度等。
具体地,p_surface可提供接口给Host子***中的应用组件进行调用,当应用组件调用其中的图形对象处理相关的接口时,执行该接口对应的操作以实现图形对象设置,比如窗口属性更新。
作为一个例子,Host子***中的应用组件接收到视频窗口属性更新事件后(该事件可由用户通过调整视频窗口大小或透明度等操作触发),该应用组件将更新的窗口属性信息发送给与该视频窗口的surface对应的p_surface1,由p_surface1将窗口属性信息发送给Weston,Weston根据该窗口属性信息重绘窗口。
p_surface的生命周期可由Host子***中的应用组件进行管理。
具体地,以p_surface1为例,Host子***中的应用组件可根据显示Guest子***获得的图形数据的请求,创建p_surface1;当Guest子***中与p_surface1对应的图形对象被销毁时,则销毁p_surface1。
在另外的实施例中,当Host子***中的应用组件接收到结束使用Guest子***中的图形数据的指示时,则销毁与Guest子***中用于提供该图形数据的图形对象所对应的p_surface1。
优选地,p_surface可基于***提供的类来创建,这样可以继承父类(即***提供的类)的功能特性。进一步地,考虑到不同的应用场景下可能有不同的需求,因此可在基于***提供的类创建p_surface时,结合当前的应用场景对一些参数或属性进行重新设置。
例如,video playback应用程序可在创建p_surface时,基于***提供的类进行创建,并设置为h5 surface的sub-surface(特殊surface),控制相应宽高、位置等。
再例如,在另外一些实施例中,可将多个p_surface发送的图形数据发送给localsurface(即Host子***中的surface),以得到合成的图形数据,由local surface发送给Weston,从而最终提交一块surface到weston。
上述图形合成方法可适用于一个应用程序的部分功能需要基于Host子***实现,部分功能需要基于Guest子***实现的场景。以视频回放应用程序(video playback app)为例来说,当video playback app在Host子***中的进程获取到视频播放事件后(该事件可由用户通过用户界面提交视频播放请求触发),创建p_surface1,p_surface1与Weston中的视频窗口的surface对应;进一步地,video playback app在Host子***中的进程将该事件发送给video playback app在Guest子***中的进程(跨操作***进程间的信息交互可参见前述实施例),video playback app在Guest子***中的进程根据该事件从网络侧获取视频数据,视频解码后的内容通过MediaCodec(媒体解码器)传递到VideoView控件,然后提交到surfaceflinger,并通过p_surface1将图形数据发送给weston进行合成,从而在视频窗口中显示。
当视频播放完成后,video playback app在Guest子***中的进程将该事件发送给video playback app在Host子***中的进程,video playback app在Host子***中的进程根据该事件销毁p_surface1。
当用户再次请求播放视频时,可按照上述流程执行,以再次创建p_surface,并通过p_surface将图形数据从Guest子***传输给Host子***中的图形合成器。
通过本申请上述实施例对于图形合成层面的双***兼容方案可以看出,Host子***中的p_surface接收Guest子***图形合成器中与该p_surface对应的layer发送的图形数据,该p_surface将接收到的图形数据发送给Host子***图形合成器,可以看出,Host子***中,对应于Guest子***图形合成器中的layer存在对应的p_surface,该p_surface提供了两个子***间图形数据的传输功能,从而在图形处理层面实现了不同操作***间的兼容。
为了更清楚地理解本申请的上述实施例,下面以视频回放应用程序(videoplayback app)为例,结合具体应用场景描述本申请实施例的实现过程。
Tom的手机采用YunOS***,其***架构如图1所示。该手机上安装有videoplayback app,该应用程序中视频数据下载和解码相关功能基于Android实现,播放控制相关功能基于YunOS实现。
Tom使用video playback app观看电影影片的操作以及手机响应Tom的操作行为的过程如下所述。
Tom的操作行为1:
Tom点击手机屏幕上操作***主界面中显示的video playback app图标,videoplayback app被启动,video playback app的主界面显示在手机屏幕上,该主界面如图4所示,其中主要包括视频窗口100、播放控制条200、窗口控制条300。播放控制条200上设置有播放控制键,具体可包括暂停键201、停止键202、播放键203以及进程拖动条204。窗口控制条300上设置有窗口最大化键301、窗口还原键302。video playback app的主界面中还包括退出键400。
基于Tom的上述操作行为1,点击video playback app图标的事件触发Host子***开启video playback app,在Host子***和Guest子***中分别创建video playback app进程。在Host子***中,创建该应用程序对应的local surface,通过weston绘制该应用程序的主界面并显示。此外,在Host子***中,针对video playback app还创建BridgeProxy,该Bridge Proxy能够与Guest子***中的video playback app进程所对应的BridgeService进行连接,以进行控制信息和/或数据的交互。
Tom的操作行为2:
Tom选取一影片后提交收看该电影的请求,此后,该影片在视频窗口100中播放。
基于Tom的上述操作行为2,Host子***中的video playback app进程创建p_surface;Guest子***中的video playback app进程创建buffer队列,从网络侧获取该影片的视频数据,对获取到的视频数据进行解码,将解码后的视频数据存入buffer队列。
Guest子***中,图形合成器SurfaceFlinger中的layer将buffer队列中的视频数据发送给p_surface;在Host子***中,p_surface将该视频数据发送给图形合成器weston,weston将该视频数据进行合成,并通过显示驱动显示于视频窗口100。
Tom的操作行为3:
Tom点击窗口控制条300上的窗口最大化键301,视频窗口100被最大化显示。
基于Tom的上述操作行为3,在Host子***中,video playback app进程将最大化视频窗口100的相关信息(比如最大化窗口的指示信息和/或窗口属性信息等)发送给p_surface,p_surface将该信息发送给weston,weston根据该信息重新绘制视频窗口100,以实现最大化显示。
Tom的操作行为4:
Tom点击播放控制条200中的暂停键201,视频窗口100中正在播放的影片被暂停播放。
基于Tom的上述操作行为4,Host子***中的video playback app进程将点击暂停键201所产生的事件发送给Bridge Proxy,Bridge Proxy将该事件发送给Guest子***中的video playback app进程对应的Bridge Service,Bridge Service将该事件发送给Guest子***中的video playback app进程,video playback app进程响应该事件,不再通过layer发送视频数据给p_surface。
Tom的操作行为5:
Tom点击播放控制条200中的播放键203,视频窗口100中的视频数据恢复播放。
基于Tom的上述操作行为5,Host子***中的video playback app进程将点击播放键203所产生的事件发送给Bridge Proxy,Bridge Proxy将该事件发送给Guest子***中的video playback app进程对应的Bridge Service,Bridge Service将该事件发送给Guest子***中的video playback app进程,video playback app进程响应该事件,继续通过layer发送视频数据给p_surface。
当影片播放完毕后,视频窗口100关闭。
基于该事件,Guest子***中的video playback app进程将该事件通过BridgeService发送给Bridge Proxy,Bridge Proxy将该事件发送给Host子***中的videoplayback app进程;Host子***中的video playback app进程响应该事件,将视频窗口100关闭,销毁p_surface。
Tom的操作行为6:
Tom点击退出video playback app的退出键400。
基于Tom的上述操作行为6,Host子***中的video playback app进程获取到点击退出键400的事件后,销毁Bridge Proxy,关闭video playback app。
综上所述,在将本申请实施例应用于Android和YunOS融合的场景中时,可以使Android应用透明化,Android应用可通过SDK或NDK编译出相应的APK或二进制代码,无需对Android应用做过多改进。
另外,本申请实施例可实现跨***融合的多样化,针对不同类型的Host SDK,比如,h5、qt、domoless、native等,可以自定义输入接入方法。
还有,本申请实施例提供了应用级内容的融合,可在一个窗口内展现YunOS和Android的应用程序进程处理的内容,将两种不同操作***有机地融合为一体,统一的交互体验,无需切换窗口来统一管理所有的内容。
基于相同的技术构思,本申请实施例提供了一种图形合成***,可以实现前述实施例描述的图形合成流程。
参见图5,为本申请实施例提供的图形合成***的结构示意图,该***可包括:第一子***图形合成器51、第二子***图形合成器52,以及第一子***中的第一控件53;
第一子***中的第一控件53,用于接收第二子***图形合成器52中与所述第一控件对应的图形对象发送的图形数据,并将所述图形数据发送给第一子***图形合成器51。
进一步地,第一子***图形合成器51还用于:接收第一子***中的图形对象发送的图形数据。
进一步地,第一子***图形合成器51还用于:对第一控件53发送的图形数据以及第一子***中的图形对象发送的图形数据进行合成。
优选地,第一控件为多个,所述多个第一控件将各自接收到的图形数据发送给第一子***中的图形对象;相应地,第一子***图形合成器51具体用于:接收第一子***中的图形对象发送的图形数据;其中,所述图形对象将所述多个第一控件发送的图形数据作为本图形对象对应的图形数据发送给第一子***图形合成器。
进一步地,第一控件53还用于:接收第一子***中的应用组件发送的图形对象设置信息;将接收到的图形对象设置信息发送给第一子***图形合成器51。
其中,所述图形对象为应用程序窗口,所述图形对象设置信息包括窗口属性信息。
优选地,第一子***中还包括应用组件;所述第一子***中的应用组件,用于创建所述第一控件。
其中,所述第一子***中的应用组件具体用于:根据使用第二子***中的图形数据的请求,创建与第二子***中用于提供图形数据的图形对象所对应的第一控件53。
优选地,第一子***中还包括应用组件;所述第一子***中的应用组件,用于销毁所述第一控件53。
其中,所述第一子***中的应用组件具体用于:接收到第二子***中与所述第一控件53对应的图形对象被销毁的信息,则销毁所述第一控件53;或者,接收到结束使用第二子***中的图形数据的指示,则销毁与第二子***中用于提供所述图形数据的图形对象所对应的第一控件53。
优选地,第一子***中还包括第一应用组件,第二子***中还包括第二应用组件;相应地,第一子***中的第一应用组件,用于向第一子***中的第一***服务组件54发送控制信息,所述控制信息用于指示获取第二子***中的图形数据;第一***服务组件54具体用于,将所述控制信息发送给第二子***中的第二***服务组件55;第二***服务组件55具体用于,将所述控制信息发送给第二子***中的第二应用组件。
优选地,所述第一子***为Host子***,所述第二子***为Guest子***。
基于相同的技术构思,本申请实施例提供了一种信息交互***,该***可实现前述实施例描述的信息交互方法。
参见图6,为本申请实施例提供的信息交互***架构示意图,该***可包括:第一子***中的第一***服务组件61、第二子***中的第二***服务组件62,其中:
第一子***中的第一***服务组件61,用于接收第一子***中的第一应用组件发送的控制信息,并将所述控制信息发送给第二子***中的第二***服务组件62;
第二***服务组件62,用于将所述控制信息发送给第二子***中的第二应用组件。
优选地,所述第二***服务组件62还用于:接收所述第二应用组件发送的第二信息,将所述第二信息发送给所述第一***服务组件61;其中,所述第二信息为所述第一应用组件根据所述控制信息得到的。相应地,第一***服务组件61还用于:将所述第二信息发送给所述第一应用组件。
优选地,第一应用组件具体用于:在以下之一或多种情况下,向所述第一***服务组件61发送控制信息:
需要使用第二子***中的图形数据;
需要通知第二子***中的应用组件进行处理。
优选地,所述第一子***为Host子***,所述第二子***为Guest子***;或者,所述第一子***为Guest子***,所述第二子***为Host子***。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。