Streaming Pre-Carry Processing for Low-Latency AV1 Entropy Coding
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The AV1 video coding standard introduces a pre-carry buffer in entropy coding, requiring memory resources and causing latency due to the need to store a complete set of pre-carry data before processing, which increases hardware and operational costs.
Innovation Solution
Process pre-carry data as a streaming input, summing the least significant byte (LSB) of each pre-carry word with the most significant byte (MSB) of the next word, and increment a counter if the LSB equals 0xFF, outputting the hold sum or incremented sum based on the MSB, while updating the hold sum and resetting the counter as needed, to generate encoded output on the fly without buffering the entire data set.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If pre-carry data is buffered in memory before processing, then processing completeness is ensured, but memory resources increase and latency is introduced
Solution Approach 1:
The patent performs preliminary actions by initializing the hold sum with the LSB of the first pre-carry word and MSB of the second pre-carry word before the main processing loop begins. This preliminary setup enables immediate processing of subsequent words without waiting for complete buffer filling, thereby reducing latency while ensuring processing correctness through proper carry propagation setup.
Solution Approach 2:
The patent segments the pre-carry data processing into individual word-level operations that can be processed sequentially as data arrives. By handling one pre-carry word at a time through the iterative loop (processing word i and word i+1), the system avoids the need to buffer complete data sets, thus reducing memory requirements and latency while maintaining processing completeness.
2Reliability
If a complete pre-carry buffer is stored in memory, then processing accuracy is maintained, but hardware resources increase
Solution Approach 1:
The patent extracts only the essential elements needed for accurate processing - specifically the hold sum and FFcount - and maintains them in registers rather than storing complete pre-carry data sets in memory. By extracting and maintaining only the critical state variables (hold sum initialized from first two words, FFcount for tracking consecutive 0xFF values), the system preserves processing accuracy while dramatically reducing memory resource requirements.
Solution Approach 2:
The patent changes the state representation from storing complete pre-carry data sets to maintaining condensed state variables (hold sum and FFcount). This parameter transformation allows the system to track processing state accurately using minimal memory resources, as the hold sum captures the essential carry propagation state and FFcount captures the sequence of maximum values, eliminating the need for large buffers.
3Device complexity
If pre-carry data is processed sequentially from first to last word, then processing simplicity is maintained, but processing speed decreases
Solution Approach 1:
The patent ensures continuous useful action by processing pre-carry words immediately as they become available through the iterative loop structure. The hold sum is continuously updated with each new word processed, and output is generated continuously based on the current hold sum and FFcount values. This continuous processing eliminates idle waiting time while maintaining the simplicity of sequential logic, thereby improving processing speed without increasing complexity.
Data Source
AI summary
Disclosed approaches for accumulating pre-carry data include initializing hold sum to a sum of a LSB of the first pre-carry word of an input stream and an MSB of a second pre-carry word by a pre-carry processing circuit. For successive pre-carry words, the LSB of pre-carry word i and the MSB of pre-carry word i+1 are summed into a next sum. An FFcount is incremented by an adder circuit if the LSB of the next sum is equal to 0xFF. If the LSB of the next sum is not equal to 0xFF, the pre-carry processing circuit outputs either: the hold sum followed by FFcount consecutive 0xFF values, if the MSB of the next sum is equal to 0x00, or the hold sum plus one, followed by FFcount consecutive 0x00 values, if the MSB of the next sum is not equal to 0x00. If the LSB of the next sum is not equal to 0xFF, the hold sum is updated with the LSB of the next sum, and the FFcount is reset to 0. Processing repeats for successive pre-carry words in the stream.


