Browser Video Decoder Parallel CPU Thread Segmentation
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
2Loss of time
If computationally intensive operations are performed on CPU, then software flexibility is maintained, but processing time increases for high-quality video
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
3Manufacturing precision
If multiple CPU threads are used for parallel decoding, then video quality and speed improve, but thread coordination complexity increases
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
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
Data Source
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.


