IP Library Granted Patent US 7,920,475
Granted Patent B2
US 7,920,475 · App. 12/335,079 · Granted Apr 5, 2011

System and method for adaptive removal of delay jitter effect and low end-to-end delay

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,920,475
App. No.
12/335,079
Granted
Apr 5, 2011
Kind
B2
Abstract

Systems, modules, methods and computer readable mediums for adaptive removal of delay jitter and low end-to-end delay are provided. The method may include the following operations at a delay buffer: calculating a holding time for a plurality of packets input into a network; buffering each of the plurality of packets for the duration of the holding time; and arranging the buffered packets in a sequence indicative of an order in which the buffered packets were input into the network. The holding time may be based on a difference between a current maximum delay of the plurality of packets in a current time window and a delay of a first packet of the plurality of packets in the current time window. The method may also include playing back the buffered packets at a selected playback time. Playing back the buffered packets may be performed at a reception mechanism.

Claims (47)

1. A method comprising:

calculating, by a delay buffer, a holding time for a plurality of packets input into a network at a selected interval and transmitted during a current time window, the holding time being based on a difference between a current maximum delay of the plurality of packets in the current time window and a delay of a first packet of the plurality of packets in the current time window;

buffering, at the delay buffer, each of the plurality of packets for a duration of the holding time;

arranging, by the delay buffer, the buffered packets in a sequence indicative of an order in which the buffered packets were input into the network; and

playing back, at a reception mechanism, at a selected playback time, a selected one of the buffered packets, the selected playback time being based on at least:

the holding time;

an interval of time over which a first plurality of the buffered packets were input into the network;

a value indicative of an order in which the selected one of the buffered packets was input into the network;

a time at which the selected one of the buffered packets is received; and

a holding time modifier that is multiplied by the holding time, the holding time modifier having a value greater than zero, wherein the selected playback time is equal to a sum of the time at which the selected one of the buffered packets is received, the holding time modifier multiplied by the holding time, and the value indicative of the order in which the selected one of the buffered packets was input into the network multiplied by the interval of time over which the first plurality of the buffered packets were input into the network.

2. The method of claim 1 , wherein the current maximum delay of the plurality of packets is a weighted moving average of a plurality of maximum delays corresponding to a respective plurality of time windows.

3. The method of claim 2 , wherein the respective plurality of time windows occurred prior to the current time window.

4. The method of claim 1 , wherein the delay of the first packet is determined from information associated with a real-time transport header of the first packet.

5. The method of claim 4 , wherein the information is comprised in a timestamp field of the real-time transport header.

6. The method of claim 1 , wherein the first plurality of the buffered packets is the first two packets input into the network during the current time window.

7. The method of claim 1 , wherein the interval of time over which the first plurality of the buffered packets were input into the network is determined by calculating a difference between a first generation time at which the first packet was input into the network, and a second generation time at which a second packet was input into the network, the second packet being input into the network after the first packet was input into the network.

8. The method of claim 7 , wherein the first generation time and the second generation time are determined from a first timestamp field associated with the first packet and a second timestamp field associated with the second packet.

9. A non-transitory computer-readable medium having an executable computer program comprising instructions to perform steps of the method of claim 1 .

10. A computer-based system comprising:

a memory having a plurality of maximum delay values stored therein, wherein the plurality of maximum delay values comprises a first maximum delay value associated with a first time window and a second maximum delay value associated with a second time window, the first time window being indicative of a time period that is more recent than a time period associated with the second time window relative to a time period associated with a current maximum delay value;

a weighted averager communicatively coupled to the memory, and receiving one or more of the plurality of maximum delay values from the memory and calculating a current maximum delay of a plurality of packets input into a network, the current maximum delay being based on a weighted moving average of the plurality of maximum delay values; and

a buffer controller communicatively coupled to the weighted averager, and:

receiving the current maximum delay of the plurality of packets;

calculating the current maximum delay value by:

generating a first product by multiplying the first maximum delay value by a weighted moving average constant;

generating a second product by multiplying the second maximum delay value by a modified weighted moving average constant; and

determining a sum of the first product and the second product, the modified weighted moving average constant being such that the first product is greater than or equal to the second product

calculating a holding time for the plurality of packets based on a difference between the current maximum delay of the plurality of packets and a delay of a first packet of the plurality of packets;

buffering each of the plurality of packets for a duration of the holding time;

arranging the buffered packets in a sequence indicative of an order in which the buffered packets were input into the network; and

playing back the arranged packets at a selected playback time.

11. The computer-based system of claim 10 , wherein the selected playback time is based on the holding time; an interval of time over which the buffered packets were input into the network; and a value indicative of an order in which the buffered packets was input into the network.

12. The computer-based system of claim 10 , wherein the delay of the first packet is determined from information associated with a real-time transport header of the first packet.

13. A computer-based system comprising:

an input mechanism configured to input a plurality of packets into a network at a selected interval during a current time window;

a network configured to route the plurality of packets; and

a reception mechanism configured to receive the routed plurality of packets and having a module configured for:

calculating a holding time for the routed plurality of packets, the holding time being based on a difference between a current maximum delay of the plurality of packets in the current time window and a delay of a first packet of the plurality of packets in the current time window;

buffering each of the routed plurality of packets for the duration of the holding time;

arranging the buffered packets in a sequence indicative of an order in which the buffered packets were input into the network; and

playing back the arranged packets at a selected playback time, the selected playback time being based on at least:

the holding time;

an interval of time over which a first plurality of the buffered packets were input into the network;

a value indicative of an order in which the selected one of the buffered packets was input into the network;

a time at which the selected one of the buffered packets is received; and

a holding time modifier that is multiplied by the holding time, the holding time modifier having a value greater than zero, wherein the selected playback time is equal to a sum of the time at which the selected one of the buffered packets is received, the holding time modifier multiplied by the holding time, and the value indicative of the order in which the selected one of the buffered packets was input into the network multiplied by the interval of time over which the first plurality of the buffered packets were input into the network.

14. The computer-based system of claim 13 , wherein the delay of the first packet is determined from information associated with a real-time transport header of the first packet.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2009
From: VERIZON CORPORATE RESOURCES GROUP LLC
To: VERIZON PATENT AND LICENSING INC.
Reel/Frame 023193/0159 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE: PLEASE DELETE VERIZON NEW YORK INC., 140 WEST STRET, NEW YORK, NY 10007 PREVIOUSLY RECORDED ON REEL 021980 FRAME 0483. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE AS -- VERIZON CORPORATE RESOURCES GROUP LLC, ONE VERIZON WAY, BASKING RIDGE, NJ 07920 --. Recorded Feb 23, 2009
From: LEE, JAY J.
To: VERIZON CORPORATE RESOURCES GROUP LLC
Reel/Frame 022296/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2008
From: LEE, JAY J.
To: VERIZON NEW YORK INC.
Reel/Frame 021980/0483 →