Motion Refinement Engine Shared Memory Video Encoding

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional video encoding methods, such as those based on the H.264 standard, face challenges in efficiently processing macroblocks due to complex neighbor data derivation requirements, leading to increased processing time and reduced encoding speed.

Innovation Solution

The proposed solution involves preprocessing and storing neighbor data for each macroblock, allowing for streamlined processing by re-allocating the burden of pinpointing neighbors to preceding macroblocks, enabling faster motion compensation and encoding by utilizing retrieved neighbor data for motion search, refinement, and intra-prediction modules.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If neighbor data is derived in real-time during macroblock processing, then processing accuracy is maintained, but processing time increases and encoding speed decreases

Engineering Contradiction:
Improveprocessing timeVSAvoidencoding speed
Core Design Contradiction:
Loss of timeVSProductivity

Solution Approach 1:

The patent applies preliminary action by pre-calculating and storing neighbor data for each macroblock before the actual motion compensation processing. The neighbor management module derives and stores neighbor macroblock addresses and motion vectors in advance, so that when motion search and refinement modules need this data, it is already available in memory, eliminating real-time derivation delays and improving encoding speed without sacrificing accuracy

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the encoding process into distinct functional modules: a neighbor management module that handles data preparation, and motion compensation modules that handle processing. This segmentation allows the neighbor data derivation to be performed once and reused across multiple macroblocks, reducing redundant computations and improving overall encoding efficiency

Inventive Principle:
Principle #1Segmentation

2Productivity

If neighbor data is pre-stored for all macroblocks, then encoding speed improves, but memory requirements increase

Engineering Contradiction:
Improveencoding speedVSAvoidmemory usage
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent applies local quality by storing neighbor data with the specific granularity and scope needed for each macroblock's processing requirements. Rather than storing all possible neighbor data for all macroblocks uniformly, the system stores only the relevant neighbor macroblock addresses and motion vectors that are actually needed for motion compensation, optimizing memory usage while maintaining encoding speed benefits

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent uses copying by storing references (addresses) to neighbor macroblocks rather than duplicating entire macroblock data. The neighbor management module stores compact neighbor data structures containing only the necessary pointer information and motion vectors, allowing fast retrieval without proportionally increasing memory consumption

Inventive Principle:
Principle #26Copying

Data Source

PatentUS9204149B2Motion refinement engine with shared memory for use in video encoding and methods for use therewith
Publication Date: 2015.12.01 VIXS SYSTEMS INC
  • US9204149B2 patent drawing
  • US9204149B2 patent drawing
  • US9204149B2 patent drawing

AI summary

A motion compensation module can be used in a video encoder for encoding a video input signal that includes a sequence of images that are segmented into a plurality of macroblocks. The motion compensation module includes a shared memory and a motion search module that generates a motion search motion vector for a plurality of subblocks for a plurality of partitionings of a macroblock of a plurality of macroblocks and generates a selected group of the plurality of partitionings and stores the selected group of partitionings and the corresponding motion search motion vectors in the shared memory. A motion refinement module retrieves the selected group of partitionings and the corresponding motion search motion vectors from the shared memory, that generates a refined motion vector for the plurality of subblocks for the selected group of the plurality of partitionings of the macroblock of the plurality of macroblocks, based on the motion search motion vector for each of the plurality of subblocks of the macroblock of the plurality of macroblocks.