Data rendering method and device and related equipment

By rendering and encoding data in the server side of the cloud rendering service system according to the actual situation of the client, the problem of the server being unable to meet the client's needs is solved, and the user experience and data transmission efficiency are improved.

CN119364049APending Publication Date: 2025-01-24HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311575337.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-24
Filing Date
2023-11-23
Publication Date
2025-01-24

AI Technical Summary

Technical Problem

In cloud rendering services, the server may not be able to meet the needs of the client, resulting in poor user experience, especially when the client has limited hardware performance or poor network status.

Method used

By implementing the data rendering method in the server of the cloud rendering service system, rendering is performed according to the actual situation of the client. Specific steps include receiving the data to be rendered sent by the client, rendering the data to obtain a large amount of data, obtaining the client's information, determining the appropriate encoding method based on the client's information, encoding the data, and generating encoded data suitable for the client's situation. and send it to the client.

Benefits of technology

By coding according to the information of the client, the data output from the server of the cloud rendering service system can match the actual situation of the client, enhance the user experience, and ensure that the client can receive and display the rendering image normally.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119364049A_ABST
    Figure CN119364049A_ABST
Patent Text Reader

Abstract

The invention provides a data rendering method and device and related equipment. The method can be executed by a server side of a cloud rendering service system. Specifically, when the data rendering method is executed, first to-be-rendered first data sent by a client can be received; then, the first data can be rendered to obtain rendered second data. As the data volume of the second data is large, the second data is difficult to return to the client directly. Therefore, the data rendering device can acquire the information of the client. And according to the information of the client, encoding the second data to obtain third data, and sending the third data to the client. Therefore, coding is performed according to the information of the client, so that the data output by the server of the cloud rendering service system can be matched with the actual condition of the client, and the user experience is improved.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to a Chinese patent application filed with the State Intellectual Property Office on July 24, 2023, with application number 202310911761.1 and invention name “A video encoding method, device and system”, the entire contents of which are incorporated by reference in this application. Technical Field

[0002] The present application relates to the field of data processing technology, and in particular to a data rendering method, device and related equipment. Background Art

[0003] With the development of computer technology, it is becoming more and more common to provide services to users through cloud platforms. Cloud rendering service technology is a widely used cloud service technology. Clients that have subscribed to cloud rendering services can send data to be rendered to the server, which renders the data into image data and returns the rendered image data to the client. In this way, the step of rendering the data into an image is implemented by the server, and the client does not need to render. In this way, the data rendering process with high hardware performance requirements is transferred from the client to the server, which improves the rendering speed and reduces the hardware performance requirements of the client.

[0004] However, in some scenarios, the server may not be able to meet the client's needs. Summary of the invention

[0005] In view of this, an embodiment of the present application provides a data rendering method for rendering according to the actual situation of the client. The present application also provides a corresponding apparatus, a computing device cluster, a computer-readable storage medium, and a computer program product.

[0006] In the first aspect, the present application provides a data rendering method, which can be executed by a data rendering device in a server of a cloud rendering service system to achieve rendering according to the actual situation of the client. Specifically, when executing the data rendering method, the data rendering device can first receive the first data to be rendered sent by the client. Then, the first data can be rendered to obtain the rendered second data. Since the amount of the second data is large, it is difficult to return the second data directly to the client. Therefore, the data rendering device can obtain the information of the client. And according to the information of the client, the second data is encoded to obtain the third data and send the third data to the client. Among them, the second data can correspond to the data rendered by the GPU introduced above, for example, it can be the above-mentioned RGBA data or YUV data. When encoding the second data, it is not encoded based on a fixed encoding method through an encoding chip, but the corresponding encoding method is determined according to the information of the client, so that the second data is encoded by an encoding method that conforms to the actual situation of the client. In this way, the obtained third data can conform to the actual situation of the client, and the client can normally receive the third data sent by the server and display the rendered image according to the third data. In this way, encoding is performed according to the information of the client, so that the data output by the server of the cloud rendering service system can match the actual situation of the client, thereby improving the user experience.

[0007] In some possible implementations, the server may determine the encoding method according to the network status of the client. Specifically, the client information obtained by the above-mentioned server may include the client's network status information. When encoding the second data, the server may first determine the target encoding method according to the client's network status information, and then encode the second data according to the target encoding method. In this way, the encoding of the second data is performed with reference to the client's network status, so that the encoded third data can adapt to the actual network status of the client.

[0008] In some possible implementations, the network status information includes a predicted bandwidth, which is a bandwidth predicted by the client's network status, corresponding to the client's network bandwidth during the process of sending the third data. If the predicted bandwidth is greater than a preset bandwidth threshold, it means that the network bandwidth resources of the client segment are relatively abundant during the process of sending the third data, then the second data can be encoded in a manner with a higher encoding rate, and the server can determine that the target encoding method is the first encoding method. If the predicted bandwidth is less than or equal to the preset bandwidth threshold, it means that the network bandwidth resources of the client segment are relatively tight during the process of sending the third data, then the second data can be encoded in a manner with a lower encoding rate, and the server can determine that the target encoding method is the second encoding method. The bit rate of the data encoded by the first encoding method is higher than the bit rate of the data encoded by the second encoding method. In this way, the second data is encoded according to the bandwidth, and a lower bit rate is used for encoding when the bandwidth of the client is small, which reduces the amount of data that needs to be sent to the client, so that the third data can be received normally by the client.

[0009] In some possible implementations, the server may include a coding chip and a processor. The first coding method may include coding through a coding chip, and the second coding method may include coding through a processor. In this way, coding is performed through a coding chip under normal circumstances, and coding is performed through a processor when the client bandwidth is insufficient, which ensures both coding efficiency under normal circumstances and compression of the bit rate under abnormal circumstances.

[0010] In some possible implementations, the second data to be encoded may also be compressed. Specifically, if the predicted bandwidth is less than or equal to the preset bandwidth threshold, in order to further reduce the amount of data sent to the client, the second data may be compressed first, and then the compressed second data may be encoded. In this way, since the second data is compressed before encoding, the amount of the third data obtained by encoding is reduced, making it easier for a client with a poor network status to receive the third data.

[0011] In some possible implementations, the compression rate of the second data can be determined according to the predicted bandwidth of the client. Specifically, the client can determine the target encoding rate according to the predicted bandwidth, and then compress the second data according to the target encoding rate to ensure that the rate of the second data after compression and encoding is less than or equal to the target encoding rate. In this way, the rate of the third data is less than or equal to the target encoding rate, so that the client can receive the third data.

[0012] In some possible implementations, the coding standard may also be determined based on the client. Specifically, the client information may also include a target coding standard, which is a coding standard supported by the client. Accordingly, when encoding the second data, the encoding may be performed based on the target coding standard. Thus, since the client supports the target coding standard, the client can decode the encoded third data.

[0013] In some possible implementations, encoding can also be performed according to the functions subscribed by the user. Specifically, the client information can also include a function identifier of the target function. The target function can, for example, be a function subscribed by the client. When encoding, the server can process the second data according to the function identifier, and then encode the processed second data according to the function identifier. In this way, the user can adjust the encoding method through the subscription function, which improves the flexibility of the cloud rendering server and enhances the user experience.

[0014] In a second aspect, the present application provides a data rendering device, which is applied to the server side of a cloud rendering service system. The cloud rendering service system also includes a client, and the device includes: a first acquisition module, used to obtain first data to be rendered sent by the client; a rendering module, used to render the first data to obtain second data; a second acquisition module, used to obtain client information; an encoding module, used to encode the second data according to the client information to obtain third data; and a sending module, used to send the third data to the client.

