CN117093292A - 云桌面的图像处理方法、装置、服务器和存储介质 - Google Patents

云桌面的图像处理方法、装置、服务器和存储介质 Download PDF

Info

Publication number
CN117093292A
CN117093292A CN202210523749.9A CN202210523749A CN117093292A CN 117093292 A CN117093292 A CN 117093292A CN 202210523749 A CN202210523749 A CN 202210523749A CN 117093292 A CN117093292 A CN 117093292A
Authority
CN
China
Prior art keywords
texture
image data
thread
shared
encoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210523749.9A
Other languages
English (en)
Inventor
李勇
曾恂
陈锐凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202210523749.9A priority Critical patent/CN117093292A/zh
Priority to PCT/CN2022/143297 priority patent/WO2023216621A1/zh
Publication of CN117093292A publication Critical patent/CN117093292A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Abstract

本申请实施例公开了一种云桌面的图像处理方法、装置、服务器和存储介质,属于互联网技术领域。所述方法包括:将云桌面的图像数据存储至共享纹理,所述共享纹理是具有共享属性的纹理;对所述共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据;将所述编码处理后的图像数据发送至所述终端。本申请在获取到云桌面的图像数据后,将图像数据存储到了不同的线程均可访问的共享纹理中,可以直接对共享纹理中存储的图像数据进行编码处理。这样云桌面的图像数据无需在内存和显存之间进行多次传输。可见,本申请能够提高对图像数据进行编码处理的效率,可降低终端获取云桌面的图像数据的时延。

Description

云桌面的图像处理方法、装置、服务器和存储介质
技术领域
本申请涉及互联网技术领域,特别涉及一种云桌面的图像处理方法、装置、服务器和存储介质。
背景技术
云桌面又可称为桌面虚拟化、云电脑等,是指通过虚拟化、互联网等技术,将终端的计算、存储能力转移到云端(服务器)的方案。在云桌面的方案中,服务器可以通过虚拟主机为终端提供处理器、显卡、硬盘等硬件。用户可以对终端的输入部件进行操作,终端将输入部件的操作指令发送至服务器中的虚拟主机,虚拟主机基于输入部件的操作指令,进行与普通终端(即未使用云桌面功能的终端)类似的处理,如鼠标圈选、键盘打字等。此外,虚拟主机会实时将云桌面的图像数据(即终端需要显示的图像数据,等同于普通终端显示器需要显示的图像数据)编码为视频流,并传输至终端。终端可以对接收到的视频流进行解码显示。
虚拟主机获取图像数据、对图像数据进行编码的处理,可分别由虚拟主机运行的抓图线程和编码线程完成。首先,虚拟主机通过抓图线程获取图像数据存储至抓图纹理中。然后,虚拟主机进行一定的数据迁移处理将图像数据由抓图纹理迁移至编码纹理。最后,虚拟主机通过编码线程对编码纹理中的图像数据进行编码处理。其中,抓图纹理和编码纹理分别通过抓图线程和编码线程创建,属于同一显卡内存中不同存储区域,且对应的属性均为私有属性。
由于抓图纹理和编码纹理对应的属性均为私有属性,因此抓图纹理只能由抓图线程访问,编码纹理只能由编码线程访问。所以,在将抓图纹理中的图像数据迁移至编码纹理时,一般是由抓图线程先将抓图纹理中的图像数据迁移到内存中,然后再由编码线程将内存中的图像数据迁移到编码纹理中。上述数据迁移处理的方式,需要内存和显存(即显卡内存)之间进行多次数据传输,会增大终端获取云桌面的图像数据的时延。
发明内容
本申请实施例提供了一种云桌面的图像处理方法、装置、服务器和存储介质,可以降低终端获取云桌面的图像数据的时延,相应的技术方案如下:
第一方面,提供了一种云桌面的图像处理方法,该方法可以由服务器执行,该服务器可以是实体机也可以是服务器中运行的虚拟机,该方法包括:将云桌面的图像数据存储至共享纹理,该共享纹理是具有共享属性的纹理;对该共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据;将该编码处理后的图像数据发送至终端。
本申请所示的方案中,服务器可以在显存中创建具有共享属性的共享纹理。这样,获取云桌面的图像数据的抓图线程在获取到云桌面的图像数据后,可以将云桌面的图像存储至共享纹理中,然后可由编码线程对共享纹理中存储的图像数据进行编码处理。如此,图像数据在进行编码处理之前,不需要在内存和显存之间进行多次传输,可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,抓图线程和编码线程为同一个线程。也就是说,在本申请所示的方案中,获取云桌面的图像数据的处理和对云桌面的图像数据进行编码处理可均由同一个线程完成。该线程在每次获取到云桌面的图像数据后,可将获取的图像数据存储至共享纹理中,然后再由该线程对共享纹理中的图像数据进行编码处理。这样,图像数据仅通过一个线程便可完成编码处理,避免了线程之间的通信,能够提高对图像数据进行编码处理的效率,可进一步降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,将云桌面的图像数据存储至共享纹理之前,该方法还包括:通过抓图线程获取云桌面的图像数据;通过抓图线程将该图像数据存储至抓图纹理;将云桌面的图像数据存储至共享纹理,包括:通过抓图线程将该抓图纹理中的图像数据存储至共享纹理。
本申请所示的方案中,服务器中可运行有用于获取云桌面的图像数据的抓图线程,该抓图线程可通过调用抓图接口获取云桌面的图像数据,并由该抓图接口将获取的图像数据存储至抓图纹理。该抓图接口可由服务器运行操作系统提供,如该操作系统可以为Windows系统,该抓图接口可以为桌面拷贝API(Desktop Duplication API,DDA)。其中,该抓图纹理也可由该抓图接口创建。抓图线程在调用该抓图接口后,可直接从抓图纹理中获取云桌面的图像数据,然后再将获取的图像数据存储至共享纹理中。这样,技术人员无需删除、修改抓图接口的程序代码,或者重新编写获取云桌面的图像数据的代码,仅需要增加将抓图纹理中的图像数据存储至共享纹理的程序代码,便可完成对图像数据进行编码处理前的准备工作,能够降低开发难度,提高技术人员的开发效率。并且抓图纹理和共享纹理为显存中的不同的存储区域,将图像数据在抓图纹理和共享纹理之间进行传输的效率,高于图像数据在显存和内存之间进行传输的效率,可见本申请所示的方案,可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,对共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据,包括:通过编码线程将共享纹理中的图像数据存储至编码纹理;通过编码线程对编码纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。
本申请所示的方案中,服务器中可运行有对云桌面的图像数据进行编码处理的编码线程,该编码线程可通过向显卡发送编码指令,以指示显卡中的编码器对编码纹理中的图像数据进行编码,该编码纹理用于存储需要编码器进行编码处理的图像数据。因此编码线程向显卡发送编码指令之前,可将共享纹理中的图像数据先存储至编码纹理中,然后再向显卡发送编码指令,以使编码器对编码纹理中的图像数据进行编码处理。如此技术人员无需修改现有的编码处理对应的程序代码,只需要增加将共享纹理中的图像数据存储至编码纹理的程序代码,便可使编码线程完成对图像数据的编码处理,能够降低开发难度,提高技术人员的开发效率。并且编码纹理和共享纹理为显存中的不同的存储区域,将图像数据在共享纹理和编码纹理之间进行传输的效率,高于图像数据在内存和显存之间进行传输的效率,可见本申请所示的方案,可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,该共享纹理是由抓图线程创建的,通过编码线程将共享纹理中的图像数据存储至编码纹理之前,该方法还包括:通过抓图线程将共享纹理的地址通知给中转线程;通过该中转线程将共享纹理的地址通知给编码线程。通过编码线程将共享纹理中的图像数据存储至编码纹理,包括:通过编码线程根据该地址将共享纹理中的图像数据存储至编码纹理。
其中,抓图线程、编码线程和中转线程可以使服务器中运行的三个相互独立的线程,或者中转线程可以是对抓图线程和编码线程进行控制的控制线程。
本申请所示的方案中,抓图线程在运行之后,可以在显存中创建一个共享属性的纹理,即共享纹理。在一种情况中,抓图线程可以在每次获取到云桌面图像数据后,可以向中转线程发送共享纹理的地址,通过中转线程将共享纹理的地址发送至编码线程。编码线程在每次接收到中转线程发送的共享纹理的地址后,可根据接收到的地址获取共享纹理中的图像数据,以将共享纹理中的图像数据存储至编码纹理。或者,在另一种情况中,抓图线程在创建共享纹理后,可以向中转线程发送共享纹理的地址,通过中转线程将共享纹理的地址发送至编码线程。之后,抓图线程可以在每次获取到云桌面的图像数据后,通过中转线程向编码线程发送编码通知,以使编码线程通过中转线程发送的共享纹理的地址,将共享纹理中的图像数据存储至编码纹理。这样,通过中转线程将共享纹理的地址发送至编码线程,可使编码线程直接根据共享纹理的地址获取共享纹理中的图像数据,不需要图像数据再通过处理器进行转发,能够提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,该共享纹理是由抓图线程创建的,通过编码线程将共享纹理中的图像数据存储至编码纹理之前,该方法还包括:通过抓图线程将共享纹理的地址通知给编码线程;通过编码线程将共享纹理中的图像数据存储至编码纹理,包括:通过编码线程根据该地址将共享纹理中的图像数据存储至编码纹理。
本申请所示的方案中,抓图线程在运行之后,可以在显存中创建一个共享属性的纹理,即共享纹理。在一种情况中,抓图线程可以在每次获取到云桌面图像数据后,可以将共享纹理的地址发送至编码线程。编码线程在每次接收到抓图线程发送的地址后,可以根据该地址获取共享纹理中的图像数据,以将共享纹理中的图像数据存储至编码纹理。或者,在另一种情况中,抓图线程在创建共享纹理后,可以先将共享纹理的地址发送至编码线程。之后,抓图线程可以在每次获取到云桌面的图像数据后,可以向编码线程发送编码通知,以使编码线程根据抓图线程的预先发送的地址,将共享纹理中的图像数据存储至编码纹理。这样,通过抓图线程将共享纹理的地址发送至编码线程,可使编码线程直接根据共享纹理的地址获取共享纹理中的图像数据,不需要图像数据再通过处理器进行转发,能够提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,该共享纹理是基于指定地址创建的;通过编码线程将共享纹理中的图像数据存储至编码纹理,包括:通过编码线程根据该指定地址将共享纹理中的图像数据存储至编码纹理。
本申请所示的方案中,服务器可以通过预先存储的指定地址,在显存中创建一个共享属性的纹理,即共享纹理。例如可以由抓图线程根据指定地址在显存中创建共享纹理。当编码线程需要将共享纹理中的图像数据存储至编码纹理时(如编码线程接收到抓图线程发送的编码通知时),可根据该指定地址获取共享纹理中存储的图像数据,并将获取的图像数据存储至编码纹理中。这样,抓图线程和编码线程之间无需传输共享纹理中地址,编码线程可直接根据指定地址获取共享纹理中的图像数据,并将获取的图像数据存储至编码纹理。如此可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
在一种可能的实现方式中,该方法还包括:在云桌面服务启动时,创建共享纹理。其中,在云桌面服务启动时,可以通过云桌面服务对应的线程创建共享纹理,如可通过抓图线程创建共享纹理。这样在获取云桌面的图像数据后,可直接将获取的图像数据存储至共享纹理中,无需重新创建共享纹理,能够提高图像数据在抓图纹理、共享纹理等之间的传输的效率,进而可提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
第二方面,提供了云桌面的图像处理装置,该装置包括一个或多个模块,该一个或多个模块用于实现上述第一方面或第一方面任一种可选方式所提供的云桌面的图像处理方法。
第三方面,提供了一种服务器,该服务器包括存储器、显卡、处理器,该存储器用于存储计算机指令,该显卡和处理器用于执行该存储器存储的计算机指令,以使该服务器执行并实现上述第一方面或第一方面任一种可选方式所提供的云桌面的图像处理方法。
第四方面,提供了一种可读存储介质,该可读存储介质存储有程序代码,当该程序代码被服务器执行时,该服务器可执行并实现上述第一方面或第一方面任一种可选方式所提供的云桌面的图像处理方法。
第五方面,提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机指令,该计算机程序产品在服务器上运行时,该服务器可执行并实现上述第一方面或第一方面任一种可选方式所提供的云桌面的图像处理方法。
附图说明
图1是本申请提供的一种实施环境示意图;
图2是本申请实施例提供的一种云桌面的图像处理方法流程图;
图3是本申请实施例提供的一种云桌面的图像处理方法示意图;
图4是本申请实施例提供的一种云桌面的图像处理方法示意图;
图5是本申请实施例提供的一种云桌面的图像处理方法示意图;
图6是本申请实施例提供的一种云桌面的图像处理装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请提供的一种实施环境示意图,参见图1,在云桌面中包括至少一个服务器100和至少一个终端200,其中:
服务器100中包括处理器101、显卡102、硬盘103、通信部件104等硬件。一台服务器100可以通过虚拟化技术,虚拟出多个虚拟主机105,且每个虚拟主机105可具备独立的处理器1051、显卡1052、硬盘1053和通信部件1054等,每个虚拟主机105可独立运行操作系统,如Windows系统、Android系统、Linux系统等。服务器100可以将每个虚拟主机105提供给对应的终端200,以使终端200通过虚拟主机105实现数据的处理、存储等功能。
需要说明的是,虚拟主机105的处理器1051、显卡1052、硬盘1053和通信部件1054,是通过虚拟化技术在服务器100中包括处理器101、显卡102、硬盘103、通信部件104等硬件的基础上虚拟出来的虚拟硬件,与实际的物理硬件具有相同的功能。该处理器1051可以是中央处理器(central processing unit,CPU),该显卡1052可以是图形处理器(graphicsprocessing unit,GPU),该处理器1051和显卡1052可以执行将云桌面的图像数据存储至共享纹理,共享纹理是具有共享属性的纹理,对共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据,将编码处理后的图像数据发送至终端。
其中,服务器100将虚拟主机105提供终端200后,虚拟主机105可以通过调用运行的操作系统的系统接口,获取应在系统桌面显示的图像数据(即云桌面的图像数据,包括操作系统运行的应用程序的界面),并将获取的图像数据编码为视频流,然后通过通信部件1054发送至中终端200,以使在终端200显示云桌面的图像数据。
终端200可以具备处理器201、显卡202、显示器203、输入部件204等以及通信部件205等硬件。其中,该处理器201可以是CPU,该显卡202可以是GPU,输入部件205可以是鼠标、键盘、麦克风等。
其中,终端200在接收到虚拟主机105发送的视频流后,处理器201和显卡202可以对接收到的视频流进行解码、渲染,以将云桌面的图像数据显示在显示器202中。操作终端200的用户可以根据显示器202显示的图像数据操作输入部件204,通信部件205可以将对应的操作指令发送至虚拟主机105,以实现对虚拟主机105的操作。
下面对本申请涉及的一些概念和名词进行介绍:
桌面拷贝API(Desktop Duplication API,DDA),Windows系统提供的接口,可用于获取云桌面的图像数据。
非直接显示驱动(Indirect Display Driver,IDD),Windows系统提供的接口,可用于获取云桌面的图像数据。
线程:操作系统能够进行运算调度的最小单位。
抓图线程:用于获取云桌面的图像数据的线程。
编码线程:对图像数据进行编码处理的线程。
纹理:显存中一块用于在某功能的执行过程中缓存数据的存储区域。
其中,Windows系统中提供了可用于创建纹理的DirectX(设备)。DirectX在创建纹理时,还可以设置纹理的属性,其中包括私有属性和共享属性。在纹理的属性设置为私有属性时,该纹理只能通过创建该纹理的DirectX进行访问,且纹理中存储的数据可以转移到内存中。在纹理的属性设置为共享属性时,该纹理可以能够通过不同的DirectX进行访问,纹理中存储的数据无法转移到内存中。
句柄:纹理的地址,一个纹理对应一个句柄。
抓图纹理:显存中用于存储DDA或IDD获取的图像数据的纹理,可以由抓图线程创建。
编码纹理:显存中用于存储待进行编码的数据的纹理,可以由编码线程创建。
为了便于对本申请提供的云桌面的图像处理方法的理解,下面再对传统的云桌面的图像处理方法进行介绍:
虚拟主机中运行的抓图线程可调用DDA或IDD,以周期监控虚拟主机的系统桌面显示的图像数据(即云桌面的图像数据)是否存在更新,每当抓图线程确定系统桌面显示的图像数据存在更新后,可以获取更新的图像数据,并将获取的图像数据存储至抓图线程对应的抓图纹理中。虚拟主机中运行的编码线程可以从对应的编码纹理中,获取需要进行编码的图像数据,并对获取的图像数据进行编码处理,得到应发送至终端的视频流。
由于不同的线程在创建纹理时,需要预先建立不同的DirectX对象,且抓图线程通过DirectX对象在创建抓图纹理时,将抓图纹理的属性设置为了私有纹理,因此该抓图纹理只能通过抓图线程对应的DirectX对象访问。所以,每当抓图线程将更新的图像数据存储至抓图纹理后,可以通过处理器将抓图纹理中的图像数据拷贝至内存,然后通过处理器将内存中的图像数据拷贝至编码纹理,最后再由编码线程对编码纹理中的图像数据进行编码处理。这样在编码线程在对图像数据进行编码处理之前,内存和显存之间需要通过主板总线进行多次图像数据的传输。但由于总线带宽存在瓶颈,且处理器和显卡分别对应的主频也不同,就导致内存和显存之间传输数据的效率较低,进而会增大终端获取云桌面的图像数据的效率,降低用户使用云桌面的流畅度。并且,通过处理器多次拷贝图像数据,也会占用过多处理器的性能,因此也会在一定程度上影响用户使用云桌面的流畅度。
本申请实施例在转发面提供了一种云桌面的图像处理方法,能够避免云桌面的图像数据在显存、内存之间的多次迁移,能够降低终端获取云桌面图像的时延,提高用户使用云桌面的流畅度。
图2是本申请实施例提供的一种云桌面的图像处理方法流程图,下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,内容如下:
步骤201、服务器启动云桌面服务。
云桌面服务是云桌面方案中运行在服务器中的服务,用于实现获取云桌面的图像数据、对图像数据进行编码等处理。在服务器启动云桌面服务之后,可以先创建共享纹理。其中,该共享纹理可以由抓图线程创建也可以由编码线程创建,或者还可以通过抓图线程和编码线程之外的其他线程创建。在创建共享纹理时,可以调用服务器运行的操作系统的纹理创建接口,如在Windows系统中可以调用DirectX提供的DirectX图形基础结构(DirectX Graphics Infrastructure,DXGI)接口中包括的CreateTexture2D接口。并且在创建共享纹理时,可以根据云桌面的图像数据的分辨率等,设置共享纹理的尺寸(如共享纹理的高和宽)以及共享纹理的类型(RGB32、RGB16等),并将可以所创建纹理的属性设置为共享属性。
需要说明的是,在本方法流程中服务器可以是一个实体机,也可以是通过虚拟化技术,在实体机中虚拟出来的虚拟机。在本方法流程中涉及的服务器硬件,如处理器、显卡、内存等,可以使实体硬件,也可以是通过虚拟技术为虚拟机虚拟化出来的虚拟硬件。
步骤202、服务器将云桌面的图像数据存储至共享纹理。
服务器启动云桌面服务后,可通过抓图线程获取云桌面的图像数据,并将云桌面的图像数据存储至共享纹理中。抓图线程可以按照固定频率监测云桌面的图像数据是否存在更新,当抓图线程每次监测到云桌面的图像数据存在更新后,可以获取更新的图像数据,并将获取的图像数据存储至共享纹理中。其中,固定频率大于对图像数据进行编码处理后的视频流的帧率,如可以该固定频率可以是视频流帧率的四倍,如此可以保证编码处理后的视频流能够达到对应的帧率。
在一种可能的情况中,抓图线程可以调用抓图接口,通过抓图接口获取云桌面的图像数据,将图像数据存储至抓图纹理,之后抓图线程将抓图纹理中的图像数据存储至共享纹理。
服务器启动云桌面服务后,服务器中运行的抓图纹理可以通过调用抓图接口获取云桌面的图像数据,并由该抓图接口将获取的图像数据存储至抓图纹理。该抓图接口可由服务器运行操作系统提供,如该操作系统可以为Windows系统,该抓图接口可以为DDA或IDD。其中,该抓图纹理也可由该抓图接口创建。抓图线程可以通过调用抓图接口,以使抓图接口在在检测到云桌面的图像数据更新后,将更新的图像数据存储至抓图纹理中。每当抓图接口监测到一次云桌面的图像数据更新,并将更新的图像数据存储至抓图纹理后,抓图线程可以从抓图纹理中获取云桌面的图像数据,然后再将获取的图像数据存储至共享纹理中。例如抓图线程可以通过调用CopyResource接口将抓图纹理中存储的图像数据拷贝至共享纹理中。
步骤203、服务器对共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。
服务器每次图像数据存储至共享纹理后,可以通过处理器向显卡发送携带共享纹理的地址的编码指令,以使显卡按照设定的帧率、分辨率等参数对共享纹理中的图像数据进行编码,进而得到编码处理后的图像数据。
在一种可能的情况中,抓图线程和编码线程为同一个线程。也就是说,步骤202和203中获取并存储云桌面的图像数据的处理以及对云桌面的图像数据进行编码处理可以由同一个线程处理。
该同一个线程在每次获取到云桌面的图像数据后,可将获取的图像数据存储至共享纹理中,然后再由该线程对共享纹理中的图像数据进行编码处理。这样,图像数据仅通过一个线程便可完成编码处理,避免了线程之间的通信,能够在一定程度上提高对图像数据进行编码处理的效率,可进一步降低终端获取云桌面的图像数据的时延。
在另一种可能的情况中,抓图线程和编码线程为不同的线程。服务器通过编码线程将共享纹理中的图像数据存储至编码纹理,并通过编码线程对所述编码纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。
抓图线程将云桌面的图像数据存储至抓图纹理之后,可以向编码线程发送编码通知,编码线程在接收到编码通知后,可以根据共享纹理对应的句柄(地址),获取共享纹理中存储的图像数据。例如抓图线程可以调用DXGI接口中包括的OpenSharedResource接口,将共享纹理对应的句柄传入OpenSharedResource接口,进而实现对共享纹理的访问,然后可以由编码线程调用CopyResource接口,将共享纹理上的图像数据拷贝到编码纹理中。之后编码线程可向显卡发送编码指令,以使显卡中的编码器对编码纹理中的图像数据进行编码处理。由于抓图纹理、编码纹理和共享纹理为显存中的不同的存储区域,将图像数据在抓图纹理、共享纹理和编码纹理之间进行传输的效率,高于图像数据在内存和显存之间进行传输的效率,可见本申请实施例,可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
步骤204、服务器将编码处理后的图像数据发送至终端。
服务器在通过编码器将图像数据编码为视频流后,可以通过通信部件将视频流发送至对应的终端。终端在接收到视频流之后,可以在云桌面的客户端对应的显示窗口播放视频流。
本申请通过服务器在显存中创建具有共享属性的共享纹理。在抓图线程获取到云桌面的图像数据后,可以将云桌面的图像存储至共享纹理中,然后可由编码线程对共享纹理中存储的图像数据进行编码处理。如此,图像数据在进行编码处理之前,不需要在内存和显存之间进行多次传输,可以提高对图像数据在进行编码处理的效率,降低了对处理器性能的占用,能够降低终端获取云桌面的图像数据的时延,进而提高用户使用云桌面的流畅度。
随着创建共享纹理的线程不同,在步骤203中,编码纹理获取共享纹理句柄的处理也不同,对于编码纹理获取共享纹理句柄的处理,可分为以下三种情况:
情况一:共享纹理由抓图线程创建,通过抓图线程将共享纹理的地址通知给中转线程;通过中转线程将共享纹理的地址通知给编码线程;通过编码线程根据地址将共享纹理中的图像数据存储至编码纹理。
参见图3,云桌面服务在启动后,抓图线程可以创建抓图纹理。在抓图线程确定云桌面的图像数据更新后,可以通过调用抓图接口,如DXGI接口中包括的AcquireNextFrame接口,以将获取的云桌面的图像数据存储在抓图纹理中,通过抓图线程再经过一次拷贝操作,将抓图纹理上的数据拷贝到共享纹理中。
抓图线程可以调用句柄获取接口,如GetSharedHandle接口,以获取共享纹理的共享句柄(即共享纹理在显存中的共享地址)。然后将该共享句柄发送至中转线程。中转线程在接收到共享句柄后,可将接收到的共享句柄发送至编码线程。编码线程在接收到共享句柄后,可以调用纹理访问接口,如OpenSharedResource接口,将共享句柄传入OpenSharedResource接口中,以访问共享纹理。之后编码线程可以再通过调用CopyResource接口,将共享纹理上的桌面数据拷贝到编码纹理中,以使编码器对编码纹理中存储的图像数据进行编码,得到视频流。
其中,抓图线程可以是在建立共享纹理之后,向中转线程发送对应的共享句柄,由中转线程将共享句柄发送至编码线程。之后,每次抓图线程在获取到云桌面的图像数据后,可以向中转线程发送编码通知,由中转线程将编码通知发送至编码线程,再由编码线程根据预先接收的共享句柄,将共享纹理的中的图像数据存储至编码纹理中。或者抓图线程监每次测到云桌面的图像数据更新后,创建共享纹理,并向中转线程发送对应的共享句柄,由中转线程将共享句柄发送至编码线程,再由编码线程根据接收的共享句柄,将共享纹理的中的图像数据存储至编码纹理中。
情况二:共享纹理由抓图线程创建,通过抓图线程将共享纹理的地址通知给编码线程;通过编码线程根据地址将共享纹理中的图像数据存储至编码纹理。
参见图4,云桌面服务在启动后,可由抓图线程建立抓图纹理。然后抓图线程可以通过调用抓图接口,如DXGI接口中的AcquireNextFrame接口,以将获取的云桌面的图像数据存储在抓图纹理中,通过抓图线程再经过一次拷贝操作,将抓图纹理上的数据拷贝到共享纹理中。
抓图线程可以调用句柄获取接口,如GetSharedHandle接口,以获取共享纹理的共享句柄(即共享纹理的在显卡共享地址)。然后将该共享句柄发送至编码线程。编码线程在接收到共享句柄后,可以调用纹理访问接口,如OpenSharedResource接口,将共享句柄传入OpenSharedResource接口中,以访问共享纹理,之后编码线程可以再通过调用CopyResource接口,将共享纹理上的桌面数据拷贝到编码纹理中,以使编码器对编码纹理中存储的图像数据进行编码,得到视频流。
其中,抓图线程可以是在建立共享纹理之后,向编码线程发送对应的共享句柄。然后在抓图线程每次获取到云桌面的图像数据后,向编码线程发送编码通知,以使编码线程根据预先接收的共享句柄,将共享纹理的中的图像数据存储至编码纹理中。或者每次抓图线程每次监测到云桌面的图像数据更新后,创建共享纹理,并可以向编码线程发送对应的共享句柄,以使编码线程根据接收的共享句柄,将共享纹理的中的图像数据存储至编码纹理中。
情况三:抓图线程根据指定地址建立抓图纹理,编码线程根据指定地址将共享纹理中的图像数据存储至编码纹理。
该指定地址可以是技术人员预先设置的共享句柄,在创建共享纹理时,可以将该共享句柄传入创建共享纹理的接口,以使创建出来的纹理对应的句柄即为共享句柄。如此,在抓图线程获取到云桌面的图像数据之后,可以直接向编码线程发送编码通知,编码线程可根据该共享句柄获取共享纹理中存储的图像数据,并将获取的图像数据存储至编码纹理中。这样,抓图线程和编码线程之间无需传输共享纹理中地址,编码线程可直接根据共享句柄获取共享纹理中的图像数据,并将获取的图像数据存储至编码纹理,以使编码器对编码纹理中存储的图像数据进行编码,得到视频流。如此可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
图6是本申请提供的一种云桌面的图像处理装置,该装置可以是上述实施例中的服务器,参见图6,该装置包括
存储模块610,用于将云桌面的图像数据存储至共享纹理,所述共享纹理是具有共享属性的纹理。具体可以实现上述步骤202中的存储功能,以及其他隐含步骤。
编码模块620,用于对所述共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。具体可以实现上述步骤203中的编码功能,以及其他隐含步骤。
发送模块630,用于将所述编码处理后的图像数据发送至所述终端。具体可以实现上述步骤204中的发送功能,以及其他隐含步骤。
可选的,所述存储模块610还用于:通过抓图线程获取云桌面的图像数据;通过抓图线程将所述图像数据存储至抓图纹理;通过抓图线程将所述抓图纹理中的图像数据存储至共享纹理。
可选的,所述存储模块610用于:通过编码线程将所述共享纹理中的图像数据存储至编码纹理;
所述编码模块620用于:通过编码线程对所述编码纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。
可选的,所述共享纹理是由所述抓图线程创建的,所述发送模块630还用于:通过所述抓图线程将所述共享纹理的地址通知给中转线程;通过所述中转线程将所述共享纹理的地址通知给所述编码线程;
所述存储模块610用于:通过编码线程根据所述地址将所述共享纹理中的图像数据存储至编码纹理。
可选的,所述共享纹理是由所述抓图线程创建的,所述发送模块630,还用于:通过所述抓图线程将所述共享纹理的地址通知给所述编码线程;
所述存储模块610用于:通过编码线程根据所述地址将所述共享纹理中的图像数据存储至编码纹理。
可选的,所述共享纹理是基于指定地址创建的;所述存储模块610用于:通过编码线程根据所述指定地址将所述共享纹理中的图像数据存储至编码纹理。
可选的,所述装置还包括创建模块,用于:在云桌面服务启动时,创建所述共享纹理。
本申请通过服务器在显存中创建具有共享属性的共享纹理。在服务器获取云桌面的图像数据的抓图线程在获取到云桌面的图像数据后,可以将云桌面的图像存储至共享纹理中,然后可由编码线程对共享纹理中存储的图像数据进行编码处理。如此,图像数据在进行编码处理之前,不需要在内存和显存之间进行多次传输,可以提高对图像数据在进行编码处理的效率,能够降低终端获取云桌面的图像数据的时延。
图6所示的服务器执行云桌面的图像处理的详细过程请参照前面实施例内容中的描述,在这里不进行重复说明。另外,图6的模块划分方式是示例性的划分方式,本申请实施例不做限定。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机指令,该至少一条计算机指令存储在计算机可读存储介质中。服务器的处理器从计算机可读存储介质读取并执行该至少一条计算机指令,以使得服务器执行上述云桌面的图像处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,DVD)等),或者半导体介质(如固态硬盘等)。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (17)

