IP Library Granted Patent US 11,523,164
Granted Patent B2
US 11,523,164 · App. 17/313,355 · Granted Dec 6, 2022

Systems and methods for delivery of content via multicast and unicast

Inventors: Rajendran Pichaimurthy (Karnataka, IN); Madhusudhan Seetharam (Karnataka, IN); Harshith Kumar Gejjegondanahally Sreekanth (Karnataka, IN)
Assignee: Rovi Guides, Inc.
H04N21/26616H04L12/185H04L65/611H04L65/612H04N21/2668H04N21/26208H04N21/6408H04N21/812H04N21/8456H04L67/306H04N21/23424
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,523,164
App. No.
17/313,355
Filed
May 6, 2021
Granted
Dec 6, 2022
Kind
B2
Art Unit
2447
USPC
709/231
Abstract

The system and methods described aid content delivery by providing requested content using a hybrid delivery of unicast and multicast content. A content delivery system receives, from user equipment, a request for content and identifies multicast sources for the content. The content delivery system determines a recent multicast source from the multicast sources, the recent multicast source having begun more recently relative to the other sources. The content delivery system transmits, to the user equipment, an identity of the recent multicast source and provides a beginning portion of the content to the user equipment via a unicast stream.

Claims (101)

1. A method comprising:

receiving, from user equipment, a request for content;

identifying a multicast source and a unicast source of the content;

receiving the content from the multicast source; and

in response to determining that a first portion of the content from the multicast source requires buffering:

identifying a start timestamp and an end timestamp of the first portion of the content;

receiving a second portion of the content from the unicast source, wherein the content received from the unicast source does not include the first portion of the content and comprises a plurality of successive time stamps;

calculating a projected length of the second portion of the content based at least in part on a difference between a current timestamp of the second portion of the content and a timestamp that is associated with the required buffering of the first portion of the content;

modifying the second portion based at least in part on the projected length of the second portion by:

determining an advertisement period in the second portion received from the unicast source of the content;

calculating an advertisement length corresponding to the advertisement period;

determining whether the advertisement length exceeds a threshold length relative to the projected length of the second portion; and

in response to determining the advertisement length exceeds the threshold length relative to the projected length of the second portion, removing the advertisement period from the second portion received from the unicast source;

arranging the first portion and the modified second portion based on the start timestamp, the end timestamp, and the plurality of successive time stamps; and

storing, in memory, a single copy of the content comprising the arranged first portion and the modified second portion, wherein the removing is performed before the storing.

2. The method of claim 1 , wherein identifying the multicast source comprises:

determining a timestamp of the request for content;

retrieving an identifier of the content;

transmitting a request to a data source for identities of a plurality of multicast sources, wherein the request comprises the identifier of the content;

receiving a response from the data source, the response comprising a plurality of identities corresponding to each of a plurality of multicast sources that are available to transmit the content;

identifying a respective start timestamp for each of the plurality of multicast sources that are available to transmit the content, wherein each respective start timestamp corresponds to a time that each of the plurality of multicast sources are available to start transmitting the content;

comparing each respective start timestamp to the timestamp of the request for content; and

identifying, based on the comparing, the multicast source from the plurality of multicast sources that has a respective start timestamp that corresponds to the timestamp of the request for content.

3. The method of claim 1 , wherein identifying the unicast source comprises:

determining a timestamp of the request for content;

retrieving an identifier of the content;

transmitting a request to a data source for identities of a plurality of unicast sources, wherein the request comprises the identifier of the content;

receiving a response from the data source, the response comprising a plurality of identities corresponding to each of a plurality of unicast sources that are available to transmit the content;

identifying a respective start timestamp for each of the plurality of unicast sources that are available to transmit the content, wherein each respective start timestamp corresponds to a time that each of the plurality of unicast sources are available to start transmitting the content;

comparing each respective start timestamp to the timestamp of the request for content; and

identifying, based on the comparing, the unicast source from the plurality of unicast sources that has a respective start timestamp that corresponds to the timestamp of the request for content.

4. The method of claim 1 , wherein receiving the content from the multicast source comprises:

identifying a remote server corresponding to the multicast source;

transmitting the request for the content to the remote server; and

in response to receiving the request for the content at the remote server, transmitting a multicast stream comprising the content to the user equipment.

5. The method of claim 1 , wherein receiving the second portion of the content from the unicast source comprises:

identifying a start timestamp of the unicast source, wherein the start timestamp of the unicast source corresponds to a time when the unicast source is available to start transmitting the content;

comparing the start timestamp of the first portion of the content from the multicast source to the start timestamp of the unicast source; and

in response to determining, based on the comparing, the start timestamp of the unicast source matches the start timestamp of the multicast source, identifying the second portion of the content from the unicast source based on the end timestamp of the first portion of the content from the multicast source.

6. The method of claim 5 , further comprising:

in response to determining, based on the comparing, the start timestamp of the unicast source does not match the start timestamp of the multicast source, calculating a time difference between the start timestamp of the unicast source and the start timestamp of the multicast source; and

determining a start timestamp of the second portion of the content from the unicast source by adding the calculated time difference to the end timestamp of the first portion of the content that requires buffering.

7. The method of claim 1 , further comprising:

retrieving textual information related to advertisement content associated with the advertisement period; and

supplementing the second portion received from the unicast source with the textual information.

8. The method of 7 , further comprising:

identifying a user profile associated with the user equipment; and

determining the advertisement content based on the user profile.

9. The method of claim 1 , wherein arranging the first portion and the modified second portion based on the start timestamp, the end timestamp, and the plurality of successive timestamps further comprises positioning the first portion relative to the modified second portion such that the start timestamp, the end timestamp, and the plurality of successive time stamps are in temporal order.

10. A system comprising:

a communication port;

a memory storing instructions; and

control circuitry communicably coupled to the memory and the communication port and configured to execute the instructions to:

receive, from user equipment, a request for content;

identify a multicast source and a unicast source of the content;

receive the content from the multicast source; and

in response to determining that a first portion of the content from the multicast source requires buffering;

identify a start timestamp and an end timestamp of the first portion of the content;

receive a second portion of the content from the unicast source, wherein the content received from the unicast source does not include the first portion of the content and comprises a plurality of successive time stamps;

calculate a projected length of the second portion of the content based at least in part on a difference between a current timestamp of the second portion of the content and a timestamp that is associated with the required buffering of the first portion of the content;

modifying the second portion based at least in part on the projected length of the second portion by:

determining an advertisement period in the second portion received from the unicast source of the content;

calculating an advertisement length corresponding to the advertisement period;

determining whether the advertisement length exceeds a threshold length relative to the projected length of the second portion; and

in response to determining the advertisement length exceeds the threshold length relative to the projected length of the second portion, removing the advertisement period from the second portion received from the unicast source;

arrange the first portion and the modified second portion based on the start timestamp, the end timestamp, and the plurality of successive time stamps; and

store, in memory, a single copy of the content comprising the arranged first portion and the modified second portion, wherein the removing is performed before the storing.

11. The system of claim 10 , wherein the control circuitry configured to identify the multicast source is further configured to:

determine a timestamp of the request for content;

retrieve an identifier of the content;

transmit a request to a data source for identities of a plurality of multicast sources, wherein the request comprises the identifier of the content;

receive a response from the data source, the response comprising a plurality of identities corresponding to each of a plurality of multicast sources that are available to transmit the content;

identify a respective start timestamp for each of the plurality of multicast sources that are available to transmit the content, wherein each respective start timestamp corresponds to a time that each of the plurality of multicast sources are available to start transmitting the content;

compare each respective start timestamp to the timestamp of the request for content; and

identify, based on the comparing, the multicast source from the plurality of multicast sources that has a respective start timestamp that corresponds to the timestamp of the request for content.

12. The system of claim 10 , wherein the control circuitry configured to identify the unicast source is further configured to:

determine a timestamp of the request for content;

retrieve an identifier of the content;

transmit a request to a data source for identities of a plurality of unicast sources, wherein the request comprises the identifier of the content;

receive a response from the data source, the response comprising a plurality of identities corresponding to each of a plurality of unicast sources that are available to transmit the content;

identify a respective start timestamp for each of the plurality of unicast sources that are available to transmit the content, wherein each respective start timestamp corresponds to a time that each of the plurality of unicast sources are available to start transmitting the content;

compare each respective start timestamp to the timestamp of the request for content; and

identify, based on the comparing, the unicast source from the plurality of unicast sources that has a respective start timestamp that corresponds to the timestamp of the request for content.

13. The system of claim 10 , wherein the control circuitry configured to receive the content from the multicast source is further configured to:

identify a remote server corresponding to the multicast source;

transmit the request for the content to the remote server; and

in response to receiving the request for the content at the remote server, transmit a multicast stream comprising the content to the user equipment.

14. The system of claim 10 , wherein the control circuitry configured to receive the second portion of the content from the unicast source is further configured to:

identify a start timestamp of the unicast source, wherein the start timestamp of the unicast source corresponds to a time when the unicast source is available to start transmitting the content;

compare the start timestamp of the first portion of the content from the multicast source to the start timestamp of the unicast source; and

in response to determining, based on the comparing, the start timestamp of the unicast source matches the start timestamp of the multicast source, identify the second portion of the content from the unicast source based on the end timestamp of the first portion of the content from the multicast source course.

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

in response to determining, based on the comparing, the start timestamp of the unicast source does not match the start timestamp of the multicast source, calculate a time difference between the start timestamp of the unicast source and the start timestamp of the multicast source; and

determine a start timestamp of the second portion of the content from the unicast source by adding the calculated time difference to the end timestamp of the first portion of the content that requires buffering.

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

retrieve textual information related to advertisement content associated with the advertisement period; and

supplement the second portion received from the unicast source with the textual information.

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

identify a user profile associated with the user equipment; and

determine the advertisement content based on the user profile.

18. The system of claim 10 , wherein the control circuitry configured to arrange the first portion and the modified second portion based on the start timestamp, the end timestamp, and the plurality of successive timestamps is further configured to position the first portion relative to the modified second portion such that the start timestamp, the end timestamp, and the plurality of successive time stamps are in temporal order.

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 May 6, 2021
From: PICHAIMURTHY, RAJENDRAN; SEETHARAM, MADHUSUDHAN; SREEKANTH, HARSHITH KUMAR GEJJEGONDANAHALLY
To: ROVI GUIDES, INC.
Reel/Frame 056158/0481 →
Continuity (2)
Continuation 16145390 · Sep 28, 2018
Related Publication 20210281902A1 · Sep 9, 2021
Cited By (1)
US 12,684,188