[0015] In some possible implementations, the client information includes network status information of the client; the encoding module is specifically configured to determine a target encoding method according to the network status information of the client; and encode the second data according to the target encoding method.

[0016] In some possible implementations, the network status information includes predicted bandwidth; a coding module is specifically used to determine that the target coding mode is a first coding mode in response to the predicted bandwidth being greater than a preset bandwidth threshold; in response to the predicted bandwidth being less than or equal to the preset bandwidth threshold, determine that the target coding mode is a second coding mode; wherein the bit rate of the data encoded using the first coding mode is higher than the bit rate of the data encoded using the second coding mode.

[0017] In some possible implementations, the server includes a coding chip and a processor; the first coding method includes coding through the coding chip, and the second coding method includes coding through the processor.

[0018] In some possible implementations, the predicted bandwidth is less than or equal to a preset bandwidth threshold; the encoding module is specifically used to compress the second data; and encode the compressed second data.

[0019] In some possible implementations, the encoding module is specifically configured to determine a target encoding bit rate according to the predicted bandwidth; compress the second data according to the target encoding bit rate, and the bit rate of the compressed second data after encoding is less than or equal to the target encoding bit rate.

[0020] In some possible implementations, the client information further includes a target coding standard, where the target coding standard is a coding standard supported by the client; and a coding module, specifically configured to encode the second data according to the target coding standard.

[0021] In some possible implementations, the client information also includes a function identifier of the target function; the encoding module is specifically configured to process the second data according to the function identifier, and encode the processed second data according to the function identifier.

[0022] In a third aspect, the present application provides a computing device cluster, wherein the computing device includes at least one computing device, and the at least one computing device includes at least one processor and at least one memory; the at least one memory is used to store instructions, and the at least one processor executes the instructions stored in the at least one memory, so that the computing device cluster executes the data rendering method in the above-mentioned first aspect or any possible implementation of the first aspect. It should be noted that the memory can be integrated into the processor or can be independent of the processor. The at least one computing device may also include a bus. The processor is connected to the memory via a bus. The memory may include a readable memory and a random access memory.

[0023] In a fourth aspect, the present application provides a computer-readable storage medium, wherein instructions are stored in the computer-readable storage medium, and when the computer-readable storage medium is executed on at least one computing device, the at least one computing device executes the method described in the first aspect or any one of the implementations of the first aspect.

[0024] In a fifth aspect, the present application provides a computer program product comprising instructions, which, when executed on at least one computing device, enables the at least one computing device to execute the method described in the first aspect or any one of the implementations of the first aspect.

[0025] Based on the implementations provided in the above aspects, this application can also be further combined to provide more implementations. BRIEF DESCRIPTION OF THE DRAWINGS

[0026] In order to more clearly illustrate the technical solutions in the embodiments of the present application, the drawings required for use in the description of the embodiments will be briefly introduced below. Obviously, the drawings described below are only some embodiments recorded in the present application. For ordinary technicians in this field, other drawings can also be obtained based on these drawings.

[0027] Figure 1 A schematic diagram of a scenario of a data rendering method provided in an embodiment of the present application;

[0028] Figure 2 An interactive schematic diagram of a data rendering method provided in an embodiment of the present application;

[0029] Figure 3 A schematic diagram of another scenario of the data rendering method provided in an embodiment of the present application;

[0030] Figure 4 A schematic diagram of the structure of a data rendering device provided in an embodiment of the present application;

[0031] Figure 5 A schematic diagram of a structure of a computing device provided in an embodiment of the present application;

[0032] Figure 6 A schematic diagram of a structure of a computing device cluster provided in an embodiment of the present application;

[0033] Figure 7 A schematic diagram of an implementation method of a computing device cluster provided in an embodiment of the present application. DETAILED DESCRIPTION

[0034] The scheme in the embodiments provided in this application will be described below in conjunction with the drawings in this application.

[0035] The terms "first", "second", etc. in the specification and claims of this application and the above-mentioned drawings are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence. It should be understood that the terms used in this way can be interchangeable under appropriate circumstances. This is just a way of distinguishing objects with the same attributes when describing the embodiments of this application.

[0036] Cloud rendering technology can send the data to be rendered of the client to the server. The server can determine the image data corresponding to the data to be rendered, and return the image data to the client so that the client can display the image corresponding to the image data to the user. For example, the data to be rendered may include structural data and texture data of a three-dimensional model. The client can determine a visualized two-dimensional image of the three-dimensional model based on the data to be rendered, and send the visualized two-dimensional image data to the client so that the client can display the visualized two-dimensional graphic data to the user. In an embodiment of the present application, the cloud service corresponding to cloud rendering can be referred to as a cloud rendering service, and the cloud service system that provides cloud rendering services can be referred to as a cloud rendering service system.

[0037] In actual scenarios, the amount of data rendered based on the data to be rendered may be large, and it is not easy to directly transmit it to the client for display through the network. To this end, the rendered data can be encoded and sent to the client. The client can decode the encoded data to obtain image data. For the sake of ease of introduction, the data sent by the client to the server is referred to as raw data, the data sent by the server to the client is referred to as image data, and the data generated by the server during the rendering process is collectively referred to as intermediate data.

[0038] For example, the server can obtain Red Green Blue Alpha (RGBA) data based on the data to be rendered. Then, the RGBA data can be converted into YUV data, and then the YUV data can be encoded. Then, the server can send the encoded data to the client. In this way, by first converting the RGBA data into YUV data and then encoding the YUV data, the amount of data sent to the client can be reduced while maintaining the clarity of the image. Among them, YUV data is a kind of data that represents an image with Y component, U component and V component, among which the Y component is used to describe the brightness (Luma) of the image, and the U component and V component are used to describe the chromaticity (Chroma) of the image.

[0039] Optionally, in order to increase the rendering speed, the server can provide cloud rendering services through a graphics processor (Graphics Processing Unit, GPU) and a coding chip. Specifically, the GPU can be used to render data, and the coding chip can be used to encode the rendered data. In other words, the GPU can obtain RGBA data based on the data to be rendered, and convert the RGBA data into YUV data. The coding chip can be used to encode the YUV data. Among them, the coding chip can be a hardware chip for encoding YUV data (or other types of data). In this way, by means of hardware coding, the coding efficiency can be improved, thereby reducing the time required for client rendering.

[0040] However, the encoding method of the encoding chip may be fixed. In some scenarios, the encoded image data may not meet the needs of the client, resulting in a poor user experience.

[0041] For example, in some scenarios, if the encoding standard indicated by the client is inconsistent with the encoding method used by the encoding chip, the client may not be able to decode the data encoded by the encoding chip. In this way, the client cannot decode the data returned by the server and cannot obtain the rendered image data.

[0042] For another example, in some scenarios, the encoding chip may use a high-bitrate encoding method. In this way, the encoding chip compresses the data less, and the amount of rendered image data may be large. If the client's network status is not good, the client's display effect may be affected. For example, if the client's network bandwidth is low, the amount of image data output by the encoding chip per unit time may be greater than the amount of data received by the client per unit time. In this way, the rendered image data may not be received by the client in a timely manner, resulting in the client being unable to obtain the rendered image data in time, making it impossible for the client to display the rendered image to the user normally, and the screen may be stuck, lost, and other phenomena, affecting the user experience.

[0043] Furthermore, since the functions of the encoding chip are fixed, it also hinders the development of new functions of the cloud rendering service system. Specifically, if some processing of the intermediate data can improve the quality of the rendered image data, but due to the poor scalability of the encoding chip, it may not support the processing of the intermediate data. In this way, it is impossible to deploy the functions corresponding to the above processing to the cloud rendering service system, or it is necessary to adjust the server-side architecture to add new functions.

[0044] From the above introduction, we can see that since cloud rendering relies on encoding chips for encoding, and encoding chips have high customization and poor scalability, they may not be able to meet client needs or adapt to technological updates and iterations.

[0045] Based on this, an embodiment of the present application provides a data rendering method, which can be executed by a data rendering device in a server of a cloud rendering service system to achieve rendering according to the actual situation of the client. Specifically, when executing the data rendering method, the data rendering device can first receive the first data to be rendered sent by the client. Then, the first data can be rendered to obtain the rendered second data. Since the amount of the second data is large, it is difficult to return the second data directly to the client. Therefore, the data rendering device can obtain the information of the client. And according to the information of the client, the second data is encoded to obtain the third data and send the third data to the client. Among them, the second data can correspond to the data rendered by the GPU in the above introduction, for example, it can be the above-mentioned RGBA data or YUV data. When encoding the second data, it is not encoded based on a fixed encoding method by the encoding chip, but the corresponding encoding method is determined according to the information of the client, so that the second data is encoded by the encoding method that conforms to the actual situation of the client. In this way, the obtained third data can conform to the actual situation of the client, and the client can normally receive the third data sent by the server and display the rendered image according to the third data. In this way, encoding is performed according to the client's information so that the data output by the server of the cloud rendering service system can match the actual situation of the client, thereby improving the user experience.

[0046] As an example, the data rendering device can be deployed on the server side of the cloud rendering service system. The server side of the cloud rendering service system can interact with the client side to provide cloud rendering services to users. Optionally, the data storage module is implemented by a processor in the server side of the cloud rendering system. For example, Figure 1 In the application scenario shown, the user 100 uses the cloud rendering system 200 to render data. Specifically, the cloud rendering system 200 may include a client 210 and a server 220. The client 210 may be connected to the server 220 via a network. The client 210 may send data to be rendered to the server 220 via a network. The server 220 renders and encodes the data, and then returns the encoded data to the client 210 via the network. The client may be, for example, an application running on a user-side device, or may be a web browser provided by a computing device to the outside.

[0047] The server 220 includes a data rendering device 221. The data rendering device 221 can be used to render and encode data. Optionally, the server 220 may include a GPU and a CPU. The data rendering device 221 may be software running on the CPU. The data rendering device 221 may render the data by calling the GPU, and may also encode the rendered data by the CPU. Optionally, the server 220 may also include an encoding chip. In some possible implementations, the data rendering device 221 may also call the encoding chip to render the rendered data.

[0048] like Figure 1 As shown. The data rendering device 221 may include a first acquisition module 2211, a rendering module 2212, a second acquisition module 2213, an encoding module 2214 and a sending module 2215. Among them, the first acquisition module 2211 is used to obtain the data to be rendered sent by the client (for example, the client 210). The rendering module 2212 can be used to render the data to be rendered to obtain the rendered data. The rendered data may include, for example, RGBA data and / or YUV data. The second acquisition module 2213 can be used to obtain information of the client, which is the client that sends the data to be rendered. The encoding module 2214 can be used to encode the rendered data according to the data of the client. The sending module 2215 can be used to return the encoded data to the client. After obtaining the encoded data, the client can decode the encoded data to display the rendered image.

[0049] In actual application, the data rendering device 221 may be implemented by software or hardware.

[0050] As an example of a software functional unit, the data rendering device may include code running on a computing instance. The computing instance may include at least one of a physical host (computing device), a virtual machine, and a container. Furthermore, the computing instance may be one or more. For example, the data rendering device may include code running on multiple hosts / virtual machines / containers. It should be noted that the multiple hosts / virtual machines / containers used to run the code may be distributed in the same region or in different regions. Furthermore, the multiple hosts / virtual machines / containers used to run the code may be distributed in the same availability zone (AZ) or in different AZs, each AZ including a data center or multiple data centers with similar geographical locations. Generally, a region may include multiple AZs. For ease of introduction, the following mainly takes the case where the relevant devices for executing the data rendering device are distributed in the same region as an example for explanation.

[0051] Similarly, multiple hosts / virtual machines / containers used to run the code can be distributed in the same virtual private cloud (VPC) or in multiple VPCs. Usually, a VPC is set up in a region. For cross-region communication between two VPCs in the same region and between VPCs in different regions, a communication gateway needs to be set up in each VPC to achieve interconnection between VPCs through the communication gateway.

[0052] In the embodiment of the present application, the physical computing device for implementing the data rendering apparatus may include a CPU and a GPU. Optionally, the physical computing device may also include a coding chip.

[0053] As an example of a hardware functional unit, the data rendering device may include at least one computing device, such as a server, etc. Alternatively, the data rendering device may also be a device implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof.

[0054] The multiple computing devices included in the data rendering device can be distributed in the same region or in different regions. The multiple computing devices included in the data rendering device can be distributed in the same AZ or in different AZs. Similarly, the multiple computing devices included in the data rendering device can be distributed in the same VPC or in multiple VPCs. The multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.

[0055] Next, various non-limiting specific implementations of the data rendering process are described in detail.

[0056] See also Figure 2 , is a flow chart of a data rendering method in an embodiment of the present application. The method can be applied to the above Figure 1 The application scenario shown in FIG. 1 may also be applied to other applicable application scenarios. Figure 1The application scenario shown is used as an example for explanation. It should be noted that Figure 1 In the application scenario shown, the data rendering device 221 includes not only a first acquisition module 2211, a rendering module 2212, a second acquisition module 2213, an encoding module 2214 and a sending module 2215, but also a pre-processing module 2216. For the functions of each module, please refer to the relevant description of the following embodiment.

[0057] Figure 2 The data rendering method shown may specifically include:

[0058] S201: Acquire first data to be rendered sent by the client 210.

[0059] In order to provide the cloud rendering service to the user, the data rendering device 221 may obtain the first data sent by the client 210. Specifically, the data rendering device 221 may obtain the first data to be rendered sent by the client 210 through the first obtaining module 2211.

[0060] In some possible implementations, the user 100 can process the data using a terminal device, and view the image data corresponding to the processed data through the terminal device. In the above process, if the cloud rendering service is subscribed, the terminal device can send the processed data (i.e., the first data) to the server 220 through the client 210, and obtain the data returned by the server 220 through the client 210 (i.e., the third data described below). Then, the terminal device can decode the data returned by the server 220 and display it to the user 110 through the display device corresponding to the terminal device.

[0061] For example, in a three-dimensional drawing application scenario, the user 100 can adjust the structure, surface material and other related information of the three-dimensional model on the terminal device used by the user. These data will be sent to the server 220 as the first data. The data rendering device 221 can obtain the first data sent by the client 210, render and encode the first data to obtain the third data, and then return the third data to the client 210. The client 210 can decode the third data, so as to display the rendered three-dimensional model to the user 100.

[0062] After acquiring the first data, the first acquiring module 2211 may send the first data to the rendering module 2212 so that the rendering module 2212 renders the first data.

[0063] S202: Render the first data to obtain second data.

[0064] After the first data to be rendered is acquired through the first acquisition module 2211 , the data rendering device 221 may render the first data to obtain rendered second data.

[0065] In some possible implementations, the first data may be encoded by a GPU. Optionally, the computing device corresponding to the server 220 may include a CPU and a GPU, wherein the CPU is used to implement the data rendering device 221. In this way, after acquiring the first data, the rendering module 2212 running on the CPU may call the GPU to render the first data to obtain the rendered second data.

[0066] After completing the rendering of the first data, the GPU may store the rendered second data in the GPU's video memory so that the data rendering device copies the second data from the GPU's video memory. Specifically, after the GPU renders the first data to obtain the second data, the rendering module 2212 may instruct the rendered second data to be copied from the GPU's video memory and loaded into the memory or the CPU's cache. Alternatively, if encoding is performed through an encoding chip, the data rendering device may also instruct the encoding chip to copy the rendered second data from the GPU's video memory. For an introduction to this part of the content, please refer to the following, which will not be repeated here.

[0067] According to the foregoing description, in some rendering processes, the data to be rendered can be first rendered as RGBA data, and then the RGBA data can be converted into YUV data. In an embodiment of the present application, the second data can be RGBA data or YUV data. Alternatively, the second data can also be rendered data in other formats, and the second data is not encoded.

[0068] For example, in some implementations, the rendering module 2212 performs rendering by calling a GPU, and the second data may be data outputted by the GPU after rendering. If the data outputted by the GPU after rendering is YUV data, the second data may be the above-mentioned YUV data. If the data outputted by the GPU after rendering is RGBA data, the second data may be the above-mentioned RGBA data. Accordingly, if the second data is RGBA data, the data rendering device 221 may also convert the second data to convert the second data into YUV data before encoding.

[0069] After obtaining the rendered second data, the data rendering device 221 may encode the second data so as to return the encoded data to the client 210 .

[0070] S203: Acquire information of the client 210.

[0071] In the embodiment of the present application, in order to make the rendered data meet the needs of the user, the data rendering device 221 can obtain the information of the client 210, so as to encode the second data according to the information of the client 210. Specifically, the second acquisition module 2213 in the data rendering device 221 can obtain the information of the client 210. Optionally, the first acquisition module 2211 and the second acquisition module 2213 can be the same module or different modules.

[0072] First, information about the client 210 is introduced.

[0073] In the embodiment of the present application, the information of the client 210 is used to instruct the data rendering device 221 to encode the rendered second data. That is, the information of the client 210 matches the actual situation of the client 210 and is used to indicate a decoding method suitable for the client 210. For example, the information of the client 210 may include the encoding standard supported by the client 210 and / or the network status information of the client 210. They are introduced below.

[0074] First, the encoding standards supported by the client 210 are introduced.

[0075] The coding standard can also be called a coding protocol, which is used to indicate the rules followed in the coding process. The coding standard supported by the client 210 refers to the coding standard that can be decoded by the client 210. Image data encoded by the coding standard supported by the client 210 can be decoded and displayed by the client 210. In actual scenarios, the encoding method of video / images may develop with the development of technology, and there are many different coding standards. The client 210 may only support some coding standards and not some coding standards. If the data rendering device 221 encodes the rendered data by a coding standard that is not supported by the client 210, the client 210 cannot decode the data returned by the server 220, and cannot display the rendered data.

[0076] Therefore, in some possible implementations, the data rendering device 221 may obtain the encoding standard supported by the client 210 through the second acquisition module 2213 , so as to encode the second data using the encoding standard supported by the client 210 .

[0077] The network status information of the client 210 is described below.

[0078] As mentioned above, in the cloud rendering service system, information is exchanged between the client and the server through the network. The data before rendering is sent to the server through the network, and the data after rendering encoding is returned to the client through the network. In this process, data is transmitted through the network between the server and the client. Therefore, if the network status of the client does not match the data sent by the server to the client, the client may not be able to obtain the data sent by the server normally.

[0079] To this end, in some possible implementations, the data rendering device 221 may obtain the network status information of the client through the second acquisition module 2213, so as to encode the second data in an encoding manner that matches the network status information of the client.

[0080] The network status information of the client 210 includes the bandwidth information of the client 210 as an example for description.

[0081] In an embodiment of the present application, the bandwidth information of the client 210 can be used to indicate the downlink bandwidth of the client 210, indicating the ability of the client to receive data per unit time. The larger the bandwidth of the client 210, the larger the amount of data that the client 210 can receive per unit time. If the bandwidth of the client 210 is small, and the encoding standard used by the server 220 has a low data compression rate, then the server 220 sends a large amount of data per unit time, and the client 210 can receive a small amount of data per unit time. In this way, the amount of data that the client 210 can receive per unit time may be less than the amount of data that the server 220 sends to the client per unit time. Therefore, the client 210 may not be able to obtain the rendered data returned by the server in a timely manner.

[0082] Therefore, in order to ensure that the data returned to the client 210 can be received by the client 210, the information obtained by the second obtaining module 2213 may include the bandwidth information of the client 210. According to the bandwidth information of the client 210, the amount of data that the client 210 can receive per unit time can be determined, so as to adaptively adjust the encoding strategy to ensure that the data sent to the client 210 can be received by the client 210.

[0083] It should be noted that the bandwidth information of the client 210 refers to the bandwidth data of the client 210 when the encoded second data is sent to the client 210. In step S202, the data rendering device 221 has not yet encoded the second data. In other words, the bandwidth information of the client 210 can be the predicted bandwidth information of the client 210 at a certain time point in the future. Therefore, the bandwidth information of the client 210 can also be called the predicted bandwidth or predicted bandwidth information of the client 210.

[0084] In addition to predicting the bandwidth, in some other possible implementations, the network status information of the client 210 may also include any one or more of the relevant information such as the packet loss rate information of the client 210, the delay information of the client 210, and the jitter information of the client 210. Accordingly, in the subsequent encoding process, adaptive encoding can be performed according to the network status information of the client. For example, if the network status information of the client 210 indicates that the packet loss rate of the client 210 is high, the second data can be encoded by a method that can solve the high packet loss rate.

[0085] In some implementations, in order to improve the user experience, the cloud rendering system may provide one or more preset functions. Users can use preset functions to adjust the rendered data. For example, in some possible implementations, the cloud rendering system may provide a video enhancement function. Accordingly, if the user subscribes to the video enhancement function, the server can enhance the rendered data during the rendering process. For another example, in some possible implementations, the cloud rendering system may provide a "high-definition low-code" function. High-definition low-code refers to the transmission of high-definition images through a low bit rate. Accordingly, if the user uses the "high-definition low-code" function, the server can select the corresponding processing method for processing during the data processing process. For ease of introduction, in the embodiment of the present application, the function subscribed by the client 210 is referred to as the target function.

[0086] In order to realize the functions provided by the cloud rendering system, the information acquired by the second acquisition module 2213 may also include a function identifier of a target function. The target function may be a function used by the client 210 when rendering data. According to the function identifier of the target function, the data rendering system 221 may use a data processing method corresponding to the target function to process data.

[0087] Some implementations of the information of the client 210 are introduced above. Some implementations of the second obtaining module 2213 obtaining the information of the client 210 are introduced below.