1.一种云桌面的图像处理方法,其特征在于,所述方法包括:
将云桌面的图像数据存储至共享纹理,所述共享纹理是具有共享属性的纹理;
对所述共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据;
将所述编码处理后的图像数据发送至所述终端。
2.根据权利要求1所述的方法,其特征在于,所述将云桌面的图像数据存储至共享纹理之前,还包括:
通过抓图线程获取云桌面的图像数据;
通过抓图线程将所述图像数据存储至抓图纹理;
所述将云桌面的图像数据存储至共享纹理,包括:
通过抓图线程将所述抓图纹理中的图像数据存储至共享纹理。
3.根据权利要求2所述的方法,其特征在于,所述对所述共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据,包括:
通过编码线程将所述共享纹理中的图像数据存储至编码纹理;
通过编码线程对所述编码纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。
4.根据权利要求3所述的方法,其特征在于,所述共享纹理是由所述抓图线程创建的,所述通过编码线程将所述共享纹理中的图像数据存储至编码纹理之前,还包括:
通过所述抓图线程将所述共享纹理的地址通知给中转线程;
通过所述中转线程将所述共享纹理的地址通知给所述编码线程;
所述通过编码线程将所述共享纹理中的图像数据存储至编码纹理,包括:
通过编码线程根据所述地址将所述共享纹理中的图像数据存储至编码纹理。
5.根据权利要求3所述的方法,其特征在于,所述共享纹理是由所述抓图线程创建的,所述通过编码线程将所述共享纹理中的图像数据存储至编码纹理之前,还包括:
通过所述抓图线程将所述共享纹理的地址通知给所述编码线程;
所述通过编码线程将所述共享纹理中的图像数据存储至编码纹理,包括:
通过编码线程根据所述地址将所述共享纹理中的图像数据存储至编码纹理。
6.根据权利要求3所述的方法,其特征在于,所述共享纹理是基于指定地址创建的;
所述通过编码线程将所述共享纹理中的图像数据存储至编码纹理,包括:
通过编码线程根据所述指定地址将所述共享纹理中的图像数据存储至编码纹理。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
在云桌面服务启动时,创建所述共享纹理。
8.一种云桌面的图像处理装置,其特征在于,所述装置包括:
存储模块,用于将云桌面的图像数据存储至共享纹理,所述共享纹理是具有共享属性的纹理;
编码模块,用于对所述共享纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据;
发送模块,用于将所述编码处理后的图像数据发送至所述终端。
9.根据权利要求8所述的装置,其特征在于,所述存储模块还用于:
通过抓图线程获取云桌面的图像数据;
通过抓图线程将所述图像数据存储至抓图纹理;
通过抓图线程将所述抓图纹理中的图像数据存储至共享纹理。
10.根据权利要求9所述的装置,其特征在于,所述存储模块用于:
通过编码线程将所述共享纹理中的图像数据存储至编码纹理;
所述编码模块用于:通过编码线程对所述编码纹理中存储的图像数据进行编码处理,得到编码处理后的图像数据。
11.根据权利要求10所述的装置,其特征在于,所述共享纹理是由所述抓图线程创建的,所述发送模块还用于:
通过所述抓图线程将所述共享纹理的地址通知给中转线程;
通过所述中转线程将所述共享纹理的地址通知给所述编码线程;
所述存储模块用于:通过编码线程根据所述地址将所述共享纹理中的图像数据存储至编码纹理。
12.根据权利要求10所述的装置,其特征在于,所述共享纹理是由所述抓图线程创建的,所述发送模块还用于:
通过所述抓图线程将所述共享纹理的地址通知给所述编码线程;
所述存储模块用于:通过编码线程根据所述地址将所述共享纹理中的图像数据存储至编码纹理。
13.根据权利要求10所述的装置,其特征在于,所述共享纹理是基于指定地址创建的;
所述存储模块用于:通过编码线程根据所述指定地址将所述共享纹理中的图像数据存储至编码纹理。
14.根据权利要求8-13任一所述的装置,其特征在于,所述装置还包括创建模块,用于:在云桌面服务启动时,创建所述共享纹理。
15.一种服务器,其特征在于,所述服务器包括存储器、显卡、处理器,所述存储器用于存储计算机指令;所述显卡和处理器用于执行所述存储器存储的计算机指令,以使所述服务器执行上述权利要求1至7中任一项所述的方法。
16.一种可读存储介质,其特征在于,所述可读存储介质存储有程序代码,当所述程序代码被服务器执行时,所述服务器执行上述权利要求1至7中任一项所述的方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品包括至少一条计算机指令,所述计算机程序产品在服务器上运行时,所述服务器执行上述权利要求1至7中任一项所述的方法。
CN202210523749.9A 2022-05-13 2022-05-13 云桌面的图像处理方法、装置、服务器和存储介质 Pending CN117093292A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210523749.9A CN117093292A (zh) 2022-05-13 2022-05-13 云桌面的图像处理方法、装置、服务器和存储介质
PCT/CN2022/143297 WO2023216621A1 (zh) 2022-05-13 2022-12-29 云桌面的图像处理方法、装置、服务器和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210523749.9A CN117093292A (zh) 2022-05-13 2022-05-13 云桌面的图像处理方法、装置、服务器和存储介质

