IP Library Granted Patent US 10,044,466
Granted Patent B2
US 10,044,466 · App. 14/991,091 · Granted Aug 7, 2018

Server-side adaptive bit rate control for DLNA HTTP streaming clients

Inventors: Mark S. Schmidt (San Diego, CA); Praveen N. Moorthy (San Diego, CA); Baozhou Li (San Diego, CA)
Assignee: ARRIS Enterprises LLC
H04L1/0001H04L43/0864H04L65/4069H04L65/602H04L65/607H04N21/2343H04N21/23439H04N21/2402H04N21/8456
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 10,044,466
App. No.
14/991,091
Granted
Aug 7, 2018
Kind
B2
Abstract

Methods and systems are described for adaptively transmitting streaming data to a client. In one embodiment, the method comprises receiving, in a server, a request for a data asset from the client, transcoding at least a segment of the data asset according to initial transcoding parameters, transmitting a first fragment of the transcoded segment of the data asset from the server to the client over a communication channel, generating an estimate of a bandwidth of the communications channel at least in part from information acknowledging reception of at least the first fragment of the transcoded segment of the data asset by the client, generating adaptive transcoding parameters at least in part from an estimate of a bandwidth of the communications channel, the estimate generated at the server, transcoding a further segment of the data asset according to the adaptive transcoding parameters, and transmitting the further segment of the data asset.

Claims (171)

1. A method of adaptively transmitting streaming video data to a media video player client, comprising:

receiving, in a server, a request for a video data asset from the media video player client;

transcoding in the server a portion of the video data asset according to initial transcoding parameters;

transmitting the transcoded portion of the video data asset from the server to the client over a communication channel;

generating in the server an estimate of a bandwidth of the communications channel at from information acknowledging reception of the transcoded portion of the data asset by the client;

wherein the bandwidth estimate is generated according to a round trip time (RTT) of the transmitted transcoded portion of the data asset and a size of the transmitted transcoded portion of the data asset, wherein the RTT is the elapsed time between commencement of the transmission of the transcoded portion of the video data asset and receipt of the acknowledgement of the reception of the transcoded portion of the video data asset;

generating adaptive transcoding parameters from the estimate of the bandwidth of the communications channel, the estimate generated at the server;

transcoding a temporally subsequent further portion of the video data asset according to the adaptive transcoding parameters; and transmitting the further portion of the data asset from the server to the client, wherein

the bandwidth estimate is computed at a timer event temporally separated from a previous timer event by a timer interval T AF , and

the elapsed time between commencement of the transmission of the transcoded portion of the data asset and receipt of the acknowledgement of the reception of the transcoded portion of the data asset is computed as:

T AF −T lastACKrecv ;

wherein T lastACKrecv is the time between a clock time of the most recent acknowledgement of the reception of the transcoded portion of the data asset and a clock time of the most recent timer event.

2. The method of claim 1 , wherein:

the amount of transmitted transcoded a portion of the video data asset is determined according to

prevDataRemaining+socketDataSent−DataRemaining, wherein:

socketDataSent is an amount of the data asset delivered to a transmission control protocol (TCP) send socket buffer of the server at the timer event;

DataRemaining is an amount of unsent data asset remaining in the TCP send socket at an timer interval immediately after the timer event;

prevDataRemaining is an amount of the data asset remaining in the TCP send socket buffer after a previous timer interval.

3. The method of claim 2 , wherein:

the elapsed time between commencement of the transmission of the transcoded a portion of the data asset and receipt of the acknowledgement of the reception of the transcoded a portion of the data asset is:

currentTime−lastSendTime− T lastACKrecv if DataRemaining is zero;

currentTime−lastSendTime if DataRemaining is nonzero; and

wherein currentTime is a clock time at which the most recent expiration of the timer interval and lastSendTime is the clock time at which the transcoded a portion of the data asset was delivered to the TCP send socket buffer.

4. The method of claim 3 , further comprising clamping the generated estimated bandwidth of the communications channel to a clamping value.

5. The method of claim 4 , further comprising filtering the estimated bandwidth of the communication channel.

6. The method of claim 5 , further comprising scaling the estimated bandwidth of the communication channel.

7. The method of claim 6 , wherein generating adaptive coding parameters at least in part from the estimate of the bandwidth of the communications channel comprises:

generating a transcoder bit rate command according to the estimate of the bandwidth;

low pass filtering the transcoder bit rate command, wherein the transcoder output bit rate command is asymmetrically filtered to permit more rapid decreases in the transcoder bit rate command than increases in the transcoder bit rate command; and

quantizing the low pass filtered transcoder output bit rate command.

8. The method of claim 7 , wherein increases in the output bit rate command are deferred until each of N successive output bit rate commands is greater than the previous output bit rate command.

9. The method of claim 1 , wherein:

