Dynamic Video Stream Caching for Encoder Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current systems face challenges in efficiently processing video streams due to synchronization issues between display engines and encoders, leading to increased latency and cache thrashing, which can result in dropped frames and higher latency.

Innovation Solution

A dynamic caching system that uses a threshold engine to determine when to write blended and composited pixels to a shared cache or memory based on the distance between pixel rows processed by the display engine and coding unit rows processed by the encoder, ensuring that the encoder does not get out of sync and reducing the likelihood of cache eviction.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If the display engine writes blended pixels to a shared cache, then memory access speed is improved, but cache thrashing occurs and encoder synchronization is disrupted

Engineering Contradiction:
Improvememory access speedVSAvoidencoder synchronization
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The patent implements dynamic caching by making the cache write operation conditional rather than static. The display engine dynamically determines whether to write to cache based on real-time synchronization status between the pixel row processor and encoder. When the encoder is ahead or synchronized, writes proceed to cache; when the encoder falls behind, writes are redirected to memory. This dynamic adaptation resolves the contradiction by adjusting cache usage behavior based on system state.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system employs feedback mechanisms where the display engine continuously monitors the synchronization status between pixel processing and encoding operations. This feedback loop allows the system to detect when the encoder is falling behind and adjust cache write behavior accordingly, preventing cache thrashing while maintaining high-speed access when conditions permit.

Inventive Principle:
Principle #23Feedback

2Productivity

If the display engine processes pixels quickly, then productivity is improved, but latency increases due to synchronization issues

Engineering Contradiction:
Improvepixel processing throughputVSAvoidframe latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent introduces a shared cache as an intermediary buffer between the display engine and encoder. This intermediary allows the display engine to write processed pixels at high speed without directly blocking the encoder. The cache absorbs the speed difference between pixel processing and encoding operations, enabling high productivity while preventing latency accumulation that would occur with direct synchronous processing.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Speed

If the cache is used for storing pixel data, then access speed is improved, but frame drops occur due to cache eviction

Engineering Contradiction:
Improvedata access speedVSAvoidframe continuity
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The patent changes the parameter of cache write destination from a fixed setting to a dynamically selectable option. Instead of always writing to cache or always to memory, the system changes the destination parameter based on encoder synchronization status. This parameter change prevents cache eviction of critical encoder data by redirecting writes to memory when the encoder is behind, thereby maintaining frame continuity while preserving high-speed access benefits when conditions allow.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10863183B2Dynamic caching of a video stream
Publication Date: 2020.12.08 INTEL CORP
  • US10863183B2 patent drawing
  • US10863183B2 patent drawing
  • US10863183B2 patent drawing

AI summary

Particular embodiments described herein provide for an electronic device that can be configured to identify a frame in a video stream, process a pixel row in the frame using a display engine to create blended and/or composited pixels, determine a coding unit (CU) row in the frame an encoder is encoding, determine if a distance between the pixel row in the frame and the CU row in the frame satisfies a threshold, and store the blended and/or composited pixels from the display engine in a cache if the threshold is satisfied or store the blended and/or composited pixels in memory if the threshold is not satisfied.