Arithmetic Video Codec Context Initialization Overhead Reduction
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The H.264 video codec's context adaptive binary arithmetic-coding (CABAC) method is computationally intensive and requires significant initialization time for each video slice, leading to overhead that limits slice rates and increases hardware costs due to the need for reinitializing 399 contexts, with existing solutions either consuming too much time or increasing hardware area.
Innovation Solution
A method utilizing a one-bit by 399 cell memory with a single cycle flash clear capability to minimize initialization overhead, where the context initialization is performed by reading current context values and using pre-computed initialization values stored in memory, allowing for continuous processing without interruptions and minimizing ROM storage area.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If conventional loop-through initialization is used for all 399 contexts, then complete context initialization is achieved, but initialization time increases significantly
Solution Approach 1:
The patent segments the 399 contexts into multiple groups and processes them in parallel using multiple initialization units. Each unit handles a specific group of contexts simultaneously, dividing the monolithic initialization process into concurrent sub-tasks that complete faster overall.
Solution Approach 2:
The patent pre-calculates and stores initialization values in a lookup table before processing. Instead of computing initialization values during the initialization phase, the system prepares them in advance, eliminating computation time from the critical initialization path.
2Loss of time
If multiple simultaneous initializations are performed to reduce time, then initialization speed improves, but hardware area increases due to wider memory and multiple scalars
Solution Approach 1:
The patent transitions from parallelizing across multiple scalar units (horizontal dimension) to parallelizing across multiple context groups using memory-based lookup (vertical dimension). This replaces compute-intensive parallel scalars with memory-access parallelism, reducing hardware area while maintaining speedup.
Solution Approach 2:
The patent uses a shared lookup table that stores pre-computed initialization values for all contexts. Multiple initialization units copy data from this single shared table rather than each unit maintaining separate storage, eliminating redundant memory and reducing overall hardware area.
3Loss of time
If pre-scaled table is stored to eliminate scaling operations, then initialization speed improves, but ROM storage area increases approximately 50 times
Solution Approach 1:
The patent stores pre-computed initialization values only for the specific conditions actually encountered in practice (e.g., only for valid context ranges and applicable slice types), rather than pre-computing and storing values for all possible contexts. This localized pre-computation dramatically reduces table size while maintaining initialization speed for actual use cases.
Solution Approach 2:
The patent implements partial initialization by identifying and initializing only the subset of contexts that are actually used in a given slice type, rather than initializing all 399 contexts. This selective approach reduces both the computation required and the size of any pre-computed tables needed.
Data Source
AI summary
A method for controlling an arithmetic codec context is disclosed. The method may include the steps of (A) reading a current value indicating one of a first condition and a second condition corresponding to a current context of a plurality of predetermined contexts, (B) generating an input state matching (i) an initial state in response to the first condition and (ii) an output state in response to the second condition, wherein the initial state has a predetermined value and the output state has a value generated by the method before receiving the current context and (C) generating a current output state by performing an arithmetic code operation on an input signal using the input state.