the bandwidth estimate is computed at a timer event temporally separated from a previous timer event by a timer interval T AF , and

transmitting the transcoded portion of the data asset from the server to the client over a communication channel comprises:

sending a first fragment of the transcoded segment from a transcoder output buffer to a TCP send socket buffer at a timer event;

transmitting at least a portion of the first fragment of the transcoded segments from the TCP send socket buffer to the client over the communications channel;

generating an estimate of the bandwidth of the communications channel at least in part from information acknowledging reception of the transcoded segment of the data asset by the client comprises:

computing the estimate of the bandwidth at the timer interval T AF according to

BW

=

(

prevDataRemaining

+

socketDataSent

)

N

empty

T

TB

if

dataRemaining

=

0

and

BW

=

(

prevDataRemaining

+

socketDataSent

-

dataRemaining

)

T

AF

if

dataRemaining

0

;

wherein:

socketDataSent represent an amount of data of the first fragment of the transcoded segments sent from the transcoder output buffer to the TCP send buffer at the timer interval;

dataRemaining represents an amount of data of the first fragment of the transcoded segments remaining in the TCP send buffer at the timer interval;

N empty represents a number of notification time intervals T TB between a most recent timer interval and a time when the remaining number of bytes in the TCP send socket buffer is zero; and

previousDataRemaining represents an amount of data in the TCP send socket buffer at a temporally adjacently previous timer interval.

10. The method of claim 1 , wherein the video player client is a DLNA HTTP streaming data receiving device.

11. An apparatus forming a server for transmitting streaming video data to a video media player client, comprising:

a processor, communicatively coupled to a memory, the memory storing processing instructions including processor instructions for:

receiving, in a server, a request for a data asset from the video player client;

transcoding a portion of the video data asset according to initial transcoding parameters;

transmitting the transcoded portion of the video data asset from the server to the video player client over a communication channel;

generating an estimate of a bandwidth of the communications channel from information acknowledging reception of the transcoded portion of the video data asset by the video player client;

wherein the bandwidth estimate is generated according to a round trip time (RTT) of the transmitted transcoded portion of the data asset and a size of the transmitted transcoded portion of the video data asset, wherein the RTT is the elapsed time between commencement of the transmission of the transcoded portion of the video data asset and receipt of the acknowledgement of the reception of the transcoded portion of the video data asset;

generating adaptive transcoding parameters from the estimate of the bandwidth of the communications channel, the estimate generated at the server;

transcoding a temporally subsequent further portion of the video data asset according to the adaptive transcoding parameters; and

transmitting the further portion of the data asset from the server to the video player client, wherein

the bandwidth estimate is computed at a timer event temporally separated from a previous timer event by a timer interval T AF , and

the elapsed time between commencement of the transmission of the transcoded a portion of the video data asset and receipt of the acknowledgement of the reception of the transcoded portion of the video data asset is computed as:

T AF −T lastACKrecv

wherein T lastACKrecv is the time between a clock time of the most recent acknowledgement of the reception of the transcoded portion of the video data asset and a clock time of the most recent timer event.

12. The apparatus of claim 11 , wherein:

the amount of transmitted transcoded a portion of the data asset is determined according to prevDataRemaining+socketDataSent−DataRemaining, wherein:

socketDataSent is an amount of the data asset delivered to a transmission control protocol (TCP) send socket buffer of the server at the timer event;

DataRemaining is an amount of unsent data asset remaining in the TCP send socket at a timer interval immediately after the timer event; and

prevDataRemaining is an amount of the data asset remaining in the TCP send socket buffer after a previous timer interval.

13. The apparatus of claim 12 , wherein:

the elapsed time between commencement of the transmission of the transcoded a portion of the data asset and receipt of the acknowledgement of the reception of the transcoded a portion of the data asset is:

currentTime−lastSendTime− T lastACKrecv if DataRemaining is zero;

currentTime−lastSendTime if DataRemaining is nonzero; and

wherein currentTime is a clock time at which the most recent expiration of the timer interval and lastSendTime is the clock time at which the transcoded a portion of the data asset was delivered to the TCP send socket buffer.

14. The apparatus of claim 13 , wherein the instructions further comprise:

instructions for clamping the generated estimated bandwidth of the communications channel to a clamping value; and

instructions for filtering the estimated bandwidth of the communication channel.

15. The apparatus of claim 14 , wherein the instructions further comprise instructions for scaling the estimated bandwidth of the communication channel.

16. The apparatus of claim 15 , wherein the instructions for generating adaptive coding parameters at least in part from the estimate of the bandwidth of the communications channel comprise instructions for:

generating a transcoder bit rate command according to the estimate of the bandwidth;

low pass filtering the transcoder bit rate command, wherein the transcoder output bit rate command is asymmetrically filtered to permit more rapid decreases in the transcoder bit rate command than increases in the transcoder bit rate command; and

