The technology of the disclosure relates to recording media items, and in particular to recording a media item on multiple media controllers and coupling portions of the media item recorded on each media controller to one another.
Devices that provide programs for entertainment are increasingly popular. Referred to herein generally as media controllers, such devices can include set-top boxes; digital video recorders; intelligent gaming consoles such as the Microsoft® Xbox®, Sony® PlayStation®, and Nintendo® GameCube®; media consoles such as the Apple® TV®; personal computers; and the like. Each of these media controllers may receive programming from one or more content providers, including cable content providers, satellite content providers, Internet content providers, and the like, and may provide the programming to a viewer upon request.
A media controller receives a program from a content provider by tuning to a frequency on which the program will be transmitted at a designated time. The media controller receives the program content, and either causes the presentation of the program to a user on a television, or records the program by storing the program content on a storage medium. A tuner that is recording a program is unavailable to tune to another channel and present a program to a user without disrupting the recording of the program.
Electronic program guides (EPGs) enable a user to relatively easily select multiple programs for future recording. This is a popular feature that enables users to view programs on their schedules, rather than the broadcasting network's schedule. However, scheduling a large number of recordings increases the likelihood that a tuner will not be available to tune to content upon request from a user. Consequently, it is not uncommon for a user who records a lot of programs to select a program to view from an EPG, only to be told that in order to tune to the desired channel, the user must cancel an in-progress recording. The user therefore faces a choice of not recording a program he would like to view at some point in the future, or not viewing the program he would like to view immediately.
It is increasingly common for a household to have multiple media controllers. Media controllers are also increasingly network capable, and communications between media controllers coupled to a local area network are increasingly common. Frequently, while one media controller is busy recording a program, one or more other media controllers in the household are idle. Accordingly, when a tuner is unavailable to provide a first program to a user because the tuner is occupied recording a second program, it would be beneficial to distribute the recording of the second program to another media controller that is idle, so that the tuner can be available to provide the first program to the user.
Embodiments disclosed herein distribute the recording of a media item among multiple media controllers. The portions of the media item recorded on each media controller are coupled together so that the media item may be presented to a user seamlessly.
According to one embodiment, a first media controller receives a first portion of a media item on a first channel, and stores the first portion in an associated storage. The first media controller receives a request to tune to a second channel. A second portion of the media item remains to be recorded. The first media controller determines that a second media controller is available to record the second portion of the media item. The first media controller directs the second media controller to record the second portion of the media item, and the second media controller records the second portion of the media item. The first media controller couples the first portion to the second portion.
In one embodiment, the second media controller provides the second portion to the first media controller substantially concurrently as the second media controller receives the second portion. The first media controller stores the second portion in association with the first portion in the associated storage.
As the first media controller begins to receive the second portion, the first media controller may determine an end location of the first portion and a begin location of the second portion. The first media controller may store the second portion in association with the first portion by appending the second portion, beginning at the begin location of the second portion, to the end location of the first portion.
The first media controller may determine the end location of the first portion and the begin location of the second portion by identifying content at the end location and content at the begin location which are temporally substantially adjacent each other. The first media controller may determine that content from the first portion and the second portion is temporally substantially adjacent one another by comparing content from the first portion with content from the second portion until a match of content is determined.
The first media controller may determine that the first portion is in a first format, and the second portion is in a second format. The first media controller may convert the first portion into the second format prior to coupling the first portion to the second portion.
In another embodiment, the first media controller couples the first portion to the second portion by storing in association with the first portion a reference to the second portion, which may be stored in a second storage associated with the second media controller.
The first media controller may receive a request from a user to view the recorded media item. In response, the first media controller may access the first portion and cause the presentation of the first portion to the user. The first media controller may detect an end of the first portion and access the reference to the second portion. The first media controller may use the reference to obtain at least a portion of the second portion from the second media controller, and may cause the presentation of the second portion to the user.
Those skilled in the art will appreciate the scope of the present invention 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 invention, and together with the description serve to explain the principles of the invention.
The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the invention and illustrate the best mode of practicing such embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the embodiments 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.
The media controllers 12 receive content from a content provider 18. The content provider 18 may comprise any provider of content, including a service provider that provides content for a direct or indirect fee, a cable operator, a satellite operator, an Internet content provider, and the like. The content received by the media controllers 12 may be any content desirable for presentation, display, or otherwise rendering to a user 14, such as broadcast television, movies, video on demand, music, or the like. Digital content will be referred to herein generally as a “media item,” and a media item can refer to any type of content that is provided by the content provider 18, such as a particular television show, a particular movie, a song, or the like.
A media item is typically, but not necessarily, provided to the media controllers 12 pursuant to a content package that is defined by a particular subscription. A subscription may differ among media controllers 12. For example, the media controller 12A may receive broadcast television in high definition, while the media controllers 12B, 12C may receive broadcast television in standard definition. The content provider 18 may provide an electronic program guide (EPG) 20A, 20B, 20C (generally, EPG 20) to the media controllers 12 that identifies media items available via the respective content provider 18. The EPG 20 typically comprises media item metadata identifying attributes and characteristics of particular media items provided by the content provider 18.
The media item metadata may be provided to the media controller 12 on a continual basis on a channel devoted for such purpose, or upon request by the media controller 12, or at certain predetermined times. The media item metadata can include any data that may be useful or desirable to the user 14 (typically as determined by the respective content provider 18). For example, media item metadata may include a title, a description, identification of well-known actors, a channel on which the media item will be provided, a genre, an MPAA rating, a duration, a version, a time and date the media item will be provided, and the like. Typically, a user 14 accesses an EPG 20 via an input device (not illustrated) such as a remote control, where, upon receipt of a request via the remote control, the media controller 12 will cause a display of information from the EPG 20 on the display device 16. Each of the media controllers 12 also preferably has a respective storage 22A, 22B, 22C (generally, storage 22) in which data, such as the EPG 20, user preferences, and one or more recorded media items, may be stored.
The media controllers 12 are communicatively coupled to one another via a network 24, such as a local area network. The network 24 may comprise any suitable communication mechanism that enables the media controllers 12 to communicate with one another, including, for example, an Ethernet network, Token Ring network, and the like. The media controllers 12 access the network 24 via communication links 26, which may comprise any technology suitable for accessing the network 24, such as, for example, Wi-Fi®, an Ethernet cable, and the like. The network 24 may use any suitable message transport protocol to enable message communications between the media controllers 12, such as, for example, TCP/IP.
The network 24 is communicatively coupled with a content server 28 associated with the content provider 18 via a network 30. The network 30 may comprise a private network, such as a hybrid fiber coaxial network provided by the content provider 18; a public network, such as the Internet; or a combination thereof. The content server 28 includes a storage 32 containing a plurality of media items that may be provided to the user 14 upon request, or that may be scheduled to be provided to all subscribers at predetermined times as indicated in the EPG 20. The content server 28 may also be coupled to one or more video feeds (not illustrated) via which the content provider 18 receives media items from other upstream content providers, such as broadcast networks, and the like.
The media controllers 12 are preferably able to discover one another on the network 24 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 controllers 12 may use the Bonjour® service discovery protocol to discover the other media controllers 12, but the embodiments are not limited to any particular device discovery mechanism. Although the media controllers 12 are illustrated as being coupled solely to the network 24, it will be appreciated that the media controllers 12 may have other connections via which the media controllers 12 receive data. For example, the locale 10 may have a cable distribution network (not illustrated) that interfaces with the network 30 and with each of the media controllers 12. The media controllers 12 may receive media items from the content server 28 via such cable distribution network, and may communicate with each other using the network 24.
The media controllers 12 receive a media item from the content server 28 by tuning, via a tuner, to a designated frequency on which the content server 28 communicates the media item at a designated time. While receiving the media item, the media controller 12 may process the media item in any of multiple ways, including storing the media item in the storage 22, causing the presentation of the media item on the display device 16, or both. The tuner receives a single media item at a time; therefore, a tuner that is recording a first media item is unavailable to tune to another channel to either record a second media item or cause the presentation of the second media item to the user 14 without first ceasing the processing of the first media item.
Because the tuner can only receive one media item at a time, a request by the user 14 to process two media items concurrently can result in a tuner conflict. For example, if the tuner is busy recording a first media item, and the user 14 requests the media controller 12 to cause the presentation of a second media item, a tuner conflict arises. The media controller 12 typically resolves such a tuner conflict by allowing the user 14 to cancel the recording of the first media item, or by foregoing watching the second media item.
Media controllers 12 are increasingly manufactured with multiple tuners in order to decrease the likelihood of a tuner conflict. However, it is not uncommon for a user to desire that multiple media items be recorded simultaneously, while concurrently viewing another media item. Thus, while multiple tuners diminish the likelihood of a tuner conflict, they rarely eliminate tuner conflicts. For purposes of illustration and simplicity, it will be assumed that each of the media controllers 12 has a single tuner, but it will be apparent that the embodiments disclosed herein are implementable in a media controller 12 with any number of tuners and are not limited to a media controller 12 with a single tuner.
Embodiments disclosed herein enable the user 14 to distribute the recording of a media item among multiple media controllers 12. For example, first and second portions of a media item may be recorded on the media controllers 12A and 12B, respectively. The first and second portions are coupled together seamlessly. Consequently, the user 14 need not choose between recording one media item and viewing another.
In response to the request from the user, the manager thread 34A sends a request to the media controllers 12B and 12C to determine if one or both of the media controllers 12B, 12C are available to record the remainder, e.g., the second portion, of the media item being provided on channel 255 (steps 1006, 1008). The request may include a recording task descriptor, as will be discussed in greater detail herein with regard to
The recording task descriptor provided to the media controller 12A may identify attributes that the second portion of the media item, if recorded on the respective media controller 12, will have. For example, assume that the media controller 12B receives, pursuant to the subscription of the user 14, high definition content, and thus identifies in the record task descriptor that the second portion of the media item, if recorded on the media controller 12B, will be at a 1080i resolution. The recording task descriptor may also identify that the media item will be encoded in a particular digital format, such as MPEG-2 or MPEG-4, and any other attributes useful or necessary for the media controller 12A to determine how closely the recording of the second portion will match the first portion if recorded on the respective media controller 12. Assume that media controller 12C receives only standard definition content. In this case, the recording task descriptor provided by the media controller 12C would indicate that the second portion of the media item, if recorded on the media controller 12C, will be in a standard definition 480p resolution.
The manager thread 34A receives the recording task descriptors from the media controllers 12B, 12C and determines which of the media controllers 12B, 12C can record the second portion so that it most closely matches the first portion of the media item (step 1014). Assume that the media controller 12A is similar to the media controller 12B and receives high definition content from the content server 28. Also assume that the first portion of the media item is in a 1080i resolution and is encoded in the same digital format that the media controller 12B would use to record the second portion. The manager thread 34A therefore selects the media controller 12B to record the second portion of the media item.
Because the manager thread 34A has determined that a media controller 12 is available to record the second portion, the manager thread 34A sends a message to a receive thread 38A to prepare to receive a data stream of the second portion of the media item from the media controller 12B (step 1016). The receive thread 38A may initialize data variables, obtain access to the first portion of the media item, and perform any other desired preliminary processing prior to receiving data from the media controller 12B. When the preliminary processing has been completed, the receive thread 38A sends a message to the manager thread 34A indicating that the receive thread 38A is ready to receive data from the media controller 12B (step 1018).
Once the receive thread 38A is ready to receive data, the manager thread 34A sends a message to the media controller 12B directing the media controller 12B to begin recording the second portion of the media item (step 1020). In response, a manager thread 34B directs a recording thread 36B to begin recording the second portion (step 1022). The recording thread 36B begins recording the second portion of the media item and stores the second portion in the storage 22B (step 1024). A transfer thread 40 on the media controller 12B reads the second portion of the media item from the storage 22B substantially concurrently as the second portion is being written to the storage 22B by the recording thread 36B. In one embodiment, the transfer thread 40 reads an initial segment of data and sends the initial segment to the receive thread 38A (step 1026). The initial segment may comprise a predetermined amount of digital content, such as 5 seconds of digital content, 60 frames of digital content, or any other desired amount of digital content.
The receive thread 38A receives the initial segment, and determines a first location in the first portion of the media item and a second location in the second portion of the media item that are temporally substantially adjacent to one another. The receive thread 38A sets an end location of the first portion at the first location and a begin location of the second portion at the second location (step 1028). Methods for determining the end location of the first portion and the begin location of the second portion will be described in greater detail herein with reference to
The manager thread 34A sends a message to a LiveTV thread 44 to tune to the requested channel (i.e., channel 256) (step 1042). The LiveTV thread 44 causes the tuner to tune to channel 256 and causes the presentation of the media item being provided on channel 256 to the user 14. Simultaneously, and for a period of time while the second media item is being received by the media controller 12B, the transfer thread 40 continues to read blocks of the second portion from the storage 22B as the second portion is written to the storage 22B by the recording thread 36B, and sends the blocks of the second portion to the receive thread 38A. When the final block of the second portion of the media item has been sent to the receive thread 38A, the transfer thread 40 sends a message to the receive thread 38A that the transfer is complete (step 1044). The receive thread 38A can finalize any desired processing with respect to the recorded media item, such as registering the name and a pointer to the recorded media item in a recorded programs list in the EPG 20A, so that the user 14 may view the media item, as desired.
If the media controller 12A receives a request to view the recorded media item, the media controller 12A reads the media item from the storage 22A and causes the presentation of both the first portion and the second portion in a seamless manner on the display 16A.
While for purposes of illustration the recording of the media item was described in
The recording task descriptor 50 may contain a task identifier (task ID) field 52 that contains a unique task ID identifying a particular recording request. The media controller 12A may obtain the task ID through conventional mechanisms for generating unique identifiers. A status field 54 may be used by the media controller 12B to identify a status of the media controller 12B. The status field may contain, for example, a status identifier indicating that a particular media controller 12 is “AVAILABLE” or “UNAVAILABLE” to record the second portion. A start date/time field 56 may be provided by the media controller 12A and may contain the date and time that the media item is available from the content provider 18. A duration field 58 may contain the length of the media item in terms of a unit of time, such as minutes. A channel field 60 may be provided by the media controller 12A to identify the channel on which the first portion of the media item was recorded. The media controller 12B may use the channel field 60 to indicate that the media controller 12B, if selected to record the second portion of the media item, may use a second channel that differs from the channel on which the first portion was recorded. For example, if the first portion of the media item was recorded from a high definition channel, but the media controller 12B does not receive high definition channels, the channel identifier in the channel field 60 may indicate a standard definition channel from which the second portion will be recorded.
A program field 62 may identify a title of the media item, such as “Survivor.” After the media item is recorded, a location field 64 may be used to identify the location of the recorded media item. The media controller 12A may identify a particular quality, or resolution, in a quality field 66. For example, the media controller 12A may indicate that the first portion was recorded at a 1080i quality. The media controller 12B may use the quality field 66 to identify the highest quality that the media controller 12B can record the second portion. The media controller 12A may identify a compression at which the first portion was recorded in a compression field 68. The media controller 12B may identify whether the media controller 12B can record at the identified compression or not. Similarly, the media controller 12A may identify a bit depth at which the first portion was recorded in a bit depth field 70. The media controller 12B may identify whether the media controller 12B can record at the bit depth or not.
The media controller 12A uses the recording task descriptor 50 sent by other media controllers 12, such as the media controllers 12B, 12C, to select a media controller 12 that best matches the attributes at which the first portion was recorded. For example, if one media controller 12 can record the second portion at the same quality, compression, and bit depth as the first portion, then the media controller 12A need not execute the step 1032 (
The media controller 12A compares the frames 74 to the frames 80 to find an end location of the first portion and a begin location of the second portion that are temporally substantially adjacent one another. The media controller 12A may prefer to match certain types of frames over other types of frames. For example, some digital encoding technologies generate a stream of data comprising reference frames and delta frames. A reference frame may contain substantially all the data associated with a frame of the content being compressed, while delta frames contain only differences between two frames of the content being compressed. Thus, the media controller 12A may prefer to locate a reference frame in the first portion 72 that matches a reference frame in the segment 78. Assume that the media controller 12A has determined that the frame 74B in the first portion matches the frame 80B in the second portion. Thus locations 82 and 84 denote locations in the media item that are temporally substantially adjacent to one another (e.g., approximately at a time offset of 23:12.015). The media controller 12A sets the end location of the first portion at the location 82, and the begin location of the second portion at the location 84. The media controller 12A couples the first portion 72 to the second portion by appending the second portion starting at location 84 to location 82 of the first portion. Note that the frames 74 of the first portion denoted by the bracket 86 are discarded, as are the frames 80 of the segment 78 denoted by the bracket 88.
The manager thread 34A sends a message to the media controller 12B to begin recording the second portion of the media item (step 2020). The manager thread 34B directs the recording thread 36B to begin recording the second portion (step 2022). The recording thread 36B begins recording the second portion of the media item and stores the second portion in the storage 22B (step 2024). The recording thread 36B sends an initial segment of the second portion to the recording thread 36A (step 2026). As discussed previously, the initial segment may comprise a predetermined amount of digital content, such as 5 seconds of digital content, 60 frames of digital content, or any other desired amount of digital content. The recording thread 36A sets an end location of the first portion at the first location and a begin location of the second portion at the second location (step 2028).
The recording thread 36A sends a message to the recording thread 36B identifying the begin location of the second portion (step 2030). The recording thread 36A also sends a message to the manager thread 34A indicating that the recording on the media controller 12A has been synchronized with the recording on the media controller 12B (step 2032). The recording thread 36B ensures that the second portion is stored in the storage 22B beginning at the begin location (step 2034), and sends a reference to the second portion to the recording thread 36A (step 2036). The manager thread 34A sends the recording thread 36A a message to stop recording the first portion (step 2038). The recording thread 36A stops recording the first portion, and couples the first portion to the second portion by storing the reference from the media controller 12B in association with the first portion (step 2040). For example, the media controller 12A may store the reference in the file header of the first portion. The manager thread 34A sends a message to the LiveTV thread 44 to tune to the requested channel (i.e., channel 256) (step 2042). The LiveTV thread 44 causes the tuner to tune to channel 256 and causes the presentation of the media item being provided on channel 256 to the user 14. When the final block of the second portion of the media item has been sent to the recording thread 36A, the recording thread 36B sends a message to the manager thread 34A that the second portion has been recorded on the second media controller 12B (step 2044).
While for purposes of illustration the recording of the media item was described in
While for purposes of illustration the recording of the media item was described in
The system bus 104 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 102 can include non-volatile memory 106 (e.g., read only memory (ROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), etc.) and/or volatile memory 108 (e.g., random access memory (RAM)). A basic input/output system (BIOS) 110 can be stored in the non-volatile memory 106, which can include the basic routines that help to transfer information between elements within the media controller 12. The volatile memory 108 can also include a high-speed RAM such as static RAM for caching data.
The media controller 12 may further include the storage 22, 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 media controller 12 may further include an optical disk drive 112 (e.g., for reading a compact disk or DVD 114). The drives and associated computer-readable media provide non-volatile storage of data, data structures, computer-executable instructions, and so forth. For the media controller 12, 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 108, including an operating system 116 and one or more program modules 118, which implement the functionality described herein, including, for example, functionality associated with the manager thread 34, the recording thread 36, the receive thread 38, the transfer thread 40, the converter thread 42, and the LiveTV thread 44. 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 100, in conjunction with the program modules 118 in the volatile memory 108, may serve as a control system for the media controller 12 that is adapted to implement the functionality described herein.
A user may be able to enter commands and information into the media controller 12 through one or more wired or 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 100 through an input device interface 120 that is coupled to the system bus 104 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 media controller 12 may drive a separate or integral display device 16, which may also be connected to the system bus 104 via an interface, such as a video output port 122. The media controller 12 operates in a networked environment using a wired and/or wireless network communications interface 124. The communications interface 124 can facilitate wired and/or wireless communications to the network 24 (
The media controller 12 may be operable to communicate with any wireless devices or entities operatively disposed in wireless communication, for example, a printer, a scanner, or a desktop and/or portable computer, via wireless technologies, such as Wi-Fi® and Bluetooth®, for example.
Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present invention. 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/173,628, filed Apr. 29, 2009, the disclosure of which is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61173628 | Apr 2009 | US |