CN110297680B - Method and device for transmitting virtual desktop image - Google Patents

Method and device for transmitting virtual desktop image Download PDF

Info

Publication number
CN110297680B
CN110297680B CN201910478045.2A CN201910478045A CN110297680B CN 110297680 B CN110297680 B CN 110297680B CN 201910478045 A CN201910478045 A CN 201910478045A CN 110297680 B CN110297680 B CN 110297680B
Authority
CN
China
Prior art keywords
block
hash value
cache
line
missed
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.)
Active
Application number
CN201910478045.2A
Other languages
Chinese (zh)
Other versions
CN110297680A (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.)
Beijing Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks 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 Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN201910478045.2A priority Critical patent/CN110297680B/en
Publication of CN110297680A publication Critical patent/CN110297680A/en
Application granted granted Critical
Publication of CN110297680B publication Critical patent/CN110297680B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32358Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
    • H04N1/32363Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter at the transmitter or at the receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction

Abstract

The application provides a method and a device for transmitting a virtual desktop image, which are used for reducing the bandwidth requirement of transmitting the virtual desktop image. The method comprises the following steps: dividing a virtual desktop image to be transmitted to obtain a plurality of blocks; judging whether the hash value of each block in the plurality of blocks is matched with the hash value in the cache, if so, determining the block as a hit block, otherwise, determining the block as a miss block; querying the cache according to the hash value of any line in the missed block; and if the hash value identical to the hash value of any line in the missed block is inquired in the cache, sending the hash value of any line and the position of any line in the virtual desktop image to a client. According to the method, the hash values of the blocks are searched in the cache, then the hash values of the lines are searched, and the method is matched with the operation habit of a user according to a face-to-line searching mode, so that the probability of searching the data of the virtual desktop image in the cache can be improved, and the repeated sending of the blocks and the lines is realized.

Description

