IP Library Granted Patent US 11,128,916
Granted Patent B2
US 11,128,916 · App. 17/253,721 · Granted Sep 21, 2021

Systems and methods for real-time adaptive bitrate transcoding and transmission of transcoded media

Inventors: Steven Mayhew (Cupertino, CA); Maciej Dobrzynski (San Jose, CA); Jonathan Oliver (San Jose, CA)
Assignee: Rovi Guides, Inc.
H04N21/4621H04L65/601H04N21/433H04N21/44004H04N21/440236H04N21/2343H04N21/2662H04N21/845
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 11,128,916
App. No.
17/253,721
Granted
Sep 21, 2021
Kind
B2
Abstract

Methods and systems are provided for streaming a media asset with an adaptive bitrate transcoder. A server receives, from a client device, a first request for a first portion of the plurality of portions to be transcoded at a first bitrate. The server then starts to transcode the plurality of portions at the requested first bitrate to generate a plurality of corresponding transcoded portions. The server updates a header of a transcoded portion to include: 1) a transcode latency value; and 2) a count value indicating a number of available pre-transcoded portions of the media asset at the time the first request was received. The server then transmits the transcoded portion to the client. The client device then determines a second bitrate based on the transcode latency value included in the header of the transcoded portion corresponding to the first portion.

Claims (88)

1. A method for streaming a media asset, the method comprising:

dividing the media asset into a plurality of portions;

receiving, from a client device, a first request for a first portion of the plurality of portions to be transcoded at a first bitrate;

in response to receiving the first request:

transcoding the plurality of portions at the requested first bitrate to generate a plurality of corresponding transcoded portions;

updating a header of a transcoded portion of the plurality of transcoded portions corresponding to the first portion to comprise: 1) a transcode latency value; and 2) a count value indicating a number of available pre-transcoded portions of the media asset at the time the first request was received; and

transmitting the transcoded portion corresponding to the first portion of the plurality of portions to the client device; and

receiving, from the client device, a second request for a second portion of the plurality of portions to be transcoded at a second bitrate,

wherein the second bitrate is determined based on the transcode latency value included in the header of the transcoded portion corresponding to the first portion; and

wherein, the second request was transmitted at a time determined based on the count value included in the header of the transcoded portion corresponding to the first portion.

2. The method of claim 1 , wherein the transcode latency value is calculated by:

determining a first time value representing a time at which the first request was received;

determining a second time value representing a time at which transcoding at the first bitrate was started; and

subtracting the first time value from the second time value.

3. The method of claim 1 , wherein determining the second bitrate based on the transcode latency value comprises:

determining a first time value representing a time at which the first request was transmitted by the client device;

determining a second time value representing a time at which the transcoded portion corresponding to the first portion was received by the client device;

calculating a preliminary latency value by subtracting the first time value from the second time value;

calculating a final latency value by subtracting the transcode latency value from the preliminary latency value;

determining an amount of data contained in the transcoded portion corresponding to the first portion;

determining an observed bandwidth by dividing the amount of data by the final latency value; and

selecting the second bitrate based on the observed bandwidth.

4. The method of claim 1 , further comprising:

storing transcoded portions in a chunk buffer prior to transmitting the transcoded portion to the client device;

wherein the count value indicates a number of transcoded portions of the media asset stored in the chunk buffer.

5. The method of claim 1 , wherein a subset of the plurality of portions comprises a complete segment of the media asset, and wherein determining a time for transmission of the second request based on the count value comprises:

determining an amount of data represented by the count value; and

determining whether the amount of data represented by the count value is greater than an amount of data comprising a complete transcoded segment at the first bitrate.

6. The method of claim 5 , further comprising:

in response to determining that the amount of data represented by the count value is less than the amount of data comprising a complete transcoded segment at the first bitrate, setting the buffer depth threshold to a first value; and

in response to determining that the amount of data represented by the count value is greater than the amount of data comprising a complete transcoded segment at the first bitrate, setting the buffer depth threshold to a second value that is greater than the first value.

7. The method of claim 6 , further comprising:

comparing a number of transcoded portions stored in the playback buffer to a buffer depth threshold.

8. The method of claim 7 , further comprising:

in response to determining that the number of transcoded portions stored in the playback buffer meets the buffer depth threshold:

identifying a time at which playback of a currently playing portion will end; and transmitting a third request for a third portion at the identified time.

9. The method of claim 8 , further comprising:

in response to determining that the number of transcoded portions stored in the playback buffer is less than the buffer depth threshold, immediately transmitting the third request.

10. The method of claim 9 , further comprising:

storing a received transcoded portion in the playback buffer;

playing back, at the client device, the transcoded portion;

after playback of the transcoded portion, removing the transcoded portion from the playback buffer;

comparing the number of transcoded portions stored in the playback buffer to the buffer depth threshold; and

continuing to request additional portions until the number of portions stored in the playback buffer meets the buffer depth threshold.

11. A system for streaming a media asset, the system comprising:

at least one control circuitry configured to:

divide the media asset into a plurality of portions;

receive, from a client device, a first request for a first portion of the plurality of portions to be transcoded at a first bitrate;

in response to receiving the first request:

transcode the plurality of portions at the requested first bitrate to generate a plurality of corresponding transcoded portions;

update a header of a transcoded portion of the plurality of transcoded portions corresponding to the first portion to comprise: 1) a transcode latency value; and 2) a count value indicating a number of available pre-transcoded portions of the media asset at the time the first request was received; and

transmit the transcoded portion corresponding to the first portion of the plurality of portions to the client device;

determine, based on the transcode latency value included in the header of the transcoded portion corresponding to the first portion, a second bitrate;

determine a time to transmit a second request for a second portion of the plurality of portions to be transcoded at the second bitrate; and

receive, from the client device, at the determined time, the second request.

12. The system of claim 11 , wherein the at least one control circuitry is configured to determine the transcode latency value is configured to:

determine a first time value representing a time at which the first request was received; determine a second time value representing a time at which transcoding at the first bitrate was started; and

subtract the first time value from the second time value.

13. The system of claim 11 , wherein the at least one control circuitry is configured to determine the second bitrate based on the transcode latency value is configured to:

determine a first time value representing a time at which the first request was transmitted by the client device;

determine a second time value representing a time at which the transcoded portion corresponding to the first portion was received by the client device;

calculate a preliminary latency value by subtracting the first time value from the second time value;

calculate a final latency value by subtracting the transcode latency value from the preliminary latency value;

determine an amount of data contained in the transcoded portion corresponding to the first portion;

determine an observed bandwidth by dividing the amount of data by the final latency value; and

select the second bitrate based on the observed bandwidth.

14. The system of claim 11 , wherein the at least one control circuitry is further configured to:

store transcoded portions in the chunk buffer prior to transmitting the transcoded portion to the client device;

wherein the count value indicates a number of transcoded portions of the media asset stored in the chunk buffer.

15. The system of claim 11 , wherein a subset of the plurality of portions comprises a complete segment of the media asset, and wherein the at least one control circuitry is configured to determine a time for transmission of the second request based on the count value by:

determining an amount of data represented by the count value; and

determining whether the amount of data represented by the count value is greater than an amount of data comprising a complete transcoded segment at the first bitrate.

16. The system of claim 15 , wherein the at least one control circuitry is further configured to:

in response to determining that the amount of data represented by the count value is less than the amount of data comprising a complete transcoded segment at the first bitrate, set the buffer depth threshold to a first value; and

in response to determining that the amount of data represented by the count value is greater than the amount of data comprising a complete transcoded segment at the first bitrate, set the buffer depth threshold to a second value that is greater than the first value.

17. The system of claim 16 , wherein the at least one control circuitry is further configured to:

compare a number of transcoded portions stored in the playback buffer to a buffer depth threshold.

18. The system of claim 17 , wherein the at least one control circuitry is further configured to:

in response to determining that the number of transcoded portions stored in the playback buffer meets the buffer depth threshold:

identify a time at which playback of a currently playing portion will end; and transmit a third request for a third portion at the identified time.

19. The system of claim 18 , wherein the at least one control circuitry is further configured to:

in response to determining that the number of transcoded portions stored in the playback buffer is less than the buffer depth threshold, immediately transmit the third request.

20. The system of claim 19 , wherein the at least one control circuitry is further configured to:

store a received transcoded portion in the playback buffer;

play back, at the client device, the transcoded portion;

after playback of the transcoded portion, remove the transcoded portion from the playback buffer;

compare the number of transcoded portions stored in the playback buffer to the buffer depth threshold; and

continue to request additional portions until the number of portions stored in the playback buffer meets the buffer depth threshold.

Assignments (3)
CHANGE OF NAME Recorded Oct 3, 2024
From: ROVI GUIDES, INC.
To: ADEIA GUIDES INC.
Reel/Frame 069106/0164 →
SECURITY INTEREST Recorded May 3, 2023
From: ADEIA GUIDES INC.; ADEIA IMAGING LLC; ADEIA MEDIA HOLDINGS LLC; ADEIA MEDIA SOLUTIONS INC.; ADEIA SEMICONDUCTOR ADVANCED TECHNOLOGIES INC.; ADEIA SEMICONDUCTOR BONDING TECHNOLOGIES INC.; ADEIA SEMICONDUCTOR INC.; ADEIA SEMICONDUCTOR SOLUTIONS LLC; ADEIA SEMICONDUCTOR TECHNOLOGIES LLC; ADEIA SOLUTIONS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 063529/0272 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2020
From: MAYHEW, STEVEN; DOBRZYNSKI, MACIEJ; OLIVER, JONATHAN
To: ROVI GUIDES, INC.
Reel/Frame 054690/0674 →
Continuity (1)
Related Publication 20210195290A1 · Jun 24, 2021
Cited By (5)
US 12,284,410 US 12,301,958 US 12,335,559 US 12,526,342 US 12,713,077