Transform Block Coding With Joint Zero-Run Entropy Encoding
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional transform coding methods are inefficient for compressing wide dynamic range data due to high dynamic range transform coefficients, leading to increased memory requirements and computational complexity, especially when using run-length entropy coding techniques.
Innovation Solution
A digital media codec that jointly encodes non-zero coefficients with succeeding runs of zero-value coefficients, using context switching and adaptive coding techniques to reduce code table size and improve entropy coding efficiency, allowing for efficient encoding and decoding of wide-range transform coefficients.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If conventional run-length entropy coding techniques are used for transform coefficients, then encoding simplicity is maintained, but code table size increases and computational complexity increases for wide dynamic range data
Solution Approach 1:
The patent segments the transform coefficient encoding process into distinct phases: encoding non-zero coefficients with their succeeding zero-runs, and separately encoding the last non-zero coefficient with a dedicated last indicator. This segmentation allows the use of smaller, more manageable code tables for each phase rather than requiring a single large code table to handle all coefficient types, thereby reducing overall memory requirements while maintaining encoding efficiency.
Solution Approach 2:
The patent introduces dynamic context switching based on the position and characteristics of non-zero coefficients within the transform block. The encoder dynamically selects between different coding modes (regular run-length encoding vs. last indicator encoding) depending on whether a coefficient is the last non-zero coefficient or not. This dynamic adaptation allows the system to optimize code table usage for each specific encoding situation, reducing the need for oversized static code tables.
2Measurement precision
If wide dynamic range transform coefficients are encoded using conventional methods, then all coefficient values are captured, but memory requirements increase and encoding speed decreases
Solution Approach 1:
The patent extracts the 'last' property from regular transform coefficients and creates a separate indicator for it. By taking out this special property and handling it separately with a dedicated last indicator, the system can use smaller code tables for the majority of coefficients while still accurately representing the complete wide dynamic range of transform coefficient values, thereby reducing memory requirements without sacrificing precision.
Solution Approach 2:
The patent changes the encoding parameters dynamically based on the coefficient being encoded. When a non-zero coefficient is identified as the last one in the block, the encoder switches to a different parameter set (last indicator encoding) compared to regular coefficients. This parameter change allows the system to maintain accurate representation of all wide dynamic range values while using more efficient, smaller code tables for the majority of encoding operations.
3Device complexity
If conventional entropy coding is used for transform coefficients, then implementation simplicity is maintained, but encoding speed decreases for wide-range coefficients
Solution Approach 1:
The patent performs preliminary identification of the last non-zero coefficient during the encoding process. By proactively identifying which coefficient is the last one before completing the encoding of all coefficients, the system can prepare the appropriate last indicator in advance. This preliminary action avoids the need for complex post-processing or large code tables to handle the last coefficient, thereby simplifying the overall coding structure while improving encoding speed through more direct, efficient encoding paths.
Data Source
AI summary
A block transform-based digital media codec more efficiently encodes transform coefficients by jointly-coding non-zero coefficients along with succeeding runs of zero-value coefficients. When a non-zero coefficient is the last in its block, a last indicator is substituted for the run value in the symbol for that coefficient. Initial non-zero coefficients are indicated in a special symbol which jointly-codes the non-zero coefficient along with initial and subsequent runs of zeroes. The codec allows for multiple coding contexts by recognizing breaks in runs of non-zero coefficients and coding non-zero coefficients on either side of such a break separately. The codec also reduces code table size by indicating in each symbol whether a non-zero coefficient has absolute value greater than 1 and whether runs of zeros have positive value, and separately encodes the level of the coefficients and the length of the runs outside of the symbols.


