Real-time conversion of macroblocks to signed distance fields for improving text clarity in video streaming

By identifying and converting macroblocks containing text to signed distance field values, the system maintains text intelligibility and clarity in video processing systems, addressing the issue of blurry text caused by high compression ratios.

JP2025534221APending Publication Date: 2025-10-15ATI TECHNOLOGIES ULC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2025514328
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-09-12
Filing Date
2023-09-07
Publication Date
2025-10-15

AI Technical Summary

Technical Problem

Video processing systems face challenges in maintaining text intelligibility as video compression increases, leading to blurry text and reduced visual clarity due to high compression ratios and sub-pixel anti-aliasing techniques.

Method used

The system identifies macroblocks containing text and replaces their pixel color information with signed distance field (SDF) values, transmitting this information along with metadata to the receiver, which converts it back to pixel color information for improved text clarity.

Benefits of technology

This approach enhances text clarity and sharp edges in video frames by reducing high-frequency information loss, allowing users to easily distinguish characters and symbols.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025534221000001_ABST
    Figure 2025534221000001_ABST
Patent Text Reader

Abstract

Apparatuses and methods are provided for performing efficient video transmission. In various embodiments, a computing system includes a transmitter that transmits a video stream over a network to a receiver. Before encoding a video frame, the transmitter identifies a first set of one or more macroblocks of the video frame that include text. The transmitter replaces pixel color information with pixel distance information for the first set of one or more macroblocks. The transmitter inserts, into metadata information, an index that identifies the first set of one or more macroblocks and specifies color values ​​of pixels in the first set of one or more macroblocks. The transmitter encodes the video frame and transmits it along with the metadata information to a receiver. The receiver uses the metadata information to restore the original pixel colors and maintain text clarity in an image rendered on a display device.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Description of Related Art Video processing algorithms are complex and involve many different functions. Computing systems use advanced processors to meet high computational demands. The complexity of video processing increases as display resolutions increase. High-definition video encoding applications are also growing rapidly in the consumer market space. Furthermore, video processing becomes more complex as available data bandwidth decreases and processing occurs in real time. For example, desktop streaming services have become common and include services that allow users to access various content hosted on remote servers in real time over a network such as the Internet. The content is presented in a virtual computing environment on the user's computing device, such as a laptop computer, desktop computer, etc. Remote desktop services (RDS) provide a replicated view of the work desktop environment typically provided on a user's work desktop computer, but are now presented on the user's remote computing device. Remote applications are hosted or executed on a virtual machine (VM), but the application appears as a local application running on the user's remote computing device.

[0002] A video game (or gaming) streaming service is another example of a service that provides real-time presentation of content on a user's remote computing device, where the content is updated in real time based on user input. A live streaming service that broadcasts live content of a user giving a presentation is yet another example of such a real-time service. To avoid skips or glitches in the video content on the monitor or screen of the user's remote computing device, a video encoder increases the video compression rate prior to transmitting the video frames over a network to the user's remote computing device.

[0003] It is common for certain regions of a video frame corresponding to an image viewed on the screen of a user's remote computing device to contain blocks of text. For example, video frames corresponding to remote desktop services applications often contain text. The visual clarity of these certain regions of a video frame, such as certain macroblocks, decreases as the video compression ratio increases. As the compression provided by a video encoder increases, the text within these certain macroblocks may appear blurry due to a lack of sharp contrast at the edges of the text. When sub-pixel anti-aliasing techniques are used, the resulting compressed pixel values ​​may cause additional color to appear at the edges of the text, further reducing visual clarity.

[0004] In view of the above, what is desired is a method and system for performing efficient video transmission that maintains text intelligibility. [Brief explanation of the drawings]

[0005] [Figure 1] FIG. 1 is a generalized block diagram of a video processing system. [Figure 2]FIG. 1 is a generalized block diagram of a streamed desktop. [Figure 3] FIG. 1 is a generalized block diagram of a computing system. [Figure 4] 1 is a generalized block diagram of a method for performing efficient video transmission that maintains text intelligibility. [Figure 5] 1 is a generalized block diagram of a method for supporting efficient video transmission that maintains text intelligibility. DETAILED DESCRIPTION OF THE INVENTION

[0006] While the invention is susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the drawings and detailed description are not intended to limit the invention to the particular forms disclosed, but on the contrary, the invention is intended to cover all modifications, equivalents, and alternatives falling within the scope of the invention as defined by the appended claims.

[0007] In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, those skilled in the art should recognize that the present invention may be practiced without these specific details. In some instances, well-known circuits, structures, and techniques have not been shown in detail to avoid obscuring the present invention. Furthermore, it will be understood that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some elements are exaggerated relative to other elements.

[0008] Various systems, devices, and methods are disclosed for performing efficient video transmission. In various embodiments, a computing system includes a transmitter that transmits a video stream to a receiver over a network such as the Internet. In one embodiment, the transmitter is a remote server, and the receiver is a user's computing device that communicates with the remote server over the network. The transmitter supports a receiver that runs a streaming service, such as a desktop streaming service, a live streaming service, a video game streaming service, etc. The streaming service provides real-time updates of video content based on input from a user when the user runs the streaming service on the receiver. In some embodiments, the remote server includes accelerated processing unit (APU) circuitry that includes multiple different integrated circuits, each providing a different function. For example, the APU includes at least one general-purpose processing unit, such as a central processing unit (CPU), having multiple cores capable of executing instructions of a general-purpose instruction set architecture (ISA). The APU also includes a parallel data processing unit, such as a graphics processing unit (GPU), that includes circuitry for one or more processor cores with a single instruction multiple data (SIMD) parallel architecture. The APU further includes a video encoder for compressing video frames of images to be rendered on a display device of a user's computing device.