quantizing the low pass filtered transcoder output bit rate command.

17. The apparatus of claim 10 , wherein:

the bandwidth estimate is computed at a timer event temporally separated from a previous timer event by a timer interval T AF ;

the instructions for transmitting the transcoded portion of the data asset from the server to the client over a communication channel comprise instructions for:

sending a first fragment of the transcoded segment from a transcoder output buffer to a TCP send socket buffer at a timer event;

transmitting at least a portion of the first fragment of the transcoded segments from the TCP send socket buffer to the client over the communications channel;

the instructions for generating an estimate of the bandwidth of the communications channel at least in part from information acknowledging reception of the transcoded segment of the data asset by the client comprise instructions for:

computing the estimate of the bandwidth at the timer interval T AF according to

BW

=

(

prevDataRemaining

+

socketDataSent

)

N

empty

T

TB

if

dataRemaining

=

0

and

BW

=

(

prevDataRemaining

+

socketDataSent

-

dataRemaining

)

T

AF

if

dataRemaining

0

;

wherein

socketDataSent represent an amount of data of the first fragment of the transcoded segments sent from the transcoder output buffer to the TCP send buffer at the timer interval;

dataRemaining represents an amount of data of the first fragment of the transcoded segments remaining in the TCP send buffer at the timer interval;

N empty represents a number of notification time intervals T TB between a most recent timer interval and a time when the remaining number of bytes in the TCP send socket buffer is zero; and

previousDataRemaining represents an amount of data in the TCP send socket buffer at a temporally adjacently previous timer interval.

18. The apparatus of claim 11 , wherein the video player client is a DLNA HTTP streaming data receiving device.

Assignments (9)
RELEASE OF SECURITY INTEREST AT REEL/FRAME 049905/0504 Recorded Dec 19, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: ARRIS ENTERPRISES LLC (F/K/A ARRIS ENTERPRISES, INC.); ARRIS TECHNOLOGY, INC.; ARRIS SOLUTIONS, INC.; COMMSCOPE, INC. OF NORTH CAROLINA; COMMSCOPE TECHNOLOGIES LLC; RUCKUS WIRELESS, LLC (F/K/A RUCKUS WIRELESS, INC.)
Reel/Frame 071477/0255 →
SECURITY INTEREST Recorded Dec 17, 2024
From: ARRIS ENTERPRISES LLC; COMMSCOPE TECHNOLOGIES LLC; COMMSCOPE INC., OF NORTH CAROLINA; OUTDOOR WIRELESS NETWORKS LLC; RUCKUS IP HOLDINGS LLC
To: APOLLO ADMINISTRATIVE AGENCY LLC
Reel/Frame 069889/0114 →
SECURITY INTEREST Recorded Nov 19, 2021
From: ARRIS SOLUTIONS, INC.; ARRIS ENTERPRISES LLC; COMMSCOPE TECHNOLOGIES LLC; COMMSCOPE, INC. OF NORTH CAROLINA; RUCKUS WIRELESS, INC.
To: WILMINGTON TRUST
Reel/Frame 060752/0001 →
TERM LOAN SECURITY AGREEMENT Recorded Jul 3, 2019
From: COMMSCOPE, INC. OF NORTH CAROLINA; COMMSCOPE TECHNOLOGIES LLC; ARRIS ENTERPRISES LLC; ARRIS TECHNOLOGY, INC.; RUCKUS WIRELESS, INC.; ARRIS SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 049905/0504 →
PATENT SECURITY AGREEMENT Recorded Jul 3, 2019
From: ARRIS ENTERPRISES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 049820/0495 →
ABL SECURITY AGREEMENT Recorded Jul 3, 2019
From: COMMSCOPE, INC. OF NORTH CAROLINA; COMMSCOPE TECHNOLOGIES LLC; ARRIS ENTERPRISES LLC; ARRIS TECHNOLOGY, INC.; RUCKUS WIRELESS, INC.; ARRIS SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 049892/0396 →
CHANGE OF NAME Recorded Jun 25, 2019
From: ARRIS ENTERPRISES, INC.
To: ARRIS ENTERPRISES LLC
Reel/Frame 049586/0470 →
CHANGE OF NAME Recorded Mar 14, 2017
From: ARRIS ENTERPRISES INC
To: ARRIS ENTERPRISES LLC
Reel/Frame 041995/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2016
From: SCHMIDT, MARK S.; MOORTHY, PRAVEEN N.; LI, BAOZHOU
To: ARRIS ENTERPRISES, INC.
Reel/Frame 037644/0426 →
Continuity (2)
Provisional Application 62100934 · Jan 8, 2015
Related Publication 20160205164A1 · Jul 14, 2016
Cited By (4)
US 12,323,601 US 12,506,926 US 12,532,008 US 12,689,753