IP Library Granted Patent US 11,516,542
Granted Patent B2
US 11,516,542 · App. 17/408,110 · Granted Nov 29, 2022

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/75H04N21/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,516,542
App. No.
17/408,110
Granted
Nov 29, 2022
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 (52)

1. A method comprising:

transmitting, from a client device, a first request for a first portion of a media file to be transcoded and sent to the client device;

receiving, at the client device, a transcoded version of the first portion of the media file and data identifying a transcoding latency value;

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 version of the first portion of the media file was received by the client device;

computing a preliminary latency value by computing a difference between the second time value and the first time value;

computing a final latency value by computing a difference between the preliminary latency value and the transcoding latency value;

determining an amount of data in the transcoded version of the first portion of the media file;

computing a bandwidth value by computing a quotient of the amount of data in the transcoded version of the first portion of the media file and the final latency value;

selecting a bitrate based, at least in part, on the bandwidth value,

transmitting a second request for a second portion of the media file to be transcoded at the selected bitrate and sent to the client device.

2. The method of claim 1 , wherein the transcoding latency value is stored in a header of the transcoded version of the first portion of the media file.

3. The method of claim 2 , wherein the transcoding latency value is inserted into the header of the transcoded version of the first portion of the media file by a computing device that transcoded the first portion of the media file.

4. The method of claim 1 , wherein determining the first time value comprises identifying a transmission timestamp in the first request.

5. The method of claim 1 , further comprising recording a timestamp of a current time upon transmitting the first request for the first portion of the media file to be transcoded, wherein determining the first time value comprises accessing the recorded timestamp.

6. The method of claim 1 , further comprising recording a timestamp of a current time upon receiving the transcoded version of the first portion of the media file, wherein determining the second time value comprises accessing the recorded timestamp.

7. The method of claim 1 , wherein determining the amount of data in the transcoded version of the first portion of the media file comprises accessing data stored in a header of the transcoded version of the first portion of the media file that identifies the amount of data in the transcoded version of the first portion of the media file.

8. The method of claim 1 , wherein selecting the bitrate comprises selecting a bitrate from a plurality of predetermined bitrates that is closest to the bandwidth value without exceeding the bandwidth value.

9. The method of claim 1 , wherein the second request comprises a request to transcode the second portion of the media file at a bitrate that is different than a bitrate at which the first portion of the media file was transcoded based, at least in part, on the bandwidth value.

10. The method of claim 1 , further comprising:

receiving, with the transcoded version of the first portion of the media file, a count value indicating a number of available pre-transcoded portions of the media file;

determining a time to transmit the second request, at least in part, on the count value; and

transmitting the second request at the determined time.

11. A system comprising:

input/output circuitry configured to:

transmit a first request for a first portion of a media file to be transcoded;

receive a transcoded version of the first portion of the media file and data identifying a transcoding latency value; and

control circuitry 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 version of the first portion of the media file was received by the client device;

compute a preliminary latency value by computing a difference between the second time value and the first time value;

compute a final latency value by computing a difference between the preliminary latency value and the transcoding latency value;

determine an amount of data in the transcoded version of the first portion of the media file;

compute a bandwidth value by computing a quotient of the amount of data in the transcoded version of the first portion of the media file and the final latency value; and

select a bitrate based, at least in part, on the bandwidth value,

wherein the input/output circuitry is further configured to transmit a second request for a second portion of the media file to be transcoded at the selected bitrate and sent to the client device.

12. The system of claim 11 , wherein the transcoding latency value is stored in a header of the transcoded version of the first portion of the media file.

13. The system of claim 12 , wherein the transcoding latency value is inserted into the header of the transcoded version of the first portion of the media file by a computing device that transcoded the first portion of the media file.

14. The system of claim 11 , wherein the control circuitry is configured to determine the first time value by identifying a transmission timestamp in the first request.

15. The system of claim 11 , wherein the control circuitry is further configured to:

record a timestamp of a current time upon transmitting the first request for the first portion of the media file to be transcoded;

determine the first time value based, at least in part, on the recorded timestamp.

16. The system of claim 11 , wherein the control circuitry is further configured to:

record a timestamp a current time upon receiving the transcoded version of the first portion of the media file;

determine the second time value based, at least in part, on the recorded timestamp.

17. The system of claim 11 , wherein the control circuitry is further configured to determine the amount of data in the transcoded version of the first portion of the media file based, at least in part, on data stored in a header of the transcoded version of the first portion of the media file that identifies the amount of data in the transcoded version of the first portion of the media file.

18. The system of claim 11 , wherein the control circuitry is further configured to select the bitrate by selecting a bitrate from a plurality of predetermined bitrates that is closest to the bandwidth value without exceeding the bandwidth value.

19. The system of claim 11 , wherein the second request comprises a request to transcode the second portion of the media file at a bitrate that is different than a bitrate at which the first portion of the media file was transcoded based, at least in part, on the bandwidth value.

20. The system of claim 11 :

wherein the input/output circuitry is further configured to receive, with the transcoded version of the first portion of the media file, a count value indicating a number of available pre-transcoded portions of the media file;

wherein the control circuitry is further configured to determine a time to transmit the second request, at least in part, on the count value; and

wherein the input/output circuitry is further configured to transmit the second request at the determined time.

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 19, 2023
From: ADEIA GUIDES INC.; ADEIA MEDIA HOLDINGS LLC; ADEIA MEDIA SOLUTIONS INC.; ADEIA SEMICONDUCTOR BONDING TECHNOLOGIES INC.; ADEIA SEMICONDUCTOR SOLUTIONS LLC; ADEIA SEMICONDUCTOR TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 063707/0884 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2021
From: MAYHEW, STEVEN; DOBRZYNSKI, MACIEJ; OLIVER, JONATHAN
To: ROVI GUIDES, INC.
Reel/Frame 057244/0854 →
Continuity (2)
Continuation 17253721
Related Publication 20210385540A1 · Dec 9, 2021
Cited By (1)
US 12,713,077