一种同时支持多窗口图像显示的方法和系统与流程

文档序号:12498973阅读:272来源:国知局
一种同时支持多窗口图像显示的方法和系统与流程

本发明涉及显示技术领域,特别涉及一种同时支持多窗口图像显示的方法和系统。



背景技术:

随着科技的不断发展和人们对智能化的追求,智能手机越来越普遍,且人们对智能手机的要求也越来越高,能在智能手机上进行的操作也与日俱增。由于智能手机相对于电脑、电视更方便携带,所以大家对手机的依赖也越发明显,利用手机观看节目的人也越来越多。

在现有技术中,人们通过手机观看节目时,点击进入频道列表页面,页面上只能看到频道名称或者图标,用户点击进入某个频道后,才能对相应的节目内容进行观看。

在实现本发明的过程中,人们在手机屏幕上展示的节目频道列表中,只能单纯的看到频道名称或者图标,频道列表页面不能对节目内容进行预览。发明人发现至少存在如下问题:

缺点1:不能在预览页面就看到节目的内容,增加了用户查找自己喜爱节目的时间;

缺点2:缺少灵动性,给用户的带来的体验也不佳;

缺点3:减少了用户点击观看节目的概率。



技术实现要素:

本发明的目的是提供一种同时支持多窗口图像显示的方法和系统,通过本发明的技术方案,在不需要用户点击进入观看节目频道的情况下,就能在频道列表界面中对节目内容进行预览,从而对用户钟爱的节目进行选择。

为了实现上述目的,根据本发明实施例的一个方面,提供了一种同时支持多窗口图像显示的方法,该方法包括:获取多个视频流数据;将每个视频流数据进行解码,得到与其相对应的多帧图像数据;将多帧图像数据发送至相应的存储空间;在绘制面板上创建多个显示窗口;将每个多帧图像数据绘制到与其相对应的显示窗口中。

进一步地,在将多帧图像数据发送至相应的存储空间的步骤之前,还包括:当接收到多个多帧图像数据时,为每个多帧图像数据分配相应的存储空间。

进一步地,在为每个多帧图像数据分配相应的存储空间之前,还包括:检测绘制面板的绘制表面类型是否为surface type push buffers;若是,为每个多帧图像数据分配相应的存储空间;否则,将绘制面板的绘制表面类型设置为surface type push buffers。

进一步地,在将每个多帧图像数据绘制到与其相对应的显示窗口中的步骤之后,还包括:调用锁定变量对应的锁定机制;基于锁定机制,对绘制面板进行锁定,以保证每个多帧图像数据只在其对应的显示窗口内进行显示。

进一步地,在将每个所述多帧图像数据绘制到与其相对应的显示窗口中的步骤之后,还包括:在将多帧图像数据绘制到与其相对应的显示窗口中的过程中,实时监听每个多帧图像数据是否出现图像失真;若是,调用surfaceflinger对出现失真的图像进行渲染。

根据本发明实施例的另一方面,提供了一种同时支持多窗口图像显示的系统,该系统包括:获取模块,用于获取多个视频流数据;解码模块,用于将每个视频流数据进行解码,得到与其相对应的多帧图像数据;发送模块,用于将多帧图像数据发送至相应的存储空间;创建模块,用于在绘制面板上创建多个显示窗口;绘制模块,用于将每个多帧图像数据绘制到与其相对应的显示窗口中。

进一步地,在发送模块将多帧图像数据发送至相应的存储空间之前,还包括:分配模块,用于当接收到多个多帧图像数据时,为每个多帧图像数据分配相应的存储空间。

进一步地,在分配模块为每个多帧图像数据分配相应的存储空间之前,还包括:检测模块,用于检测绘制面板的绘制表面类型是否为surface type push buffers;若是,则通过分配模块为每个多帧图像数据分配相应的存储空间;否则,通过设置模块将绘制面板的绘制表面类型设置为surface type push buffers。

进一步地,在绘制模块在将每个多帧图像数据绘制到与其相对应的显示窗口中之后,还包括:调用模块,用于调用锁定变量对应的锁定机制;锁定模块,基于锁定机制,用于对绘制面板进行锁定,以保证每个多帧图像数据只在其对应的显示窗口内进行显示。

进一步地,在绘制模块将每个多帧图像数据绘制到与其相对应的显示窗口中之后,还包括:实时监听模块,用于在将每个多帧图像数据绘制到与其相对应的显示窗口中的过程中,实时监听每个多帧图像数据是否出现图像失真;若是,则通过渲染模块调用surfaceflinger对出现失真的图像进行渲染。

本发明实施例的有益效果在于,因为采用对获取到的多个视频流数据进行解码,得到得到与其相对应的多帧图像数据,将多帧图像数据发送至相应的存储空间,并通过在绘制面板上创建多个显示窗口,将每个多帧图像数据绘制到与其相对应的显示窗口中技术手段,所以克服了不能通过频道列表页面对节目内容进行预览的技术问题,进而达到在不增加内存消耗的同时,同时预览多个频道的节目内容的技术效果。

附图说明

图1是本发明第一实施例提供的一种同时支持多窗口图像显示的方法的流程图;

图2是本发明第一实施例提供的在将多帧图像数据发送至相应的存储空间的步骤之前的方法流程图;

图3是本发明第一实施例提供的在为每个多帧图像数据分配相应的存储空间之前的方法流程图;

图4是本发明第一实施例提供的在将每个多帧图像数据绘制到与其相对应的显示窗口中的步骤之后的方法流程图;

图5是本发明第一实施例提供的在将每个多帧图像数据绘制到与其相对应的显示窗口中的步骤之后的方法流程图;

图6是本发明第二实施例提供的一种同时支持多窗口图像显示的系统的模块示意图;

图7是本发明第二实施例提供的在发送模块将多帧图像数据发送至相应的存储空间之前的模块示意图;

图8是本发明第二实施例提供的在分配模块为每个多帧图像数据分配相应的存储空间之前的模块示意图;

图9是本发明第二实施例提供的在绘制模块在将每个多帧图像数据绘制到与其相对应的显示窗口中之后的模块示意图;

图10是本发明第二实施例提供的在绘制模块将每个多帧图像数据绘制到与其相对应的显示窗口中之后的模块示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

请参阅图1,图1是本发明第一实施例提供的一种同时支持多窗口图像显示的方法的流程图。

如图1所示,在本实施例中,同时支持多窗口图像显示的方法包括:

步骤S110:获取多个视频流数据;步骤S120:将每个视频流数据进行解码,得到与其相对应的多帧图像数据;步骤S130:将多帧图像数据发送至相应的存储空间;步骤S210:在绘制面板上创建多个显示窗口;步骤S140:将每个多帧图像数据绘制到与其相对应的显示窗口中。

在本实施例中,通过步骤S110:获取多个视频流数据。例如,有六个频道,则需要分别获取该六个频道的视频流数据。步骤S120:将每个视频流数据进行解码,得到与其相对应的多帧图像数据。在上一步骤中已经获取了六个频道的视频流数据,则在本步骤中,需要将六个频道中的每一个频道的视频流数据进行解码,解码后,每个频道的视频流数据都会得到与其相对应的多帧图像数据,即第一频道的视频流数据解码后会得到的相应属于第一频道的多帧图像数据,依次类推,第六频道也会得到与第六频道视频流数据相对应的多帧图像数据。步骤S130:将多帧图像数据发送至相应的存储空间。在本步骤中,有六个频道,则相应的也具有六个存储空间,例如,第一频道对应第一存储空间,则将第一频道的多帧图像数据发送至与之相对应的第一存储空间。步骤S210:在绘制面板上创建多个显示窗口。需要说明的是,绘制面板本身并不能进行图像的显示,图像只能通过显示窗口进行显示。所以,在步骤S210中,在绘制面板上创建与频道数量相对应的多个显示窗口。如果频道的数量为六个,则在绘制面板上创建六个显示窗口。步骤S140:将每个多帧图像数据绘制到与其相对应的显示窗口中。在本步骤中,通过绘制的方式将每个频道的多帧图像数据绘制到与其相对应的显示窗口中。例如,将第一频道的多帧图像数据绘制到第一显示窗口进行显示。

请参阅图2,图2是本发明第一实施例提供的在将多帧图像数据发送至相应的存储空间的步骤之前的方法流程图。

如图2所示,在将多帧图像数据发送至相应的存储空间的步骤之前,还包括:步骤S1303:当接收到多个多帧图像数据时,为每个所述多帧图像数据分配相应的存储空间。

在本实施例中,当接收到解码后的多个多帧图像数据时,例如当接收到解码后的频道一的多帧图像数据时,为频道一的多帧图像数据分配存储空间;如果接收到的是频道一和频道二的多帧图像数据,则分别为频道一和频道二的多帧图像数据分配存储空间。然后通过步骤S130将多帧图像数据发送至相应的存储空间。

请参阅图3,图3是本发明第一实施例提供的在为每个多帧图像数据分配相应的存储空间之前的方法流程图。

如图3所示,在为每个多帧图像数据分配相应的存储空间之前,还包括:步骤S1301:检测绘制面板的绘制表面类型是否为surface type push buffers;步骤S1303:若是,为每个多帧图像数据分配相应的存储空间;步骤S1302:否则,将绘制面板的绘制表面类型设置为surface type push buffers。

