Image Slice Encoding for Multicore Parallel Processing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The existing video encoding methods, such as HEVC and VVC, face inefficiencies in parallel processing due to redundant syntax elements and lack of optimal division strategies for tiles and slices, which hinder effective utilization of multicore CPUs for faster encoding and decoding.
Innovation Solution
The proposed solution involves dividing images into rectangular regions, each comprising block rows, and further into slices processed in raster order, specifying start positions of coded data using first and second information, and multiplexing these with the coded data to generate a bitstream.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the image is divided into tiles and slices for parallel processing, then processing speed is improved, but redundant syntax elements increase device complexity
Solution Approach 1:
The patent extracts and removes the redundant num_entry_point_offset syntax element from the bitstream. Since entry_point_offset_minus1 is already encoded for each block row, the separate num_entry_point_offset parameter becomes unnecessary. This extraction eliminates the redundancy while preserving the parallel processing capability through WPP.
Solution Approach 2:
The patent applies different encoding treatments to different parts of the slice structure. Instead of uniformly encoding num_entry_point_offset for all slices, it selectively removes this parameter where it is redundant (when bricks are divided into block rows), while maintaining it only where necessary. This local optimization reduces overall syntax complexity.
2Productivity
If bricks are divided into block rows for Wavefront Parallel Processing, then parallel processing efficiency is improved, but the number of syntax elements increases
Solution Approach 1:
The patent removes the redundant num_entry_point_offset syntax element that would otherwise be required to specify the number of block rows in each brick. The entry point offsets are already provided for each block row through entry_point_offset_minus1, making the separate count parameter unnecessary.
Solution Approach 2:
The entry_point_offset_minus1 parameter serves multiple functions: it specifies both the entry point position and implicitly defines the block row structure. This multi-functionality eliminates the need for separate syntax elements to define both the number of block rows and their positions.
3Productivity
If occurrence probability tables are updated frequently during encoding, then encoding efficiency is improved, but processing time increases
Solution Approach 1:
The patent performs entropy encoding updates in advance during the encoding process. By updating occurrence probability tables as blocks are encoded rather than waiting until the end, the system maintains current statistical information for better compression while distributing the processing load over time.
Solution Approach 2:
The occurrence probability tables are continuously updated throughout the encoding process rather than being static or updated in discrete batches. This continuous update maintains encoding efficiency by reflecting the latest statistical information while the parallel processing architecture ensures this doesn't bottleneck overall processing speed.
Data Source
AI summary
An image is divided into rectangular regions each including at least one block row, and the image is divided into rectangular slices or slices to be processed in raster order. In a case where the image is divided into the rectangular slices, based on first information for specifying a rectangular region to be processed first and second information for specifying a rectangular region to be processed last, the rectangular regions in the rectangular slice is specified. Based on the number of blocks in a vertical direction in each of the specified rectangular regions, the number of pieces of information for specifying a start position of coded data of the block row in the rectangular slice is specified. A bitstream in which at least the pieces of information, the first and second information, and the coded data are multiplexed is generated.