Publications (1)

Publication Number Publication Date
CN117093292A true CN117093292A (zh) 2023-11-21

Family

ID=88729589

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210523749.9A Pending CN117093292A (zh) 2022-05-13 2022-05-13 云桌面的图像处理方法、装置、服务器和存储介质

Country Status (2)

Country Link
CN (1) CN117093292A (zh)
WO (1) WO2023216621A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435146A (zh) * 2023-12-20 2024-01-23 摩尔线程智能科技(成都)有限责任公司 码流生成方法、系统及装置、电子设备和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9191417B2 (en) * 2012-06-28 2015-11-17 Microsoft Technology Licensing, Llc Cross-process media handling in a voice-over-internet protocol (VOIP) application platform
CN109725956B (zh) * 2017-10-26 2022-02-01 腾讯科技(深圳)有限公司 一种场景渲染的方法以及相关装置
CN108733356B (zh) * 2018-05-14 2022-12-02 武汉斗鱼网络科技有限公司 一种纹理共享方法、计算机设备和存储介质
CN111346378B (zh) * 2020-02-26 2022-01-14 腾讯科技(深圳)有限公司 游戏画面传输方法、装置、存储介质和设备
CN113286005B (zh) * 2021-05-26 2023-01-20 北京金山云网络技术有限公司 抓屏方法、装置、电子设备及存储介质
CN114268779B (zh) * 2021-12-08 2023-09-08 北京字跳网络技术有限公司 图像数据处理方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
WO2023216621A1 (zh) 2023-11-16

