IP Library Granted Patent US 10,362,351
Granted Patent B2
US 10,362,351 · App. 14/463,487 · Granted Jul 23, 2019

Dynamic tuner allocation

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,362,351
App. No.
14/463,487
Granted
Jul 23, 2019
Kind
B2
Abstract

In an embodiment, a first tuner task type is identified from among a plurality of tuner task types, in response to receiving a first tuner request. The first tuner request was made to perform a tuner task of the first tuner task type. A first set of tuner selection rules specifically for the first tuner task type is determined and applied to a set of tuners to determine whether the set of tuners comprises a tuner available to perform the tuner task of the first tuner task type.

Claims (98)

1. A method comprising:

in response to receiving a first tuner request, identifying a first tuner task type from among a plurality of tuner task types, the first tuner request requesting performance of a new tuner task of the first tuner task type;

in response to identifying the first tuner task type for the new tuner task, performing:

determining a first set of tuner selection rules specifically for the first tuner task type;

applying one or more filtering rules in the first set of tuner selection rules to a set of tuners capable of performing the first tuner task type to determine whether the set of tuners comprises a plurality of tuners available to perform the new tuner task of the first tuner task type;

in response to determining that the plurality of tuners in the set of tuners are available to perform the new tuner task of the first tuner task type, performing:

applying one or more sorting rules in the first set of tuner selection rules that include assigning a priority to each tuner in the plurality of tuners available to perform the new tuner task of the first tuner task type based on a current tuner state of that tuner; and

selecting a specific tuner, based on a specific priority assigned to the specific tuner, from the plurality of tuners for performing the new tuner task; and

in response to determining that none of the tuners of the set of tuners capable of performing the first tuner task type are available to perform the new tuner task, performing:

applying one or more sorting rules in the first set of tuner selection rules that include assigning a priority to each tuner in the set of tuners capable of performing the first tuner task type based on a priority of a tuner task with which that tuner is occupied;

selecting a specific tuner, based on a specific priority assigned to the specific tuner, from the set of tuners capable of performing the first tuner task type for performing the new tuner task; and

reassigning the selected tuner to perform the new tuner task.

2. The method of claim 1 , wherein the first set of tuner selection rules comprises one or more of tuner filtering rules or tuner sorting rules.

3. The method of claim 1 , further comprising:

determining, based on a set of existing tuner tasks being performed by the set of tuners, that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type;

while the set of tuners continues performing the set of existing tuner tasks, performing:

in response to receiving a second tuner request, identifying a second tuner task type from among the plurality of tuner task types, the second tuner request being made to perform a new tuner task of the second tuner task type;

determining a second set of tuner selection rules specifically for the second tuner task type, the second set of tuner selection rules being different the first set of tuner selection rules; and

determining, based on the second set of tuner selection rules, that the set of tuners comprises a tuner available to perform the new tuner task of the second tuner task type.

4. The method of claim 1 , wherein the first tuner request is one of: a live TV tuner request, a tuner swap request, a video-on-demand (VOD) tuner request, a background node discovery tuner request, an exclusive lock tuner request, or a recording tuner request.

5. The method of claim 1 , wherein the first tuner request is triggered by one of: a user of a tuner-equipped device with at least one tuner in the set of tuners, a user of a tuner client device without at least one tuner in the set of tuners, or a scheduler in response to a system-generated event.

6. The method of claim 1 , wherein the first set of tuner selection rules comprises a tuner selection rule which, when applied, determines whether the set of tuners comprises a specific tuner already tuned to a requested channel specified in the first tuner request.

7. The method of claim 1 , further comprising:

applying one or more check tuner conflict operations.

8. The method of claim 1 , further comprising:

presenting options to a user in response to determining that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type.

9. The method of claim 1 , further comprising:

determining, based on a set of existing tuner tasks being performed by the set of tuners, that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type;

wherein the new tuner task of the first tuner task type relates to one of live streaming or live TV with a media program at a requested channel;

determining whether a specific tuner in the set of existing tuner tasks is currently recording the media program at the requested channel;

