一种基于Android系统的云桌面显示优化方法及系统与流程

    专利2022-07-08  101


    本发明涉及android云终端虚机桌面显示优化技术,具体涉及一种基于android系统的云桌面显示优化方法及系统。



    背景技术:

    由于互联网的基础设施的快速发展,云桌面越来越受到欢迎,在移动终端(android)上运行云桌面客户端,使得人们可以在手机、pad上,随时随地访问云端桌面系统中的服务。当在android云终端拖动云桌面中的网页进度条或者播放视频时存在卡顿现象。对于这种虚机传输数据成流的场景,常规的方案如降低云桌面分辨率,减少图像位数等措施在提高画面流畅度的同时,一定程度上也降低了画面的质量,影响用户体验。



    技术实现要素:

    本发明要解决的技术问题:针对android云终端上云桌面显示延迟大(特别是虚机有网页浏览、视频播放等成流场景时尤为明显)的问题,提供一种基于android系统的云桌面显示优化方法及系统,本发明能够在不降低画面质量的情况下,充分利用移动终端的gpu计算能力,让云桌面的显示变得流畅。

    为了解决上述技术问题,本发明采用的技术方案为:

    一种基于android系统的云桌面显示优化方法,包括:

    1)搭建opengles的运行环境;

    2)在opengles中创建用于对应云桌面显示数据的2d纹理;

    3)在opengles中创建两个第一像素内存缓冲区;

    4)通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据,使得在每一个周期的前半个周期内,cpu往第一个第一像素内存缓冲区里面拷贝最新的云桌面数据、同时gpu从第二个第一像素内存缓冲区里面读取上一帧的云桌面数据并绘制到2d纹理;后半个周期内cpu往第二个第一像素内存缓冲区里面拷贝最新的云桌面数据、同时gpu从第一个第一像素内存缓冲区里面取出数据绘制到2d纹理;且每交替一次则将得到的2d纹理提交显示。

    可选地,步骤1)的步骤包括:在android系统的ndk层通过ui层的视图控件surfaceview获取到原生窗口nativewindow,并根据获取到的原生窗口nativewindow搭建opengles的运行环境。

    可选地,步骤4)将得到的2d纹理提交显示之后还包括通过android系统对提交的纹理采用三缓冲技术进行显示的步骤:当收到提交显示的2d纹理后,先把数据拷贝到后台缓冲,然后交换后台缓冲与前台缓冲的位置,把最新需要的数据显示出来。

    可选地,步骤3)中还包括在opengles中创建两个第二像素内存缓冲区,所述第二像素内存缓冲区用于存储成流数据对应的视频帧数据;步骤4)通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据时还包括下述步骤:判断云桌面显示数据是否包含视频数据,若包含视频数据则将云桌面显示数据根据视频和非视频区域分割为成流数据、非流数据,对成流数据进行解码得到视频帧数据,并将视频帧数据交替放入两个第二像素内存缓冲区中存储,使得在每一个周期的前半个周期内,cpu往第一个第二像素内存缓冲区里面拷贝最新的视频帧数据、同时gpu从第二个第二像素内存缓冲区里面读取视频帧数据;后半个周期内cpu往第二个第二像素内存缓冲区里面拷贝最新的视频帧数据、同时gpu从第一个第二像素内存缓冲区里面读取视频帧数据,且所述读取视频帧数据时还包括从第二像素内存缓冲区中读取上一帧的视频帧数据,将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算得到完整的2d纹理的步骤。

    可选地,所述对成流数据进行解码得到视频帧数据的步骤包括:检测android系统是否支持硬件解码,如果支持硬件解码则采用硬件解码的方式对成流数据进行解码得到视频帧数据;否则采用软件解码的方式对成流数据进行解码得到视频帧数据。

    可选地,步骤4)中gpu从第二个第一像素内存缓冲区里面读取上一帧的云桌面数据,以及gpu从第一个第一像素内存缓冲区里面取出数据均为通过直接存储访问dma的方式读取数据。

    可选地,所述将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算具体是指通过图形处理单元gpu将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算,从而得到完整的2d纹理。

    此外,本发明还提供一种基于android系统的云桌面显示优化系统,包括计算机设备,该计算机设备包括微处理器和存储器,该微处理器被编程或配置以执行所述基于android系统的云桌面显示优化方法的步骤。

    此外,本发明还提供一种基于android系统的云桌面显示优化系统,包括计算机设备,该计算机设备包括微处理器和存储器,该存储器中存储有被编程或配置以执行所述基于android系统的云桌面显示优化方法的计算机程序。

    此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于android系统的云桌面显示优化方法的计算机程序。

    和现有技术相比,本发明具有下述优点:本发明包括android云终端云桌面显示优化的步骤:搭建opengles的运行环境;在opengles中创建用于对应云桌面显示数据的2d纹理;在opengles中创建两个第一像素内存缓冲区,通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据,使得任意一个时刻内一个第一像素内存缓冲区存储待显示的云桌面显示数据、另一个第一像素内存缓冲区作为所述2d纹理进行纹理渲染的数据源;且每交替一次则将作为数据源中的第一像素内存缓冲区中缓存的数据进行纹理渲染并提交显示,通过上述步骤,本发明能够在不降低画面质量的情况下,充分利用移动终端的gpu计算能力,让云桌面的显示变得流畅。本发明能够起到加速android云终端上云桌面的显示,减小延时的效果,使得android云终端上虚拟机内的网页浏览及视频播放等变得流畅,并且可有效降低android云终端上的cpu利用率。

    附图说明

    图1为本发明实施例中整体的云桌面显示优化的基本流程示意图。

    图2为本发明实施例中整体的云桌面显示优化的基本原理示意图。

    图3为本发明实施例中整体的云桌面显示优化的详细实现示意图。

    图4为本发明实施例中整体的流场景优化的基本原理示意图。

    图5为本发明实施例中整体的流场景优化的详细实现示意图。

    具体实施方式

    首先,本发明基于android系统的云桌面显示优化方法提供针对android云终端整体的云桌面显示优化。如图1和图2,本实施例基于android系统的云桌面显示优化方法包括:

    1)搭建opengles的运行环境;

    2)在opengles中创建用于对应云桌面显示数据的2d纹理;

    3)在opengles中创建两个第一像素内存缓冲区;

    4)通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据,使得在每一个周期的前半个周期内,cpu往第一个第一像素内存缓冲区里面拷贝最新的云桌面数据、同时gpu从第二个第一像素内存缓冲区里面读取上一帧的云桌面数据并绘制到2d纹理;后半个周期内cpu往第二个第一像素内存缓冲区里面拷贝最新的云桌面数据、同时gpu从第一个第一像素内存缓冲区里面取出数据绘制到2d纹理;且每交替一次则将得到的2d纹理提交显示。通过上述交替执行的方式,使得第一像素内存缓冲区在同一时间,一个用来存储最新收到的云桌面数据,一个用来给gpu纹理渲染提供数据,让拷贝数据和绘制数据同时进行,可达到节约时间的目的,提高android系统的云桌面显示流畅度。

    参见图2,本实施例中步骤1)的步骤包括:在android系统的ndk层通过ui层的视图控件surfaceview获取到原生窗口nativewindow,并根据获取到的原生窗口nativewindow搭建opengles的运行环境。

    参见图3,本实施例步骤4)将得到的2d纹理提交显示之后还包括通过android系统对提交的纹理采用三缓冲技术进行显示的步骤:当收到提交显示的2d纹理后,先把数据拷贝到后台缓冲,然后交换后台缓冲与前台缓冲的位置,把最新需要的数据显示出来。参见图3,该三缓冲技术的函数名称为eglswapbuffer,用于将后台缓冲backbuffer、前台缓冲frontbuffer执行轮流切换,且前台缓冲frontbuffer会通过显示器显示输出。参见图3,本实施例中进行纹理渲染得到2d纹理采用的函数gltextimage2d函数实现。参考android的开机画面启动,本实施例方法通过上述步骤从整体上优化显示流程,直接将云桌面传送过来的位图数据拷贝到本地surface对应的缓冲区队列里面,这样能有效减少虚机桌面的位图数据在内存里的拷贝次数,然后再交由android系统框架层里的surfaceflinger函数针对2d纹理进行合成并显示。

    当虚拟机的视频帧来到云终端时,首先需要云终端解码。解码的过程中,首先申请一块对应区域大小的内存,然后把视频帧解码到该内存区域。待解码完成后,再与云桌面其它区域的位图数据做图层叠加运算,最终形成可供显示的完整位图数据。解码以及图层叠加耗时都很长,影响视频播放的流畅性。因此,本实施例方法还在前述整体的云桌面显示优化的基础上,进一步扩展实现了针对流场景优化的优化步骤。如图4和图5所示,步骤3)中还包括在opengles中创建两个第二像素内存缓冲区,所述第二像素内存缓冲区用于存储成流数据对应的视频帧数据;步骤4)通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据时还包括下述步骤:判断云桌面显示数据是否包含视频数据,若包含视频数据则将云桌面显示数据根据视频和非视频区域分割为成流数据、非流数据,对成流数据进行解码得到视频帧数据,并将视频帧数据交替放入两个第二像素内存缓冲区中存储,使得在每一个周期的前半个周期内,cpu往第一个第二像素内存缓冲区里面拷贝最新的视频帧数据、同时gpu从第二个第二像素内存缓冲区里面读取视频帧数据;后半个周期内cpu往第二个第二像素内存缓冲区里面拷贝最新的视频帧数据、同时gpu从第一个第二像素内存缓冲区里面读取视频帧数据,且所述读取视频帧数据时还包括从第二像素内存缓冲区中读取上一帧的视频帧数据,将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算得到完整的2d纹理的步骤。

    本实施例中,对成流数据进行解码得到视频帧数据的步骤包括:检测android系统是否支持硬件解码,如果支持硬件解码则采用硬件解码的方式对成流数据进行解码得到视频帧数据;否则采用软件解码的方式对成流数据进行解码得到视频帧数据。通过上述方式,使得本实施例方法可根据设备支持情况,动态选择软件解码或者硬件解码如果设备支持硬件解码,就会利用硬件解码能力来降低cpu的利用率并且加快解码速度。

    如图3和图5所示,本实施例中步骤4)中gpu从第二个第一像素内存缓冲区里面读取上一帧的云桌面数据,以及gpu从第一个第一像素内存缓冲区里面取出数据均为通过直接存储访问dma的方式读取数据。解码出来的数据直接存放在像素内存缓冲区里面,gpu能通过dma的方式快速访问像素内存缓冲区,为接下来的图层叠加运算做好准备。图形处理单元gpu通过直接存储访问dma的方式,可使得访问第一像素内存缓冲区/第二像素内存缓冲区的数据更加快,从而确保云桌面更流畅。

    本实施例中,将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算具体是指通过图形处理单元gpu将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算,从而得到完整的2d纹理。参见图5中,本实施例中具体是调用glblenfunc函数进行图层混合运算,从而将上一帧的视频帧数据、上一帧云桌面显示数据合并得到完整的2d纹理。而且,这一过程都是在gpu里面完成,能有效降低cpu的利用率,使得cpu能及时处理下一帧视频数据的收发以及解码等操作。有效提升视频播放的流畅程度。最后的显示再利用第一点提到的云桌面显示优化,以达到视频数据的最佳显示效果。

    此外,本发明还提供一种基于android系统的云桌面显示优化系统,包括计算机设备,该计算机设备包括微处理器和存储器,该微处理器被编程或配置以执行所述基于android系统的云桌面显示优化方法的步骤。

    此外,本发明还提供一种基于android系统的云桌面显示优化系统,包括计算机设备,该计算机设备包括微处理器和存储器,该存储器中存储有被编程或配置以执行所述基于android系统的云桌面显示优化方法的计算机程序。

    此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于android系统的云桌面显示优化方法的计算机程序。

    本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

    以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。


    技术特征:

    1.一种基于android系统的云桌面显示优化方法,其特征在于,包括:

    1)搭建opengles的运行环境;

    2)在opengles中创建用于对应云桌面显示数据的2d纹理;

    3)在opengles中创建两个第一像素内存缓冲区;

    4)通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据,使得在每一个周期的前半个周期内,cpu往第一个第一像素内存缓冲区里面拷贝最新的云桌面数据、同时gpu从第二个第一像素内存缓冲区里面读取上一帧的云桌面数据并绘制到2d纹理;后半个周期内cpu往第二个第一像素内存缓冲区里面拷贝最新的云桌面数据、同时gpu从第一个第一像素内存缓冲区里面取出数据绘制到2d纹理;且每交替一次则将得到的2d纹理提交显示。

    2.根据权利要求1所述的基于android系统的云桌面显示优化方法,其特征在于,步骤1)的步骤包括:在android系统的ndk层通过ui层的视图控件surfaceview获取到原生窗口nativewindow,并根据获取到的原生窗口nativewindow搭建opengles的运行环境。

    3.根据权利要求1所述的基于android系统的云桌面显示优化方法,其特征在于,步骤4)将得到的2d纹理提交显示之后还包括通过android系统对提交的纹理采用三缓冲技术进行显示的步骤:当收到提交显示的2d纹理后,先把数据拷贝到后台缓冲,然后交换后台缓冲与前台缓冲的位置,把最新需要的数据显示出来。

    4.根据权利要求1~3中任意一项所述的基于android系统的云桌面显示优化方法,其特征在于,步骤3)中还包括在opengles中创建两个第二像素内存缓冲区,所述第二像素内存缓冲区用于存储成流数据对应的视频帧数据;步骤4)通过两个第一像素内存缓冲区交替存储接收的云桌面显示数据时还包括下述步骤:判断云桌面显示数据是否包含视频数据,若包含视频数据则将云桌面显示数据根据视频和非视频区域分割为成流数据、非流数据,对成流数据进行解码得到视频帧数据,并将视频帧数据交替放入两个第二像素内存缓冲区中存储,使得在每一个周期的前半个周期内,cpu往第一个第二像素内存缓冲区里面拷贝最新的视频帧数据、同时gpu从第二个第二像素内存缓冲区里面读取视频帧数据;后半个周期内cpu往第二个第二像素内存缓冲区里面拷贝最新的视频帧数据、同时gpu从第一个第二像素内存缓冲区里面读取视频帧数据,且所述读取视频帧数据时还包括从第二像素内存缓冲区中读取上一帧的视频帧数据,将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算得到完整的2d纹理的步骤。

    5.根据权利要求4所述的基于android系统的云桌面显示优化方法,其特征在于,所述对成流数据进行解码得到视频帧数据的步骤包括:检测android系统是否支持硬件解码,如果支持硬件解码则采用硬件解码的方式对成流数据进行解码得到视频帧数据;否则采用软件解码的方式对成流数据进行解码得到视频帧数据。

    6.根据权利要求4所述的基于android系统的云桌面显示优化方法,其特征在于,步骤4)中读出第一像素内存缓冲区中存储的上一帧云桌面显示数据具体是指图形处理单元gpu通过直接存储访问dma的方式读出第一像素内存缓冲区中存储的上一帧云桌面显示数据;所述从第二像素内存缓冲区中读取上一帧的视频帧数据具体是指图形处理单元gpu通过直接存储访问dma的方式从第二像素内存缓冲区中读取上一帧的视频帧数据。

    7.根据权利要求4所述的基于android系统的云桌面显示优化方法,其特征在于,所述将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算具体是指通过图形处理单元gpu将上一帧的视频帧数据、上一帧云桌面显示数据进行图层混合运算,从而得到完整的2d纹理。

    8.一种基于android系统的云桌面显示优化系统,包括计算机设备,该计算机设备包括微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~7中任意一项所述基于android系统的云桌面显示优化方法的步骤。

    9.一种基于android系统的云桌面显示优化系统,包括计算机设备,该计算机设备包括微处理器和存储器,其特征在于,该存储器中存储有被编程或配置以执行权利要求1~7中任意一项所述基于android系统的云桌面显示优化方法的计算机程序。

    10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~7中任意一项所述基于android系统的云桌面显示优化方法的计算机程序。

    技术总结
    本发明公开了一种基于Android系统的云桌面显示优化方法及系统,本发明包括Android云终端云桌面显示优化的步骤:搭建OpenGL ES的运行环境;在OpenGL ES中创建2D纹理;通过OpenGL ES在GPU中创建两个第一像素内存缓冲区,利用GPU中像素缓冲区具备异步DMA快速传输的特点,在同一时间,CPU往一个像素缓冲区写入云桌面待显示数据并立即返回,GPU利用另一个像素缓冲区的数据进行纹理绘制并提交显示,两个像素缓冲区不断交替各自所充当的角色持续刷新云桌面。本发明能够在不降低画面质量的情况下,充分利用移动终端的GPU计算能力,让云桌面的显示变得流畅。

    技术研发人员:刘诚然;孙利杰;夏华;陈松政;刘文清;杨涛
    受保护的技术使用者:湖南麒麟信安科技股份有限公司
    技术研发日:2020.11.19
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23126.html

    最新回复(0)