Adaptive Frame Deblocking in Parallel Video Decoding
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
H.264 video decoding requires a two-pass approach, which increases data bus bandwidth, memory requirements, and computing time due to sequential basic decoding and deblocking operations, especially when flexible macroblock ordering and arbitrary slice ordering are used, leading to delayed deblocking and increased resource utilization.
Innovation Solution
A decoder with two deblockers that classify frames as in-order or out-of-order and reference or non-reference, allowing for on-the-spot deblocking, reducing the need for storing decoded data and enabling parallel processing, thus adapting deblocking based on real-time input data to optimize frame decoding and deblocking.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a two-pass approach is used for decoding and deblocking, then deblocking can be performed on all frames, but processing time and computing time increase
Solution Approach 1:
The patent divides the single deblocking operation into two separate deblocking stages: a first deblocker that processes frames where all neighboring macroblocks are available, and a second deblocker that handles frames with missing neighbors. This segmentation allows the system to process most frames in real-time without waiting for delayed slices, reducing overall processing time while maintaining deblocking quality for all frames.
Solution Approach 2:
The first deblocker performs preliminary deblocking on frames that have all necessary neighboring macroblocks available at decode time. This preliminary action completes the deblocking for the majority of frames immediately, avoiding the need to wait for delayed slices and reducing the burden on the second pass.
2Reliability
If a two-pass approach is used for decoding and deblocking, then deblocking can be performed on all frames, but memory requirements increase
Solution Approach 1:
By segmenting the deblocking operation into two paths, the system only needs to store decoded macroblocks in memory for the second pass when they are actually needed for deblocking. Frames processed by the first deblocker do not require long-term storage, reducing overall memory requirements compared to storing all decoded data for a complete second pass.
3Reliability
If a two-pass approach is used for decoding and deblocking, then deblocking can be performed on all frames, but data bus bandwidth requirements increase
Solution Approach 1:
The patent segments the data flow into two separate paths: one for frames that can be deblocked immediately and another for frames requiring delayed processing. This segmentation reduces data bus traffic by avoiding redundant transfers of frames that are processed in the first pass, while still ensuring all frames receive deblocking treatment.
4Reliability
If deblocking is delayed until all slices are received, then accurate deblocking can be performed, but processing speed decreases
Solution Approach 1:
The patent segments frames into two categories: those with all neighboring macroblocks available (processed immediately by first deblocker) and those with missing neighbors (processed later by second deblocker). This segmentation enables real-time processing for most frames while maintaining the option to perform accurate deblocking on frames with delayed slices.
Solution Approach 2:
The first deblocker performs preliminary deblocking on frames that have all necessary information available, achieving both speed and acceptable quality for the majority of frames. This preliminary action reduces the number of frames requiring delayed processing, improving overall processing speed while maintaining deblocking accuracy for frames that need it.
Data Source
AI summary
A decoder can include a first stage operable for decoding (prior to deblocking) an encoded frame, and second stage coupled downstream of the first stage. The second stage includes a first deblocker and a second deblocker that can be used to deblock decoded frames in parallel. Each decoded frame can be classified as a type of frame and is sent to one of the deblockers depending on its classification.