in response to determining that the specific tuner in the set of existing tuner tasks is currently recording the media program at the requested channel, providing to a device, from which the first tuner request was originated, a media data stream constructed from recorded portions of the media program at the requested channel, the recorded portions of the media program at the requested channel being generated with the specific tuner in the set of existing tuner tasks.

10. The method of claim 1 , further comprising determining at least one tuner state for at least one tuner in the set of tuners, based on one or more tuner attributes of the at least one tuner.

11. The method of claim 10 , wherein at least one of the tuner attributes is determined based on one or more of user remote activities or display-generated events.

12. The method of claim 10 , wherein at least one of the tuner attributes relates to one of user recording, fuzzy recording, live caching, live streaming, or an idle state.

13. The method of claim 10 , wherein at least one of the tuner attributes relates to an indication that the at least one tuner is one of a foreground focus or a background focus.

14. The method of claim 10 , wherein at least one of the tuner attributes relates to an indication that the at least one tuner is one of an active state, an inactive state, or a confirmed inactive state.

15. A non-transitory computer readable medium storing instructions, which when executed by one or more processors cause performance of:

in response to receiving a first tuner request, identifying a first tuner task type from among a plurality of tuner task types, the first tuner request requesting performance of a new tuner task of the first tuner task type;

in response to identifying the first tuner task type for the new tuner task, performing:

determining a first set of tuner selection rules specifically for the first tuner task type;

applying one or more filtering rules in the first set of tuner selection rules to a set of tuners capable of performing the first tuner task type to determine whether the set of tuners comprises a plurality of tuners available to perform the new tuner task of the first tuner task type;

in response to determining that the plurality of tuners in the set of tuners are available to perform the new tuner task of the first tuner task type, performing:

applying one or more sorting rules in the first set of tuner selection rules that include assigning a priority to each tuner in the plurality of tuners available to perform the new tuner task of the first tuner task type based on a current tuner state of that tuner; and

selecting a specific tuner, based on a specific priority assigned to the specific tuner, from the plurality of tuners for performing the new tuner task; and

in response to determining that none of the tuners of the set of tuners capable of performing the first tuner task type are available to perform the new tuner task, performing:

applying one or more sorting rules in the first set of tuner selection rules that include assigning a priority to each tuner in the set of tuners capable of performing the first tuner task type based on a priority of a tuner task with which that tuner is occupied;

selecting a specific tuner, based on a specific priority assigned to the specific tuner, from the set of tuners capable of performing the first tuner task type for performing the new tuner task; and

reassigning the selected tuner to perform the new tuner task.

16. The medium of claim 15 , wherein the first set of tuner selection rules comprises one or more of tuner filtering rules or tuner sorting rules.

17. The medium of claim 15 , wherein the instructions comprise further instructions, which when executed by one or more processors cause performance of:

determining, based on a set of existing tuner tasks being performed by the set of tuners, that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type;

while the set of tuners continues performing the set of existing tuner tasks, performing:

in response to receiving a second tuner request, identifying a second tuner task type from among the plurality of tuner task types, the second tuner request being made to perform a new tuner task of the second tuner task type;

determining a second set of tuner selection rules specifically for the second tuner task type, the second set of tuner selection rules being different the first set of tuner selection rules; and

determining, based on the second set of tuner selection rules, that the set of tuners comprises a tuner available to perform the new tuner task of the second tuner task type.

18. The medium of claim 15 , wherein the first tuner request is one of a live TV tuner request, a tuner swap request, a video-on-demand (VOD) tuner request, a background node discovery tuner request, an exclusive lock tuner request, or a recording tuner request.

19. The medium of claim 15 , wherein the first tuner request is triggered by one of a user of a tuner-equipped device with at least one tuner in the set of tuners, a user of a tuner client device without at least one tuner in the set of tuners, or a scheduler in response to a system-generated event.

20. The medium of claim 15 , wherein the first set of tuner selection rules comprises a tuner selection rule which, when applied, determines whether the set of tuners comprises a specific tuner already tuned to a requested channel specified in the first tuner request.

21. The medium of claim 15 , wherein the instructions comprise further instructions, which when executed by one or more processors cause performance of applying one or more check tuner conflict operations.