Method and device for transmitting virtual desktop image
Technical Field
The present application relates to the field of communications technologies, and in particular, to a method and an apparatus for transmitting a virtual desktop image.
Background
The Desktop virtualization infrastructure (VDI) is a mainstream architecture and deployment mode in current Desktop cloud solutions, and the VDI idea is to store a Desktop in a data center through a virtualization technology, and an end user accesses the Desktop through a Virtual Desktop control protocol, so that complete computer use experience can be obtained. In the VDI architecture, the virtual desktop image has a large content data volume and a high bandwidth requirement.
In the prior art, a mode of transmitting a virtual desktop image is a fixed block transmission mode. The idea of the fixed block transmission mode is to divide each virtual desktop image into blocks with fixed sizes, and then to inquire whether hash values of the blocks are stored in a cache. If the hash value of the block exists in the cache, only the hash value and the position of the block are sent to the client, and the client copies the block data from the cache to recover the block. And if the block does not exist in the cache, sending the block to the client, and decoding by the client to obtain the block.
Although this approach can reduce server traffic to some extent, reducing bandwidth requirements. However, if the blocks are large, the probability of inquiring the hash values of the blocks in the cache is low, that is, the number of the blocks directly sent to the client by the server is relatively large, and a large bandwidth is also required to meet the requirement of transmitting the virtual desktop image.
Disclosure of Invention
The embodiment of the application provides a method and a device for transmitting a virtual desktop image, which are used for reducing the bandwidth requirement for transmitting the virtual desktop image.
In a first aspect, a method for transmitting a virtual desktop image is provided, including:
dividing a virtual desktop image to be transmitted to obtain a plurality of blocks;
judging whether the hash value of each of the plurality of blocks is matched with the hash value in the cache, if so, determining the block as a hit block, otherwise, determining the block as a miss block;
querying the cache according to the hash value of any line in the missed block;
and if the hash value identical to the hash value of any line in the missed block is inquired in the cache, sending the hash value of any line and the position of any line in the virtual desktop image to a client.
In the embodiment of the application, the virtual desktop image is divided, the hash value of a block is inquired in the cache, if the hash value of the block is not inquired, the hash value of each line in the block is inquired, and under the condition that a user moves, drags or rolls, the virtual desktop image is generally equivalent to the local change of the virtual desktop image of the previous frame.
In one possible embodiment, after querying the cache according to the hash value of any line in the miss block, the method includes:
if the same hash value as any line in the missed block is not inquired in the cache, inquiring the cache according to the hash value of any pixel unit in any line in the missed block;
if any pixel unit in any row of the missed block is inquired in the cache, the hash value of any pixel unit and the position of any pixel unit in the virtual desktop image are sent to a client;
if any pixel unit in any row in the missed block is not inquired in the cache, compressing any pixel unit, and sending the compressed pixel unit to a client side, so that the client side decompresses any compressed pixel unit, and caches the decompressed pixel unit.
In the embodiment of the application, if the hash value of the current row is not queried in the cache, the server continuously queries the hash value of each pixel unit in the current row in the cache, and a line (row) to point (pixel unit) mode is adopted, so that the probability of querying the data of the virtual desktop image in the cache is further improved, the repeated sending of blocks, rows and pixel units is realized, and the bandwidth requirement for transmitting the virtual desktop image is further reduced.
In one possible embodiment, before querying the cache according to the hash value of any pixel unit in any row in the miss block, the method includes:
determining that any row in the missed block belongs to a block of text.
In the embodiment of the application, when it is determined that the current line in the missed block belongs to the text block, the server queries the hash value of each pixel unit in the current line in the cache, and when the current line belongs to the text block, the text block contains more redundant pixel information, that is, the probability of querying the hash value of the pixel unit belonging to the text block in the cache is relatively high, so that the probability of querying data of the virtual desktop image in the cache is further improved, repeated sending of blocks, lines and pixel units is realized to the greatest extent, and the bandwidth requirement for transmitting the virtual desktop image is further reduced.
In one possible embodiment, before sending the any pixel unit hash value and the position in the virtual desktop image to the client, the method includes:
determining a pixel value of any pixel cell in any row in the missed block that is queried in the cache.
In the embodiment of the present application, after the hash value of a pixel unit is found in the cache, whether the pixel value of the pixel unit is included in the cache is further determined, so that the accuracy of the matched pixel unit is ensured.
In one possible embodiment, after querying the cache according to the hash value of any line in the miss block, the method includes:
if the same hash value of any line in the missed block is not inquired in the cache, and any line in the missed block belongs to an image block, compressing any line in the missed block;
and sending any line of the compressed missed block to the client, so that the client decompresses any line of the compressed missed block and caches any line of the decompressed missed block.
In the embodiment of the application, if it is determined that the current row belongs to the image block, because the image block comprises more pixel information, the probability of querying the hash value of the pixel unit belonging to the image block in the cache is relatively low, when it is determined that the current row belongs to the image block, the current row can be directly compressed and sent to the client, and under the condition of realizing repeated sending as much as possible, the frequency of querying the pixel unit belonging to the image block in the cache by the server is reduced, and the time for transmitting the virtual desktop image is saved.
In one possible embodiment, the determining whether the hash value of each of the plurality of chunks matches the hash value in the cache comprises:
if the hash value of any one of the plurality of blocks is matched with the hash value in the cache, determining that the blocks partially overlapped with the any one block are all hit blocks;
if the hash value of any one of the plurality of blocks is not matched with the hash value in the cache, judging whether the hash value of the block partially overlapped with the any one block is matched with the hash value in the cache or not;
if the hash value of the block partially overlapped with the any block is not matched with the hash value in the cache, determining the block partially overlapped with the any block as a missed block;
and if the total number of the missed blocks in the neighborhood of any one block is larger than a preset value, inquiring whether a hash value identical to the hash value of the corresponding block at a preset fixed position in the virtual desktop image exists in the cache.
In the embodiment of the application, if the hash value of the current block is found in the cache, the hash value of the block which is overlapped with the current block does not need to be determined continuously, so that the calculation amount in the process of transmitting the virtual desktop image can be relatively reduced, the times of querying the cache by the server can be reduced, and the query efficiency is improved. If the number of missed blocks in the virtual desktop image exceeds the preset value, the probability that the data in the virtual desktop image is inquired in the cache is relatively low, the server directly inquires the hash value of the blocks at the fixed position, the number of times that the server inquires the blocks in the cache is reduced, and the time for transmitting the virtual desktop image is saved.
In a possible embodiment, dividing the virtual desktop image to be transmitted into a plurality of partitions includes:
determining an image characteristic value of the virtual desktop image;
dividing the virtual desktop image according to different pixel sizes to obtain a plurality of blocks according to the image characteristic value of the virtual desktop image; wherein the image characteristic value of each of the plurality of blocks is within a preset range.
In the embodiment of the application, the server blocks the virtual desktop image according to the image characteristic value, and the image characteristic value of each block is ensured to be within a preset range, so that the data volume contained in each block is similar, and the consumed flow is relatively uniform when each block is transmitted.
In a second aspect, an apparatus for transmitting a virtual desktop image is provided, including:
the processing module is used for dividing the virtual desktop image to be transmitted to obtain a plurality of blocks, judging whether the hash value of each block in the plurality of blocks is matched with the hash value in the cache, determining the block as a hit block if the hash value of each block in the plurality of blocks is matched with the hash value in the cache, otherwise, determining the block as a miss block, and inquiring the cache according to the hash value of any line in the miss block;
and the sending module is used for sending the hash value of any line and the position of any line in the virtual desktop image to a client side if the hash value identical to the hash value of any line in the missed block is inquired in the cache.
In a possible embodiment, the processing module is further configured to, after querying the cache according to the hash value of any line in the missed block, query the cache according to the hash value of any pixel unit in any line in the missed block if the same hash value as any line in the missed block is not queried in the cache;
the sending module is further configured to send the hash value of any pixel unit and the position of any pixel unit in the virtual desktop image to a client if any pixel unit in any row of the miss block is found in the cache;
the sending module is further configured to, if any pixel unit in any row in the miss block is not found in the cache, compress the any pixel unit, and send the compressed any pixel unit to a client, so that the client decompresses the compressed any pixel unit, and writes the decompressed compressed any pixel unit into the cache.
In a possible embodiment, the processing module is further configured to:
and determining that any line in the missed block belongs to a text block before querying the cache according to the hash value of any pixel unit in any line in the missed block.
In a possible embodiment, the processing module is further configured to:
and determining the pixel value of any pixel unit in any line in the missed block inquired in the cache before sending the hash value of any pixel unit and the position in the virtual desktop image to a client.
In a possible embodiment, the processing module is further configured to, after querying the cache according to the hash value of any line in the missed block, compress any line in the missed block if no identical hash value of any line in the missed block is queried in the cache and any line in the missed block belongs to the image block;
the sending module is further configured to send any compressed row of the missed block to the client, so that the client decompresses any compressed row of the missed block, and caches any decompressed row of the compressed missed block.
In a possible embodiment, the processing module is specifically configured to:
if the hash value of any one of the plurality of blocks is matched with the hash value in the cache, determining that the blocks partially overlapped with the any one block are all hit blocks;
if the hash value of any one of the plurality of blocks is not matched with the hash value in the cache, judging whether the hash value of the block partially overlapped with the any one block is matched with the hash value in the cache or not;
if the hash value of the block partially overlapped with the any block is not matched with the hash value in the cache, determining the block partially overlapped with the any block as a miss block;
and if the total number of the missed blocks in the neighborhood of any one block is larger than a preset value, inquiring whether a hash value identical to the hash value of the corresponding block at a preset fixed position in the virtual desktop image exists in the cache.
In a possible embodiment, the processing module is specifically configured to:
determining an image characteristic value of the virtual desktop image;
dividing the virtual desktop image according to different pixel sizes to obtain a plurality of blocks according to the image characteristic value of the virtual desktop image; wherein the image characteristic value of each of the plurality of blocks is within a preset range.
In a third aspect, an apparatus for transmitting a virtual desktop image is provided, including:
at least one processor, and
a memory communicatively coupled to the at least one processor;
wherein the memory stores instructions executable by the at least one processor, the at least one processor implementing the method of any one of the first aspect and any possible embodiment by executing the instructions stored by the memory.
In a fourth aspect, there is provided a computer readable storage medium having stored thereon computer instructions which, when run on a computer, cause the computer to perform the method of any one of the first aspect and any possible embodiment.
Drawings
Fig. 1 is a schematic scene diagram of a method for transmitting a virtual desktop image according to an embodiment of the present disclosure;
fig. 2 is a flowchart of a method for transmitting a virtual desktop image according to an embodiment of the present application;
FIG. 3 is a schematic diagram illustrating a process for processing blocks in a virtual desktop image according to an embodiment of the present disclosure;
fig. 4 is a flowchart of an apparatus for transmitting a virtual desktop image according to an embodiment of the present application;
fig. 5 is a flowchart of an apparatus for transmitting a virtual desktop image according to an embodiment of the present disclosure.
Detailed Description
In order to better understand the technical solutions provided by the embodiments of the present application, the following detailed description is made with reference to the drawings and specific embodiments.
In order to transmit the bandwidth consumed by the virtual desktop image, an embodiment of the present application provides a method for transmitting a virtual desktop image, and an application scenario related to the method is described below.
Referring to fig. 1, the scenario shown in fig. 1 includes a terminal device 11 and a server 12, the terminal device 11 has a client installed therein, and the terminal device 11 corresponds to a user, that is, the user can perform corresponding operations on the terminal device. The client may be a software application installed in the terminal device, or may be an applet embedded in other application software, or the like. The terminal device 11 is, for example, a personal computer or the like. The server 12 may be a single server or a cluster of servers.
Specifically, the terminal device 11 establishes a remote desktop connection with the server 12 through a client, the client receives a corresponding operation of a user, the server 12 processes the operation according to the user to obtain a corresponding virtual desktop image, performs blocking processing on the virtual desktop image, and queries a hash value of the block in a cache, where the cache may be independent from the client and in the same local area network as the client, and the cache may also be a part of the client. The server 12 determines which information of each block is sent according to the corresponding query result, and the client recovers to obtain the virtual desktop image after receiving the corresponding information of each block.
Based on the application scenario shown in fig. 1, a method for transmitting a virtual desktop image in the embodiment of the present application is described below with reference to the flowchart of fig. 2. The method is performed by the server 12 in fig. 1.
Before transmitting the current virtual desktop image to be transmitted, the server 12 first executes step 201, that is, divides the virtual desktop image to be transmitted into a plurality of blocks.
Specifically, in the remote desktop connection, the virtual desktop image of the previous frame may have a partially same area as the virtual desktop image to be transmitted currently, and therefore, in order to reduce the number of directly transmitted virtual desktop images as much as possible, the server 12 may divide the virtual desktop image into a plurality of blocks.
The method comprises the following steps:
the server 12 divides the virtual desktop image into a plurality of equally sized tiles in a fixed size.
And a second division mode:
the server 12 divides the virtual desktop image into a plurality of blocks according to the image feature value of the virtual desktop image.
Specifically, the server 12 may calculate an image feature value of each pixel point in the virtual desktop image according to a preset algorithm, where the preset algorithm is an edge algorithm or a gradient algorithm, and the image feature value is, for example, an image texture value, an image pixel value, or an image contour value.
The server 12 determines the size of each block in the virtual desktop image according to the image feature value distribution of the virtual desktop image. The server 12 may store a preset range in advance, and when a plurality of blocks are divided, it is ensured that the image characteristic values of the blocks are all within the preset range, so that the image characteristic values of the blocks are ensured to be similar by the division, and the condition that the blocks are blocked when being transmitted due to the fact that the data size contained in a certain block is too large is avoided.
In one possible embodiment, several pixel sizes may be pre-stored in the server 12, and the virtual desktop image is divided into a plurality of blocks according to the several pixel sizes and the image feature value of the virtual desktop image. In the embodiment of the present application, the calculation amount of the server 12 can be reduced while ensuring that the data amounts contained in the respective blocks are similar as much as possible. The pixel size may be understood as a specified area size, e.g. 300 x 300.
For example, three pixel sizes are prestored in the server, the server divides the virtual desktop image according to the three pixel sizes, when the virtual desktop image is divided according to a first scale, the obtained image characteristic value of the block is smaller than the minimum value of the preset range, the virtual desktop image is divided according to a second scale larger than the first scale, the obtained image characteristic value of the block is located in the preset range, one block is obtained, and by analogy, the virtual desktop image is divided to obtain a plurality of blocks.
In one embodiment, the server 12, when dividing the virtual desktop image, includes at least two tiles having an overlap in the plurality of tiles.
Specifically, since the user often performs the moving, dragging, and scrolling operations at the client, under these circumstances, the virtual desktop image generally has a local area that changes, and when the server 12 divides the virtual desktop image, if there is overlap between every two blocks, the blocking manner is matched with the operation of the user, so as to improve the probability of querying the hash value of the block in the cache. Here, having an overlap means that the same pixel region exists between two blocks, and the size of the same pixel region is not limited herein. In general, two completely overlapping partitions are not divided, and thus in general, two partitions having an overlap are both partially overlapping, i.e., there is a partially identical region between the two partitions.
For example, referring to fig. 3, the virtual desktop image is divided into five blocks a, B, C, D, E (as shown in B in fig. 3) as shown in fig. a, and it can be seen from B in fig. 3 that there is a partial overlap between block B and block C, and there is a partial overlap between block D and block C.
In one possible embodiment, the server 12 may determine the location of each of the plurality of partitions at the same time as the plurality of partitions are divided, or after the plurality of partitions are divided. The specific representation form of the position can be various, such as numbers, words and the like, and the specific representation form of the position is not limited herein.
After the server performs step 201, step 202 is performed to determine whether the hash value of each of the plurality of chunks matches the hash value in the cache. If the hash value of the current block of the plurality of blocks matches the hash value in the cache, go to step 203, and if the hash value of the current block of the plurality of blocks does not match the hash value in the cache, go to step 205. Step 202 will be explained first.
Specifically, the cache may be pre-stored with hash values of blocks of each frame of image in the virtual desktop image that has been processed and corresponding blocks, and the cache in this embodiment of the present application may further include hash values of corresponding lines in the blocks in the virtual desktop image that has been processed, hash values of corresponding pixel units in the virtual desktop image that has been processed, pixel values of corresponding pixel units, data contents of corresponding blocks, data contents of corresponding lines, data contents of corresponding pixel units, and the like. After dividing the virtual desktop image to be transmitted into a plurality of blocks, the server 12 queries the hash value of each block in the cache.
As an embodiment, if the stored data in the cache is too much, the occupied storage capacity may be larger, and if the stored data in the cache is too little, the probability that the hash value of the block matches the hash value in the cache may be lower.
There are many matching orders in which the server 12 matches the hash values of the respective chunks in the cache, and an example is described below.
The method I comprises the following steps:
the hash value of each block can be calculated respectively, and then the hash values of the blocks are matched in sequence in the cache according to a preset sequence.
The second method comprises the following steps:
the server 12 determines whether to calculate a hash value of a block having an overlap with the current block, based on the matching result of the current block. If the server 12 determines that the hash value of the current chunk matches the hash value in the cache, the hash value of the chunk having an overlap with the current chunk is not computed. If the server 12 determines that the hash value of the current chunk does not match the hash value in the cache, it is necessary to compute the hash value of the chunk that overlaps the current chunk and determine whether the hash value of the chunk that overlaps the current chunk matches the cache.
Specifically, the server 12 calculates the hash value of the current block first, determines that the hash value of the current block matches the hash value in the cache, and the server 12 determines that all blocks overlapping the current block are hit blocks, so that the server 12 does not calculate the hash value of the blocks overlapping the current block and does not need to search the hash value of the blocks overlapping the current block in the cache.
If the server 12 determines that the hash value of the current chunk does not match the hash value in the cache, the server 12 needs to further determine whether the chunk having an overlap with the current chunk matches the hash value in the cache, and if the chunk having an overlap with the current chunk matches the hash value in the cache, determine that the chunk having an overlap with the current chunk belongs to the hit chunk. If the block having an overlap with the current block does not match the hash value in the cache, it is determined that the block having an overlap with the current block belongs to a missed block.
If the server 12 determines that the total number of the missed blocks in the neighborhood of the current block is greater than the preset value, it indicates that the probability that the hash value of the corresponding block is queried in the cache for the current virtual desktop image is relatively low, and therefore, in order to reduce the number of times of invalidating the query cache of the server 12, the number of times of invalidating the query cache may be understood as that the server 12 queries the hash value of the corresponding block in the cache, but the hash value of the block is not found in the cache. If the total number of the missed blocks in the neighborhood of the current block is greater than the preset value, the server 12 determines whether the hash value of the block at the preset fixed position in the virtual desktop image matches the hash value in the cache, that is, the server 12 queries the hash value of the block at the fixed position in the cache, and does not query the hash values of other blocks in the cache any more. The neighborhood of the current block may be understood as a region within a preset distance range with the current block as a center in the virtual desktop image. The preset value may be preset by the server 12 or set by a user.
Continuing with the example of fig. 3, the server 12 calculates the hash value of the block B, and queries the same hash value as the block B in the cache, and at this time, the server 12 does not need to calculate the hash value of the block C.
Continuing with fig. 3 as an example, the preset value is 1, if the hash value identical to the chunk B is not found in the cache, and the hash value of the chunk C is not found in the cache, the server 12 determines that the probability that the hash value of the chunk in the virtual desktop image is queried in the cache is low, the server 12 may query the hash values of the chunk a and the chunk E at fixed positions in the cache, and the server 12 does not query the hash values of other chunks in the cache any more, thereby reducing the query times of the server 12.
In the second mode, according to the matching result of the current block, the matching condition of overlapping blocks with the current block is determined, so that the calculation amount of block hash value calculation can be relatively reduced, the number of times of cache inquiry is relatively reduced, and the efficiency of virtual desktop image transmission is improved. Moreover, if the number of the missed blocks in the neighborhood of the current block is too large, the probability that the hit block appears in the virtual desktop image is low, and at this time, only the blocks at several fixed positions in the virtual desktop image need to be matched with the cache, so that the invalid matching times of the server 12 can be relatively reduced.
It should be noted that the current chunk in this document may be understood as a chunk currently being processed by the server 12, and any chunk of the plurality of chunks may be considered as the current chunk when being processed by the server 12.
In the event that the server 12 determines that the hash value of the current chunk matches the hash value in the cache, step 203 is performed, i.e., the current chunk is determined to be a hit chunk, which may be understood as the current chunk that the server 12 has sent to the client before.
After determining that the current chunk is a hit chunk, the server 12 executes step 204 to send the hash value of the hit chunk and the location of the hit chunk in the virtual desktop image to the client. The hash value of the hit block is used to index the hit block in the cache. The hit block is used for the client to restore the virtual desktop image at the position of the virtual desktop image.
After receiving the hash value and the position of the hit block, the client may obtain the current block in the cache according to the hash value, and determine the position of the current block in the virtual desktop image according to the position.
In the embodiment of the present application, if it is determined that the hash value of the current block matches the hash value in the cache, the server 12 may send the hash value and the position of the current block to the client, and the block does not need to be sent to the client, so that the amount of transmitted data is relatively reduced, and the requirement for bandwidth is reduced.
Continuing with FIG. 3, if the server 12 queries the cache for the hash value for chunk A, indicating that the client has previously received the same chunk as chunk A, the server 12 sends the client the hash value for chunk A and the location in the current virtual desktop image.
In the case that the server 12 determines that the hash value of the current chunk does not match the hash value in the cache, step 205 is executed, that is, the current chunk is determined to be a missed chunk, and the missed chunk may indicate that the client has not received the current chunk before.
After determining that the current chunk is a missed chunk, server 12 performs step 206 of querying the cache based on the hash value of the current line in the missed chunk. If the server 12 looks up the hash value of the current line in the missing block in the cache, the server proceeds to step 207. If the server 12 does not look up the hash value for the current line in the missing block in the cache, the server proceeds to step 208.
The current line refers to one line of the missed blocks currently being processed by the server 12, and the server 12 can treat any line of the current block as the current line. A row in a hit block may be understood as an area in the hit block that is a single pixel wide and the same length as the hit block.
Specifically, when the user performs the operations of moving, dragging, and scrolling, the virtual desktop image generally changes locally, and at this time, the hash value of the current block is not found in the cache, but the server 12 may have sent local data in the current block before, so in order to reduce the sending amount of the server 12, the server 12 continues to query the hash value of the current line in the missed block in the cache.
For example, with continued reference to fig. 3, if the server 12 determines that the hash value of the chunk D is not found in the cache, the server 12 divides the chunk D into a plurality of lines (D1, D2, D3, and D4 in c in fig. 3), and the server 12 calculates the hash value of each line in the chunk D and finds the hash value of each line in the cache.
As discussed above, in the case that the server 12 queries the cache for the hash value of the current line in the missing block, the server performs step 207, i.e. sends the hash value and the position of the current line in the missing block to the client.
Specifically, if the server 12 queries the hash value of the current line in the missed block in the cache, which indicates that the client has previously received the current line in the missed block, in this case, the server 12 may send the hash value of the current line of the missed block and the position of the current line in the virtual desktop image to the client, and the client obtains the current line from the cache according to the hash value of the current line and determines the position of the current line in the current virtual desktop image according to the position.
Continuing with the example of fig. 3, if the server 12 queries the cache for the hash value of line D1 in chunk D, the server 12 may send the hash value of line D1 and the location to the client.
As discussed previously, if the server 12 does not look up the hash value of the current line in the missing block in the cache, the server performs step 208 to determine whether the current line in the missing block is a block of text or an image. If it is determined that the current behavior image block is in the missed block, the server 12 proceeds to step 209. If it is determined that the current line in the missed block is a block of text, the server 12 proceeds to step 210.
The text block can be understood that the image features of the current line in the missed block better conform to the text image features, and generally the text block comprises white background and text, so that the distribution difference of the text features of each pixel point in the text block is large. The image blocks are distributed relatively uniformly and continuously, so that the image feature distribution of each pixel point in the image blocks is relatively small in difference. The following illustrates how the current line in the missing block is a block of text or an image.
The first method comprises the following steps:
in the foregoing step 201, after obtaining a plurality of blocks by division according to the image feature value, after obtaining the image feature value of each block, it may be determined whether each block belongs to a text block or an image block according to the image feature value.
Specifically, if the image feature value is more biased to the text feature distribution, the current block is determined to be a text block. And if the image characteristic value is more biased to the image characteristic distribution, determining that the current block is an image block, if the current block is a character block, determining that each line in the current block belongs to the character block, and if the current block is the image block, determining that each line in the current block belongs to the image block.
In the first way of determining the current behavior text block or image block discussed above, the server determines whether each block belongs to a text block or an image block at the same time as determining the image feature value of each block, so that the processing amount of the server 12 can be relatively reduced.
And the second method comprises the following steps:
the server 12 obtains the image feature values of the current line in the non-hit block according to a preset algorithm, determines the current line as a text block if the image feature values of the current line in the non-hit block are more biased to the feature distribution of the image, and determines the current line as an image block if the image feature values are more biased to the feature distribution of the image.
Since the pixel information included in the image block is complex and the consumed storage space is relatively large, if the current line belonging to the image block is divided, on one hand, more storage space is consumed, and on the other hand, the probability that the hash value of the current line is queried in the cache is not large. Therefore, in this embodiment of the present application, if it is determined that the current line belongs to an image block, the server 12 performs step 209, that is, compresses the current line in the missed block, sends the current line in the compressed missed block to the client, sends the hash value of the current line of the compressed missed block to the client, and writes the hash value of the current line of the compressed missed block into the cache.
And after obtaining the compressed current line of the missed block, the client decompresses the current line of the missed block to obtain the decompressed current line of the missed block, and writes the decompressed current line of the missed block into a cache.
The cache corresponding to the client and the cache corresponding to the server 12 may be the same or different. The same means that the data is stored together and accessible and writable by both the client and server 12. The above description is given by taking the same cache accessed by the client and the same cache accessed by the server 12 as an example.
When the cache corresponding to the client and the cache corresponding to the server 12 are not the same, the cache corresponding to the server 12 stores the hash value of the corresponding block, the hash value of the corresponding line, and the hash value of the corresponding pixel unit. The cache corresponding to the client stores the hash value of the corresponding block, the hash value of the corresponding line, the hash value of the corresponding pixel unit, the data content of the corresponding block, the data content of the corresponding line, and the data content of the corresponding pixel unit.
There are various ways to compress the current row in the missing block belonging to the image block, and the server 12 may use an image lossy compression algorithm to compress the current row in order to reduce the bandwidth consumption.
In the second way, the server 12 determines the image feature value of the current row again, and determines whether the current row is a text block or an image block based on the image feature value of the current row, so as to obtain a more accurate determination result.
In this embodiment, if it is determined that the text block is currently a line, the server 12 performs step 210, that is, queries the cache according to the hash value of the current pixel unit in the current line in the missed block.
Specifically, if the server 12 determines the current behavior word block, the server 12 calculates a hash value of the current pixel unit and searches the hash value of the current pixel unit in the cache.
The pixel unit may be formed by one or more pixels, and the size of the pixel unit is smaller than that of the current line. The current pixel cell is the pixel cell currently being processed by the server 12. When the server 12 processes any pixel unit in the current line of the miss block, the pixel unit can be regarded as the current pixel unit.
For example, continuing with FIG. 3 as an example, the server 12 does not find the hash value of the D2 line in the cache, and at this time, the server 12 may divide the D2 line into a plurality of pixel units (D2-1, D2-2, and D2-3 as D in FIG. 3), and then query the cache for the hash values of D2-1, D2-2, and D2-3.
If the hash value of the current pixel unit is found in the cache, the server 12 executes step 211, i.e. the hash value and the location of the current pixel unit can be sent to the client.
After receiving the hash value and the position of the current pixel unit, the client acquires the current pixel unit from the cache according to the hash value, and determines the position of the current pixel unit in the virtual desktop image according to the position of the current pixel unit.
In the case that the hash value of the current pixel unit is found in the buffer, the following two cases may occur, which are described below separately:
one of the situations is:
the hash value of the pixel unit is matched with the hash value of a certain pixel unit of the current block, and it can be understood that two identical pixel units exist in the current block, in this case, the position of the current pixel unit specifically includes a pixel offset and a pixel unit length.
The pixel offset refers to a distance from an initial pixel of the current block to an initial position of a pixel in the pixel unit, and the pixel unit length can be understood as how many pixels the pixel unit includes.
In another case:
the hash value of the pixel unit is matched with the hash value of a pixel unit in the cache, which is not in the current block. In this case, the location specifically includes a tile identification, a pixel offset, and a pixel unit length. Since the hash value of the pixel unit does not match the hash value of the pixel unit of the current block, the server 12 needs to send the block identifier of the corresponding block to the client, so that the client can accurately obtain the current pixel unit from the cache.
In one possible embodiment, due to the small size of the pixel unit, the hash values corresponding to two different pixel units may coincide. In this case, if the server 12 sends the hash value and the position to the client after determining that the hash value matching the pixel unit exists in the cache, the client may obtain an incorrect pixel unit according to the hash value, and therefore, in order to avoid a situation that the client obtains the incorrect pixel unit because the hash values are the same, the server 12 in this embodiment determines that the pixel value of the current pixel unit can be queried in the cache before performing step 211.
Specifically, the cache also stores pixel values of pixel units in the previous frames of virtual desktop images, after the server 12 queries the hash value of the current pixel unit in the cache, it needs to further determine whether a pixel value identical to the pixel value of the current pixel unit exists in the cache, if so, it is determined that the client has received the pixel unit identical to the current pixel unit before, and the server performs step 211.
If the hash value of the current pixel unit is not found in the cache, or the pixel value identical to the pixel value of the current pixel unit is not found in the cache, the server 12 performs step 212, i.e., compresses the current pixel unit, sends the compressed current pixel unit to the client, and sends the compressed hash value of the current pixel unit to the client. And after receiving the compressed current pixel unit, the client decompresses the current pixel unit to obtain the current pixel unit, and writes the decompressed current pixel unit into a cache.
Wherein, the compression of the current pixel unit belonging to the text block can adopt a text coding algorithm. Text class encoding Algorithms such as LZ Series Dictionary Algorithms (LZ Series Dictionary Algorithms), run-length class Algorithms, entropy encoding, and the like, and the specific type of compression algorithm is not limited herein.
As an example, server 12 may not perform steps 208 and 209.
Specifically, the server 12 does not need to determine whether the current line of the missed block is a text block or an image block, directly queries the cache according to the hash value of the current pixel unit in the current line of the missed block, and sends the hash value and the position of the current pixel unit to the client if the hash value of the current pixel unit in the current line of the missed block is queried in the cache.
And if the hash value of the current pixel unit in the current line of the miss block is not inquired in the cache, compressing the current pixel unit, and sending the compressed current pixel unit and the compressed hash value of the current pixel unit to the client.
As an embodiment, the cases shown in step 203-step 204, step 208-step 209, step 208-step 211, and step 208-step 212 in fig. 2 are all four optional cases.
Based on the same inventive concept, the embodiment of the present application provides an apparatus for transmitting a virtual desktop image, the apparatus is equivalent to the server 12 discussed above, please refer to fig. 4, the apparatus includes a processing module 401 and a sending module 402, wherein:
the processing module 401 is configured to divide the virtual desktop image to be transmitted to obtain a plurality of blocks, determine whether a hash value of each of the plurality of blocks matches a hash value in the cache, determine that the block is a hit block if the hash value of each of the plurality of blocks matches the hash value in the cache, and query the cache according to the hash value of any one row in the miss block if the hash value of each of the plurality of blocks matches the hash value in the cache;
a sending module 402, configured to send the hash value of any line and the position of any line in the virtual desktop image to the client if the hash value that is the same as the hash value of any line in the miss block is found in the cache.
In a possible embodiment, the processing module 401 is further configured to, after querying the cache according to the hash value of any line in the missed block, query the cache according to the hash value of any pixel unit in any line in the missed block if no identical hash value of any line in the missed block is queried in the cache;
a sending module 402, configured to send the hash value of any pixel unit and the position in the virtual desktop image to the client if any pixel unit in any row of the missed block is found in the cache;
the sending module 402 is further configured to, if any pixel unit in any row of the miss block is not found in the cache, compress any pixel unit, and send any compressed pixel unit to the client, so that the client decompresses any compressed pixel unit, and caches any decompressed compressed pixel unit.
In a possible embodiment, the processing module 401 is further configured to:
before querying the cache according to the hash value of any pixel unit in any line in the missed block, determining that any line in the missed block belongs to the text block.
In a possible embodiment, the processing module 401 is further configured to:
before any pixel unit hash value and the position in the virtual desktop image are sent to the client, the pixel value of any pixel unit in any line in the missed block inquired in the cache is determined.
In a possible embodiment, the processing module 401 is further configured to, after querying the cache according to the hash value of any line in the missed block, compress any line in the missed block if no identical hash value of any line in the missed block is queried in the cache and any line in the missed block belongs to the image block;
the sending module 402 is further configured to send any line of the compressed missed block to a client, so that the client decompresses any line of the compressed missed block, and caches any line of the decompressed missed block.
In a possible embodiment, the processing module 401 is specifically configured to:
if the hash value of any one of the plurality of blocks is matched with the hash value in the cache, determining that the blocks partially overlapped with any one block are all hit blocks;
if the hash value of any one of the plurality of blocks is not matched with the hash value in the cache, judging whether the hash value of the block partially overlapped with any one block is matched with the hash value in the cache or not;
if the hash value of the block partially overlapped with any block is not matched with the hash value in the cache, determining the block partially overlapped with any block as a miss block;
and if the total number of the missed blocks in the neighborhood of any one block is larger than a preset value, inquiring whether a hash value identical to the hash value of the corresponding block at a preset fixed position in the virtual desktop image exists in the cache.
In a possible embodiment, the processing module 401 is specifically configured to:
determining an image characteristic value of the virtual desktop image;
dividing the virtual desktop image according to different pixel sizes to obtain a plurality of blocks according to the image characteristic value of the virtual desktop image; wherein the image characteristic value of each of the plurality of blocks is within a preset range.
Based on the same inventive concept, the present application provides an apparatus for transmitting a virtual desktop image, the apparatus corresponds to the server 12 discussed above, please refer to fig. 5, the apparatus includes a processor 501 and a memory 502, wherein:
the memory 502 stores instructions executable by the processor 501, and the processor 501 implements the method as in fig. 2 by executing the instructions stored by the memory 502.
The processing module 401 in fig. 4 may be implemented by the processor 501 in fig. 5 as an embodiment.
It should be noted that fig. 5 illustrates one processor 501, but the number of processors 501 is not limited in practice.
Based on the same inventive concept, the embodiments of the present application provide a computer-readable storage medium storing computer instructions, which, when executed on a computer, cause the computer to perform the method as in fig. 2.
As will be appreciated by one skilled in the art, embodiments of the present application may be provided as a method, system, or computer program product. Accordingly, the present application may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present application may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and so forth) having computer-usable program code embodied therein.
The present application is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the application. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
While the preferred embodiments of the present application have been described, additional variations and modifications of these embodiments may occur to those skilled in the art once they learn of the basic inventive concepts. Therefore, it is intended that the appended claims be interpreted as including preferred embodiments and all alterations and modifications as fall within the scope of the application.
It will be apparent to those skilled in the art that various changes and modifications may be made in the present application without departing from the spirit and scope of the application. Thus, if such modifications and variations of the present application fall within the scope of the claims of the present application and their equivalents, the present application is intended to include such modifications and variations as well.