[0009] Hardware, such as a transmitter circuit, receives rendered source data for an image. For example, based on commands generated by a CPU, a GPU renders video frames corresponding to the image. A video encoder encodes (i.e., compresses) the rendered video frames by dividing the video frames into macroblocks and generating a compressed bitstream. As used herein, a "bitstream" is a sequence of bits. The video encoder stores the generated (and compressed) bitstream in a buffer before the transmitter transmits the compressed bitstream over a network to a receiver. However, before the video encoder compresses the macroblocks, one or more of the transmitter's CPU, GPU, or another integrated circuit identifies which one or more macroblocks of the video frame consist entirely of rendered text. These one or more macroblocks provide a first set of one or more macroblocks for the video frame. If no such macroblocks exist in the video frame, the transmitter processes the video without additional steps and moves on to the next video frame. The transmitter circuitry may use any of a variety of techniques to detect the first set of one or more macroblocks. Examples of these techniques are any of a variety of edge-based algorithms that rely on the calculated edge density or calculated edge gradient of a macroblock, summing the counts of these values ​​in one or more histograms, and analyzing the one or more histograms for text detection.

[0010] The transmitter replaces the first data representation of the first set of one or more macroblocks with a second data representation that differs from the first data representation. In one embodiment, the first data representation includes pixel information, such as one or more color values ​​corresponding to one or more color components. Typically, for black and white images, a single color value corresponding to a single gray-level color component is used, and the color value is a positive integer ranging from 0, which indicates black, to 255, which indicates white. Thus, a single byte (8 bits) can be used to represent a pixel. For color images, three or more color values ​​correspond to three or more color components. In one example, three color values ​​are used to represent red, green, and blue components. If each color component uses one byte, three bytes are used to represent a pixel. However, after replacing the macroblocks identified in the previous step as the first set of one or more macroblocks, the pixels in the first set of macroblocks no longer represent pixel color data. Rather, the pixels in the first set of macroblocks represent the nearest pixel distance to the surface of the identified rendered text.

[0011] In one embodiment, the distance values ​​in the second data representation for pixels in a macroblock are signed distance field (SDF) values ​​for the pixel. The SDF values ​​represent the shortest distance between the corresponding pixel and the glyph in the macroblock that is closest to that pixel. As used herein, a "glyph" is a graphical symbol used to represent an alphabetic character. For example, the alphabetic character "A" has a particular graphical symbol (or glyph) that varies based on a selected font, a selected text size, and selected characteristics such as italic type, bold type, etc. In another embodiment, the values ​​in the second data representation for pixels in a macroblock encode the coordinates of the closest point on the surface of the glyph and a one-dimensional representation of the normal vector of that surface. It is possible and contemplated that various other distance information corresponding to pixels in a macroblock and the closest glyph can be used in the second data representation.

[0012] The transmitter circuitry inserts one or more indicators identifying the first set of one or more macroblocks into metadata information corresponding to the video frame. The transmitter also inserts indicators specifying color values ​​of pixels in the first set of one or more macroblocks into the metadata information. Generally, rendered text includes only a foreground color (the color of the glyphs) and a background color. In such cases, only two color values ​​are transmitted per macroblock. In another embodiment, additional color values ​​are transmitted to account for multi-color text along with information describing which regions of the macroblock use which color values. A video encoder compresses (encodes) macroblocks of a video frame. Thus, the transmitter encodes one or more macroblocks that include pixel color information and additionally encodes one or more macroblocks in which the pixel color information has been replaced with pixel distance information. However, the video encoder does not receive the metadata information or any information identifying the first set of one or more macroblocks. Thus, the video encoder does not know which macroblocks include pixel color information and which macroblocks include pixel distance information.

[0013] The transmitter then transmits the metadata information and the coded macroblocks of the video frames to a receiver having a display device. The receiver includes a decoder for decoding (decompressing) the coded macroblocks of the video frames. After decoding the macroblocks of the video frames, the receiver converts the pixel distance information into pixel color information. To do so, the receiver uses the metadata information to identify the macroblocks whose pixel color information has been replaced with the pixel distance information. As described above, the metadata information includes at least foreground and background color values. Further details of efficient video transmission that maintains text clarity are provided in the following description of Figures 1-5.

[0014] Referring to FIG. 1, a general block diagram of a video processing system 100 is shown. Video processing system 100 (or system 100) includes at least a transmitter 110 and a receiver 160 that can communicate with each other over a limited bandwidth connection via a network 112. Transmitter 110 and receiver 160 represent any type of communication and / or computing device. For example, in various embodiments, transmitter 110 and / or receiver 160 are a mobile phone (or smartphone), a tablet, a desktop computer, a laptop computer, a server computer (or server), a gaming console connected to a television, or any other type of computing or communication device. In various embodiments, transmitter 110 and receiver 160 include a network interface (not shown) that supports one or more communication protocols for data and message transfer over network 112. Transmitter 110 transmits video information, such as rendered information corresponding to video frame 140 (or frame 140), to receiver 160. Frame 140 depicts a photograph of a lake overlaid with text data 142, but in other examples, frame 140 may include information for a wide variety of visual information, such as a scene from a sporting event, a scene from a video game, a virtual desktop corresponding to a remote desktop connection, a live stream from a particular user, etc.

[0015] In some embodiments, the transmitter 110 supports a receiver 160 running a streaming service, such as a desktop streaming service, a live streaming service, a video game streaming service, etc. The streaming service provides real-time updates of video content, such as frames 140, based on input from a user as the user runs the streaming service on the receiver 160. The network 140 includes multiple switches, routers, cables, wireless transmitters, and the Internet for transferring messages and data. Thus, in some embodiments, the network interfaces of the transmitter 110 and the receiver 160 support the Hypertext Transfer Protocol (HTTP) for communication across the World Wide Web. In other embodiments, the network interfaces of the transmitter 110 and the receiver 160 support the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), etc. It should also be noted that in some embodiments, one or more wireless links are used to transfer data between the transmitter 110 and the receiver 160. Clock sources such as phase lock loops (PLLs), interrupt controllers, communication fabrics, data buses, power controllers, memory controllers, interfaces for input / output (I / O) devices, etc. for each of the transmitter 110 and receiver 160 are not shown in the system 100 for ease of illustration.

[0016] The circuitry of the transmitter 110 may provide any number and type of processors and memory devices. In one embodiment, the circuitry of the transmitter 110 includes an accelerated processing unit (APU) 120 on a motherboard that includes a general-purpose central processing unit (CPU) 122, a graphics processing unit (GPU) 124, and a video encoder 126 (or encoder 126). In another embodiment, the CPU 122 is in a package on the motherboard, and one or more slots (sockets) on the motherboard contain a video graphics card having the GPU 124 and one or more additional GPUs. In yet other embodiments, the transmitter 110 includes one or more of an application specific integrated circuit (ASIC), a field programmable array (FGPA), other types of parallel data processors, etc. The memory 116 uses one or more of various random-access memory (RAM), hard disk drives (HDD), solid state drives (SSD), etc. Similarly, the circuitry of receiver 160 may provide any number and type of processor and memory devices, as described above, for implementing processor 170 and memory 180 .

[0017] CPU 122 uses one or more processor cores with circuitry for executing instructions according to any of a variety of predefined general-purpose instruction sets. GPU 124 uses multiple parallel execution lanes in a single instruction multiple data word (SIMD) microarchitecture. In one example, an operating system scheduler executed by CPU 122 and one or more command processors within the GPU schedule commands on the SIMD lanes. In some embodiments, GPU 124 includes a pixel processing pipeline. In other embodiments, the pixel processing pipeline is located external to GPU 124. One or more of the SIMD lanes and pixel processing pipeline perform pixel value calculations, vertex transformations, and other graphics operations such as color management, ambient-adaptive pixel (AAP) modification, dynamic backlight control (DPB), panel gamma correction, and dithering.

[0018] Video encoder 126 encodes (i.e., compresses) the video stream before transmitting it to receiver 160. As used herein, a "compression level" is also referred to as a "compression amount" or "compression ratio." A higher compression level or ratio results in a greater amount of compression and contains a smaller amount of video information. Similarly, a lower compression level or ratio results in a lesser amount of compression and contains a larger amount of video information. In various embodiments, video encoder 126 (or encoder 126) is implemented using any suitable combination of hardware and / or software, such as firmware.

[0019] The encoder 126 generates bits in a bitstream and stores them in a buffer. As used herein, a "bitstream" is a sequence of bits. In some cases, the encoder's output bitstream is measured as a "bitrate," which is the number of bits generated or processed per unit time. For example, in some designs, the bitrate is expressed in units of kilobits per second (kbps) or megabits per second (mbps). As used herein, the terms "macroblock" and "block" are each used to refer to a group of pixels. For example, in one embodiment, a block is a group of 16x16 contiguous pixels that form a square in the displayed image. In other embodiments, blocks (or macroblocks) of other shapes and / or sizes are used.

[0020] Encoder 126 receives the uncompressed, rendered video information and generates bits in the form of a compressed-format bitstream that conforms to a standard video compression specification. Examples of compression specifications or standards include various proprietary and custom-designed codecs, MPEG-2 Part 2, MPEG-4 Part 2, H.264 (MPEG-4 Part 10), H.265 (High Efficiency Video Coding to support compression of 4K video), Theora, RealVideo RV40, VP9, ​​and AV1. The compression provided by encoder 126 is typically lossy; therefore, the output compressed video information lacks some of the information present in the original, rendered, uncompressed video information. Video information is typically divided into frames, and frames may be divided into macroblocks or blocks.

[0021] Due to the lossy nature of compression, encoder 126 determines which of the original, rendered, and uncompressed video information to remove while minimizing visual quality degradation of the image rendered on a display device (not shown) of receiver 160 as viewed by a user. For example, encoder 126 determines which regions of a block or frame of video information to compress with a higher compression rate and which regions to compress with a lower compression rate. In addition, the compression algorithm tracks the amount of data used to represent the video, which is determined by the bit rate, while also tracking the fill levels of buffers that store the compressed video information to avoid underflow and overflow conditions.

[0022] For the above reasons, the encoder 126 faces many challenges to support compression of received and rendered video information while achieving a target compression ratio, minimizing video transmission latency, preventing overflow and underflow conditions in buffers storing output data, and maximizing user-subjective image quality on a display device. Additionally, the encoder 126 often removes higher-frequency information from video frames corresponding to images to maintain a target bit rate. Sharp contrast edges in text are an example of this type of high-frequency information. The visual clarity of these edges is reduced due to video compression. However, replacing pixel color information of macroblocks containing text with pixel distance information, such as SDF values, reduces the high-frequency information. These macroblocks no longer contain abrupt differences in numerical values; rather, they contain smoothly varying values. In one example, the transmitter 110 replaces pixel color values ​​such as (142, 48, 96) with pixel distance values ​​such as (178, 178, 178). The steps used to perform this replacement are further described below with respect to the CPU 122 and APU 120.

[0023] In various embodiments, transmitter 110 transmits frame 140 as a number of macroblocks, depicted by dashed lines placed over frame 140. In one example, frame 140 includes 20 macroblocks. However, frame 140 can include any number of macroblocks based on design requirements and is contemplated. As described above, frame 140 includes a single image having one or more objects, such as a lake, clouds, and a sun object in the sky, and a text box 142 containing one or more glyphs, such as alphabetic characters used to spell the words "text" and "here."

[0024] The CPU 122 translates the instructions of the application's parallel data function calls into commands that can be executed by the GPU 124. The GPU 124 stores the rendered video information of the frame 140 in one or more of a local buffer and memory 116. Before the video encoder 126 compresses the rendered macroblocks, one or more of the CPU 122, GPU 124, or another integrated circuit of the transmitter 110 identifies a first set of one or more macroblocks of the frame 140 that correspond to images containing text, such as the text box 142. In the illustrated embodiment, four of the twenty macroblocks of the frame 140 contain text information. These four macroblocks are highlighted by shaded squares in the metadata information 144 (or metadata 144). The circuitry of the transmitter 110 uses any of a variety of techniques to detect the first set of one or more macroblocks. Examples of these techniques are any of a variety of edge-based algorithms that rely on the calculated edge density or calculated edge gradient of a macroblock, summing the counts of these values ​​in one or more histograms, and analyzing the one or more histograms for text detection.

[0025] The transmitter 110 generates a second set of one or more macroblocks by replacing a first data representation of the first set of one or more macroblocks with a second data representation that differs from the first data representation. In one embodiment, the first data representation includes pixel color information, such as one or more color values ​​for each pixel of the macroblock corresponding to one or more color components. The second data representation does not use the color values ​​of the pixels in the macroblocks. Rather, the second data representation includes a distance value for each pixel in the macroblock.

[0026] In one example, a particular rendered pixel includes pixel color values ​​(142, 48, 96). In one embodiment, each of these pixel color values ​​is an 8-bit value corresponding to a red, green, and blue color value, respectively. These color values ​​range from 0 to 255 based on the 8 bits used to represent the color value. This particular pixel is within a macroblock within any of the four shaded squares corresponding to the macroblock containing text. The CPU 122 or other circuitry of the APU 120 determines a pixel distance value representing the shortest distance between the corresponding pixel and the nearest character of text within the macroblock. In one embodiment, the pixel distance value uses a value of 0.5 to indicate that the pixel is on the surface of the nearest character, a value of 0 to indicate that the pixel is furthest from the surface but located within the character, and a value of 1 to indicate that the pixel is furthest from the surface and located outside the character. Other values ​​and ranges are possible and contemplated.

[0027] In some embodiments, circuitry in the APU 120, such as a CPU, generates the pixel distance value by scaling the maximum color value by the ratio of the pixel distance value to the maximum pixel distance value. In other words, the APU 120 generates the pixel distance value using the formula (maximum color value) × ((pixel distance) / (maximum pixel distance)). If the CPU 122 or other circuitry in the APU 120 determines that the pixel distance value is 0.7 using a range of 0 to 1, with 0.5 on the surface of the character, the APU 120 generates the pixel distance value as 255 × (0.7 / 1), or 178. Instead of representing the pixel with pixel color values ​​(142, 48, 96), the APU 120 now represents the pixel with pixel distance values ​​(178, 178, 178). The APU 120 also updates the metadata 144 with an indicator specifying that the macroblock containing this pixel uses the pixel distance value rather than the pixel color value. The APU 120 also updates the metadata 144 with indicators of both the foreground and background colors. The foreground color is the color of the text, such as one or more glyphs, in a particular macroblock. The background color is the color of the background behind the text in a particular macroblock. The metadata 144 is later used by the receiver 160. However, the encoder 126 does not receive the metadata 144, and the encoder 126 does not know which macroblocks contain pixel color information and which contain pixel distance information.

[0028] In various embodiments, the pixel distance value in the second data representation of a pixel is the pixel's Signed Distance Field (SDF) value. The SDF value represents the shortest distance between the corresponding pixel and the glyph in the macroblock that is closest to that pixel. As used herein, a "glyph" is a graphical symbol used to represent an alphabetic character. For example, the alphabetic character "A" has a particular graphical symbol (or glyph) that varies based on a selected font, a selected text size, and selected characteristics such as italic type, bold type, etc. In another embodiment, the value in the second data representation of a pixel in a macroblock is the shortest distance between the pixel and a normal vector originating from a point on the nearest glyph in the macroblock that is closest to the pixel. It is possible and contemplated that various other distance information corresponding to pixels in the macroblock and the nearest glyph can be used in the second data representation.

[0029] The circuitry of the transmitter 110 inserts into metadata 144 corresponding to the frame 140 one or more indicators identifying a first set of one or more macroblocks, indicated by shaded squares. The transmitter also inserts into the metadata 144 indicators specifying color values ​​of pixels in the first set of one or more macroblocks. For a particular macroblock of the first set corresponding to one of the shaded squares in the metadata 144, the transmitter 110 inserts indicators of both a foreground color and a background color. The foreground color is the color of text, such as one or more glyphs, in the particular macroblock. The background color is the color of the background behind the text in the particular macroblock. The encoder 126 of the transmitter 110 compresses (encodes) the macroblocks of the frame 140. Thus, the encoder 126 compresses one or more macroblocks that include pixel color information and additionally compresses one or more macroblocks that include pixel distance information. The encoder 126 does not know which macroblocks include pixel color information and which include pixel distance information.

[0030] The transmitter then transmits the metadata 144 and the encoded (compressed) macroblocks of the frame 140 to a receiver 160 having a display device. In one embodiment, the transmitter transmits the metadata 144 and the encoded macroblocks of the frame 140 as streaming data 130 over the network 112. The transmitter 110 transmits the streaming data 130 to the receiver 160 based on a received user request from the receiver 160. The data loop from the receiver 160 occurs in real time, starting with a user request generated by the receiver 160 and ending with the streaming data 130 being received, decoded, and displayed by the receiver 160. Combined with the limited bandwidth of the communication between the transmitter 110 and the receiver 160, the processing capabilities of both the transmitter 110 and the receiver 160 need to be efficient.

[0031] The receiver 160 includes a decoder 172 for decoding (decompressing) the encoded macroblocks of the frame 140. Like the encoder 126, the decoder 172 does not receive the metadata 144; the decoder 172 does not know which macroblocks contain pixel color information and which contain pixel distance information. The receiver 160 performs the decoding using the metadata 144. For example, the receiver 160 uses the metadata 144 to identify a third set of one or more macroblocks. After decoding the macroblocks of the frame 140, the receiver 160 converts the pixel distance information of the one or more macroblocks into pixel color information. To do so, the receiver 160 uses the pixel color information stored in the metadata 144. The receiver 160 uses the metadata 144 to identify pixels within the macroblocks that contain text. For the pixel in the previous example with pixel distance value (178, 178, 178), receiver 160 uses the foreground and background color information stored in metadata 144 to convert these values ​​to pixel color value (142, 48, 96).

[0032] Using the above steps, receiver 160 can generate frame 150 having four macroblocks containing text information in text box 152. By encoding and transmitting pixel distance information as described, system 100 can provide text information with improved clarity and sharp edges, allowing a user to easily distinguish alphabetic characters or other symbols presented in the image of frame 150 on the display device (screen or monitor) of receiver 160. Note that the text information in text boxes 142 and 152 can include various types of symbols, with the symbol foreground color and a single background color. The symbols are typically provided by the user via a computer keyboard. Examples of symbols include various types of alphabetic characters, punctuation marks, mathematical operators, parentheses, brackets, etc.

[0033] Turning now to FIG. 2 , a general block diagram of a portion of a streamed desktop 200 conveyed over an efficient video transmission is shown. The illustrated portion includes a user interface 260 provided as a graphical user interface (GUI). In various embodiments, the user interface 260 is presented on a display device of a user's computing device after being transmitted from a remote server supporting remote desktop services (RDS). The user interface 260 is presented by a generic application used to generally illustrate the components of the user interface. Other components of the streamed desktop 200 are not shown for ease of illustration. For example, in various embodiments, the streamed desktop 200 further includes a taskbar, one or more icons of applications positioned on the background of the streamed desktop 200, other open windows corresponding to other applications, one or more objects in an image or scene presented as a background when a solid color background is not used, etc.

[0034] Similar to the image depicted by frame 140 (of FIG. 1), streamed desktop 200 provides an example of an image streamed in real time from a transmitter to a receiver. In one embodiment, the receiver is a user's computing device, and the transmitter is a remote server accessed over a network such as the Internet. Similar to text box 142 in frame 140 (of FIG. 1), streamed desktop 200 includes multiple regions of text information. Thus, if the frame corresponding to streamed desktop 200 is divided into macroblocks, some of these macroblocks will include text information. For example, these macroblocks containing text information include at least macroblocks containing the text "Directory 210," "File 211," "Directory 220," "Back," "Drawing," "Project," "Update," "Clear," "Address," "Forward," values ​​"100%" through "70%," "August 22" in a calendar, calendar weekdays "Monday" through "Sunday," calendar days "1" through "31," etc.

[0035] As described above, the transmitter identifies a first set of macroblocks, stores the identities of these macroblocks in the metadata information, stores pixel color information (foreground color, background color) in the metadata information, and generates a second set of macroblocks that uses pixel distance information rather than pixel color information. Thus, the transmitter encodes one or more macroblocks that include pixel color information and additionally encodes one or more macroblocks that include pixel distance information. The transmitter then transmits the metadata information and encoded macroblocks of the video frame to a receiver having a display device.

[0036] Similar to other user interfaces, such as other GUIs, user interface 210 includes features such as drop-down menus, navigation bars, address fields, etc. Note that the naming conventions shown in FIG. 2 (e.g., “directory 210,” “file 211,” etc.) are provided for ease of explanation. In a typical embodiment, names reflecting those used in a typical business or other environment (e.g., documents, spreadsheets, tasks, discussion topics, and user-defined directory and / or file names, etc.) are used where appropriate. User interface 210 includes a “drawing” pane 202 and a “project” pane 204. Within drawing pane 202, a hierarchy of directories and files is shown to allow a user to navigate. The illustrated hierarchy includes directories 210, 220, 220, 240, and 250. Directory 210 includes files 211-214. A user can select the contents of one or more of directories 210-250 and files 211-214 and add them to project pane 204 via the move buttons. The project pane 204 includes at least a graph and a calendar. Any additions are stored by selecting the update button, and any additions or modifications are removed by selecting the clear button. In other embodiments, the user interface 210 presents information in other ways (e.g., pie charts, three-dimensional diagrams, etc.) or includes other types of buttons, drop-down menus, etc. that provide other types of functionality.

[0037] Turning now to FIG. 3, a generalized diagram of a computing system 300 is shown. In the illustrated embodiment, computing system 300 includes multiple client devices 350, 352, and 354, a network 340, servers 320A-320D, and a data storage device 330 that includes a copy of an application 332. As shown, server 320A includes a processor 322 that accesses memory 324 to process tasks and a processor 326 that accesses memory 328 to process tasks. While three client devices 350, 352, and 354 are shown, any number of client devices may access an application running on servers 320A-320D. For example, server 320A stores application 360 in memory 324, which is a copy of application 332 stored in data storage device 330. As shown, client device 354 includes hardware such as a processor 356 and decoder 358 circuitry. Processor 356 executes computer program instructions. Decoder 358 decodes encoded video frame information received from one or more of servers 320A-320D via network 340. Client devices 350 and 352 also include circuitry similar to processor 356 and decoder 358 of client device 354. Examples of client devices 350, 352, 354 include laptop computers, smartphones, gaming consoles connected to televisions, tablet computers, desktop computers, etc.

[0038] Clock sources, such as phase-locked loops (PLLs), interrupt controllers, communications fabrics, power controllers, memory controllers, interfaces for input / output (I / O) devices, etc., are not shown in computing system 300 for ease of explanation. Also, note that the number of components of computing system 300, and the number of subcomponents of those shown in Figure 3, such as in client 320, may vary from embodiment to embodiment. There may be more or fewer of each component / subcomponent than shown for computing system 300.

[0039] In various embodiments, server 320A supports corresponding ones of client devices 350-354 accessing streaming services, such as application 332, and remotely requests the execution of the streaming services. Examples of streaming services include desktop streaming services, live streaming services, video game streaming services, etc. The streaming services provide real-time updates of video content based on input from users when they access the streaming services on corresponding ones of client devices 350-354. In various embodiments, client devices 350, 352, 354 include network interfaces (not shown) supporting one or more communication protocols for data and message transfer over network 340. Network 340 includes multiple switches, routers, cables, wireless transmitters, and the Internet for transferring messages and data. Thus, the network interface of client device 350 supports one or more of Hypertext Transfer Protocol (HTTP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), or another protocol for communication across the World Wide Web. In some embodiments, an organizational center (not shown) maintains application 332. In addition to communicating with client devices 350, 352, 354 over network 340, the organization center also communicates with data storage 330 for storing and retrieving data. Data storage 330 includes one or more of a variety of hard disk drives and solid state drives for data storage. Through user authentication, users can access resources through the organization center to update user profile information, access a history of purchases or other accessed content, and download content.

[0040] In various embodiments, processors 322 and 326 have the same functionality as described above for CPU 122 and GPU 124 (of FIG. 1). Similarly, encoder 366 has the same functionality as described above for encoder 126 (of FIG. 1). Thus, processor 122 converts the instructions of parallel data function calls of application 360 into commands 362 that are executable by processor 326. Encoder 366 can compress rendered macroblocks. Servers 320A-320D include various server types, such as database servers, computing servers, application servers, file servers, mail servers, etc. In various embodiments, servers 320A-320D and client devices 350, 352, 354 operate in a client-server architecture model. In various embodiments, application 332 is any of various types of parallel data applications.

[0041] Applications 332 include instructions that support parallel data algorithms. In one embodiment, applications 332 include algorithms for graphics shader programs that direct how the processor renders pixels to control lighting and shading effects. In addition, applications 332 may also include pixel interpolation algorithms for geometric transformations. Pixel interpolation derives new pixel values ​​at arbitrary coordinates from existing data. Applications 332 may also include instructions to direct SIMD cores of processor 322 to perform General Matrix to Matrix Multiplication (GEMM) operations (after transformations by processor 326) when rendering macroblocks of a video frame.

[0042] In some embodiments, application 332 (and copy 360 thereof) is a user-requested application, such as a particular video game application accessed over network 340, that provides real-time content to a user operating one of client devices 350-354. In other embodiments, application 332 is a user-requested application that provides a remote desktop connection for a business environment. In yet other embodiments, application 332 is a user-requested application that provides a live stream of another user broadcasting content, such as a cooking show, movie, clothing, or other product reviews. In each of these embodiments, server 320A provides renderings and compressed macroblocks of video frames to a corresponding one of client devices 350-354 in real time.

[0043] In various embodiments, server 320A performs the steps described above for transmitter 110 (of FIG. 1). For example, circuitry in server 320A receives rendered source data for a video frame of an image to be rendered on a display device of a corresponding one of client devices 350-354. Prior to encoding, server 320A identifies a first set of one or more macroblocks of the video frame that include text. Server 320A generates a second set of one or more macroblocks by replacing pixel color information of the first set of one or more macroblocks with pixel distance information. Server 320A inserts, into the metadata information, an indicator identifying the first set of one or more macroblocks. Server 320A also inserts, into the metadata information, an indicator specifying color values ​​of pixels in the first set of one or more macroblocks. Server 320A encodes the video frame. Thus, server 320A encodes one or more macroblocks that include pixel color information and, additionally, encodes one or more macroblocks that include pixel distance information. The server 320A transmits the encoded macroblocks together with the metadata information to the corresponding one of the client devices 350-354.

[0044] Referring to Figure 4, a general block diagram of a method 400 for performing efficient video transmission that maintains text intelligibility is shown. For purposes of explanation, the steps of this embodiment (as well as Figure 5) are shown sequentially. However, in other embodiments, some steps occur in a different order than that shown, some steps are performed simultaneously, some steps are combined with other steps, and some steps are absent.

[0045] In various embodiments, the computing system includes a transmitter that transmits a video stream to a receiver over a network such as the Internet. In one embodiment, the transmitter is a remote server, and the receiver is a user's computing device that communicates with the remote server over the network. In some embodiments, the remote server includes accelerated processing unit (APU) circuitry that includes multiple different integrated circuits, each providing different functions. For example, the APU includes at least one general-purpose processing unit, such as a central processing unit (CPU), having multiple cores capable of executing instructions of a general-purpose instruction set architecture (ISA). The APU also includes a parallel data processing unit, such as a graphics processing unit (GPU), that includes circuitry of one or more processor cores with a single instruction multiple data (SIMD) parallel architecture. The CPU translates the instructions of the application's parallel data function calls into commands that can be executed by the GPU. The GPU renders video frames based on the commands and stores the rendered video frames in a buffer. The transmitter circuitry divides the rendered source data of a video frame into multiple macroblocks (block 402).

