Block-Based Conditional Motion Compensation for Video Decoding

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

MPEG-4 video decoders face challenges in power consumption and efficiency due to high sensitivity to channel errors and complex data dependencies, leading to increased power usage and computational bottlenecks in motion compensation and IDCT processes.

Innovation Solution

Implementing a block-based decoding method that maps data structures using similarity criteria, optimizing memory access by reducing data dependencies and exploiting additional information to skip unnecessary operations, and using a hierarchical memory structure to improve locality and reduce memory accesses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Use of energy by moving object

If traditional motion compensation is used in MPEG-4 video decoding, then motion prediction accuracy is maintained, but power consumption increases and computational bottlenecks occur

Engineering Contradiction:
Improvepower consumptionVSAvoiddecoding speed
Core Design Contradiction:
Use of energy by moving objectVSProductivity

Solution Approach 1:

The patent divides the macroblock into four separate blocks and processes each block independently with its own motion vector. This segmentation allows the decoder to skip processing entire blocks that contain only zero coefficients, reducing computational load and power consumption while maintaining decoding accuracy for non-zero blocks

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial motion compensation by selectively processing only those blocks within a macroblock that contain non-zero coefficients. Instead of processing all blocks uniformly, the decoder performs motion compensation only where necessary, reducing overall computational effort while preserving video quality

Inventive Principle:
Principle #16Partial or excessive action

2Reliability

If complete motion compensation processing is performed on all macroblocks, then video quality is maintained, but memory access frequency increases

Engineering Contradiction:
Improvevideo qualityVSAvoidmemory access energy
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent applies different processing quality to different blocks within a macroblock based on their content characteristics. Blocks with non-zero coefficients receive full motion compensation processing to maintain local video quality, while blocks with only zero coefficients are skipped, reducing memory access energy without perceptible quality loss

Inventive Principle:
Principle #3Local quality

3Productivity

If data dependencies are not optimized in the decoding process, then decoding accuracy is maintained, but computational bottlenecks increase

Engineering Contradiction:
Improvedecoding efficiencyVSAvoiddata dependency complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the macroblock processing into four independent block processing units, each capable of operating independently with its own motion vector and coefficient data. This segmentation breaks data dependencies between blocks, allowing parallel processing and improving decoding efficiency while reducing computational bottlenecks

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8275047B2Method and device for block-based conditional motion compensation
Publication Date: 2012.09.25 XILINX INC
  • US8275047B2 patent drawing
  • US8275047B2 patent drawing
  • US8275047B2 patent drawing

AI summary

Methods and devices for encoding and decoding video data are provided, wherein an image data structure can be represented as a group of macroblocks and each macroblock contains a plurality of blocks. One inventive aspect includes a method of decoding image data comprises decoding a current block of data, comprising retrieving a related reference block, decoding texture information of the current block, and reconstructing the current block, prior to the decoding of another block of data.