Claims (16)

1. A method of transmitting a virtual desktop image, comprising:
dividing a virtual desktop image to be transmitted to obtain a plurality of blocks; wherein the plurality of partitions includes at least two partitions with overlap; the graphic characteristic value of each block in the plurality of blocks is in a preset range;
judging whether the hash value of each of the plurality of blocks is matched with the hash value in the cache, if so, determining the block as a hit block, otherwise, determining the block as a miss block;
querying the cache according to the hash value of any line in the missed block;
and if the hash value identical to the hash value of any line in the missed block is inquired in the cache, sending the hash value of any line and the position of any line in the virtual desktop image to a client.
2. The method of claim 1, after querying the cache based on the hash value of any line in the missed block, comprising:
if the same hash value as any line in the missed block is not inquired in the cache, inquiring the cache according to the hash value of any pixel unit in any line in the missed block;
if any pixel unit in any row of the missed block and the cache is found, sending the hash value of any pixel unit and the position of any pixel unit in the virtual desktop image to a client;
if any pixel unit in any row in the miss block is not inquired in the cache, compressing any pixel unit, and sending the compressed pixel unit to a client, so that the client decompresses any compressed pixel unit and caches the decompressed compressed pixel unit.
3. The method of claim 2, wherein prior to querying the cache based on the hash value of any pixel cell in any row of the miss block, comprising:
determining that any row in the missed block belongs to a block of text.
4. The method of claim 3, prior to sending the any pixel cell hash value and the location in the virtual desktop image to a client, comprising:
determining the pixel value of any pixel cell in any row in the miss block that is queried in the cache.
5. The method of claim 1, after querying the cache based on the hash value of any line in the miss block, comprising:
if no hash value which is the same as any line in the missed block is inquired in the cache, and any line in the missed block belongs to the image block, compressing any line in the missed block;
and sending any compressed line of the missed block to the client, so that the client decompresses any compressed line of the missed block and caches any decompressed line of the compressed missed block.
6. The method of any of claims 1-5, wherein determining whether the hash value of each of the plurality of chunks matches the hash value in the cache comprises:
if the hash value of any one of the plurality of blocks is matched with the hash value in the cache, determining that the blocks partially overlapped with the any one block are all hit blocks;
if the hash value of any one of the plurality of blocks is not matched with the hash value in the cache, judging whether the hash value of the block partially overlapped with the any one block is matched with the hash value in the cache or not;
if the hash value of the block partially overlapped with the any block is not matched with the hash value in the cache, determining the block partially overlapped with the any block as a miss block;
and if the total number of the missed blocks in the neighborhood of any one block is larger than a preset value, inquiring whether a hash value identical to the hash value of the corresponding block at a preset fixed position in the virtual desktop image exists in the cache.
7. The method of any of claims 1-5, wherein partitioning the virtual desktop image to be transmitted into a plurality of partitions comprises:
determining an image characteristic value of the virtual desktop image;
and dividing the virtual desktop image according to different pixel sizes to obtain a plurality of blocks according to the image characteristic value of the virtual desktop image.
8. An apparatus for transmitting a virtual desktop image, comprising:
the processing module is used for dividing the virtual desktop image to be transmitted to obtain a plurality of blocks, judging whether the hash value of each block in the plurality of blocks is matched with the hash value in the cache, determining the block as a hit block if the hash value of each block in the plurality of blocks is matched with the hash value in the cache, otherwise, determining the block as a miss block, and inquiring the cache according to the hash value of any line in the miss block; wherein the plurality of partitions includes at least two partitions with an overlap; the graphic characteristic value of each block in the plurality of blocks is in a preset range;
and the sending module is used for sending the hash value of any line and the position of any line in the virtual desktop image to a client side if the hash value which is the same as the hash value of any line in the missed block is inquired in the cache.
9. The apparatus of claim 8,
the processing module is further configured to, after querying the cache according to the hash value of any one row in the missed block, query the cache according to the hash value of any one pixel unit in any one row in the missed block if the same hash value as any one row in the missed block is not queried in the cache;
the sending module is further configured to send the hash value of any pixel unit and the position of any pixel unit in the virtual desktop image to a client if any pixel unit in any row of the miss block is found in the cache;
the sending module is further configured to, if any pixel unit in any row in the miss block is not found in the cache, compress the any pixel unit, and send the compressed any pixel unit to a client, so that the client decompresses the compressed any pixel unit, and caches the decompressed any pixel unit.
10. The apparatus of claim 9, wherein the processing module is further to:
and determining that any line in the missed block belongs to a text block before querying the cache according to the hash value of any pixel unit in any line in the missed block.
11. The apparatus of claim 10, wherein the processing module is further to:
and determining the pixel value of any pixel unit in any line in the missed block inquired in the cache before sending the hash value of any pixel unit and the position in the virtual desktop image to a client.
12. The apparatus of claim 8,
the processing module is further configured to, after querying the cache according to the hash value of any one line in the missed block, compress any one line in the missed block if no hash value that is the same as any one line in the missed block is queried in the cache and any one line in the missed block belongs to an image block;
the sending module is further configured to send any compressed row of the missed block to the client, so that the client decompresses any compressed row of the missed block, and caches any decompressed row of the compressed missed block.
13. The apparatus according to any of claims 8-12, wherein the processing module is specifically configured to:
if the hash value of any one of the plurality of blocks is matched with the hash value in the cache, determining that the blocks partially overlapped with the any one block are all hit blocks;
if the hash value of any one of the plurality of blocks is not matched with the hash value in the cache, judging whether the hash value of the block partially overlapped with the any one block is matched with the hash value in the cache or not;
if the hash value of the block partially overlapped with the any block is not matched with the hash value in the cache, determining the block partially overlapped with the any block as a missed block;
and if the total number of the missed blocks in the neighborhood of any one block is larger than a preset value, inquiring whether a hash value identical to the hash value of the corresponding block at a preset fixed position in the virtual desktop image exists in the cache.
14. The apparatus according to any of claims 8-12, wherein the processing module is specifically configured to:
determining an image characteristic value of the virtual desktop image;
and dividing the virtual desktop image according to different pixel sizes to obtain a plurality of blocks according to the image characteristic value of the virtual desktop image.
15. An apparatus for transmitting a virtual desktop image, comprising:
at least one processor, and
a memory communicatively coupled to the at least one processor;
wherein the memory stores instructions executable by the at least one processor, the at least one processor implementing the method of any one of claims 1-7 by executing the instructions stored by the memory.
16. A computer-readable storage medium having stored thereon computer instructions which, when executed on a computer, cause the computer to perform the method of any one of claims 1-7.
CN201910478045.2A 2019-06-03 2019-06-03 Method and device for transmitting virtual desktop image Active CN110297680B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910478045.2A CN110297680B (en) 2019-06-03 2019-06-03 Method and device for transmitting virtual desktop image

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910478045.2A CN110297680B (en) 2019-06-03 2019-06-03 Method and device for transmitting virtual desktop image