[0046] The transmitter selects a macroblock from the plurality of macroblocks (block 404). The transmitter determines whether the selected macroblock contains text. For example, the transmitter uses any of a variety of techniques to detect text within the selected macroblock. Examples of these techniques include any of a variety of edge-based algorithms that rely on the macroblock's calculated edge density or calculated edge gradient, summing counts of these values ​​in one or more histograms, and analyzing the one or more histograms for text detection. If the transmitter does not detect text within the selected macroblock (conditional block 406: "No"), the transmitter maintains the current first data representation of the macroblock in the video frame (block 408). In one embodiment, the first data representation includes color pixel information. In one example, a particular rendered pixel includes pixel color values ​​(212, 56, 180). In one embodiment, each of these pixel color values ​​is an 8-bit value corresponding to a red, green, and blue color value, respectively. These color values ​​range from 0 to 255 based on the 8 bits used to represent the color value. If the transmitter has not yet reached the last macroblock of the video frame (conditional block 410: "No"), the control flow of method 400 returns to block 404 where the transmitter selects one of the multiple macroblocks.

[0047] If the transmitter detects text in the selected macroblock (conditional block 406: "Yes"), the transmitter inserts an indication (instruction) specifying the color of the macroblock into the metadata corresponding to the video frame (block 412). For example, the transmitter inserts an indication of both the foreground color of text, such as one or more glyphs, in the macroblock and the background color of the macroblock. The transmitter then replaces the first data representation of the macroblock in the frame with a second data representation of the macroblock (block 414). For example, the transmitter generates a second macroblock that includes the second data representation of the selected first macroblock. In one embodiment, the second data representation includes pixel distance information, such as signed distance field (SDF) values, for pixels in the macroblock. In one embodiment, the pixel distance values ​​use a value of 50 to indicate that the pixel is on the surface of the nearest glyph, a value of 0 to indicate that the pixel is furthest from the surface but located within the glyph, and a value of 100 to indicate that the pixel is furthest from the surface and located outside the glyph. Other values ​​and ranges are possible and contemplated.

[0048] The transmitter inserts an indication (indication) into metadata information corresponding to the video frame specifying that the macroblock uses the second data representation (block 416). Thus, the transmitter identifies a set of one or more macroblocks in the video frame that contain text information and that use the second data representation. In some embodiments, the transmitter generates the pixel distance value by scaling the maximum color value by the ratio of the pixel distance value to the maximum pixel distance value. In other words, the transmitter generates the pixel distance value using the formula (maximum color value) × ((pixel distance) / (maximum pixel distance)). If the transmitter determines that the pixel distance value is 36 using a range of 0 to 100 and that 50 is on the surface of the glyph, the transmitter generates the pixel distance value as 255 × (36 / 100), or 92. Instead of representing pixels with pixel color values ​​such as (24, 208, 88), the transmitter represents pixels with pixel distance values ​​of (92, 92, 92). The transmitter also updates the metadata 144 with an indicator specifying that the macroblock containing this pixel uses pixel distance values ​​rather than pixel color values ​​along with the foreground and background colors of the macroblock.

[0049] If the transmitter has reached the last macroblock of the video frame (conditional block 410: "YES"), the transmitter compresses (encodes) multiple macroblocks of the video frame (block 418). For example, the APU of the transmitter further includes a video encoder for compressing the video frame of an image to be rendered on a display device of the receiver, such as a user's computing device. Thus, the transmitter encodes one or more macroblocks containing pixel color information and additionally encodes one or more macroblocks containing pixel distance information. However, the encoder does not receive metadata; the encoder does not know which macroblocks contain pixel color information and which contain pixel distance information. The transmitter conveys the multiple compressed macroblocks of the video frame to the receiver for display (block 420). The transmitter also conveys metadata information to the receiver (block 422). In some embodiments, the metadata information is stored within the multiple compressed macroblocks of the video frame. In other embodiments, the metadata information is stored separately from the multiple compressed macroblocks.

[0050] Referring to Figure 5, a general block diagram of a method 500 for supporting efficient video transmission that maintains text intelligibility is shown. In various embodiments, a computing system includes a transmitter that transmits a video stream over a network, such as the Internet, to a receiver. The receiver receives rendered and compressed macroblocks of a video frame (block 502). The receiver also receives metadata information specifying the data representation and color of particular macroblocks of the video frame (block 504). Receiver circuitry, such as a decoder, decodes (decompresses) the macroblocks (block 506). Like the encoder of the transmitter, the decoder of the receiver does not receive metadata indicating pixel distance values; the decoder does not know which macroblocks contain pixel color information and which contain pixel distance information.

[0051] The receiver selects a macroblock from the plurality of macroblocks (block 508). In some embodiments, the metadata information is stored within the plurality of compressed macroblocks of the video frame. In other embodiments, the metadata information is stored separately from the plurality of compressed macroblocks. Using the metadata information, the receiver determines whether the selected macroblock contains text. If so, the metadata information includes pixel color information for the selected macroblock. For example, the metadata information may include an identifier for the selected macroblock and an indication of both the foreground color of text, such as one or more glyphs, within the macroblock and the background color of the macroblock. The selected macroblock does not include pixel color information. Rather, as described above, the selected macroblock includes any of various types of distance information corresponding to pixels within the selected macroblock and the nearest glyph.

[0052] If the receiver determines that the selected macroblock has pixel color information specified in the metadata information (conditional block 510: "YES"), the receiver uses the metadata information to replace the data representation of the macroblock with another data representation that includes pixel color information. For example, the received version of the selected macroblock currently uses a data representation that includes pixel distance information, such as signed distance field (SDF) values ​​of pixels in the macroblock. The receiver converts the pixel distance information to pixel color information (block 512). If the receiver determines that the selected macroblock does not have pixel color information specified in the metadata information (conditional block 510: "NO"), block 512 of method 500 is skipped.

[0053] If the receiver has not yet reached the last macroblock of the video frame (conditional block 514: "NO"), control flow of method 500 returns to block 508 where the receiver selects one of the multiple macroblocks. However, if the receiver has reached the last macroblock of the video frame (conditional block 514: "YES"), the receiver conveys the decoded video frame to the display device (block 516).

