Browser Video Decoder Parallel CPU Thread Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Video playback tools face computational complexity challenges in decoding high-quality, high-bit-rate video and low-latency video streams, particularly in scenarios like remote desktop conferencing and real-time communication, due to the intensive computational requirements of operations such as inverse frequency transforms and motion compensation.

Innovation Solution

A browser-based video playback system utilizes multiple CPU threads to perform decoding operations in parallel, with a main thread handling overall decoding and auxiliary threads processing sections of the video independently, optionally offloading tasks to a GPU for additional processing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If video decoding operations are performed using a single CPU thread, then the system architecture is simple, but the decoding speed and quality are insufficient for high-bit-rate video

Engineering Contradiction:
Improvedecoding speedVSAvoidsystem architecture complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The video decoding process is divided into multiple independent sections or slices, with each CPU thread responsible for decoding a specific section. This segmentation allows parallel processing of different parts of the video stream, significantly improving decoding speed while maintaining manageable thread-level complexity

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transitions from single-thread sequential processing to multi-thread parallel processing, adding a temporal dimension to the decoding operation. Multiple threads execute simultaneously on different CPU cores, transforming the decoding process from a one-dimensional sequential operation to a multi-dimensional parallel operation

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Loss of time

If computationally intensive operations are performed on CPU, then software flexibility is maintained, but processing time increases for high-quality video

Engineering Contradiction:
Improvedecoding latencyVSAvoidCPU computational load
Core Design Contradiction:
Loss of timeVSUse of energy by moving object

Solution Approach 1:

The system performs preliminary analysis of the video stream to identify computationally intensive operations and data sections. This allows the main CPU thread to focus on control and coordination while auxiliary threads are pre-assigned to handle specific heavy-lifting decoding operations, reducing overall processing time and CPU bottlenecks

Inventive Principle:
Principle #10Preliminary action

3Manufacturing precision

If multiple CPU threads are used for parallel decoding, then video quality and speed improve, but thread coordination complexity increases

Engineering Contradiction:
Improvevideo reconstruction qualityVSAvoidthread management complexity
Core Design Contradiction:
Manufacturing precisionVSDevice complexity

Solution Approach 1:

The video data is segmented into independent sections that can be decoded in parallel without requiring complex inter-thread communication. Each auxiliary thread processes a self-contained section, and results are simply aggregated by the main thread, minimizing coordination overhead while maximizing parallel processing benefits

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The main CPU thread acts as an intermediary that coordinates between the auxiliary threads and the rest of the video playback system. It manages thread creation, assigns work segments, collects results, and handles error reporting, centralizing complexity in a single coordinating thread rather than requiring complex peer-to-peer thread communication

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11197010B2Browser-based video decoder using multiple CPU threads
Publication Date: 2021.12.07 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11197010B2 patent drawing
  • US11197010B2 patent drawing
  • US11197010B2 patent drawing

AI summary

Innovations in video playback using a browser-based video decoder are described. In a computer system that includes multiple central processing units (“CPUs”), a browser-based video decoder performs operations with multiple threads that may execute simultaneously on different CPUs. The video decoder can perform decoding operations in parallel for different sections of a picture. For example, with a main CPU thread associated with a browser, the video decoder performs a first decoding workload (e.g., bitstream parsing) for a picture. With auxiliary CPU threads associated with Web workers and simultaneously executing on different CPUs, the video decoder performs a second decoding workload (e.g., entropy decoding, decoding of side information) for different sections of the picture, one section per auxiliary CPU thread. If the computer system also includes a graphics processing unit (“GPU”), the video decoder can perform additional decoding workloads with shader routines executable on the GPU.