Publications (2)

Publication Number Publication Date
CN110297680A CN110297680A (en) 2019-10-01
CN110297680B true CN110297680B (en) 2023-02-17

Family

ID=68027502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910478045.2A Active CN110297680B (en) 2019-06-03 2019-06-03 Method and device for transmitting virtual desktop image

Country Status (1)

Country Link
CN (1) CN110297680B (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113055540B (en) * 2019-12-26 2023-07-14 深信服科技股份有限公司 Image transmission method, server, system and computer readable storage medium
CN113515229B (en) * 2020-04-09 2024-04-09 伊姆西Ip控股有限责任公司 Method, apparatus and computer program product for storing data
CN111951275A (en) * 2020-07-27 2020-11-17 新华三大数据技术有限公司 Image transmission method and device
CN113255488A (en) * 2021-05-13 2021-08-13 广州繁星互娱信息科技有限公司 Anchor searching method and device, computer equipment and storage medium
CN114637870B (en) * 2022-03-14 2023-03-24 重庆大学 Image data processing method, device, equipment and storage medium
CN114422807B (en) * 2022-03-28 2022-10-21 麒麟软件有限公司 Transmission optimization method based on Spice protocol

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104469395A (en) * 2014-12-12 2015-03-25 华为技术有限公司 Image transmission method and device
CN106534859A (en) * 2015-09-11 2017-03-22 中兴通讯股份有限公司 Image transmission method and device based on SPICE protocol
CN107145340A (en) * 2017-03-22 2017-09-08 深信服科技股份有限公司 Virtual desktop image transfer method and device
CN108153573A (en) * 2017-12-26 2018-06-12 合肥中科云巢科技有限公司 Cloud desktop picture update method and virtual machine

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140369413A1 (en) * 2013-06-18 2014-12-18 Vmware, Inc. Systems and methods for compressing video data using image block matching

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104469395A (en) * 2014-12-12 2015-03-25 华为技术有限公司 Image transmission method and device
CN106534859A (en) * 2015-09-11 2017-03-22 中兴通讯股份有限公司 Image transmission method and device based on SPICE protocol
CN107145340A (en) * 2017-03-22 2017-09-08 深信服科技股份有限公司 Virtual desktop image transfer method and device
CN108153573A (en) * 2017-12-26 2018-06-12 合肥中科云巢科技有限公司 Cloud desktop picture update method and virtual machine

Also Published As

Publication number Publication date
CN110297680A (en) 2019-10-01

Similar Documents

Publication Publication Date Title
CN110297680B (en) Method and device for transmitting virtual desktop image
US10936560B2 (en) Methods and devices for data de-duplication
US9753937B2 (en) File aware block level deduplication
EP3197167B1 (en) Image transmission method and apparatus
US20180285014A1 (en) Data storage method and apparatus
US10817178B2 (en) Compressing and compacting memory on a memory device wherein compressed memory pages are organized by size
CN107391761B (en) Data management method and device based on repeated data deletion technology
CN105917304A (en) Apparatus and method for de-duplication of data
CN114817651B (en) Data storage method, data query method, device and equipment
CN116233111A (en) Minio-based large file uploading method
CN110888918A (en) Similar data detection method and device, computer equipment and storage medium
CN106682130B (en) Similar picture detection method and device
CN107239226B (en) Data deduplication method, terminal and server
US20170124107A1 (en) Data deduplication storage system and process
CN109697136B (en) Data recovery method, device and system
CN109076110B (en) Image transmission method, image transmission device and storage medium
CN110958212B (en) Data compression method, data decompression method, device and equipment
CN104836632A (en) Network data transmission management method and system
CN112799978B (en) Cache design management method, device, equipment and computer readable storage medium
CN113111086B (en) Data storage and query response method and block execution method
CN112068986B (en) Method, apparatus and computer program product for managing backup tasks
CN106817386B (en) Data processing method and system for remote service under multiple sessions
US11080145B1 (en) Dictionary synchronization over a transport with guaranteed ordering
CN107273213B (en) Calculation control method, network card and electronic equipment
CN112860423A (en) Video memory management method and related product

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant