Ordered Entropy Slices for Parallel CABAC Without Large Buffers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional sequential CABAC is a bottleneck for parallel processing in video encoding and decoding due to its serial bit-level processing nature, leading to inefficiencies in compression and increased memory and power consumption when using off-chip memory for large buffer sizes.

Innovation Solution

The method involves providing entropy slices to multiple processing elements with a causal processing order, allowing them to work in parallel, reducing the need for large buffers and enabling on-chip memory usage by ensuring that prior macroblock information is efficiently stored and accessed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If sequential CABAC processing is used, then compression efficiency is maintained, but processing speed is limited and parallel processing cannot be effectively implemented

Engineering Contradiction:
Improveprocessing speedVSAvoidprocessing structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the picture into multiple entropy slices, each containing a subset of macroblocks. Each processing element can independently decode one or more entropy slices in parallel, eliminating the sequential bottleneck while maintaining compression efficiency through proper context initialization for each slice.

Inventive Principle:
Principle #1Segmentation

2Productivity

If parallel CABAC processing is implemented without ordered entropy slices, then processing speed increases, but buffer size requirements increase significantly requiring off-chip memory

Engineering Contradiction:
Improveprocessing speedVSAvoidbuffer size
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent reorders macroblocks within entropy slices so that all macroblocks requiring prediction from a reference macroblock are processed before the reference macroblock itself. This preliminary ordering ensures that prediction data is ready in on-chip memory when needed, eliminating the need for large off-chip buffers.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If off-chip memory is used for large buffers, then parallel processing capacity increases, but access speed decreases and power consumption increases

Engineering Contradiction:
Improveparallel processing capacityVSAvoidmemory access speed
Core Design Contradiction:
ProductivityVSSpeed

Solution Approach 1:

The patent changes the processing order parameter of macroblocks within entropy slices to ensure causal dependencies are satisfied. This reordering allows the system to use smaller on-chip buffers instead of larger off-chip memory, achieving both high parallel processing capacity and fast memory access speeds simultaneously.

Inventive Principle:
Principle #35Parameter changes

4Productivity

If off-chip memory is used for large buffers, then parallel processing capacity increases, but power consumption increases significantly

Engineering Contradiction:
Improveparallel processing capacityVSAvoidpower consumption
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

By changing the macroblock processing order within entropy slices, the patent enables the use of smaller on-chip buffers instead of energy-hungry off-chip memory. This parameter change maintains parallel processing capacity while dramatically reducing power consumption associated with memory access.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10033406B2Method for performing parallel coding with ordered entropy slices, and associated apparatus
Publication Date: 2018.07.24 HFI INNOVATION INC
  • US10033406B2 patent drawing
  • US10033406B2 patent drawing
  • US10033406B2 patent drawing

AI summary

A method for performing parallel coding with ordered entropy slices includes: providing a plurality of entropy slices to a plurality of processing elements, wherein each entropy slice includes a plurality of blocks; initializing CABAC states of a current entropy slice as the CABAC states of a previous entropy slice after processing DB blocks of the previous entropy slice. DB is a positive integer.