CABAC Decoding with Parallel Context Prediction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing CABAC decoding methods are inefficient due to data dependencies and lack of parallelism, limiting their ability to utilize multiple processor cores and computational units, making them unsuitable for real-time decoding of high-bitrate streams on general-purpose processors without dedicated hardware.

Innovation Solution

The method separates the CABAC engine from the syntax parser, utilizing a finite state machine to determine context probabilities independently, allowing for parallel processing and eliminating data dependencies, enabling CABAC decoding on multiple CPU cores or GPU units without relying on video standards' parallel decoding tools.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If CABAC decoding is implemented as a tight loop with syntax parser determining context for each bin, then decoding accuracy is maintained, but parallel processing capability is lost and performance on general-purpose processors is poor

Engineering Contradiction:
Improvedecoding performanceVSAvoiddata dependency complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the decoding process into two independent parallel threads: a syntax parsing thread that determines contexts and a CABAC decoding thread that performs binary arithmetic decoding. This segmentation eliminates data dependencies between syntax parsing and context determination, enabling parallel execution on multiple processor cores while maintaining decoding accuracy.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The syntax parser performs preliminary action by pre-determining all contexts for bins before the CABAC decoding process begins. These pre-determined contexts are stored and used during decoding, eliminating the need for real-time context determination during the tight decoding loop and enabling parallel processing.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If multiple processor cores are used for CABAC decoding, then parallel processing is enabled, but inter-thread communication delay increases due to data dependencies

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidinter-thread communication delay
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent extracts the context determination function from the CABAC decoding loop and places it in a separate syntax parsing thread. This extraction eliminates data dependencies that cause inter-thread communication delays, allowing multiple processor cores to work independently without waiting for context information from other threads.

Inventive Principle:
Principle #2Taking out (Extraction)

3Productivity

If video coding standards use parallel decoding tools like multiple slices or tiles, then parallel decoding is enabled, but coding efficiency decreases and encoder compatibility is reduced

Engineering Contradiction:
Improveparallel decoding capabilityVSAvoidencoder compatibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal parallel decoding approach that works with any CABAC-encoded stream regardless of whether it uses slices, tiles, or other parallel decoding tools. The method is compatible with all video coding standards (AVC, HEVC, VVC, VP9, AV1) and all encoders, as it does not require or assume any specific parallel decoding constraints in the encoded data.

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

Data Source

PatentUS12041252B2Multi-threaded CABAC decoding
Publication Date: 2024.07.16 SONY INTERACTIVE ENTERTAINMENT LLC
  • US12041252B2 patent drawing
  • US12041252B2 patent drawing
  • US12041252B2 patent drawing

AI summary

A method, system, and computer readable medium for improved decoding CABAC encoded media are described. A decoding loop includes decoding an encoded binary element from a sequence of encoded binary elements to generate a decoded binary element using a context probability. A next context probability for a next encoded binary element in the sequence is determined from the decoded binary element and the next context probability for decoding the next encoded binary element is provided to the decoding loop for a next iteration.