Synchronized Jitter Buffers for Seamless Codec Switching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing real-time communication technologies face challenges in managing jitter buffers during codec switches, leading to data loss and playback disruptions due to limitations in adapting to varying network conditions.

Innovation Solution

Maintaining separate jitter buffers for each codec, synchronized with the same playout timestamp, allows for seamless data reading and switching between codecs without flushing buffers, ensuring continuous playback and handling out-of-order packets.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple codecs and associated jitter buffers are used for a real-time communication session, then adaptability to varying network conditions is improved, but data loss occurs during codec switches and the system cannot handle frequent codec switches

Engineering Contradiction:
Improveadaptability to varying network conditionsVSAvoiddata loss during codec switch
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The system divides the single jitter buffer into multiple separate jitter buffers, with each buffer dedicated to a specific codec. This segmentation allows each buffer to independently manage its own codec's data without interference from codec switches, eliminating data loss during transitions while maintaining adaptability through multiple specialized buffers.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If multiple codecs and associated jitter buffers are used for a real-time communication session, then adaptability to varying network conditions is improved, but the system cannot handle frequent codec switches

Engineering Contradiction:
Improveadaptability to varying network conditionsVSAvoidability to handle frequent codec switches
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

By segmenting the jitter buffer system into multiple codec-specific buffers, the system eliminates the need to flush or reconfigure buffers during codec switches. Each buffer independently handles its designated codec's data stream, allowing frequent codec switches to occur without disrupting the buffer management process, thus improving the ability to handle frequent switches.

Inventive Principle:
Principle #1Segmentation

3Device complexity

If a single codec and associated jitter buffer are used for a real-time communication session, then device complexity is reduced, but adaptability to varying network conditions is limited

Engineering Contradiction:
Improvecodec and jitter buffer configurationVSAvoidability to adapt to varying network conditions
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The system implements a universal jitter buffer management architecture where multiple jitter buffers operate under a single synchronized playout timestamp mechanism. This multi-functional design allows the system to handle multiple codecs simultaneously while maintaining unified time management, providing adaptability to varying network conditions without proportionally increasing overall system complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentEP3891962B1Synchronized jitter buffers to handle codec switches
Publication Date: 2024.01.17 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP3891962B1 patent drawingFigure 1
  • EP3891962B1 patent drawingFigure 2
  • EP3891962B1 patent drawingFigure 3

AI summary

Techniques are described for managing synchronized jitter buffers for streaming data (e.g., for real-time audio and/or video communications). A separate jitter buffer can be maintained for each codec. For example, as data is received in network packets, the data is added to the jitter buffer corresponding to the codec that is associated with the received data. When data needs to be read, the same amount of data is read from each of the jitter buffers. In other words, at each instance where data needs to be obtained (e.g., for decoding and playback), the same amount of data is obtained from each of the jitter buffers. In addition, the multiple jitter buffers use the same playout timestamp that is synchronized across the multiple of jitter buffers.