IP Library Granted Patent US 8,483,243
Granted Patent B2
US 8,483,243 · App. 11/522,268 · Granted Jul 9, 2013

Network jitter smoothing with reduced 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 8,483,243
App. No.
11/522,268
Granted
Jul 9, 2013
Kind
B2
Abstract

A method of compensating for jitter in a packet stream is described. The method comprises placing undecoded frames extracted from packets in the packet stream into a jitter buffer while decoding frames from the jitter buffer and placing the decoded frames into a sample buffer at a rate determined using an average playout delay. The average playout delay is the running average of the playout delay calculated for each packet as each packet becomes available. The playout delay for each packet is the sum of a sample buffer delay and a jitter buffer delay. As each packet is received, the average playout delay is adjusted based on a comparison of the playout delay associated with the received packet to the current average playout delay.

Claims (54)

1. A method of compensating for jitter in a packet stream, the method comprising:

performing a first method in response to receiving each packet in the packet stream:

receiving a given packet in the packet stream;

adding a frame in the given packet to a jitter buffer;

calculating, by a computing device, a playout delay of the given packet, the playout delay of the given packet being an amount of time that the frame in the given packet is expected to remain in the jitter buffer and a sample buffer before being played out, the computing device calculating the playout delay of the given packet prior to the frame being removed from the jitter buffer; and

adjusting, by the computing device, an average playout delay to more closely match the playout delay of the given packet, wherein the average playout delay is a running average of the playout delay for each packet in the packet stream; and

performing a second method, the second method comprising:

decoding a first packet in the jitter buffer after determining that there are not enough samples in the sample buffer;

placing decoded frames of the first packet into the sample buffer after decoding the first packet; and

adjusting a length of a signal represented by the samples in the sample buffer based on the adjusted average playout delay.

2. The method of claim 1 , the jitter buffer having a jitter head.

3. The method of claim 2 ,

wherein performing the first method further comprises comparing a sequence indicator associated with the given packet to a sequence indicator associated with the packet in the jitter head;

wherein adding the frame in the given packet to the jitter buffer comprises placing the frame in the given packet into the jitter buffer based on the comparison of the sequence indicators; and

wherein adjusting the average playout delay comprises: if the playout delay is less than the average playout delay, adjusting the average playout delay to more closely match the playout delay of the given packet by a first amount; otherwise, adjusting the average playout delay to more closely match the playout delay of the given packet by a second amount, the first amount being larger than the second amount.

4. The method of claim 3 wherein the sequence indicators are timestamps.

5. The method of claim 3 wherein the sequence indicators are sequence numbers.

6. The method of claim 3 wherein adjusting the average playout delay to more closely match the playout delay of the given packet by the second amount is based on the equation: D i(new) =0.950*D i(old) +0.050*d i , where D i represents the distance between the jitter head and the average playout delay when the given packet is received and d i represents the playout delay of the given packet.

7. The method of claim 3 wherein adjusting the average playout delay to more closely match the playout delay of the given packet by the first amount is based on the equation: D i(new) =0.9*D i(old) +0.1*d i , where D i represents the distance between the jitter head and the average playout delay when the given packet is received and d i represents the playout delay associated with the given packet.

8. The method of claim 3 wherein adjusting the average playout delay to more closely match the playout delay of the given packet by the second amount is based on the equation: D i(new) =0.998*D i(old) +0.002*d i , where D i represents the distance between the jitter head and the average playout delay when the given packet is received and d i represents the playout delay of the given packet.

9. The method of claim 3 wherein adjusting the average playout delay to more closely match the playout delay of the given packet by the first amount is based on the equation: D i(new) =d i , where D i(new) represents the distance between the jitter head and the average playout delay when the given packet is received and d i represents the playout delay of the given packet.

10. The method of claim 1 , wherein the method further comprises:

determining if there are enough samples in the sample buffer to respond to a samples-pull request; and

if there are not enough samples in the sample buffer to respond to the samples-pull request, producing additional samples for the sample buffer.

11. The method of claim 10 wherein producing additional samples for the sample buffer comprises:

determining if the packet at a jitter head of the jitter buffer was received; and

if the packet at the jitter head was received, decoding the packet at the jitter head;

otherwise, concealing the packet at the jitter head.

12. The method of claim 11 , wherein adjusting the length of the signal represented by the samples in the sample buffer comprises:

comparing the adjusted average playout delay to a preselected desired range; and

if the adjusted average playout delay is below the minimum of the desired range, expanding the signal represented by the samples in the sample buffer.

13. The method of claim 12 , wherein adjusting the length of the signal represented by the samples in the sample buffer comprises: if the adjusted average playout delay is above the maximum of the desired range, contracting the signal.

14. A method of compensating for jitter in a packet stream, the method comprising:

receiving the packet stream from a computer network via a transmission protocol;

comparing a sequence indicator of a given packet in the packet stream with a sequence indicator of a packet in a jitter head of a jitter buffer;

placing the given packet into the jitter buffer based on the comparison of the sequence indicator of the given packet with the sequence indicator of the packet at the jitter head of the jitter buffer;

calculating a playout delay of the given packet when the given packet is received, the playout delay of the given packet being an amount of time that a frame in the given packet is expected to remain in the jitter buffer and a sample buffer before being played out;

determining whether the playout delay of the given packet is less than an average playout delay, the average playout delay being a running average of playout delay of packets in the packet stream;

in response to determining that the playout delay of the given packet is less than the average playout delay, adapting the average playout delay to the playout delay of the given packet by a first amount;

in response to determining that the playout delay of the given packet is not less than the average playout delay, adapting the average playout delay to the playout delay of the given packet by a second amount, the first amount being larger than the second amount;

receiving a samples-pull request;

in response to receiving the samples-pull request, determining whether there are enough samples in the sample buffer;

in response to determining that there are enough samples in the sample buffer, delivering at least some of the samples in the sample buffer at a rate given by the average playout delay;

in response to determining that there are not enough samples in the sample buffer, determining whether the packet at the jitter head has been received;

in response to determining that the packet at the jitter head has been received:

decoding the packet at the jitter head to produce decoded samples; and

adding the decoded samples to the sample buffer;

in response to determining that the packet at the jitter head has not yet been received:

generating synthesized samples; and

adding the synthesized samples to the sample buffer;

determining whether the average playout delay is within a desired range;

in response to determining that the adapted average playout delay is below the desired range, expanding a signal represented by the samples in the sample buffer;

in response to determining that the adapted average playout delay is above the desired range, compressing the signal; and

delivering the samples in the sample buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →