METHOD AND SYSTEM FOR DISTRIBUTING THE RECORDING OF A MEDIA ITEM

- ELOY TECHNOLOGY, LLC

A method for recording a media item. A first media controller records a first portion of a media item. The first media controller receives a request to view a second media item. The first media controller directs a second media controller to record a second portion of the media item, and couples the first portion to the second portion.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
RELATED APPLICATIONS

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.

FIELD OF THE DISCLOSURE

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.

BACKGROUND

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.

SUMMARY

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.

BRIEF DESCRIPTION OF THE 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.

FIG. 1 illustrates a locale, such as a residence, in which embodiments may be practiced;

FIGS. 2A and 2B are message flow diagrams illustrating an exemplary message flow and processing associated with distributing the recording of a media item according to one embodiment;

FIG. 3 is a block diagram of an exemplary recording task descriptor;

FIG. 4 is a block diagram for illustrating a method for determining an end location of the first portion of the media item and a begin location of the second portion according to one embodiment;

FIGS. 5A and 5B are message flow diagrams illustrating an exemplary message flow and processing associated with distributing the recording of a media item according to another embodiment;

FIG. 6 illustrates an exemplary file header of a file containing the first portion of the media item;

FIG. 7 is an exemplary flowchart for playing back the media item wherein the first portion is stored on a first media controller and the second portion is stored on a second media controller; and

FIG. 8 illustrates an exemplary media controller according to one embodiment.

DETAILED DESCRIPTION

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.

FIG. 1 illustrates a locale 10, such as a residence, in which media controllers 12A, 12B, and 12C (generally, media controller 12 or media controllers 12) are located. The media controllers 12 may comprise any device capable of providing, presenting, or otherwise causing the display of content upon demand, such as, for example, a set-top box; a digital video recorder; an intelligent gaming console, such as the Microsoft® Xbox®, Sony® PlayStation®, or Nintendo® GameCube®; a media console such as the Apple® TV®; and the like. The media controllers 12 provide content to one or more users 14 by causing the presentation of the content on a respective display device 16A, 16B, 16C (generally, display device 16 or display devices 16). The display device 16 may comprise any display technology, such as a television, a computer monitor, a projector, or the like. By “causing” or “cause” the presentation of content 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 that are separate from one another, a display device 16 may be integral with a 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 mechanism between the two may not be by a cable, but rather by an internal bus or other signal-carrying mechanism.

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.

FIGS. 2A and 2B are message flow diagrams illustrating an exemplary message flow and processing associated with distributing the recording of a media item according to one embodiment. For purposes of illustration, functionality associated with one or more of the media controllers 12 will be discussed in conjunction with different processing threads. However, the functionality described herein may be distributed within a particular media controller 12 in any desired manner, and is not limited to the particular distribution of functionality as described herein. Assume that the user 14, using the EPG 20, has scheduled the recording of a media item on the media controller 12A, such as the television program Survivor, at 8:00 PM Thursday evening on channel 255. At 8:00 PM, a manager thread 34A sends a message to a recording thread 36A to begin recording the media item (step 1000). The recording thread 36A tunes to channel 255 and begins to record the program Survivor (step 1002). Assume that at 8:10, the media controller 12A receives a request from the user 14 to tune to channel 256 (step 1004). The media controller 12A determines that a tuner conflict exists, because the tuner associated with the media controller 12A cannot both record the media item on channel 255 and simultaneously receive a media item on channel 256.

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 FIG. 3, identifying one or more attributes of the media item—in this example, the program Survivor. Assume both media controllers 12B, 12C are available to record the remainder of the media item. Each of the media controllers sends a recording task descriptor back to the media controller 12A, along with an indication that the respective media controllers 12B, 12C are available to record the media item (steps 1010, 1012).

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 FIG. 4. If necessary, if the media controller 12B cannot record the second portion in the same digital format as the first portion, the receive thread 38A may send a message to a converter thread 42 to convert the first portion to a particular digital format that is identical to the digital format of the second portion (step 1030). In response, the converter thread 42 may transcode the first portion to a lower resolution, a different compression format, a different bit rate, or the like (step 1032). The converter thread 42 sends a message to the receive thread 38A when the converter thread 42 is finished converting the first portion (step 1034). The receive thread 38A sends a message indicating that the recording on the media controller 12A has been synchronized with the recording on the media controller 12B (step 1036). The media controller 12A sends the recording thread 36A a message to stop recording the first portion (step 1038). The receive thread 38A begins coupling the first portion to the second portion by appending the second portion, beginning at the begin location, to the first portion, beginning at the end location, in the storage 22A (step 1040).

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 FIG. 2 as being distributed over two media controllers 12, in other embodiments the recording may be distributed over three or more media controllers 12. For example, a first portion may be recorded on the media controller 12A, a second portion on the media controller 12B, and a third portion on the media controller 12C. This may occur, for example, when a user 14 directs the media controller 12B to present a second media item while the media controller 12B is recording the media item requested by the media controller 12A. The media controller 12B may perform a similar process as described herein with regard to the media controller 12A to resolve the tuner conflict. Additional messaging would be performed to inform the media controller 12A that the media controller 12C will be providing the media controller 12A with a third portion of the media item after the media controller 12B indicates that it is finished recording the second portion. After appending the second portion to the first portion, the media controller 12A would again receive an initial segment of the third portion from the media controller 12C and determine an end location of the combined first and second portions in the storage 22A, and a begin location of the third portion. The media controller 12A then appends the third portion to the end of the second portion as the media controller 12A receives the third portion from the media controller 12C.

FIG. 3 is a block diagram of an exemplary recording task descriptor 50. For purposes of illustration, assume that the media controller 12A sends an availability request message to the media controller 12B, and in return the media controller 12B sends a confirmation message to the media controller 12A indicating that the media controller 12B is available. The recording task descriptor 50 may be included in both the availability request message and the confirmation message. When sent with the availability request message, the recording task descriptor 50 will contain data, as discussed herein, provided by the media controller 12A. When sent with the confirmation message, the recording task descriptor 50 may contain data provided by the media controller 12B.

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 (FIG. 2) to convert the first portion to match the second portion.

FIG. 4 is a block diagram illustrating an exemplary method for determining an end location of the first portion of the media item and a begin location of the second portion according to one embodiment. A first portion 72 includes a plurality of frames 74 of digital content of the media item. A time line 76 illustrates exemplary time offset within the media item. For example, a frame 74A begins at the time offset 23:12.010 from the beginning of the media item. A segment 78 provided by the media controller 12B to the media controller 12A (e.g., step 1026, FIG. 2) contains a plurality of frames 80 of digital content of the media item that have been initially recorded by the media controller 12B.

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.

FIGS. 5A and 5B are message flow diagrams illustrating an exemplary message flow and processing associated with distributing the recording of a media item according to another embodiment. In this embodiment, the media controller 12A does not receive the second portion from the media controller 12B until the user 14 requests to view the media item. Steps 2000-2014 are similar to corresponding steps 1000-1014 discussed with regard to FIG. 2A, and for purposes of brevity, will not be repeated herein. At step 2016, the manager thread 34A sends a message to the recording thread 36A to perform any suitable preliminary processing for receiving a segment of a second portion of the media item from another media controller 12. When the preliminary processing has been completed, the recording thread 36A sends a message to the manager thread 34A indicating the recording thread 36A is ready to receive data from the media controller 12B (step 2018).

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 FIGS. 5A and 5B as being distributed over two media controllers 12, as discussed previously, in other embodiments, the recording may be distributed over three or more media controllers 12. For example, a first portion may be recorded on the media controller 12A, a second portion on the media controller 12B, and a third portion on the media controller 12C. In this embodiment, the second portion also includes a reference in the file header to the third portion stored in the storage 22C.

FIG. 6 illustrates an exemplary file header of a file containing the first portion. The file header 90 may include a byte count field 92 that identifies the total byte count of the first portion. During playback of the media item, the media controller 12A may use the byte count to determine when to begin fetching the second portion from the media controller 12B. A program length field 94 identifies the length of the entire media item in terms of playback, such as the length of the media item in minutes. A length of file field 96 identifies the length of the first portion in the same units as the program length field 94 (e.g., minutes). A reference field 98 contains a reference to the second portion on the media controller 12B.

FIG. 7 is an exemplary flowchart for playing back the media item wherein the first portion is stored on the media controller 12A and the second portion is stored on the media controller 12B. Assume that the user 14 requests to view the media item (step 3000). The media controller 12A accesses the first portion in the storage 22A (step 3002), and causes the presentation of the first portion on the display device 16A (step 3004). As the media controller 12A causes the presentation of the media item, the media controller 12A may ultimately determine that it is nearing the end of the first portion in the storage 22A (step 3006). The media controller 12A accesses the reference from the reference field 98 in the header 90 (step 3008) and begins to obtain the second portion from the media controller 12B (step 3010). The media controller 12A causes the presentation of the second portion to the user 14 on the display device 16A (step 3012). Thus, the fact that the media item is distributed over two media controllers may be completely concealed from the user 14.

While for purposes of illustration the recording of the media item was described in FIG. 3 as being distributed over two media controllers 12, in other embodiments the recording may be distributed over three or more media controllers 12. For example, a first portion may be recorded on the media controller 12A, a second portion on the media controller 12B, and a third portion on the media controller 12C. This may occur, for example, when a user 14 directs the media controller 12B to present a media item while the media controller 12B is recording the media item requested by the media controller 12A. The media controller 12B may perform a similar process as described herein with regard to the media controller 12A to resolve the tuner conflict. Additional messaging would be performed to inform the media controller 12A that the media controller 12C will be providing the media controller 12A with a third portion of the media item after the media controller 12B indicates it is finished recording the second portion. After appending the second portion to the first portion, the media controller 12A would again receive an initial segment of the third portion from the media controller 12C. The media controller 12A determines an end location of the combined first and second portions, and a begin location of the third portion that was provided by the media controller 12C, so that the third portion can be appended to the combined first and second portions.

FIG. 8 illustrates an exemplary media controller 12 according to one embodiment. The media controller 12 may, as discussed previously, comprise a set-top box; a digital video recorder; an intelligent gaming console, such as the Microsoft® Xbox®, Sony® PlayStation®, or Nintendo® GameCube®; a media console such as the Apple® TV®; a personal computer; or the like. In addition to components discussed previously herein, the exemplary media controller 12 may also include a central processing unit 100, a system memory 102, and a system bus 104. The system bus 104 provides an interface for system components including, but not limited to, the system memory 102 and the central processing unit 100. The central processing unit 100 can be any of various commercially available or proprietary processors. Dual microprocessors and other multi-processor architectures may also be employed as the central processing unit 100.

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 (FIG. 1).

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.

Claims

1. A method for recording a media item, comprising:

receiving, on a first media controller, a first portion of a media item, wherein the media item comprises digital content;
storing the first portion;
directing a second media controller to record a second portion of the media item; and
coupling the first portion to the second portion.

2. The method of claim 1, wherein the first media controller continues to receive the first portion of the media item and store the first portion of the media item for a period of time after directing the second media controller to record the second portion of the media item.

3. The method of claim 1, wherein coupling the first portion to the second portion further comprises:

receiving the second portion from the second media controller; and
storing the first portion and the second portion in association with one another in a file on the first media controller.

4. The method of claim 3, wherein receiving the second portion from the second media controller further comprises receiving the second portion from the second media controller substantially concurrently as the second media controller receives the second portion from a content provider.

5. The method of claim 3, wherein storing the first portion and the second portion in association with one another in the file further comprises:

determining an end location of the first portion;
determining a begin location of the second portion; and
storing the begin location of the second portion adjacent the end location of the first portion in the file, wherein the begin location and the end location comprise locations in the media item that are temporally substantially adjacent one another.

6. The method of claim 5, wherein determining the end location of the first portion and determining the begin location of the second portion further comprises:

receiving an initial segment of the second portion from the second media controller;
identifying a first data location in the initial segment and a second data location in the first portion wherein digital content at the first data location is temporally substantially adjacent digital content at the second data location;
setting the begin location at the first data location; and
setting the end location at the second data location.

7. The method of claim 1, wherein receiving the first portion of the media item further comprises receiving the first portion of the media item on a first channel, further comprising:

receiving input from a user to view a second media item on a second channel; and
wherein directing the second media controller to record the second portion of the media item is in response to the input from the user.

8. The method of claim 7, further comprising causing the presentation of the second media item on the second channel to the user, while the second media controller is recording the second portion of the media item.

9. The method of claim 1, further comprising:

determining that the first portion is in a first format;
determining that the second portion is in a second format that is different from the first format; and
converting the first portion into the second format.

10. The method of claim 1, further comprising:

determining that the first portion is in a first format;
determining that the second portion is in a second format that is different from the first format; and
converting the second portion into the first format.

11. The method of claim 1, wherein coupling the first portion to the second portion further comprises:

storing, in association with the first portion on the first media controller, a reference to the second portion on the second media controller.

12. The method of claim 11, further comprising:

receiving input from a user to view the media item; and
causing the presentation of at least a portion of the first portion and at least a portion of the second portion to the user.

13. The method of claim 12, wherein causing the presentation of the at least the portion of the first portion and the at least the portion of the second portion to the user further comprises:

determining an end of the first portion;
accessing the reference to the second portion;
obtaining the at least the portion of the second portion from the second media controller; and
causing the presentation of the at least the portion of the second portion to the user.

14. A media controller comprising:

a communications interface adapted to communicate with a network; and
a control system comprising a processor, the control system coupled to the communications interface and adapted to: receive a first portion of a media item, wherein the media item comprises digital content; store the first portion; direct a second media controller to record a second portion of the media item; and couple the first portion to the second portion.

15. The media controller of claim 14, wherein to couple the first portion to the second portion the control system is further adapted to:

receive the second portion from the second media controller; and
store the first portion and the second portion in association with one another in a file on the media controller.

16. The media controller of claim 15, wherein to store the first portion and the second portion in association with one another in the file the control system is further adapted to:

determine an end location of the first portion;
determine a begin location of the second portion; and
store the begin location of the second portion adjacent the end location of the first portion in the file, wherein the begin location and the end location comprise locations in the media item that are temporally substantially adjacent one another.

17. The media controller of claim 14, wherein the control system is further adapted to:

determine that the first portion is in a first format;
determine that the second portion is in a second format that is different from the first format; and
convert the first portion into the second format.

18. A computer program product, comprising a computer-usable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed on a processor to implement a method for recording a media item, the method comprising:

receiving, on a first media controller, a first portion of a media item, wherein the media item comprises digital content;
storing the first portion;
directing a second media controller to record a second portion of the media item; and
coupling the first portion to the second portion.

19. The computer program product of claim 18, wherein the method further comprises:

receiving the second portion from the second media controller; and
storing the first portion and the second portion in association with one another in a file on the first media controller.

20. The computer program product of claim 19, wherein storing the first portion and the second portion in association with one another in the file further comprises:

determining an end location of the first portion;
determining a begin location of the second portion; and
storing the begin location of the second portion adjacent the end location of the first portion in the file, wherein the begin location and the end location comprise locations in the media item that are temporally substantially adjacent one another.
Patent History
Publication number: 20120114311
Type: Application
Filed: Apr 29, 2010
Publication Date: May 10, 2012
Applicant: ELOY TECHNOLOGY, LLC (Wilmington, DE)
Inventors: Harold Sutherland (San Jose, CA), Sean T. Purdy (Durham, NC)
Application Number: 12/769,948
Classifications
Current U.S. Class: Recording Event Conflict Resolution (e.g., Program Space, Time Overrun, Two-event Conflict, Etc.) (386/292)
International Classification: H04N 7/26 (20060101);