[0088] In a first possible implementation manner, the information of the client 210 may be sent by the client 210 to the server 220. Accordingly, the second acquisition module 2213 may determine the information of the client 210 from the information sent by the client 210.

[0089] Optionally, if the information of the client 210 includes the coding standard supported by the client 210, then the information sent by the client 210 to the server 220 may include the coding standard supported by the client 210. Accordingly, the second acquisition module 2213 may determine the coding standard supported by the client 210 from the information sent by the client 210. The above-mentioned "information sent by the client 210" may be information reported by the client 210 to the server 220 alone, or may be information used to send the first data. In other words, the client 210 may report the coding standard supported by the client 210 through separate information, or may carry the first data and the coding standard supported by the client 210 in the same message and send it to the server. Accordingly, the above-mentioned first acquisition module 2211 and the second acquisition module 2213 may be the same module.

[0090] In a second possible implementation manner, the information of the client 210 may be pre-stored in the server 220. Accordingly, the acquisition module 2213 may read the stored information of the client 210.

[0091] For example, if the client 210 subscribes to the target function, the cloud rendering system can record and store the function identifier of the target function. Specifically, the management device or module of the cloud rendering system can associate the identifier of the client 210 with the function identifier of the target function and store it in the storage module. When the client 210 calls the cloud rendering service, the second acquisition module 2213 can query the identifier of the function corresponding to the client 210 from the storage module. If there is an identifier of the function corresponding to the identifier of the client 210 (i.e., the target function) in the storage module, the acquisition module 2212 can obtain the function identifier of the target function from the storage device.

[0092] In a third possible implementation manner, the information of the client 210 may be determined by the data rendering device 221. Accordingly, the second acquisition module 2213 may actively acquire the information of the client 210.

[0093] Optionally, the second acquisition module 2213 may send an information acquisition request to the client 210 , and receive information returned by the client 210 , thereby acquiring the information of the client 210 .

[0094] Optionally, the second acquisition module 2213 can also predict the information of the client 210 according to historical rules. For example, if the information of the client 210 includes the information of the client 210, the second acquisition module 2213 can predict the future bandwidth of the client 210 according to the historical bandwidth of the client 210 to determine the predicted bandwidth of the client 210.

[0095] Specifically, in some possible implementations, the client 210 and the server 220 may communicate based on Web Real-Time Communication (WebRTC) technology. Accordingly, the data rendering device 221 may predict the bandwidth of the client 210 through the Google Congest Control (GCC) algorithm to obtain the predicted bandwidth of the server 210.

[0096] It should be noted that the above descriptions are only some implementations of the information of the client 210 and some implementations of the method of obtaining the information of the client 210. In actual scenarios, if the client 210 has other information that may affect the cloud rendering process, the second acquisition module 2213 can also obtain the corresponding information, so as to process it in a processing method that matches the information.

[0097] After acquiring the information of the client 210, the second acquisition module 2213 may send the information of the client 210 to the encoding module 2214. Optionally, if the data rendering device 221 further includes a pre-processing module 2216, the second acquisition module 2213 may also send the information of the client 210 to the pre-processing module 2216.

[0098] S204: Encode the second data according to the information of the client 210 to obtain third data.

[0099] After obtaining the information of the client 210, the data rendering device 221 can encode the second data according to the information of the client 210 to obtain the encoded third data. Specifically, the encoding module 2214 can obtain the second data from the rendering module 2212 and obtain the information of the client 210 from the second obtaining module 2213, thereby encoding the second data according to the information of the client 210. In this way, the second data is encoded according to the information of the client 210, and the obtained third data matches the actual situation of the client 210 and can meet the needs of the client 210.

[0100] Optionally, if the information of the client 210 includes a coding standard supported by the client 210, when encoding the second data, the encoding module 2214 may encode the second data using the coding standard supported by the client 210. In this way, the coding standard corresponding to the encoded third data matches the coding standard supported by the client 210. In this way, the client 210 can decode the third data, so that the user 100 displays the rendered image.

[0101] Specifically, assuming that the data rendering supports two encoding standards, encoding standard A and encoding standard B, and the information of the client 210 indicates that the client 210 can decode data encoded with encoding standard A and can also decode data encoded with encoding method C, then the encoding module 2214 can use encoding standard A to encode the second data.

[0102] Optionally, if the information of the client 210 includes the predicted bandwidth of the client 210, the encoding module 2214 may select an encoding method whose encoding bit rate matches the predicted bandwidth of the client 210 to encode the second data. In this way, the bit rate of the encoded third data matches the predicted bandwidth of the client 210, and the client 210 can completely receive the third data sent by the server 220, thereby normally displaying the rendered image to the user.

[0103] Specifically, it is assumed that the data rendering device supports a first encoding method and a second encoding method. The bit rate of the data encoded by the first encoding method is a first bit rate, the bit rate of the data encoded by the second encoding method is a second bit rate, and the first bit rate is greater than the second bit rate. In this way, a preset bandwidth threshold can be set in advance. The preset bandwidth threshold is greater than or equal to the first bit rate. After the predicted bandwidth of the client 210 is obtained, the size relationship between the predicted bandwidth of the client 210 and the preset bandwidth threshold can be compared.

[0104] If the predicted bandwidth of the client 210 is greater than the preset bandwidth threshold, it means that the amount of data that the client 210 can receive per unit time is greater than the amount of data generated per unit time after the data is encoded by the first encoding method. In this way, the second data is encoded by the first encoding method, and the obtained data can be received by the client 210. Therefore, the second data can be encoded by the first encoding method to obtain the third data. In this way, under the premise that the client 210 can process it, the rendering quality of cloud rendering can be improved by using an encoding method with a higher bit rate.

[0105] If the predicted bandwidth of the client 210 is not greater than the preset bandwidth, it means that the amount of data that the client 210 can receive per unit time may not be greater than the amount of data generated per unit time after the data is encoded by the first encoding method. Thus, if the first encoding method is used to encode the second data, the obtained data may not be completely received by the client 210, resulting in packet loss, congestion, etc. Therefore, the second encoding method may be used to encode the second data to obtain the third data.

[0106] It is understandable that if the client 210 supports N encoding methods with different bit rates (N is a positive integer greater than 2), then N-1 preset bandwidth thresholds can be pre-set. After obtaining the predicted bandwidth of the client 210, a coding method not greater than the predicted bandwidth can be selected to encode the second data.

[0107] Optionally, if the information of the client 210 includes both the coding standard supported by the client 210 and the predicted bandwidth of the client 210, the encoding module 2214 may select an encoding method that satisfies both the coding standard supported by the client 210 and the predicted bandwidth of the client 210 to encode the second data.

[0108] Here are some ways to implement the encoding method.

[0109] In a first possible implementation, different encoding methods may correspond to different encoding standards. That is, the first encoding method and the second encoding method may correspond to different encoding standards. Moreover, the bit rate of data encoded by the encoding standard corresponding to the first encoding method is greater than the bit rate of data encoded by the encoding standard corresponding to the second encoding method.

[0110] In a second possible implementation, different encoding methods may correspond to different bit rates. That is, the first encoding method and the second encoding method may correspond to the same encoding standard, but the corresponding bit rates are different. Moreover, the bit rate corresponding to the first encoding method is greater than the bit rate corresponding to the second method. That is, when the predicted bandwidth of the client 210 is sufficient, a high bit rate encoding method may be used for encoding to improve the quality of cloud rendering. When the predicted bandwidth of the client 210 is insufficient, a low bit rate encoding method may be used for encoding.

[0111] In a third implementation, different encoding methods may correspond to different data processing methods. Accordingly, the bit rate of data processed and encoded by the data processing method corresponding to the first encoding method is greater than the bit rate of data processed and encoded by the data processing method corresponding to the second encoding method.

[0112] For example, the second encoding method may include compressing the data before encoding. That is, the first encoding method may include encoding the second data using a preset encoding standard. The second encoding method may include compressing the second data and encoding the compressed second data using a preset encoding standard. In this way, since the second data is compressed before encoding, the code rate of the third data encoded by the second encoding method is lower and can be received by the client 210.

[0113] In some possible implementations, the second data may be compressed according to the predicted bandwidth of the client 210. Specifically, a target encoding bit rate may be first determined according to the predicted bandwidth of the client 210. The target encoding bit rate is less than the predicted bandwidth of the client 210, and the data encoded according to the target encoding bit rate can be received by the client 210. Then, the second data may be compressed according to the target encoding bit rate, so that the bit rate of the third data obtained by encoding the compressed second data is not greater than the target encoding bit rate. That is, when compressing the second data, the compression of the second data may be adjusted according to the bandwidth of the client 210. If the bandwidth of the client 210 is low, a compression method with a higher compression rate may be used to compress the second data.

[0114] In the above implementation, the second data may need to be compressed, and the compression degree of the second data may need to be adjusted. In this way, the second encoding method may involve multiple data processing methods, and the device implementing the second encoding method needs to have high scalability. To this end, the second encoding method can be implemented based on a CPU, so as to implement the second encoding method through the high scalability of the CPU.

[0115] In a fourth implementation, different encoding methods may correspond to different encoding devices. That is, encoding the second data by the first encoding method and encoding the second data by the second encoding method may be performed by different devices. For example, the first encoding method may include encoding by an encoding chip, and the second encoding method may include encoding by a CPU. Alternatively, the first encoding method may include encoding by a CPU, and the second encoding method may include encoding by a chip.

[0116] The following is a detailed description using an example in which the first encoding method includes encoding through an encoding chip and the second encoding method includes encoding through a CPU.

[0117] According to the foregoing introduction, the data rendering device 221 can be a software module running on the CPU of the server 220. Accordingly, the encoding of the third data can be implemented by the CPU of the server 220. In some possible implementations, if the computing device included in the server 220 also includes a coding chip, it can also be implemented by the coding chip corresponding to the server 220. If the coding method supported by the coding chip includes the coding method selected according to the information of the client 210, then the coding chip can be used to encode the second data to obtain the third data. In this way, since the coding chip solidifies the coding method in the coding chip in a hardware manner, encoding through the coding chip can improve the coding efficiency.

[0118] Specifically, after obtaining the information of the client 210, the encoding module 2214 can determine whether encoding can be performed through the encoding chip according to the information of the client 210. If encoding can be performed through the encoding chip, the encoding module 2214 can select the encoding chip to encode the second data. If encoding cannot be performed through the encoding chip, the encoding module 2214 can select the CPU to encode the second data. Optionally, if the encoding chip supports multiple encoding methods, the encoding module 2214 can send instruction information to the encoding chip to instruct the encoding chip to select a corresponding method to encode the second data to obtain the third data.

[0119] According to the foregoing description, the second data may be data rendered by the GPU and stored in the GPU's video memory. Accordingly, if the encoding module 2214 determines that the second data can be encoded by the encoding chip, the encoding chip can copy the second data from the GPU's video memory, thereby encoding the second data to obtain the third data. If the encoding module 2214 determines that the second data is to be encoded by the CPU, the encoding module 2214 can copy the second data from the GPU's video memory to the memory, so that the CPU can read the second data in the memory, thereby encoding the second data.

[0120] Optionally, an encoding process can be preset. The preset encoding process instructs the encoding chip to copy the rendered data from the GPU's video memory and encode it. Accordingly, if the encoding module 2214 determines that the second data is encoded by the CPU, the encoding module 2214 can interrupt the preset encoding process through instruction information or other means, thereby avoiding the encoding chip from encoding the second data. If the encoding module 2214 determines that the second data can be encoded by the encoding chip, the encoding module 2214 may not perform additional processing.

[0121] In actual scenarios, commonly used encoding methods can be deployed in encoding chips. In this way, the probability of using the encoding chip to encode the second data is higher than the probability of using the CPU to encode the second data. In this way, when providing cloud rendering services, hardware encoding can be used more often to encode, thereby improving encoding efficiency.

[0122] As can be seen from the above description, the information of the client 210 may also include a function identifier of a target function. Accordingly, when encoding the second data, corresponding processing may also be performed according to the function identifier of the target function.

[0123] Specifically, if in order to achieve the target function, it is necessary to perform some processing on the data before encoding. Then, after obtaining the function identifier of the target function, the data rendering device 221 can perform corresponding processing on the second data according to the function identifier of the target function. Then, the processed second data can be encoded by the encoding module 2214 to obtain the third data. Optionally, the data rendering device 2214 can process the second data through the pre-processing module 2216.

[0124] The above process is introduced below by taking the target function including high-definition low-code function as an example.

[0125] If the user 100 subscribes to the high-definition low-code function, the information of the client 210 obtained by the second acquisition module 2213 may include the function identifier of the high-definition low-code function. Then, the second acquisition module 2213 may send the function identifier to the pre-processing module 2216. The pre-processing module 2216 may load the second data from the GPU's video memory to the internal memory, call the model according to the function identifier, and perform image enhancement on the second data so that the second data can meet the requirements of high-definition low-code. After completing the processing, the encoding module 2214 may encode the processed second data to obtain the third data.

[0126] Alternatively, in some other possible implementations, the encoding module 2214 may also encode the second data according to the function identifier of the target function.

[0127] Specifically, in some implementations, "high definition and low code" can be implemented through a special encoder. For example, the function of "high definition and low code" can be implemented through encoding methods such as encoder perception, encoder + artificial intelligence model, and end-to-end artificial intelligence encoder. Accordingly, if the information of the client 210 includes a function identifier corresponding to "high definition and low code", the encoding module 2214 can select the corresponding encoding method to encode the second data.

[0128] After encoding the second data to obtain the third data, the encoding module 2214 may send the third data to the sending module 2215 so as to return the encoded data to the client 210 .

[0129] S205 : Sending third data to the client 210 .

[0130] After completing the rendering and encoding of the first data, the server 220 may send the third data to the client 210. Specifically, the sending module 2215 in the data rendering device 221 may send the third data to the client 210 through the network. The client 210 may receive the third data sent by the server through the network, and decode the third data, thereby displaying the image rendered according to the first data to the user 100, completing the cloud rendering process.

[0131] In an embodiment of the present application, the data rendering device may first receive the first data to be rendered sent by the client. Then, the first data may be rendered to obtain the rendered second data. Since the amount of the second data is large, it is difficult to return the second data directly to the client. Therefore, the data rendering device may obtain the information of the client. And according to the information of the client, the second data is encoded to obtain the third data and send the third data to the client. Among them, the second data may correspond to the data rendered by the GPU in the above introduction, for example, it may be the above-mentioned RGBA data or YUV data. When encoding the second data, it is not encoded based on a fixed encoding method by the encoding chip, but the corresponding encoding method is determined according to the information of the client, so that the second data is encoded by the encoding method that conforms to the actual situation of the client. In this way, the obtained third data can conform to the actual situation of the client, and the client can normally receive the third data sent by the server and display the rendered image according to the third data. In this way, encoding is performed according to the information of the client, so that the data output by the server can match the actual situation of the client, thereby improving the user experience.

