Palette Index Grouping for Screen Content Video Coding
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Traditional video coding techniques are inefficient for compressing screen content, such as remote desktop and wireless display, due to its discrete-tone nature and sharp lines, which differ from the continuous-tone and smooth assumptions of natural content.
Innovation Solution
The implementation of palette-based coding, where a video coder encodes a block by determining a palette of colors and using index values to represent pixel values, allowing for efficient coding of screen content by grouping non-context coded index bins and using context-adaptive binary arithmetic coding.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If traditional video coding techniques are used, then the coding process is simple and hardware-friendly, but the compression efficiency is poor for screen content
Solution Approach 1:
The patent segments the video content into different types (natural content vs. screen content) and applies different coding strategies to each. For screen content, it uses palette-based coding that divides the block into foreground objects and background regions, coding them separately with appropriate methods for each segment.
Solution Approach 2:
The patent changes the coding parameters based on content type detection. When screen content is detected, it switches from traditional transform-based coding to palette-based coding with run-length encoding, changing the fundamental parameters of how pixel values are represented and compressed.
2Loss of information
If palette-based coding is used for screen content, then compression efficiency improves, but the coding process becomes more complex
Solution Approach 1:
The patent extracts the foreground objects from the background in screen content blocks, coding them separately using palette-based methods. The background is coded using traditional methods or simplified approaches, reducing the overall complexity while maintaining compression efficiency for the important foreground elements.
Solution Approach 2:
The patent performs preliminary palette generation and object segmentation before the actual coding process. By pre-identifying foreground objects and generating the palette in advance, it simplifies the subsequent coding steps and reduces real-time computational complexity.
3Productivity
If context-adaptive binary arithmetic coding is used for index bins, then coding efficiency improves, but hardware implementation becomes more difficult
Solution Approach 1:
The patent segments the index bins into context-coded and non-context-coded categories, applying different coding methods to each segment. This selective application of CABAC only where necessary maintains coding efficiency while reducing overall hardware complexity compared to applying CABAC to all bins.
Solution Approach 2:
The patent applies context-adaptive binary arithmetic coding partially - only to specific index bins that benefit most from it - rather than excessively applying it to all bins. This partial application achieves sufficient coding efficiency while keeping hardware implementation feasible.
Data Source
AI summary
A device for decoding video data is configured to determine, based on first entropy encoded data in the bitstream, a set of run-related syntax element groups for a current block of a current picture of the video data; determine, based on second entropy encoded data the bitstream, a set of palette index syntax elements for the current block, the first entropy encoded data occurring in the bitstream before the second entropy encoded data, wherein: each respective run-related syntax element group of the set of run-related syntax element groups indicates a respective type of a respective run of identical palette mode type indicators and a respective length of the respective run and each respective palette index syntax element of the set of palette index syntax elements indicates an entry in a palette comprising a set of sample values; and reconstruct, based on the sample values in the palette, the current block.