22. The medium of claim 15 , wherein the instructions comprise further instructions, which when executed by one or more processors cause performance of presenting options to a user in response to determining that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type.

23. The medium of claim 15 , wherein the instructions comprise further instructions, which when executed by one or more processors cause performance of:

determining, based on a set of existing tuner tasks being performed by the set of tuners, that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type;

wherein the new tuner task of the first tuner task type relates to one of live streaming or live TV with a media program at a requested channel;

determining whether a specific tuner in the set of existing tuner tasks is currently recording the media program at the requested channel;

in response to determining that the specific tuner in the set of existing tuner tasks is currently recording the media program at the requested channel, providing to a device, from which the first tuner request was originated, a media data stream constructed from recorded portions of the media program at the requested channel, the recorded portions of the media program at the requested channel being generated with the specific tuner in the set of existing tuner tasks.

24. The medium of claim 15 , wherein the instructions comprise further instructions, which when executed by one or more processors cause performance of determining at least one tuner state for at least one tuner in the set of tuners, based on one or more tuner attributes of the at least one tuner.

25. The medium of claim 24 , wherein at least one of the tuner attributes is determined based on one or more of user remote activities or display-generated events.

26. The medium of claim 24 , wherein at least one of the tuner attributes relates to one of user recording, fuzzy recording, live caching, live streaming, or an idle state.

27. The medium of claim 24 , wherein at least one of the tuner attributes relates to an indication that the at least one tuner is one of a foreground focus or a background focus.

28. The medium of claim 24 , wherein at least one of the tuner attributes relates to an indication that the at least one tuner is one of an active state, an inactive state, or a confirmed inactive state.

29. An apparatus comprising:

an identification subsystem, implemented at least partially in hardware, that identifies, in response to receiving a first tuner request, a first tuner task type from among a plurality of tuner task types, the first tuner request requesting performance of a new tuner task of the first tuner task type;

a determination subsystem, implemented at least partially in hardware, that determines a first set of tuner selection rules specifically for the first tuner task type;

a selection rule subsystem, implemented at least partially in hardware, that applies one or more filtering rules in the first set of tuner selection rules to a set of tuners capable of performing the first tuner task type to determine whether the set of tuners comprises a plurality of tuners available to perform the new tuner task of the first tuner task type;

the selection rule subsystem, in response to determining that the plurality of tuners in the set of tuners are available to perform the new tuner task of the first tuner task type, applying one or more sorting rules in the first set of tuner selection rules that include assigning a priority to each tuner in the plurality of tuners available to perform the new tuner task of the first tuner task type based on a current tuner state of that tuner and selecting a specific tuner, based on a specific priority assigned to the specific tuner, from the plurality of tuners for performing the new tuner task; and

the selection rule subsystem, in response to determining that none of the tuners of the set of tuners capable of performing the first tuner task type are available to perform the new tuner task, applying one or more sorting rules in the first set of tuner selection rules that include assigning a priority to each tuner in the set of tuners capable of performing the first tuner task type based on a priority of a tuner task with which that tuner is occupied, selecting a specific tuner, based on a specific priority assigned to the specific tuner, from the set of tuners capable of performing the first tuner task type for performing the new tuner task, and reassigning the selected tuner to perform the new tuner task.

30. The apparatus of claim 29 , wherein the first set of tuner selection rules comprises one or more of tuner filtering rules or tuner sorting rules.

31. The apparatus of claim 29 , wherein the apparatus further comprises:

a subsystem, implemented at least partially in hardware, that determines, based on a set of existing tuner tasks being performed by the set of tuners, that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type;

a subsystem, implemented at least partially in hardware, that, identifies, in response to receiving a second tuner request, a second tuner task type from among the plurality of tuner task types, the second tuner request being made to perform a new tuner task of the second tuner task type;

a subsystem, implemented at least partially in hardware, that determines a second set of tuner selection rules specifically for the second tuner task type, the second set of tuner selection rules being different the first set of tuner selection rules; and

a subsystem, implemented at least partially in hardware, that determines, based on the second set of tuner selection rules, that the set of tuners comprises a tuner available to perform the new tuner task of the second tuner task type.