[0054] It should be noted that one or more of the above-described embodiments include software. In such embodiments, program instructions implementing the methods and / or mechanisms are carried or stored on a computer-readable medium. Many types of media configured to store program instructions are available, including hard disks, floppy disks, CD-ROMs, DVDs, flash memory, programmable ROM (PROM), random access memory (RAM), and various other forms of volatile or non-volatile storage. Generally speaking, a computer-accessible storage medium includes any storage medium that can be accessed by a computer during use to provide instructions and / or data to the computer. For example, a computer-accessible storage medium may include magnetic or optical media, such as a disk (fixed or removable), tape, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, or Blu-Ray. Storage media further include volatile or non-volatile memory media such as RAM (e.g., synchronous dynamic RAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM, low power DDR (LPDDR2, etc.) SDRAM, Rambus DRAM (Rambus DRAM, RDRAM), static RAM (SRAM), etc.), ROM, flash memory, non-volatile memory (e.g., flash memory) accessible via a peripheral interface such as a Universal Serial Bus (USB) interface, etc. Storage media include microelectromechanical systems (MEMS), and storage media accessible via a communication medium such as a network and / or wireless link.

[0055] Additionally, in various embodiments, the program instructions include a behavioral or register-transfer level (RTL) description of the hardware functionality in a high-level programming language such as C, or a design language (HDL) such as Verilog or VHDL, or a database format such as the GDS II stream format (GDS II). In some cases, the description is read by a synthesis tool, which synthesizes the description to generate a netlist including a list of gates from a synthesis library. The netlist includes a set of gates that also represent the functionality of the hardware comprising the system. The netlist can then be placed and routed to generate a data set that describes the geometric shapes that are applied to a mask. The mask can then be used in various semiconductor manufacturing steps to generate a semiconductor circuit or circuits corresponding to the system. Alternatively, the instructions on the computer-accessible storage medium are a netlist (with or without a synthesis library) or a data set, as appropriate. Additionally, the instructions are utilized for emulation by hardware-based emulators from vendors such as Cadence®, EVE®, and Mentor Graphics®.

[0056] Although the above embodiments have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated, and it is intended that the following claims be interpreted to embrace all such variations and modifications.

Claims

1. 1. An apparatus comprising: Equipped with a circuit, The circuit comprises: identifying a first set of one or more blocks of a plurality of blocks of a video frame that include text information; replacing a first data representation of a first set of the one or more blocks with a second data representation different from the first data representation; compressing the first set of one or more blocks using the second data representation; configured to: Device.

2. the circuitry is configured to communicate the first set of one or more blocks over a network to a receiver having a display device.

10. The apparatus of claim 1.

3. the circuitry is configured to insert, into metadata corresponding to the video frame, a first plurality of indicators that specify colors to be used in the first set of one or more blocks.

10. The apparatus of claim 1.

4. the circuitry is configured to insert into the metadata a second plurality of indicators that identify the first set of one or more blocks as blocks of the video frame that use the second data representation.

4. The apparatus of claim 3.

5. the circuitry is configured to communicate the metadata over a network to a receiver having a display device.

5. The apparatus of claim 4.

6. the circuitry is configured to compress one or more of the plurality of blocks of the video frame using the first data representation in response to the one or more blocks not including text information.

5. The apparatus of claim 4.

7. the second data representation includes signed distance field information for a pixel; 10. The apparatus of claim 1.

8. 1. A method comprising: a memory circuit storing rendered source data for a video frame to be displayed on a display device; a circuit in an acceleration processing unit receiving the video frames; the circuit identifying a first set of one or more blocks of the video frame that include text information; the circuitry replacing a first data representation of a first set of the one or more blocks with a second data representation different from the first data representation; the circuitry compressing the first set of one or more blocks using the second data representation. method.

9. the circuitry transmitting, over a network, the first set of one or more blocks to a receiver having a display device; 9. The method of claim 8.

10. the circuitry including inserting into metadata corresponding to the video frame a first plurality of indicators specifying colors to be used in the first set of one or more blocks; 9. The method of claim 8.

11. the circuitry inserting into the metadata a second plurality of indicators that identify the first set of one or more blocks as blocks that use the second data representation. The method of claim 10.

12. the circuitry communicating the metadata over a network to a receiver having a display device; The method of claim 11.

13. the circuitry compressing one or more of the plurality of blocks of the video frame using the first data representation in response to the one or more blocks not containing text information. The method of claim 11.

14. the second data representation includes signed distance field information for a pixel; 9. The method of claim 8.

15. 1. A computing system comprising: a memory comprising circuitry configured to store rendered source data for a video frame to be displayed on a display device; an acceleration processing unit; The acceleration processing unit receiving the video frames; identifying a first set of one or more blocks of the plurality of blocks of the video frame that include text information; replacing a first data representation of a first set of the one or more blocks with a second data representation different from the first data representation; compressing the first set of one or more blocks using the second data representation; a circuit configured to: Computing system.

16. the circuitry is configured to communicate the first set of one or more blocks over a network to a receiver having a display device.

16. The computing system of claim 15.

17. the circuitry is configured to insert into metadata corresponding to the video frame a first plurality of indicators specifying colors to be used in the first set of one or more blocks; 16. The computing system of claim 15.

18. the circuitry is configured to insert into the metadata a second plurality of indicators that identify the first set of the one or more blocks as blocks that use the second data representation.

20. The computing system of claim 17.

19. the circuitry is configured to communicate the metadata over a network to a receiver having a display device.

20. The computing system of claim 18.

20. the second data representation includes signed distance field information for a pixel; 16. The computing system of claim 15.

Citation Information

Patent Citations

  • Information compression / decompression methods and apparatuses, and storage medium

    EP3961499A1

  • Picture encoding device

    JP1992326669A

  • Image encoding device and control method thereof

    JP2008104120A

  • Image compression apparatus

    JP2013207777A

  • Hybrid text and image based encoding

    US8648858B1