GPU Shader Video Decoding for Low-Latency Rendering

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing video playback tools face computational complexity challenges in decoding and rendering high-quality, high-bit rate video and low-latency video, particularly in scenarios like remote desktop conferencing, due to the computationally intensive nature of operations such as inverse frequency transforms and motion compensation.

Innovation Solution

The implementation of a video playback tool that offloads certain decoding and rendering operations to a graphics processing unit (GPU), using graphics primitives and shader routines to aggregate and transfer texture values, perform inverse frequency transforms, and reconstruct sample values in parallel, thereby reducing latency and improving performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If video decoding and rendering operations are performed using CPU, then the system has simpler hardware configuration, but the decoding and rendering speed is slow and cannot handle high-quality, high-bit rate video or low-latency video

Engineering Contradiction:
Improvedecoding and rendering speedVSAvoidhardware configuration complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent divides the video decoding and rendering workload into separate segments handled by different processors. The CPU handles control functions and simpler operations, while the GPU handles computationally intensive decoding and rendering operations. This segmentation allows each processor to specialize in specific tasks, improving overall speed without requiring a complete hardware overhaul.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary mechanism (graphics primitive representation and shader routines) that bridges the CPU and GPU. The CPU prepares graphics primitives containing texture values and parameters, which are then processed by GPU shader routines. This intermediary approach enables efficient data transfer and processing coordination between the two processors.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of time

If computationally intensive operations are performed on CPU, then the system architecture is simpler, but the processing time increases and latency is high

Engineering Contradiction:
Improvedecoding and rendering latencyVSAvoidprocessing throughput
Core Design Contradiction:
Loss of timeVSProductivity

Solution Approach 1:

The patent replaces the traditional CPU-based sequential processing mechanism with a GPU-based parallel processing mechanism. Instead of the CPU handling all computationally intensive operations sequentially, the system uses GPU shader routines that can process multiple video blocks simultaneously, dramatically reducing latency and improving real-time performance.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The patent implements preliminary action by pre-processing video data into graphics primitives on the CPU before transferring to the GPU. Texture values, block parameters, and other decoding data are organized into an efficient format in advance, allowing the GPU to immediately begin parallel processing without additional preparation overhead, thus reducing overall latency.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If GPU is used for video decoding and rendering, then the decoding and rendering speed increases, but the system requires more complex hardware and software integration

Engineering Contradiction:
Improvevideo processing throughputVSAvoidsoftware architecture complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent makes the GPU shader routines multi-functional by designing them to handle various video decoding operations (inverse frequency transforms, motion compensation, deblocking filtering, color conversion, etc.) within a single unified framework. This universality allows the same GPU hardware and software architecture to efficiently process different types of video data and operations, reducing the need for specialized hardware for each function.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent utilizes parameter changes by representing video blocks as graphics primitives with configurable parameters (texture values, block size, display index, packed index). By changing these parameters, the same graphics pipeline and shader routines can efficiently handle different block types (intra-coded, inter-coded), different resolutions, and different video formats without requiring separate processing paths.

Inventive Principle:
Principle #35Parameter changes

4Ease of manufacture

If traditional video decoding methods are used, then the implementation is straightforward on CPU, but the computational complexity of operations like inverse frequency transforms and motion compensation becomes problematic

Engineering Contradiction:
Improveimplementation simplicityVSAvoidcomputational complexity
Core Design Contradiction:
Ease of manufactureVSDevice complexity

Solution Approach 1:

The patent introduces graphics primitives as an intermediary data structure that simplifies the interface between CPU and GPU. Instead of directly transferring raw video data and complex decoding parameters, the system uses standardized graphics primitives containing texture values and block parameters. This intermediary representation simplifies the implementation by providing a consistent data format that works across different GPU architectures and shader versions.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10575007B2Efficient decoding and rendering of blocks in a graphics pipeline
Publication Date: 2020.02.25 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10575007B2 patent drawing
  • US10575007B2 patent drawing
  • US10575007B2 patent drawing

AI summary

Innovations in video decoding and rendering operations in a graphics pipeline, in which at least some of the operations are performed using a graphics processing unit (“GPU”), are described. For example, a video playback tool aggregates texture values for intra-coded blocks of a picture in central processing unit (“CPU”) memory, then transfers the texture values for the intra-coded blocks from the CPU memory to GPU memory. The video playback tool performs operations to decode the encoded data and reconstruct the picture. For a given block (e.g., of a macroblock, coding unit) of the picture, a graphics primitive represents texture values for the given block as a point for processing by the GPU. The video playback tool uses one or more shader routines, executable by the GPU, to transfer texture values to a display buffer. In some cases, the video playback tool also performs decoding operations with the shader routines.