32. The apparatus of claim 29 , wherein the first tuner request is one of a live TV tuner request, a tuner swap request, a video-on-demand (VOD) tuner request, a background node discovery tuner request, an exclusive lock tuner request, or a recording tuner request.

33. The apparatus of claim 29 , wherein the first tuner request is triggered by one of: a user of a tuner-equipped device with at least one tuner in the set of tuners, a user of a tuner client device without at least one tuner in the set of tuners, or a scheduler in response to a system-generated event.

34. The apparatus of claim 29 , wherein the first set of tuner selection rules comprises a tuner selection rule which, when applied, determines whether the set of tuners comprises a specific tuner already tuned to a requested channel specified in the first tuner request.

35. The apparatus of claim 29 , wherein the apparatus further comprises a subsystem, implemented at least partially in hardware, that applies one or more check tuner conflict operations.

36. The apparatus of claim 29 , wherein the apparatus further comprises:

a subsystem, implemented at least partially in hardware, that presents options to a user in response to determining that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type.

37. The apparatus of claim 29 , wherein the apparatus further comprises:

a subsystem, implemented at least partially in hardware, that determines, based on a set of existing tuner tasks being performed by the set of tuners, that the set of tuners does not comprise a tuner available to perform the new tuner task of the first tuner task type;

wherein the new tuner task of the first tuner task type relates to one of live streaming or live TV with a media program at a requested channel;

a subsystem, implemented at least partially in hardware, that determines whether a specific tuner in the set of existing tuner tasks is currently recording the media program at the requested channel;

a subsystem, implemented at least partially in hardware, that provides to a device, from which the first tuner request was originated, a media data stream constructed from recorded portions of the media program at the requested channel in response to determining that the specific tuner in the set of existing tuner tasks is currently recording the media program at the requested channel, the recorded portions of the media program at the requested channel being generated with the specific tuner in the set of existing tuner tasks.

38. The apparatus of claim 29 , wherein the apparatus further comprises: a subsystem, implemented at least partially in hardware, that determines at least one tuner state for at least one tuner in the set of tuners, based on one or more tuner attributes of the at least one tuner.

39. The apparatus of claim 38 , wherein at least one of the tuner attributes is determined based on one or more of user remote activities or display-generated events.

40. The apparatus of claim 38 , wherein at least one of the tuner attributes relates to one of: user recording, fuzzy recording, live caching, live streaming, or an idle state.

41. The apparatus of claim 38 , wherein at least one of the tuner attributes relates to an indication that the at least one tuner is one of a foreground focus or a background focus.

42. The apparatus of claim 38 , wherein at least one of the tuner attributes relates to an indication that the at least one tuner is one of an active state, an inactive state, or a confirmed inactive state.

Assignments (10)
CHANGE OF NAME Recorded Sep 27, 2024
From: TIVO SOLUTIONS INC.
To: ADEIA MEDIA SOLUTIONS INC.
Reel/Frame 069067/0489 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: HPS INVESTMENT PARTNERS, LLC
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053458/0749 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053481/0790 →
SECURITY INTEREST Recorded Jun 1, 2020
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS INC.; VEVEO, INC.; INVENSAS CORPORATION; INVENSAS BONDING TECHNOLOGIES, INC.; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: BANK OF AMERICA, N.A.
Reel/Frame 053468/0001 →
RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 25, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: TIVO SOLUTIONS INC.
Reel/Frame 051109/0969 →
PATENT SECURITY AGREEMENT Recorded Nov 25, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 051110/0006 →
SECURITY INTEREST Recorded Nov 22, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: HPS INVESTMENT PARTNERS, LLC, AS COLLATERAL AGENT
Reel/Frame 051143/0468 →
CHANGE OF NAME Recorded Jan 25, 2017
From: TIVO INC.
To: TIVO SOLUTIONS INC.
Reel/Frame 041493/0822 →
SECURITY INTEREST Recorded Dec 7, 2016
From: TIVO SOLUTIONS INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 041076/0051 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2015
From: GLENNON, SHELLY; PALUCH, KIMBERLY
To: TIVO INC.
Reel/Frame 035315/0111 →
Cited By (1)
US 12,701,297