在本实施例中,在步骤S1303为每个多帧图像数据分配相应的存储空间之前还包括:步骤S1301:检测绘制面板的绘制表面类型是否为surface type push buffers,因为只有当绘制面板的绘制表面类型为surface type push buffers时,才能在绘制面板上进行内存的创建。如果检测的结果为:绘制面板的绘制表面类型是surface type push buffers类型,则进行步骤S1303为每个多帧图像数据分配相应的存储空间的动作;如果检测的结果为:绘制面板的绘制表面类型不是surface type push buffers类型,则进行步骤S1302:先将绘制面板的绘制表面类型设置为surface type push buffers类型,然后再将每个多帧图像数据分配相应的存储空间。

请参阅图4,图4是本发明第一实施例提供的在将每个多帧图像数据绘制到与其相对应的显示窗口中的步骤之后的方法流程图。

如图4所示,步骤S141:调用锁定变量对应的锁定机制;步骤S141:基于锁定机制,对绘制面板进行锁定,以保证每个所述多帧图像数据只在其对应的显示窗口内进行显示。

在本实施例中,在步骤S140:将每个多帧图像数据绘制到与其相对应的显示窗口中之后还包括:步骤S141:调用锁定变量对应的锁定机制;例如,通过调用变量mSurfacelock指定的ReentrantLock。步骤S141:基于ReentrantLock对绘制面板进行锁定,确保每个频道的多帧图像数据只在其频道相对应的显示窗口进行显示。需要说明的是,通过本实施例中的步骤流程,可以确保每个频道的多帧图像数据在其对应的显示窗口中进行显示,每个频道都拥有一个独立的线程,即频道一的多帧图像数据只在频道一所对应的显示窗口中进行显示,频道二的多帧图像数据只在频道二所对应的显示窗口中进行显示,不受其它频道的多帧图像数据的干扰。

请参阅图5,图5是本发明第一实施例提供的在将每个多帧图像数据绘制到与其相对应的显示窗口中的步骤之后的方法流程图。

如图5所示,在步骤S140:将每个多帧图像数据绘制到与其相对应的显示窗口中的步骤之后还包括:步骤S143:在将多帧图像数据绘制到与其相对应的显示窗口中的过程中,实时监听每个多帧图像数据是否出现图像失真;步骤S144:若是,调用surfaceflinger对出现失真的图像进行渲染。

在本实施例中,需要说明的是,由于每个频道都是由多帧图像数据构成,然后,多帧图像数数据之间可能会有重叠。例如,频道一有三帧图像数据,第一帧图像数据为绿色,第二帧图像数据为蓝色,第三帧图像数据为红色,绿色覆盖了蓝色,而红色又覆盖了绿色和蓝色以及下面的界面,而相互重叠的部分的图像数据会出现失真,而且还具有一定透明度。所以,需要执行步骤S143的动作,即实时监听每个多帧图像数据是否出现图像失真。如果出现失真,则需要对失真的图像进行相应的处理,而在本发明实施例中,发明人给出的方式是通过软件的方式,即调用surfaceflinger对出现失真的图像进行渲染。如果在实时监听过程中,每个多帧图像数据并没有出现图像失真,则不需要进行处理。

请参阅图6,图6是本发明第二实施例提供的一种同时支持多窗口图像显示的系统的模块示意图。

如图6所示,第二实施例提供了一种同时支持多窗口图像显示的系统,该系统包括:获取模块110,用于获取多个视频流数据;解码模块120,用于将每个视频流数据进行解码,得到与其相对应的多帧图像数据;发送模块130,用于将多帧图像数据发送至相应的存储空间;创建模块210,用于在绘制面板上创建多个显示窗口;绘制模块140,用于将每个多帧图像数据绘制到与其相对应的显示窗口中。

在本实施例中,获取模块110:用于获取多个视频流数据。例如,有六个频道,则获取模块110需要分别获取该六个频道的视频流数据。解码模块120:用于将每个视频流数据进行解码,得到与其相对应的多帧图像数据。如,获取模块110获取了六个频道频道的视频流数据,则解码模块120分别为这六个频道的视频流数据进行解码。发送模块130:用于将多帧图像数据发送至相应的存储空间。如,有六个频道的视频流数据的解码后的数据,每个频道对应一个存储空间,则发送模块130将这六个频道的解码后的数据发送至相应的存储空间。创建模块210,用于在绘制面板上创建多个显示窗口。需要说明的是,绘制面板本身并不能进行图像的显示,图像只能通过显示窗口进行显示。所以,需要通过创建模块210在绘制面板上创建多个显示窗口,以便将图像在显示窗口中进行显示。如,有六个频道,则通过创建模块210在绘制面板上创建六个显示窗口。绘制模块140,用于将每个多帧图像数据绘制到与其相对应的显示窗口中。如,有六个频道,有六个频道的多帧图像数据,每个频道对应一个显示窗口,则通过绘制模块140将每个频道的多帧图像数据绘制到与其相对应的显示窗口中。