[0132] Optionally, if the user triggers the encoding of data through touch operation on the client, and the server encodes the data through the CPU and GPU, the process of encoding the data by the cloud service system can be as follows: Figure 3 As shown. Figure 3 In the implementation shown, the client can obtain the touch information triggered by the user through the touch hardware and send it to the server. The server can parse the touch information triggered by the user through the CPU, and then call the GPU for rendering.

[0133] In addition, the server can also make encoding decisions based on the client's network status and user-defined information to determine the target encoding method. The user-defined information can be information defined by the user on the client. The client can send the user-defined information to the server through a pre-set application programming interface (Application Programming Interface, API) interface, so that the server can determine the target encoding method based on the client's network status and the user-defined information.

[0134] If the server determines that the target encoding method needs to be implemented by the CPU, the GPU can output the rendered data to the CPU. The CPU can process and encode the rendered data. The encoded video is sent to the client through the network, and the client decodes it and displays it to the user.

[0135] If the target encoding method determined by the server can be implemented by the GPU, the GPU can encode the rendered data locally and send the encoded data to the client through the CPU, which will be decoded by the client and displayed to the user.

[0136] The present application also provides a data rendering device, wherein the data rendering device can be applied to Figure 1 The server in the implementation shown is used to implement Figure 2 or Figure 3 The function of the data rendering device in the implementation shown is as follows. Figure 4 As shown, the data rendering device 400 includes:

[0137] A first acquisition module 410 is used to acquire first data to be rendered sent by the client;

[0138] A rendering module 420, configured to render the first data to obtain second data;

[0139] A second acquisition module 430 is used to acquire information of the client;

[0140] An encoding module 440, configured to encode the second data according to the information of the client to obtain third data;

[0141] The sending module 450 is configured to send the third data to the client.

[0142] Among them, the first acquisition module 410, the rendering module 420, the second acquisition module 430, the encoding module 440 and the sending module 450 can all be implemented by software, or can be implemented by hardware. Exemplarily, the implementation of the encoding module 440 is introduced below by taking the encoding module 440 as an example. Similarly, the implementation of the first acquisition module 410, the rendering module 420, the second acquisition module 430 and the sending module 450 can be the implementation of the encoding module 440.

[0143] As an example of a software functional unit, the coding module 440 may include code running on a computing instance. Among them, the computing instance may include at least one of a physical host (computing device), a virtual machine, and a container. Further, the above-mentioned computing instance may be one or more. For example, the coding module 440 may include code running on multiple hosts / virtual machines / containers. It should be noted that the multiple hosts / virtual machines / containers used to run the code may be distributed in the same region (region) or in different regions. Furthermore, the multiple hosts / virtual machines / containers used to run the code may be distributed in the same availability zone (AZ) or in different AZs, each AZ including a data center or multiple data centers with close geographical locations. Among them, usually a region may include multiple AZs.

[0144] Similarly, multiple hosts / virtual machines / containers used to run the code can be distributed in the same virtual private cloud (VPC) or in multiple VPCs. Usually, a VPC is set up in a region. For cross-region communication between two VPCs in the same region and between VPCs in different regions, a communication gateway needs to be set up in each VPC to achieve interconnection between VPCs through the communication gateway.

[0145] As an example of a hardware functional unit, the encoding module 440 may include at least one computing device, such as a server, etc. Alternatively, the encoding module 440 may also be a device implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof.

[0146] The multiple computing devices included in the encoding module 440 can be distributed in the same region or in different regions. The multiple computing devices included in the encoding module 440 can be distributed in the same AZ or in different AZs. Similarly, the multiple computing devices included in the encoding module 440 can be distributed in the same VPC or in multiple VPCs. The multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.

[0147] It should be noted that, in other embodiments, the first acquisition module 410 can be used to execute any step in the data rendering method, the rendering module 420 can be used to execute any step in the data rendering method, the second acquisition module 430 can be used to execute any step in the data rendering method, the encoding module 440 can be used to execute any step in the data rendering method, and the sending module 450 can be used to execute any step in the data rendering method. The steps that the first acquisition module 410, the rendering module 420, the second acquisition module 430, the encoding module 440 and the sending module 450 are responsible for implementing can be specified as needed. The first acquisition module 410, the rendering module 420, the second acquisition module 430, the encoding module 440 and the sending module 450 respectively implement different steps in the data rendering method to realize the full functions of the data rendering device.

[0148] The present application also provides a computing device 100. Figure 5 As shown, the computing device 100 includes: a bus 102, a processor 104, a memory 106, and a communication interface 108. The processor 104, the memory 106, and the communication interface 108 communicate with each other through the bus 102. The computing device 100 can be a server or a terminal device. It should be understood that the present application does not limit the number of processors and memories in the computing device 100.

[0149] The bus 102 may be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus. The bus may be divided into an address bus, a data bus, a control bus, etc. For ease of representation, Figure 5 The bus 104 is represented by only one line, but does not mean that there is only one bus or one type of bus. The bus 104 may include a path for transmitting information between various components of the computing device 100 (eg, the memory 106, the processor 104, and the communication interface 108).

[0150] The processor 104 may include any one or more of a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).

[0151] The memory 106 may include a volatile memory, such as a random access memory (RAM). The processor 104 may also include a non-volatile memory, such as a read-only memory (ROM), a flash memory, a hard disk drive (HDD), or a solid state drive (SSD).

[0152] The memory 106 stores executable program codes, and the processor 104 executes the executable program codes to respectively implement the functions of the first acquisition module 410, the rendering module 420, the second acquisition module 430, the encoding module 440, and the sending module 450, thereby implementing the data rendering method. That is, the memory 106 stores instructions for executing the storage method.

[0153] Alternatively, the memory 106 stores executable codes, and the processor 104 executes the executable codes to implement the aforementioned server functions, thereby implementing the data rendering method. That is, the memory 106 stores instructions for executing the data rendering method.

[0154] The communication interface 108 uses a transceiver module such as, but not limited to, a network interface card or a transceiver to implement communication between the computing device 100 and other devices or a communication network.

[0155] The embodiment of the present application also provides a computing device cluster. The computing device cluster includes at least one computing device. The computing device can be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device can also be a terminal device such as a desktop computer, a laptop computer, or a smart phone.

[0156] like Figure 6 As shown, the computing device cluster includes at least one computing device 100. The memory 106 in one or more computing devices 100 in the computing device cluster may store the same instructions for executing the data rendering method.

[0157] In some possible implementations, the memory 106 of one or more computing devices 100 in the computing device cluster may also store partial instructions for executing the data rendering method. In other words, the combination of one or more computing devices 100 may jointly execute instructions for executing the data rendering method.

[0158] It should be noted that the memory 106 in different computing devices 100 in the computing device cluster may store different instructions, which are respectively used to execute part of the functions of the data rendering device. That is, the instructions stored in the memory 106 in different computing devices 100 may implement the functions of one or more modules of the first acquisition module 410, the rendering module 420, the second acquisition module 430, the encoding module 440 and the sending module 450.

[0159] In some possible implementations, one or more computing devices in the computing device cluster may be connected via a network, which may be a wide area network or a local area network. Figure 7 A possible implementation is shown. Figure 7 As shown, two computing devices 100A and 100B are connected via a network. Specifically, the network is connected via a communication interface in each computing device. In this type of possible implementation, the memory 106 in the computing device 100A stores instructions for executing the functions of the first acquisition module 410, the second acquisition module 430, and the sending module 450. At the same time, the memory 106 in the computing device 100B stores instructions for executing the functions of the rendering module 420 and the encoding module 440.

[0160] Figure 7 The connection method between the computing device clusters shown may be based on the consideration that the data rendering method provided in the present application requires interaction between the server and the client, and the interaction may bring greater pressure, so it is considered that the functions of the first acquisition module 410, the second acquisition module 430 and the sending module 450 are handed over to the computing device 100B for execution.

[0161] It should be understood that Figure 7 The functions of the computing device 100A shown in FIG. 1 may also be completed by multiple computing devices 100. Similarly, the functions of the computing device 100B may also be completed by multiple computing devices 100.

[0162] The present application embodiment also provides another computing device cluster. The connection relationship between the computing devices in the computing device cluster can be similar to that of Figure 6 and Figure 7The connection mode of the computing device cluster is different in that the memory 106 in one or more computing devices 100A in the computing device cluster may store the same instructions for executing the data rendering method.

[0163] In some possible implementations, the memory of one or more computing devices 100B in the computing device cluster may also store partial instructions for executing the data rendering method. In other words, a combination of one or more computing devices may jointly execute instructions for executing the data rendering method.

[0164] It should be noted that the memory 106 in different computing devices 100A in the computing device cluster may store different instructions for executing part of the functions of the data rendering method. That is, the instructions stored in the memory 106 in different computing devices 100A may implement the functions of one or more modules in the data rendering apparatus.

[0165] The embodiment of the present application also provides a computer program product including instructions. The computer program product may be software or a program product including instructions that can be run on a computing device or stored in any available medium. When the computer program product is run on at least one computing device, the at least one computing device executes the data rendering method.

[0166] The embodiment of the present application also provides a computer-readable storage medium. The computer-readable storage medium can be any available medium that can be stored by a computing device or a data storage device such as a data center containing one or more available media. The available medium can be a magnetic medium (e.g., a floppy disk, a hard disk, a tape), an optical medium (e.g., a DVD), or a semiconductor medium (e.g., a solid-state hard disk). The computer-readable storage medium includes instructions that instruct a computing device to execute a data rendering method, or instructs a computing device to execute a data rendering method.

[0167] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, rather than to limit it. Although the present invention has been described in detail with reference to the aforementioned embodiments, those skilled in the art should understand that they can still modify the technical solutions described in the aforementioned embodiments, or make equivalent replacements for some of the technical features therein. However, these modifications or replacements do not cause the essence of the corresponding technical solutions to deviate from the protection scope of the technical solutions of the embodiments of the present invention.

Claims

1. A data rendering method, characterized in that: The method is applied to a server of a cloud rendering service system, wherein the cloud rendering service system further includes a client, and the method includes: Obtaining first data to be rendered sent by the client; Rendering the first data to obtain second data; Obtaining information of the client; Encoding the second data according to the information of the client to obtain third data; The third data is sent to the client.

2. The method according to claim 1, characterized in that The client information includes the network status information of the client; The encoding of the second data according to the information of the client includes: Determining a target encoding method according to the network status information of the client; The second data is encoded according to the target encoding method.

3. The method according to claim 2, characterized in that The network status information includes predicted bandwidth; and determining a target encoding method according to the network status information of the client includes: In response to the predicted bandwidth being greater than a preset bandwidth threshold, determining the target encoding mode to be a first encoding mode; In response to the predicted bandwidth being less than or equal to the preset bandwidth threshold, determining the target encoding mode to be a second encoding mode; The bit rate of the data encoded by the first encoding method is higher than the bit rate of the data encoded by the second encoding method.

4. The method according to claim 3, characterized in that The server includes a coding chip and a processor; the first coding method includes coding through the coding chip, and the second coding method includes coding through the processor.

5. The method according to claim 3 or 4, characterized in that: The predicted bandwidth is less than or equal to the preset bandwidth threshold; and encoding the second data according to the target encoding method includes: compressing the second data; The compressed second data is encoded.

6. The method according to claim 5, characterized in that The compressing the second data comprises: Determining a target encoding bit rate according to the predicted bandwidth; The second data is compressed according to the target encoding bit rate, and the bit rate of the compressed second data after encoding is less than or equal to the target encoding bit rate.

7. The method according to any one of claims 1 to 6, characterized in that: The client information also includes a target coding standard, where the target coding standard is a coding standard supported by the client; The encoding of the second data according to the information of the client includes: The second data is encoded according to the target encoding standard.

8. The method according to any one of claims 1 to 7, characterized in that: The client information also includes a function identifier of the target function; The encoding of the second data comprises: Processing the second data according to the function identifier; The processed second data is encoded according to the function identifier.

9. A data rendering device, characterized in that: The device is applied to the server of a cloud rendering service system, the cloud rendering service system also includes a client, and the device includes: A first acquisition module, used to acquire first data to be rendered sent by the client; A rendering module, used for rendering the first data to obtain second data; A second acquisition module, used to acquire the information of the client; an encoding module, used for encoding the second data according to the information of the client to obtain third data; A sending module is used to send the third data to the client.

10. The device according to claim 9, characterized in that The client information includes the network status information of the client; The encoding module is specifically used to determine a target encoding method according to the network status information of the client; and encode the second data according to the target encoding method.

11. The device according to claim 10, characterized in that The network status information includes predicted bandwidth; The encoding module is specifically configured to determine that the target encoding mode is a first encoding mode in response to the predicted bandwidth being greater than a preset bandwidth threshold; and to determine that the target encoding mode is a second encoding mode in response to the predicted bandwidth being less than or equal to the preset bandwidth threshold; The bit rate of the data encoded by the first encoding method is higher than the bit rate of the data encoded by the second encoding method.

12. The device according to claim 11, characterized in that The server includes a coding chip and a processor; the first coding method includes coding through the coding chip, and the second coding method includes coding through the processor.

13. The device according to claim 11 or 12, characterized in that The predicted bandwidth is less than or equal to the preset bandwidth threshold; The encoding module is specifically used to compress the second data; and encode the compressed second data.

14. The device according to claim 13, characterized in that The encoding module is specifically used to determine a target encoding bit rate according to the predicted bandwidth; compress the second data according to the target encoding bit rate, and the bit rate of the compressed second data after encoding is less than or equal to the target encoding bit rate.

15. The device according to any one of claims 9 to 14, characterized in that The client information also includes a target coding standard, where the target coding standard is a coding standard supported by the client; The encoding module is specifically configured to encode the second data according to the target encoding standard.

16. The device according to any one of claims 9 to 15, characterized in that The client information also includes a function identifier of the target function; The encoding module is specifically used to process the second data according to the function identifier, and encode the processed second data according to the function identifier.

17. A computing device cluster, characterized in that: The computing device cluster includes at least one computing device, each computing device including a processor and a memory: The memory is used to store instructions; The processor is configured to cause the computing device cluster to execute the method according to any one of claims 1 to 8 according to the instructions.

18. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores instructions, which, when executed on a computing device, enable the computing device to execute the method according to any one of claims 1 to 8.

19. A computer program product comprising instructions which, when executed on a computing device, cause the computing device to perform the method according to any one of claims 1 to 8.