The present disclosure relates to recording programs, and in particular to determining whether a media controller is available to record a program based on previous usage data associated with the media controller.
A media controller, such as a digital video recorder (DVR), records a program by tuning to a frequency on which the program will be transmitted at a designated time. The media controller receives the program content, and stores the program content on a storage medium. The availability of a media controller to record a program is consequently based on the availability of a tuner. Increasingly, media controllers are made with multiple tuners to enable the media controller to perform multiple tasks concurrently, such as recording two programs simultaneously, or viewing one program while recording another.
With the vast selection of program content available from content providers, it is increasingly likely the number of programs which a viewer wishes to access at any given time may exceed the number of tuners in a media controller. For example, a viewer may wish to view a first program and record two other programs simultaneously. If the media controller has only two tuners, a conflict arises. One way to resolve the conflict is to inform the viewer of the conflict and allow the viewer to prioritize the top two choices of the three desired programs. Unfortunately, this results in one program being unrecorded.
Locales, such as a residence, increasingly have multiple media controllers to service multiple televisions. Media controllers are also increasingly network capable, and communications between media controllers coupled to a local area network are increasingly more common. It would be beneficial therefore, if a first media controller could request a second media controller to record a program. While the second media controller may relatively easily determine whether a tuner is immediately available to record a program, if the request is to record a future program, accepting such a request by the second media controller may only ultimately result in a similar conflict on the second media controller. Therefore, it would also be beneficial if it could be determined whether it is likely that the second media controller would be available to record the program at the future point in time.
Embodiments of the present disclosure relate to determining the availability of a media controller to record a program. Generally, a media controller may determine a program time slot associated with a recording request, obtain previous usage data identifying previous usage of the media controller, and based on the previous usage data determine that the media controller will be available to schedule the recording of the program or will not be available to schedule the recording of the program.
In one embodiment, each media controller is provided previous usage data of other media controllers coupled to a local area network in a locale. A first media controller determines that a viewer desires to concurrently access a number of programs that exceeds the number of tuners of the first media controller. For example, the viewer desires to record three programs during a particular time slot, and the first media controller has only two tuners. The first media controller processes the previous usage data of one of the other media controllers coupled to the network, determines that a probability that the other media controller will be available to record the program during the time slot exceeds an availability threshold, and sends a request to the other media controller to record one of the three programs. The first media controller may process the previous usage data of multiple other media controllers until the first media controller locates an available media controller.
In another embodiment, a first media controller sends a request to a second media controller to schedule the recording of a program. The second media controller determines the program time slot of the program identified in the request, and processes previous usage data associated with the second media controller to determine an availability probability that the second media controller will be available to record the program. Determining the availability probability of the second media controller may include determining the availability probability of each of a plurality of tuners associated with the second media controller. If the availability probability of the second media controller exceeds an availability threshold, the second media controller may schedule the recording of the program and send a message to the first media controller indicating that the second media controller has scheduled the request.
In another embodiment, each media controller provides previous usage data associated with the respective media controller to a media server. If a viewer requests concurrent access to a number of programs that exceeds the number of tuners of a first media controller, the first media controller sends a request to the media server to determine whether another media controller may be available to schedule the recording of one of the programs. The media server may process the previous usage data of one or more second media controllers to determine if the probability of availability of any second media controller exceeds an availability threshold. If so, the media server may request that the second media controller record the program, and send a message to the first media controller indicating that the second media controller has been scheduled to record the program.
In yet another embodiment, the first media controller may ask each of a plurality of other media controllers if the other media controllers are available to schedule the recording of a program during the program time slot. After one or more of the other media controllers respond that they are available to record the program, the first media controller may cause a display identifying the other media controllers that are available to schedule the recording of the program to the viewer. The viewer may select one of the other media controllers, and in response to the viewer selection, the first media controller may send the selected media controller a request to record the program.
Those skilled in the art will appreciate the scope of the present disclosure and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosed embodiments.
The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the embodiments and illustrate the best mode of practicing the embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
Embodiments of the present disclosure relate to processing a request to record a program to determine the availability of a media controller tuner to record the program. Generally, a media controller may determine a program time slot associated with the request to record the program, obtain previous usage data identifying previous usage of the media controller during the program time slot, and based on the previous usage data determine that the media controller tuner will be available to record the program or will not be available to record the program. Embodiments may be implemented in any of several different system architectures, including peer-to-peer (P2P) architectures and client-server architectures. Embodiments may also be implemented in conjunction with a merged program guide comprising program data from a plurality of media controllers.
Certain embodiments disclosed herein may be implemented in conjunction with a merged program guide. Accordingly, prior to discussing mechanisms for determining the availability of a media controller to record a program based on previous usage data, the generation of a merged guide will be illustrated. While the merged program guide disclosed herein serves as one mechanism by which previous usage data may be maintained, other embodiments may be implemented in the absence of a merged program guide, as will be discussed in greater detail herein.
The media controllers 12 provide content to one or more viewers 14 by causing a display on a display device 16. The display device 16 may comprise any display technology, such as a television, a computer monitor, a projector, and the like. By “causing” or “cause” to display it is meant that the media controllers 12 generate output streams that are provided to output connections on the media controllers 12 (not illustrated), which are directed to a respective display device 16, typically via a cable or other signal-carrying mechanism. While for purposes of illustration the media controllers 12 and display devices 16 are illustrated as devices which are separate from one another, the display device 16 may be integral with the media controller 12. For example, a single unit may include both a media controller 12, such as a digital video recorder, and a display device 16, such as a television. Where a media controller 12 and display device 16 are integral, the signal-carrying connection between the two may not be by a connection cable, but rather by an internal bus or other signal-carrying mechanism.
The media controller 12A receives content from content providers 18A and 18B (generally content providers 18, or content provider 18). The content providers 18 may comprise any provider of content, including service providers that provide content for a direct or indirect fee, cable operators, satellite operators, internet content providers, and the like. The content received by the media controllers 12 may be any content desirable for presentation, display or otherwise rendering to a viewer 14, such as broadcast television, movies, video on demand, music, and the like. Units of content will be referred to herein as programs, and a program can refer to any unit of content that is referred to individually by the content provider, such as a particular television show, a particular movie, a song, and the like.
Content is typically, but not necessarily, provided to the media controllers 12 in a content package that is defined by a particular subscription. The subscription between the media controller 12 and the content provider 18 defines which channels and features make up a particular content package, and therefore defines the programming that will be provided by the respective content provider 18 to the media controller 12 pursuant to the subscription. For example, the media controller 12A may receive a first content package that includes premium movies and high definition content from the content provider 18A pursuant to a first subscription. The media controller 12B may receive a second content package that includes only standard definition content and no premium movies from the content provider 18D pursuant to a different subscription, even though the content provider 18A may be the same content provider as the content provider 18D. The same program may therefore be available to the same or different media controllers 12. Moreover, different versions of the same program may be available to the same or different media controllers 12. For example, the media controller 12A may have access to a high-definition version of a particular episode of the network program Survivor, while the media controller 12B has access only to a standard-definition version of Survivor based on the respective subscriptions.
The content providers 18 typically provide a guide to the media controllers 12 that identifies programs available via the respective content provider 18. Such guides are depicted in
Local guides 20 typically comprise program metadata identifying attributes and characteristics of particular programs. The program metadata may be provided to the media controller 12 continually on a particular channel, or upon request by the media controller 12, or at certain predetermined times. The program metadata can include any data that may be useful or desirable to the viewer 14 (typically as determined by the respective content provider 18). For example, program metadata may include a title, a description, identification of well-known actors, a channel on which the program will be provided, a genre, an MPAA rating, a duration, a version, a time and date the program will be provided, and the like. Typically, a viewer 14 accesses a local guide 20 via an input device (not illustrated) such as a remote control, wherein, upon receipt of a request via the remote control, the media controller 12 will cause a display of information from the local guide 20 on the display device 16.
The media controllers 12A, 12B may also contain one or more respective recorded programs 22A, 22B (generally, recorded programs 22 or recorded program 22). The recorded programs 22 may have been previously selected by the viewer 14 for time-shifting purposes, for example, to enable the viewer 14 to view a program at a different time from when the program was originally provided by a content provider 18. Different programs may be recorded at different media controllers 12, and thus, for example, the recorded programs 22A may differ from the recorded programs 22B. The media controllers 12 may also be communicatively coupled to local entertainment libraries 24 that contain a variety of programs, such as movies, songs, videos and the like that may have been downloaded, ripped, or otherwise obtained by the viewer 14. The media controllers 12A, 12B also preferably include respective recording schedules 23A, 23B which identify programs that are scheduled to be recorded on the respective media controllers 12A, 12B at a future point in time.
Each of the media controllers 12A, 12B are communicatively coupled to one another via a local area network 26. The local area network 26 may comprise any suitable communication mechanism that enables the media controllers 12A, 12B to communicate with one another, including, for example, an Ethernet network, Token Ring network, and the like. The media controllers 12 access the network 26 via communication links 28, which may comprise any suitable technology for accessing the network 26, such as, for example, WiFi, an Ethernet cable, and the like. The network 26 may use any suitable message transport protocol to enable message communications between the media controllers 12A, 12B, such as, for example, TCP/IP.
According to one embodiment, each of the media controllers 12A, 12B also includes a respective merged guide 30A, 30B (generally, merged guides 30 or merged guide 30). While the generation and contents of the merged guide 30 will be discussed later in detail, generally, each merged guide 30 contains program records identifying programs available from a variety of different sources, including programs that are available at other media controllers 12. For example, the merged guide 30A may contain program records identifying programs available from each of the content providers 18A-18E, programs available in the entertainment libraries 24A, 24B, and recorded programs 22A and 22B. Similarly, the merged guide 30B associated with the media controller 12B also preferably contains program records identifying programs available from each of the content providers 18A-18E, programs available in the entertainment libraries 24A, 24B, and recorded programs 22A and 22B. As will be discussed in greater detail herein, the media controller 12A may cause a display on the display device 16 which presents information contained in the merged guide 30A. Thus, a viewer 14 may use any media controller 12 that is coupled to the network 26 to determine the entire collection of content that may be consumed by the viewer 14.
The media controllers 12 may discover one another on the network 26 using any suitable device discovery mechanism or techniques. Device discovery mechanisms are known to those skilled in the art and will not be described in detail herein. For example, the media controller 12A may use the Bonjour® service discovery protocol to discover the media controller 12B, but the embodiments are not limited to any particular device discovery mechanism.
The media controller 12A also preferably maintains media controller previous usage data identifying previous usage of a media controller. Previous usage data may include data identifying that a viewer 14 viewed or recorded a particular program. In some embodiments, the previous usage data stored on the media controller 12A may comprise data identifying previous usage of the media controller 12A. In other embodiments, the previous usage data stored on the media controller 12A may comprise data identifying previous usage of media controllers 12 other than the media controller 12A.
In the embodiment illustrated in
The media controller 12 preferably includes a recorder 36 for recording a program. The recorder 36 preferably receives input from the tuner 34, encodes the input into a desired format, if necessary, and stores the program data in a storage 38. The storage 38 may comprise any suitable storage technology, such as a hard drive, flash drive, and the like. The storage 38 is preferably a persistent storage that survives the powering down of the media controller 12, and may contain data from a variety of sources, including, for example, the local guide 20, the merged guide 30, the recording schedule 23, the previous usage data 25, and the like.
The media controller 12 may also include a retransmitter 40 which enables the retransmission of a program received by the media controller 12 onto the network 26. For example, the retransmitter 40 may segment the program data received by the media controller 12 into packets and transmit the packets to another media controller 12 via the network 26. The retransmitter 40 may encode the program differently from the way the program was encoded when initially received by the tuner 34. For example, in one embodiment, a first media controller 12 may request from a second media controller 12 a program stream of a program currently being presented to viewers 14 by the second media controller 12. The request may identify that a particular quality, or resolution, of the program stream is desired. For example, the first media controller 12 may intend to display the program stream in a relatively small area of a display device 16 in conjunction with other information, and thus not require a high resolution program stream. The second media controller 12 may then encode the program into a sufficiently lower resolution version of the program prior to transmitting the program stream onto the network 26 to minimize network usage.
The media controller 12 may also include a web server 42 for use in transferring program metadata between media controllers 12. For example, the web server 42 may respond to requests for program metadata from other media controllers 12. In one embodiment the program metadata may be formatted and transferred in an XML format. The media controller 12 may also include update timestamp data 44 that identifies the times that other media controllers 12 last provided program metadata to the media controller 12. The update timestamp data 44 may be used by the media controller 12 to quickly determine which program metadata received by another media controller 12 constitutes new program metadata. The receipt of program metadata by a media controller 12 and the use of the update timestamp data 44 will be described in greater detail herein.
A service field 72 may contain service status information regarding the media controller 12 such as service intervals and/or wear counts. The wear count may indicate how many times particular “wear items” have been used. For example, a media controller 12 containing a hard drive may provide a wear count on the hard drive indicating how many times the hard drive has been written to. This information may in turn be used to predict how much useful life is left on the drive. A state field 74 may contain a status of the media controller 12, such as, for example “Booting”, “On”, “Recording”, “Sleep”, “Updating”, and the like. A location field 76 may identify a location of the media controller 12 within the locale 10. For example, the location field 76 of the media controller 12A may contain “Den”, and the location field 76 of the media controller 12B may contain “Living Room.” The nodal data 32 may also include a preference settings field 78 identifying preferences of one or more viewers 14. Any desired preference data may be stored in the preference settings field 78, such as, for example, genre preferences, actor preferences, time preferences, series preferences, and the like. Preference data may be used, for example, by the media controller 12 to provide program recommendations to a viewer 14.
Each channel 86 may include one or more program records 92. For example, the channel 86-1 contains a plurality of program records 92-1-92-N. Each program record 92 contains metadata associated with a particular program. Thus, each program record 92 corresponds to a particular program. The program record 92 may contain a GUID field 94 that contains a GUID which uniquely identifies the program. A title field 96 may contain a textual title of the program. A start field 98 may identify a present, past or future start time of the program. A duration field 100 identifies a length of the program. A rating field 102 may contain an MPAA rating of the program. A quality field 104 may identify the encoding quality of the program. An alt location field 106 may contain an alternate location of the program other than the location identified in the source field 116. For example, the location identified in the source field 116 may be the source of a highest quality version of the program, while the alt location field 106 may provide a lower quality version of the program. In one embodiment, a uniform resource identifier (URI) represents the location indicated by the source field 116 and alt location field 106. The URI may point to a local media item, or may reference a program available from another media controller 12 over the network.
A requestors field 108 may contain information identifying one or more viewers 14 that have requested that the program be recorded. A viewers list 110 may identify one or more viewers 14 that were identified as being in proximity to the media controller 12 which presented the program. A metadata GUID field 112 may contain a metadata GUID which uniquely identifies a metadata record containing metadata describing additional attributes of the program. The metadata record may exist, for example, on a local or a remote server accessible by the media controller 12. An originator field 115 may identify the particular media controller 12 which originated the respective program record 92. A record update timestamp (TS) field 114 may contain a timestamp identifying the time of the last update to the record 92-1. A source field 116 may identify a location of the program, and may comprise, for example, a URI.
The program record 92 may also include an operation field 117 for identifying a particular operation performed on the corresponding program by the media controller identified in the originator field 115. For example, the operation field 117 may contain a value of 0 to indicate that no operation was performed on the program, a value of 1 to indicate the program was recorded, a value of 2 to indicate the program was presented to a viewer 14, and a value of 3 to indicate that the program was both recorded and presented to a viewer 14. Where the operation value is greater than zero, and where the media controller 12 identified in the originator field 115 has multiple tuners, the originator field 115 may also identify the particular tuner 34 that performed the identified operation. The operation field 117 may be used by the media controller 12 to relatively rapidly determine which program records 92 may be useful for determining the previous usage data associated with another media controller 12. More particularly, upon receipt of a program record 92 having an operation value greater than zero, the media controller 12 may generate a copy of the program record 92 and store the copy in the previous usage data 25. The use of separate previous usage data 25, while optional, provides a mechanism to store for desired periods of time previous usage data associated with other media controllers 12, while allowing the merged guide 30 to maintain historical program records 92 for a much shorter duration.
Preferably, each media controller 12 coupled to the network 26 generates program records 92 for each program that is available at the respective media controller 12. For example, referring again to
Each media controller 12 preferably provides program metadata from the program records 92 which are available from the respective media controller 12 to the other media controllers 12. For example, referring again to
The program metadata may be provided in the same format as the program records 92, or in a different format. The program metadata may be “pushed” as desired by a media controller 12 to the other media controllers, or may be “pulled” from a media controller 12 upon request. In one embodiment, the program metadata may be provided in an XML file, which may have a format similar to the program record 92. In one embodiment, a media controller 12 may broadcast a signal on the network 26 to indicate that new program metadata is available. Referring again to
The receiving media controller 12B receives the program metadata (step 2008). The receiving media controller 12B may, for each program identified by the program metadata, attempt to match the program metadata to an existing program record 92 in the merged guide 30B (step 2010). What constitutes a “match” may be system dependent. Generally, the receiving media controller 12B may determine if various data in the provided program metadata matches corresponding data in any existing program record 92. For example, the receiving media controller 12B may determine that the program identified by the metadata matches a program identified by a program record 92 if the data from the title fields 96 match one another and the data from the start fields 98 match one another.
If the receiving media controller 12B determines that the provided program metadata matches a program identified by a program record 92 (step 2012), then the receiving media controller 12B may generate a child program record 92 from the supplied program metadata, such that the matched program record 92 in the merged guide 30A is stored in association with the child program record 92 (step 2014). Among other advantages, establishing such a parent-child relationship between program records 92 enables the receiving media controller 12B to cause the display of information to a viewer 14 that the same program is available at multiple media controllers 12. If the receiving media controller 12B determines that the program metadata does not match any existing program identified in a program record 92 (step 2012), the receiving media controller 12B may generate a program record 92 as a parent program record 92 that is not a child program record 92 to any other program record 92 (step 2016). While for purposes of illustration only two program records 92 have been shown as stored in association with one another, it is apparent any number of program records 92 that identify the same program may be stored in association with one another.
A similar analysis was conducted by the media controller 12B, and thus the program record 92A was made a child record of the program record 92D, and the program record 92B was made a child record of the program record 92E.
According to one embodiment, the media controller 12 may determine the identity of the viewers 14 that are in proximity to the media controller 12. This information may be stored in the viewers list 110 of the program records 92 for the corresponding programs that are presented by the media controller 12.
The media controller 12B in the living room 122 includes a facial recognition processor 130 that is able to identify through facial processing technology the viewers 14C-14E. Facial recognition technology is known to those skilled in the art, and will not be described in detail herein. The facial recognition processor 130 communicates the identity of the viewers 14C-14E to the media controller 12B. While the facial recognition processor 130 is illustrated as being integral with the media controller 12B, in an alternate embodiment, the facial recognition processor 130 may be separate from but coupled to media controller 12B via a wired or wireless communications channel, for example.
The media controller 12C in a bedroom 124 includes a radio frequency identification (RFID) processor 134. The RFID processor 134 may receive a signal from a device worn, or carried, by the viewer 14F. For example, a cell phone of the viewer 14F may emit a signal that can be received by the RFID processor 134. Upon receipt of such signal, the RFID processor 134 can communicate the identity of the viewer 14F to the media controller 12C.
The media controller 12D in a basement 126 is coupled to a wireless Bluetooth interface which enables the media controller 12D to communicate with Bluetooth devices, such as a cell phone, that contain the appropriate software to interface with the media controller 12D. Such software may be programmed to emit a signal that can be detected by the media controller 12D via the wireless Bluetooth interface 132. The signal may contain an identifier identifying a particular viewer 14G, 14H. The media controller 12D may periodically poll the cell phone to determine if the viewer 14G, 14H is still in proximity of the media controller 12D. If the media controller 12D does not receive a response to the poll, the media controller 12D may determine that the viewers 14G, 14H are no longer in proximity of the media controller 12D.
According to another embodiment, the one media controller 12 may send requests to another media controller 12 for information, or to direct the other media controller 12 to provide a desired function.
The media controller 12A may send the media controller 12B a RECORD PROGRAM REQUEST 146, which requests that the media controller 12B schedule the recording of a particular program. The RECORD PROGRAM REQUEST 146 may include the program record 92 corresponding to the program that is to be recorded. In response, the media controller 12B may determine that no tuner is available to record the program, or may begin recording the desired program, or may schedule the desired program for recording if the program has not begun yet, and if an availability probability of a tuner exceeds an availability threshold, as discussed in greater detail herein. The media controller 12B may provide the media controller 12A a message indicating success or failure of the request. The media controller 12A may send the media controller 12B a PROVIDE_CURRENT_PROGRAM request 148, which requests that the media controller 12B provide a program stream of the program that is currently being provided by the media controller 12B. The media controller 12B, using the retransmitter 40, may then provide a program stream of the program which is currently being provided by the media controller 12B.
Tuner conflicts may arise during the operation of a media controller 12. For example, the media controller 12 may have a single tuner 34, and the viewer 14 may desire to record two programs in the future concurrently. If the media controller 12 has only a single tuner 34, the media controller 12 is able to only record a single program at a time. In one embodiment, to resolve such a tuner conflict, the previous usage data of another media controller 12 is processed to determine if the media controller 12 can schedule the recording of one of the two programs.
The media controller 12A may determine if other media controllers 12, such as the media controller 12B, are currently communicatively coupled to the network 26 (step 5004). Device discovery mechanisms are known to those skilled in the art and will not be described in detail herein. For example, the media controller 12A may use the Bonjour® service discovery protocol to discover the media controller 12B, but the embodiments are not limited to any particular device discovery mechanism. If no other media controllers 12 are available, the media controller 12A may cause a display to the viewer 14 identifying the conflict, thereby enabling the viewer 14 to resolve the conflict by selecting one program over another program (step 5006). If another media controller 12 is available, such as the media controller 12B, the media controller 12A may then access the previous usage data 25A (generally, previous usage data 25) to determine previous usage associated with the media controller 12B (step 5008). For example, the previous usage data 25A may include data extracted from program records 92 wherein the value of the operation field 117 is greater than zero. Such data may identify previous usage of the media controller 12B. For purposes of illustration, assume that the media controller 12B similarly contains only a single tuner 34B.
The media controller 12A determines an availability probability for the media controller 12B (step 5010). The availability probability may be used to determine whether the tuner 34B is likely to be available during the desired time slot. Exemplary mechanisms for determining an availability probability will be discussed herein with respect to
The media controller 12A determines if the availability probability of the media controller 12B exceeds an availability threshold (step 5012). The availability threshold may be a configurable value that may be adjustable by an administrator of the network 26, or by a service provider. The availability threshold may be relatively high to decrease the likelihood that the receiving media controller 12, i.e., the media controller 12B in this example, will encounter a tuner conflict at the time of the scheduled recording. For example, an availability threshold of 90 indicates that the media controller 12B is not available to schedule the recording unless the availability probability exceeds 90%. Alternately, a low availability threshold may be used to facilitate eliminating a current tuner conflict at the media controller 12A at the potential risk of increasing the likelihood of a tuner conflict on the media controller 12B at the time of the scheduled recording.
If the availability probability does not exceed the availability threshold (step 5012), the process returns to step 5004 where it is determined if another media controller 12 may be available to schedule the recording. Otherwise, if the availability probability exceeds the availability threshold (step 5012), the media controller 12A may send the media controller 12B a request to schedule the recording of the program (step 5014). In one embodiment, the media controller 12B may accept or reject such a request. If the media controller 12B rejects the request (step 5016), the process returns to step 5004 where it is determined if another media controller 12 may be available to schedule the recording. If the media controller 12B accepts the request, the media controller 12A may update the recording schedule 23A to reflect that the program will not be recorded by the media controller 12A.
The phrase time slot is used herein to generally refer to a particular period of time. A future time slot, for example, may refer generally to a future period of time during which a program may be scheduled to be provided to a media controller 12. For example, the time slot corresponding to a particular program, such as the Survivor series, may be the 8:00-8:59 time slot. A time slot preferably has a begin time and an end time, although the begin time and end times may vary. For example, generally Survivor is scheduled to be provided in the 8:00 ET time slot, however, due to advertising and the like, may on particular dates begin at 8:01 or 8:02. While time slots will be referred to herein generally as an hourly time slot, e.g., from 8:00-8:59 or 8:00-9:00, it will be apparent that time slots may be any desired length of time, such as 30 minutes.
Moreover, while embodiments have thus far been discussed in conjunction with the use of the merged program guide 30, it should be apparent that media controller previous usage data identifying previous usage activity of the media controller 12B could be generated and broadcast to other media controllers 12 without the existence of the merged guide 30. For example, a previous usage data record may be defined that includes information such as the start field 98, the duration field 100, the originator field 115 and the operation field 117. Each time an operation on the media controller 12B occurs, the media controller 12B could generate a previous usage data record and broadcast the record to the other media controllers 12 on the network. Each recipient media controller 12 could then use the data to maintain a MCU record 150 for the media controller 12B.
For purposes of illustration assume that the media controller 12A has determined that a tuner conflict exists with regard to a request to schedule the recording of a program during a 23:00-23:59 time slot on Monday. Assume that the MCU record 150 contains information corresponding to the media controller 12B. The media controller 12A may continually update the MCU record 150 with new information as it is received from the media controller 12B.
The MCU record 150 includes a tuner usage record 152 for each tuner 34 contained in the media controller 12B. In this example, assume that the media controller 12B contains two tuners 34, and thus the MCU record 150 includes a tuner usage record 152A and a tuner usage record 152B (generally, the tuner usage record 152 or the tuner usage records 152). Each tuner usage record 152 includes seven usage-by-day (UBD) records 154. The tuner usage record 152A thus contains UBD records 154A-1-154A-7. Each UBD record 154A contains previous usage data associated with a particular weekday. The tuner usage record 152B similarly contains UBD records 154B-1-154B-7. Each UBD record 154 contains a plurality of usage-by-time slot (UBT) records. Assuming hourly time slots, for example, the UBD record 154A-1 contains 24 UBT records 156-1-156-24. Thus each UBT record 156 contains previous usage data associated with a particular hour of the particular day corresponding to a UBD record 154. Similarly, the UBD record 154A-7 contains 24 UBT records 158-1-158-24. Each UBT record 156, 158, 160, and 162 identifies a usage factor of the respective tuner during a particular time slot. The usage factor may represent the frequency, by percentage, that the corresponding tuner 34 is busy either presenting a program for display to a viewer or recording a program during the respective time slot. Alternately, the usage factor may represent the frequency that the corresponding tuner 34 is not busy.
Assuming that the usage factor represents the frequency, by percentage, that the corresponding tuner 34 is busy, the availability probability (AP) of the tuner 34 during the respective time slot can thus be determined by the following formula:
APTuner
For example, the AP of Tuner A (tuner usage record 152A) during Time Slot 24 of Day 1 (Monday) indicated by the UBT record 156-24 may be calculated in the following manner:
APTunerA
Similarly, the AP of Tuner B (tuner usage record 152B) during Time Slot 24 of Day 1 (Monday) indicated by the UBT record 160-24 during Time Slot 24 of Day 1 (Monday) indicated by the UBT record 160-24 may be calculated in the following manner:
APTunerB
It is apparent each UBT record 156-162 could contain the availability probability rather than the usage factor. To derive or otherwise determine the aggregate availability probability of a media controller for a particular time slot the following formula may be used:
APmediacontroller=Sum(APeach tuner)/number of tuners
In the present example, assuming the media controller 12B contains two tuners 34, the following formula may be used:
The media controller 12A also preferably accesses the recording schedule 23B of the media controller 12B. The recording schedule 23B identifies the scheduled recordings of the media controller 12B. The recording schedule 23B may identify that the one or both tuners 34 may be busy during the 23:00-23:59 time slot on Monday recording a program, and may identify the particular programs that are scheduled to be recorded. If the media controller 12A determines that both tuners 34 of the media controller 12B are scheduled to record a program during the 23:00-23:59 time slot on Monday, the media controller 12A may determine the availability probability is 0 for the media controller 12B prior to even accessing the MCU record 150. However, if the media controller 12A determines from the recording schedule 23B that the program which the media controller 12A would like the media controller 12B to schedule for recording is already scheduled for recording on the media controller 12B, the media controller 12A may determine the availability probability is 100.
Where the recording schedule 23B indicates that one tuner 34 will not be available due to a scheduled recording, the availability probability may be calculated as the lowest availability probability of either of the tuners 34.
The server 164 determines the availability probability for the media controller 12B (step 6006). The availability probability may be determined as discussed previously with regard to
At step 6002, if no other media controllers 12 are present then the server 164 determines whether any media controllers 12 were identified as being available to schedule the recording of the program (step 6012). If not, the server 164 may send the media controller 12A a message indicating that there are no available media controllers 12 to schedule the recording of the program (step 6014). Otherwise, the server 164 sends the media controller 12A a message identifying the available media controllers 12. The media controller 12A may select one of the available media controllers 12, and send the selected media controller 12 a request to schedule the recording of the program. In another embodiment, rather than identify the available media controllers 12 to the media controller 12A, the server 164 may select an available media controller 12 and send the selected media controller 12 a request to schedule the recording of the program. Upon receipt of a confirmation from the selected media controller 12, the server 164 may then identify the selected media controller 12 to the media controller 12A, indicating that the selected media controller 12 has scheduled the recording of the program.
If the media controller 12A includes the merged guide 30A, the media controller 12A may provide the program record 92 corresponding to the program that is to be recorded. The media controller 12B receives the request (step 7000). The media controller 12B obtains the previous usage data of the media controller 12B from the media controller previous usage data 25B (step 7002). The media controller 12B determines the availability probability for the media controller 12B (step 7004). The availability probability may be determined as discussed previously with regard to
In one embodiment, after a media controller 12 records a program, it may transfer the recorded program over the network 26 to the media controller 12 which requested that it be recorded. Thus, the window 168 may include a “copy back” option which the viewer 14 may actuate to indicate that the viewer 14 would like the DEN DVR media controller 12 to transmit the recorded program to the media controller 12A upon completion of the recording. This may be communicated by the media controller 12A to the DEN DVR media controller 12 in the request to schedule the recording of the program.
In one embodiment, the media controller 12 may implement all or part of the Universal Plug and Play (UPnP) set of networking protocols. One media controller 12 may serve as a UPnP control point when requesting another media controller 12 to schedule the recording of a program, for example. Each media controller 12 may implement at least certain UPnP services, such as ConnectionManager, to enable the streaming of programs from one media controller 12 to another media controller 12, ContentDirectory to provide access to the recorded music and videos at a media controller 12, and ScheduledRecordings to allow each media controller 12 access to the recording schedule 23 of the other media controllers 12.
The media controller 12 may include one or more tuners 34 for selecting program content from a communications channel. The recorder 36 may receive a source input from the tuner 34 and store the content onto a storage device, such as the storage 38. The retransmitter 40 may provide a stream of program content over the network 26 to another media controller 12.
The system bus 176 can be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. The system memory 174 can include non-volatile memory 178 (e.g., read only memory (ROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), etc.) and/or volatile memory 180 (e.g., random access memory (RAM)). A basic input/output system (BIOS) 182 can be stored in the non-volatile memory 178, which can include the basic routines that help to transfer information between elements within the processing device 170. The volatile memory 180 can also include a high-speed RAM such as static RAM for caching data.
The processing device 170 may further include a storage 38, which may comprise, for example, an internal hard disk drive (HDD) (e.g., enhanced integrated drive electronics (EIDE) or serial advanced technology attachment (SATA)) for storage. The processing device 170 may further include an optical disk drive 184 (e.g., for reading a compact disk or DVD 186). The drives and associated computer readable media provide non-volatile storage of data, data structures, computer-executable instructions, and so forth. For the processing device 170, the drives and media accommodate the storage of any data in a suitable digital format. Although the description of computer-readable media above refers to an HDD and optical media such as a CD-ROM or DVD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as Zip disks, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the exemplary operating environment, and further, any such media may contain computer-executable instructions for performing novel methods of the disclosed architecture.
A number of program modules can be stored in the drives and volatile memory 180 including an operating system 188 and one or more program modules 190 which implement the functionality described herein. It is to be appreciated that the embodiments can be implemented with various commercially available operating systems or combinations of operating systems. All or a portion of the embodiments may be implemented as a computer program product, such as a computer usable medium having a computer-readable program code embodied therein. The computer-readable program code can include software instructions for implementing the functionality of embodiments described herein. The central processing unit 172 in conjunction with the program modules 190 in the volatile memory 180 may serve as a control system for the processing device 170 that is adapted to implement the functionality described herein.
In one embodiment, the program modules 190 may be implemented in software and stored in the volatile memory 180. However, the present disclosure is not limited thereto, and in other embodiments, the program modules 190 may be implemented in software, hardware, firmware, or any combination thereof.
A user can enter commands and information into the processing device 170 through one or more wired/wireless input devices, for example, a keyboard and a pointing device, such as a mouse (not illustrated). Other input devices (not illustrated) may include a microphone, an infrared (IR) remote control, a joystick, a game pad, a stylus pen, a touch screen, or the like. These and other input devices are often connected to the central processing unit 172 through an input device interface 192 that is coupled to the system bus 176 but can be connected by other interfaces such as a parallel port, an IEEE 1394 serial port, a game port, a universal serial bus (USB) port, an IR interface, etc.
The processing device 170 may drive a separate or integral display device 16, which may also be connected to the system bus 176 via an interface, such as a video output port 194. The processing device 170 may operate in a networked environment using a wired and/or wireless communication network interface 196. The network interface 196 can facilitate wired and/or wireless communications to the network 26 (
The processing device 170 may be operable to communicate with any wireless devices or entities operatively disposed in wireless communication, for example, a printer, a scanner, a desktop and/or portable computer via wireless technologies, such as Wi-Fi and Bluetooth, for example.
Embodiments have been provided herein for purposes of illustration and explanation, but those skilled in the art will recognize that many additional and/or alternative embodiments are possible.
Those skilled in the art will recognize improvements and modifications to the embodiments. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.
This application claims the benefit of provisional patent application Ser. No. 61/163,086, filed Mar. 25, 2009, the disclosure of which is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61163086 | Mar 2009 | US |