请参阅图7,图7是本发明第二实施例提供的在发送模块将多帧图像数据发送至相应的存储空间之前的模块示意图。

如图7所示,分配模块1303,用于当接收到多个多帧图像数据时,为每个多帧图像数据分配相应的存储空间。

在本实施例中,例如,当接收到频道二的多帧图像数据时,分配模块1303就会为频道二的多帧图像数据分配相应的存储空间。

请参阅图8,图8是本发明第二实施例提供的在分配模块为每个多帧图像数据分配相应的存储空间之前的模块示意图。

如图8所示,在分配模块1303为每个多帧图像数据分配相应的存储空间之前,还包括:检测模块1301,用于检测绘制面板的绘制表面类型是否为surface type push buffers;若是,则通过分配模块1303为每个多帧图像数据分配相应的存储空间;否则,通过设置模块1302将绘制面板的绘制表面类型设置为surface type push buffers。

在本实施例中,通过检测模块1301,检测绘制面板的绘制表面类型是否为surface type push buffers。因为只有当绘制面板的绘制表面类型为surface type push buffers时,才能在绘制面板上进行内存的创建。如果检测模块1301的检测结果为:绘制面板的绘制表面类型是surface type push buffers类型,则通过分配模块1303为每个多帧图像数据分配相应的存储空间。如,通过分配模块1303为第一频道的多帧图像数据分配第一存储空间。如果检测模块1301的检测结果为:绘制面板的绘制表面类型不是surface type push buffers类型,则通过设置模块1302将绘制面板的绘制表面类型设置为surface type push buffers。在设置模块1302设置完成后,再通过分配模块1303为每个多帧图像数据分配相应的存储空间。

请参阅图9,图9是本发明第二实施例提供的在绘制模块在将每个多帧图像数据绘制到与其相对应的显示窗口中之后的模块示意图。

如图9所示,在绘制模块140将每个多帧图像数据绘制到与其相对应的显示窗口中之后,还包括:调用模块141,用于调用锁定变量对应的锁定机制;锁定模块142,基于所述锁定机制,用于对所述绘制面板进行锁定,以保证每个所述多帧图像数据只在其对应的显示窗口内进行显示。

在本实施例中,调用模块141,用于调用锁定变量对应的锁定机制,例如,调用模块141调用变量mSurfacelock指定的ReentrantLock。锁定模块142,基于所述锁定机制,用于对所述绘制面板进行锁定,以保证每个所述多帧图像数据只在其对应的显示窗口内进行显示。如,锁定模块142基于调用模块调用的变量mSurfacelock指定的ReentrantLock对绘制表面进行锁定。当锁定模块142对绘制面板进行锁定后,每个多帧图像数据只在其相应的显示窗口中进行显示,彼此之间不受干扰。

请参阅图10,图10是本发明第二实施例提供的在绘制模块将每个多帧图像数据绘制到与其相对应的显示窗口中之后的模块示意图。

如图10所示,在绘制模块140将每个多帧图像数据绘制到与其相对应的显示窗口中之后,还包括:实时监听模块143,用于在将多帧图像数据绘制到与其相对应的显示窗口中的过程中,实时监听每个多帧图像数据是否出现图像失真;若是,则通过渲染模块144调用surfaceflinger对出现失真的图像进行渲染。

在本实施例中,需要说明的是,由于每个频道都是由多帧图像数据构成,然后,多帧图像数数据之间可能会有重叠。例如,频道一有三帧图像数据,第一帧图像数据为绿色,第二帧图像数据为蓝色,第三帧图像数据为红色,绿色覆盖了蓝色,而红色又覆盖了绿色和蓝色以及下面的界面,而相互重叠的部分的图像数据会出现失真,而且还具有一定透明度。为防止上述影响多帧图像数据的情况发生,则需要采用实时监听模块143对在将多帧图像数据绘制到与其相对应的显示窗口中的过程中进行实时监听,以及时或者每个多帧图像数据是否出现图像失真的信息。如果实时监听模块143监听到多帧图像数据已经发生失真,则通过渲染模块144调用surfaceflinger对出现失真的图像进行渲染,以解决多帧图像数据已经发生的失真现象,以便多帧图像数据恢复正常。如果在监听模块143监听的过程中,并没有监听到多帧图像数据发生失真,则不需要进行渲染。

本发明通过上述实施例公开的一种同时支持多窗口图像显示的方法和系统,实现了在不需要用户点击进入观看节目频道的情况下,就能在频道列表界面中对节目内容进行预览,从而对用户钟爱的节目进行选择,且节约了用户的时间和精力。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置、系统中的模块、单元可以根据实际需要进行合并、划分和删减。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

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