Similar Documents

Publication Publication Date Title
US8169436B2 (en) Methods and systems for remoting three dimensional graphics
US10120705B2 (en) Method for implementing GPU virtualization and related apparatus, and system
US9189261B2 (en) Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US8638336B2 (en) Methods and systems for remoting three dimensional graphical data
US20220058766A1 (en) Graphics rendering method and apparatus
CN110392025B (zh) 管理分布式系统的方法、设备和计算机可读介质
US20140146063A1 (en) Command remoting
CN108762934B (zh) 远程图形传输系统、方法及云服务器
US9235452B2 (en) Graphics remoting using augmentation data
CN104660687A (zh) 虚拟桌面显示的实现方法和系统
WO2021008183A1 (zh) 数据传输方法、装置及服务器
CN111966504B (zh) 图形处理器中的任务处理方法及相关设备
CN103873886B (zh) 一种处理图像信息的方法、装置及系统
US20100254616A1 (en) Image compression acceleration using multiple processors
CN111274044B (zh) Gpu虚拟化资源限制处理方法及装置
WO2023216621A1 (zh) 云桌面的图像处理方法、装置、服务器和存储介质
WO2021008185A1 (zh) 数据传输方法、装置及服务器
CN110442389B (zh) 一种多桌面环境共享使用gpu的方法
KR100490401B1 (ko) TC(Thin-Client)환경에서 영상 처리 장치 및 방법
CN114820272A (zh) 数据交互的方法、装置、存储介质及电子设备
CN113778593A (zh) 云桌面控制方法、装置、电子设备、存储介质及程序产品
CN111143017B (zh) 云操作系统交互处理方法、客户端及云操作系统
CN112422876A (zh) 图像处理方法和服务器
CN110012003B (zh) 一种云应用抓屏方法和装置
US20240022670A1 (en) Scanning preview method in scanner redirection

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication