Modular Video Codec Architecture for Multi-Core Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing video codecs face challenges such as over-smoothing, high complexity, and increased bitrate in error-resilient streaming, particularly in broadcasting and real-time video communication applications, due to limitations in motion estimation and error resilience methods, especially when dealing with high motion and varying frame textures.
Innovation Solution
A modular video codec architecture for multi-core systems that employs pre-processing temporal denoising, distributed motion estimation, and weighted texture prediction, along with dynamic task assignment and error resilience techniques to improve encoding efficiency and flexibility, allowing for efficient interconnections between motion vectors of different block sizes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional motion estimation and error resilience methods are used in video codecs, then error resilience is improved, but computational complexity increases and image details are lost due to over-smoothing
Solution Approach 1:
The video frame is divided into multiple blocks, and motion estimation is performed independently for each block. This segmentation allows parallel processing across multiple blocks, reducing overall computational complexity while maintaining error resilience through block-level redundancy and independent error handling.
Solution Approach 2:
Motion vectors are predicted and prepared in advance for multiple blocks before actual motion estimation. This preliminary action reduces the search space and computational requirements for final motion compensation, thereby reducing complexity while preserving error resilience through pre-computed reference data.
2Reliability
If traditional motion estimation and error resilience methods are used in video codecs, then error resilience is improved, but image details are lost due to over-smoothing
Solution Approach 1:
Different processing strategies are applied to different blocks based on their local characteristics. Blocks with high motion or important visual information receive less smoothing to preserve details, while blocks with low motion receive more aggressive error resilience processing. This local differentiation maintains image quality while ensuring error resilience where needed.
Solution Approach 2:
Error resilience techniques such as intra-refresh and motion vector redundancy are applied selectively to only certain blocks rather than uniformly across the entire frame. This partial application reduces overall smoothing and detail loss while maintaining sufficient error resilience for the most critical regions.
3Productivity
If modular codec architecture with distributed motion estimation is used, then computational complexity is reduced through parallel processing, but device complexity increases due to multi-core system requirements
Solution Approach 1:
The modular codec architecture uses standardized interfaces and data structures that can function across different numbers of cores. The same modular components can operate on single-core or multi-core systems, providing universality that reduces the impact of increased system architecture complexity while maintaining encoding efficiency benefits.
Solution Approach 2:
The codec dynamically adjusts the degree of parallelization and task distribution based on the available computational resources. The system can adaptively scale from sequential processing on single-core systems to full parallel processing on multi-core systems, thereby reducing the perceived complexity impact while maintaining high encoding efficiency when resources are available.
Data Source
AI summary
A video codec having a modular structure for encoding/decoding a digitized sequence of video frames in a multi-core system is described. The video codec comprises a memory unit; a multithreading engine. and a plurality of control and task modules organized in a tree structure, each module corresponding to a coding operation. The modules communicate with each other by control messages and shared memory. The control modules control all coding logic and workflow, and lower level task modules perform tasks and provide calculations upon receiving messages from the control task modules. The multithreading engine maintains context of each task and assigns at least one core to each task for execution. The method of coding/decoding comprises an error resilient algorithm.


