Program recording completion

A program recording completion system automatically completes an incomplete program recording of a program. A recording application creates a program recording completion event corresponding to the incomplete program recording which includes program information to automatically complete the incomplete program recording. The recording application can initiate recording a re-broadcast of the program to create a complete program recording, or the recording application can record a segment of a re-broadcast of the program and combine the program segment with the incomplete program recording to create a complete program recording.

TECHNICAL FIELD

This invention relates to television entertainment architectures and, in particular, to a program recording completion system.

BACKGROUND

Client devices in a television-based entertainment system can be viewer enabled to record broadcast programs such as television shows, movies, sporting events, and similar broadcast video content. A program guide can be displayed on a television connected to a client device to display program information such as a program title, the associated local channel number, and a time of the day that the program will be broadcast. A viewer can select to view the program if it is currently being broadcast, access program data to learn more about the program, and/or enter a request to record the program.

When a viewer schedules, or otherwise requests, a record event at a client device to record a particular program, the client device records the program when it is broadcast and stores the recorded program so that the viewer may watch the program in its entirety at a later time. However, quite often a viewer will begin watching a program and, after the broadcast of the program has started, decide to record the program. This type of impulse record request results in the client device recording the remainder of the program as it is broadcast. The recorded program, however, is incomplete because a beginning segment of the program, before the viewer decided to initiate the recording, is not recorded.

In addition to a program recording being incomplete due to an impulse record request, a program recording can be incomplete because a scheduled recording of the program is interrupted, either because a viewer stops the recording before the program broadcast is complete, or because system resources became unavailable to continue with the recording. Further, a program recording may be incomplete due to system power failure, due to a loss of the broadcast communication, or due to any number of other interruption events not within a viewer's control. A television viewer expecting to have recorded a particular program in its entirety will be disappointed to find that the recording of the program is incomplete and will not be able to watch the entire program.

Accordingly, for television-based entertainment systems, there is a need for techniques to automatically complete a program recording that has been only partially recorded and/or interrupted resulting in an incomplete recording of a requested program.

SUMMARY

A program recording completion system automatically completes an incomplete program recording of a program. A program recording will be incomplete when a recording of the program is interrupted before the end of the program broadcast and/or when the program is only partially recorded, such as when a viewer begins watching a program and then decides to record the program after the broadcast has already started. A recording application creates a program recording completion event corresponding to the incomplete program recording which includes program information to automatically complete the incomplete program recording. The recording application can initiate recording a re-broadcast of the program to create a complete program recording, or the recording application can record a segment of a re-broadcast of the program and combine the program segment with the incomplete program recording to create a complete program recording.

DETAILED DESCRIPTION

A program recording completion system is described that automatically completes an incomplete program recording of a program. A program recording will be incomplete when a recording of the program is interrupted before the end of the program broadcast and/or when the program is only partially recorded, such as when a viewer begins watching a program and then decides to record the program after the broadcast has already started. A recording application creates a program recording completion event corresponding to the incomplete program recording which includes program information to automatically complete the incomplete program recording. The recording application can initiate recording a re-broadcast of the program to create a complete program recording, or the recording application can record a segment of a re-broadcast of the program and combine the program segment with the incomplete program recording to create a complete program recording.

The following discussion is directed to television-based entertainment systems, such as interactive TV networks, cable networks that utilize electronic program guides, and Web-enabled TV networks. Client devices in such systems range from full-resource clients with substantial memory and processing resources, such as TV-enabled personal computers and TV recorders equipped with hard-disks, to low-resource clients with limited memory and/or processing resources, such as traditional set-top boxes. While aspects of the described systems and methods can be used in any of these systems and for any types of client devices, they are described in the context of the following exemplary environment.

Exemplary System Architecture

FIG. 1illustrates an exemplary television entertainment system100that is an architecture in which a program recording completion system can be implemented. System100facilitates distribution of content and program data to multiple viewers, and includes components of a program recording completion system that automatically completes an incomplete program recording. The system100includes one or more content providers102, one or more program data providers104, a content distribution system106, and multiple client devices108(1),108(2), . . . ,108(N) coupled to the content distribution system106via a broadcast network110.

Content provider102includes a content server112and stored content114, such as movies, television programs, commercials, music, and similar audio and/or video content. Content server112controls distribution of the stored content114from content provider102to the content distribution system106. Additionally, content server102controls distribution of live content (e.g., content that was not previously stored, such as live feeds) and/or content stored at other locations to the content distribution system106. Program data provider104includes an electronic program guide (EPG) database116and an EPG server118. The EPG database116stores electronic files of program data (or, “EPG data”) which is used to generate an electronic program guide (or, “program guide”).

An electronic file maintains program data120that may include a program title122, program broadcast day(s)124to identify which days of the week the program will be shown, program start times(s)126to identify a time that the program will be shown on the particular day or days of the week, and a program category128. A program category describes the genre of a program and categorizes it as a particular program type. For example, a program can be categorized as a movie, a comedy, a sporting event, a news program, or as any number of other category descriptions. Program data can also include program ratings, characters, descriptions, actor names, station identifiers, channel identifiers, schedule information, and so on.

The EPG server118processes the program data prior to distribution to generate a published version of the program data which contains programming information for all channels for one or more days. The processing may involve any number of techniques to reduce, modify, or enhance the program data. Such processes might include selection of content, content compression, format modification, and the like. The EPG server118controls distribution of the published version of the program data from program data provider104to the content distribution system106using, for example, a file transfer protocol (FTP) over a TCP/IP network (e.g., Internet, UNIX, etc.). Further, the published version of the program data can be transmitted from program data provider104via a satellite directly to a client device108.

Content distribution system106includes a broadcast transmitter130, one or more content processors132, and one or more program data processors134. Broadcast transmitter130broadcasts signals, such as cable television signals, across broadcast network110. Broadcast network110can include a cable television network, RF, microwave, satellite, and/or data network, such as the Internet, and may also include wired or wireless media using any broadcast format or broadcast protocol. Additionally, broadcast network110can be any type of network, using any type of network topology and any network communication protocol, and can be represented or otherwise implemented as a combination of two or more networks.

A content processor132processes the content received from content provider102prior to transmitting the content across broadcast network110. Similarly, a program data processor134processes the program data received from program data provider104prior to transmitting the program data across broadcast network110. A particular content processor132may encode, or otherwise process, the received content into a format that is understood by the multiple client devices108(1),108(2), . . . ,108(N) coupled to broadcast network110. AlthoughFIG. 1shows a single content provider102, a single program data provider104, and a single content distribution system106, exemplary system100can include any number of content providers and/or program data providers coupled to any number of content distribution systems.

Content distribution system106is representative of a headend service that provides EPG data, as well as content, to multiple subscribers. Each content distribution system106may receive a slightly different version of the program data that takes into account different programming preferences and lineups. The EPG server118creates different versions of EPG data (e.g., different versions of a program guide) that include those channels of relevance to respective headend services, and the content distribution system106transmits the EPG data to the multiple client devices108(1),108(2), . . . ,108(N). In one implementation, for example, content distribution system106utilizes a carousel file system to repeatedly broadcast the EPG data over an out-of-band (OOB) channel to the client devices108.

Client devices108can be implemented in a number of ways. For example, a client device108(1) receives broadcast content from a satellite-based transmitter via a satellite dish136. Client device108(1) is also referred to as a set-top box or a satellite receiving device. Client device108(1) is coupled to a television138(1) for presenting the content received by the client device (e.g., audio data and video data), as well as a graphical user interface. A particular client device108can be coupled to any number of televisions138and/or similar devices that can be implemented to display or otherwise render content. Similarly, any number of client devices108can be coupled to a single television138.

Client device108(2) is also coupled to receive broadcast content from broadcast network110and provide the received content to associated television138(2). Client device108(N) is an example of a combination television140and integrated set-top box142. In this example, the various components and functionality of the set-top box are integrated into the television, rather than using two separate devices. The set-top box integrated into the television can receive broadcast signals via a satellite dish (similar to satellite dish136) and/or via broadcast network110. In alternate implementations, client devices108may receive broadcast signals via the Internet or any other broadcast medium.

Each client device108runs an electronic program guide (EPG) application that utilizes the program data. An EPG application enables a television viewer to navigate through an onscreen program guide and locate television shows and other broadcast content of interest to the viewer. With an EPG application, the television viewer can look at schedules of current and future programming, set reminders for upcoming programs, and/or enter instructions to record one or more television shows.

The exemplary system100also includes stored on-demand content144, such as Video On-Demand (VOD) movie content. The stored on-demand content can be viewed with a television138via a client device108through an onscreen movie guide, for example, and a viewer can enter instructions to stream a particular movie, or other stored content, down to a corresponding client device108.

Exemplary Client Device

FIG. 2illustrates an exemplary implementation200of a client device108shown as a standalone unit that connects to a television138. Client device108can be implemented in any number of embodiments, including as a set-top box, a satellite receiver, a TV recorder with a hard disk, a digital video recorder (DVR) and playback system, a game console, an information appliance, and so forth.

Client device108includes a wireless port202, such as an infrared (IR) or Bluetooth wireless port, for receiving wireless communications from a remote control device204, a handheld input device206, or any other wireless device, such as a wireless keyboard. Handheld input device206can be a personal digital assistant (PDA), handheld computer, wireless phone, or the like. Additionally, a wired keyboard208can be coupled to communicate with client device108. In alternate embodiments, remote control device204, handheld device206, and/or keyboard208may use an RF communication link or other mode of transmission to communicate with client device108.

Client device108receives one or more broadcast signals210from one or more broadcast sources, such as from a satellite or from a broadcast network, such as broadcast network110(FIG. 1). Client device108includes hardware and/or software for receiving and decoding broadcast signal210, such as an NTSC, PAL, SECAM, or other TV system video signal. Client device108also includes hardware and/or software for providing the user with a graphical user interface by which the user can, for example, access various network services, configure the client device108, and perform other functions.

Client device108can communicate with other devices via one or more connections including a conventional telephone line212, an ISDN link214, a cable link216, an Ethernet link218, a DSL link220, and the like. Client device108may use any one or more of the various communication links212–220at a particular instant to communicate with any number of other devices.

Client device108generates video signal(s)222and audio signal(s)224, both of which are communicated to television138. The video signals and audio signals can be communicated from client device108to television138via an RF (radio frequency) link, S-video link, composite video link, component video link, or other communication link. Although not shown inFIG. 2, client device108may include one or more lights or other indicators identifying the current status of the device. Additionally, the client device may include one or more control buttons, switches, or other selectable controls for controlling operation of the device.

Exemplary Program Recording Completion Systems

FIG. 3illustrates an exemplary program recording completion system300that includes selected components of television system100, such as a content provider102and an exemplary client device108as shown inFIGS. 1 and 2. Client device108includes components to implement automatic program recording completion of an incomplete program recording maintained with a memory component in client device108.

Client device108includes a recording application302that creates program recording completion event(s)304which include information to automatically complete an incomplete program recording. The program recording completion event(s)304and associated information can be maintained in a data structure, or any other electronic data storage format. Although the program recording completion event(s)304is shown as an independent data structure of the program recording completion system300, the data structure can be maintained with a memory component in client device108.

Client device108includes one or more tuners306which are representative of one or more in-band tuners that tune to various frequencies or channels to receive television signals, as well as an out-of-band tuner that tunes to the broadcast channel over which the EPG data is broadcast to client device108. Client device108also includes one or more processors308which process various instructions to control the operation of client device108and to communicate with other electronic and computing devices.

Client device108can be implemented with one or more memory components, examples of which include a random access memory (RAM)310, a disk drive312, a mass storage component314, and a non-volatile memory316(e.g., ROM, Flash, EPROM, EEPROM, etc.). The memory components (e.g., RAM310, disk drive312, storage media314, and non-volatile memory316) store various information and/or data such as received content, EPG data, configuration information for client device108, and/or graphical user interface information.

Alternative implementations of client device108can include a range of processing and memory capabilities, and may include more or fewer types of memory components than those illustrated inFIG. 3. For example, full-resource clients can be implemented with substantial memory and processing resources, including the disk drive312to store content for replay by the viewer, such as program recording(s)318. Low-resource clients, however, may have limited processing and memory capabilities, such as a limited amount of RAM310, no disk drive312, and limited processing capabilities of a processor308.

An operating system320and one or more application programs322may be stored in non-volatile memory316and executed on a processor308to provide a runtime environment. A runtime environment facilitates extensibility of client device108by allowing various interfaces to be defined that, in turn, allow application programs322to interact with client device108. In the illustrated example, an EPG application324is stored in memory316to operate on the EPG data and generate a program guide. The application programs322that may be implemented in client device108can include a browser to browse the Web (e.g., “World Wide Web”), an email program to facilitate electronic mail, and so on. Client device108can also include other components pertaining to a television entertainment system which are not illustrated in this example. For instance, client device108can include a user interface application and user interface lights, buttons, controls, and the like to facilitate viewer interaction with the device.

Client device108also includes a content processor and/or decoder326to process and decode a broadcast video signal, such as an NTSC, PAL, SECAM, or other TV system video signal. Content processor326can also include a video decoder and/or additional processors to receive, decode, and/or process program content114(identified as stored content inFIG. 1) received from content provider102. For example, content processor326may include an MP3 or MPEG-2 (Moving Pictures Experts Group) decoder that decodes MPEG-encoded video and other program content. MPEG-2 supports a variety of audio/video formats, including legacy TV, HDTV (high-definition television), DVD (digital versatile disc), and five-channel surround sound.

Typically, program content114includes video data and audio data that corresponds to the video data, and can be analog or digital content. Content processor326generates video and/or display content that is formatted for display on display device138, and generates decoded audio data that is formatted for broadcast by a broadcast device, such as one or more speakers (not shown) in display device138. Content processor326can include a display controller (not shown) that processes the video and/or display content to display corresponding images on display device138. A display controller can include a microcontroller, integrated circuit, and/or similar video processing component to process the images. It is to be appreciated that the systems and methods described herein can be implemented for any type of encoding format as well as for data and/or content streams that are not encoded.

Client device108further includes a wireless interface328, a network interface330, a serial and/or parallel interface332, and a modem334. Wireless interface328allows client device108to receive input commands and other information from a user-operated input device, such as from a remote control device or from another IR, Bluetooth, or similar RF input device.

Network interface330and serial and/or parallel interface332allows client device108to interact and communicate with other electronic and computing devices via various communication links. Although not shown, client device108may also include other types of data communication interfaces to communicate with other devices. Modem334facilitates client device108communication with other electronic and computing devices via a conventional telephone line.

Client device108also includes an audio and/or video output336that provides signals to television138or to other devices that process and/or display, or otherwise render, the audio and video data. Although shown separately, some of the components of client device108may be implemented in an application specific integrated circuit (ASIC). Additionally, a system bus (not shown) typically connects the various components within client device108. A system bus can be implemented as one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, or a local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.

The recording application302can be implemented as a software component, such as a digital video recording (DVR) system application, that executes on a processor308and is stored in non-volatile memory316. In addition to recording application302creating program recording completion event(s)304, the recording application can be configured to perform several functions of a program recording completion system. For example, recording application302can store an incomplete program recording in disk drive312as a program recording318.

Further, recording application302can initiate recording a program re-broadcast to create a complete program recording which can also be maintained in disk drive312as a program recording318. Alternatively, recording application302can initiate recording one or more program segments of a program broadcast and/or of a program re-broadcast, and can store the program segments in disk drive312as program recordings318. Recording application302can also generate a complete program recording that includes an incomplete program recording and one or more recorded program segments. Additionally, recording application302can communicate a request for a program segment to content provider102and receive the entire corresponding program and/or the program segment via a back-channel communication link338that connects client device108to content provider102.

Exemplary Program Recording Completion Events

FIG. 4illustrates an exemplary data structure400implemented to maintain program recording completion event(s)340(FIG. 3). Data structure400includes completion events402(1),402(2), . . . ,402(N) that each include information to automatically complete an incomplete program recording of a program. For purposes of the illustration, only information corresponding to completion event402(1) is shown inFIG. 4. In practice, each completion event can include corresponding information to automatically complete an incomplete program recording.

Program recording completion event402(1) corresponds to a particular program and includes a program composite key404which uniquely identifies the program broadcast from which an incomplete program recording is created. In an implementation, the program composite key404can include key elements such as a unique program identifier405, a program title406, a program description408, a broadcast channel number410, a program broadcast start time412, and a program rating414. These composite key elements can be compared to EPG data in an electronic program guide by the recording application302to determine whether the program will be re-broadcast. Those skilled in the art will recognize that any number and combination of these and other composite key elements can be combined to form a unique program composite key for comparison to similar program elements in EPG data in an electronic program guide to determine whether the program will be re-broadcast.

Program recording completion event402(1) also includes program re-broadcast information416, such as the date(s), time(s), broadcast channel, and the similar program information, corresponding to when the program will be re-broadcast. When a program re-broadcast is identified in the EPG data, recording application302can schedule a record event to record all or part of the program re-broadcast. The record event can include, or otherwise be based on, the program re-broadcast information416. Those skilled in the art will recognize that a record event can be implemented as a data structure independent of data structure400and/or completion event402(1).

Program recording completion event402(1) can also include other information corresponding to an incomplete program recording of a program such as an incomplete program recording start time418, a program broadcast start time420, and a missed-recording time422. For example, if a program broadcast start time is 9:00 p.m. and a viewer watches ten minutes of the program before deciding to record the program, the incomplete program recording start time will be 9:10 p.m., and the missed-recording time is ten minutes.

Program recording completion event402(1) can also include a total program broadcast time424, a missed-recording percentage426, and a complete program record limit428. The missed-recording percentage426(i.e., the percentage of the program that was not recorded when recording the incomplete program recording) is a percentage of the missed-recording time422to the total program broadcast time424. Continuing with the program broadcast example, the percentage of the program that was not recorded is equal to ten minutes (i.e., 9:00 p.m. to 9:10 p.m.) divided by a total program broadcast time of one hour (i.e., 60 minutes). In this example, the percentage of the program that was not recorded is 16.6% (sixteen and six-tenths percent).

The complete program record limit428can be an application default value or viewer-defined to indicate whether the entire program re-broadcast should be recorded and the incomplete program recording deleted, or whether a second program segment should be recorded and combined with the incomplete program recording to form a complete program recording. For example, if the complete program record limit in this example is 10% (ten percent), then the 16.6% of the program that was not recorded exceeds the complete program record limit and the entire program re-broadcast will be recorded.

Methods for a Program Recording Completion System

Methods for a program recording completion system may be described in the general context of computer-executable instructions. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. Methods for a program recording completion system may also be practiced in distributed computing environments where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer-executable instructions may be located in both local and remote computer storage media, including memory storage devices.

FIGS. 5 and 6illustrate a method500for a program recording completion system. The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement a method for the system. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof.

At block502, a request to record a program is received. A viewer can input a request to client device108to record a program with remote control input device204, for example (FIG. 2). At block504, a determination is made as to whether a broadcast of the program has already started. For example, recording application302determines from EPG application324and program data120whether the broadcast for the requested program has already started. If the broadcast of the program has not already started (i.e., “no” from block504), a program record event is scheduled at block506to record the program when it is broadcast. At block508, the program recording is started when scheduled.

If the broadcast of the program has already started (i.e., “yes” from block504), a first program segment is recorded at block510, and the first program segment is maintained as an incomplete program recording at block512. For example, when a viewer begins watching a program and decides to record the program after it has already started, client device108receives the request to record the program, and recording application302initiates that the remainder of the program broadcast be recorded and that this first program segment be maintained as an incomplete program recording318in disk drive312(FIG. 3).

At block514, a determination is made as to whether a scheduled program recording (block508) is interrupted. For example, a viewer may stop a scheduled program recording before the program broadcast is complete, or system resources may became unavailable to continue with the program recording. Further, a program recording may be incomplete due to system power failure, due to a loss of the broadcast communication, or due to any number of other interruption events not within a viewer's control. If the scheduled program recording is not interrupted (i.e., “no” from block514), the method for program recording completion is ended at block516. If the scheduled program recording is interrupted (i.e., “yes” from block514), the first program segment (e.g., the start of the program recording at block508) is maintained as an incomplete program recording at block512.

If a request is received to record a program and the program broadcast has already started (blocks502and504), the first program segment recorded at block510does not include the beginning of the program. Alternatively, if a program recording is started as scheduled and the program recording is interrupted (blocks508and514), the first program segment recorded at block510does not include the ending of the program. A subsequent program segment can be recorded to include the beginning of the program which can be combined with a first program segment that is recorded after the program broadcast has already started, or the subsequent program segment can include the ending of the program which can be combined with a first program segment that is interrupted during recording.

At block518, a determination is made as to whether a program recording completion event should be created. A program recording completion event, such as completion event402(1) in data structure400(FIG. 4), can be created by recording application302to initiate automatically completing an incomplete program recording. A determination whether to create a program recording completion event for a particular incomplete program recording can be based on one or more optional criteria. For example, a completion event402(1) can be created if a time difference (e.g., missed-recording time422) between when the program broadcast started420and when the incomplete program recording started418is greater than a missed-recording time limit. The missed-recording time limit can be a default application value, or can be a viewer-defined value.

For example, if a program broadcast starts at 9:00 p.m. and a viewer watches ten minutes of the program before deciding to record the program at 9:10 p.m., the missed-recording time is ten minutes. If the missed-recording time limit has been defined to be five minutes by the viewer (i.e., the viewer does not want a recorded program to be missing more than five minutes of the beginning), then a program recording completion event would be created because the ten minutes of missed-recording time exceeds the missed-recording time limit by five minutes.

Further, a completion event402(1) can be created if a category of the program128is designated for program recording completion. The program categories, such as a movie, sporting event, news program, and the like, that are designated for program recording completion can be application defaults of the program recording completion system, or the program categories designated for program recording completion can be viewer-defined. For example, a program category “sporting event” may not be designated for program recording completion because typically viewers are interested in the outcome of a sporting event and may not be concerned with missing the first ten minutes of the program. However, a program category “movie” may be designated for program recording completion if the first ten minutes of a movie are not initially recorded because the outcome of the movie plot may be dependent on the first ten minutes of the movie.

If a program recording completion event should not be created (i.e., “no” from block518), the method for program recording completion is ended at block516(i.e., an incomplete program recording is maintained for viewing and the beginning of the program will not automatically be recorded to complete the program recording). If a program recording completion event should be created (i.e., “yes” from block518), a program recording completion event corresponding to the incomplete program recording is created at block520. For example, recording application302creates the program recording completion event402(1) in data structure400which includes a first time418that indicates when during the program broadcast the incomplete program recording started, and further includes a second time420that indicates when the program broadcast started.

At block522, a determination is made as to whether the program will be re-broadcast. For example, to determine whether the program will be re-broadcast, recording application302compares a composite key404of the program with EPG data in an electronic program guide324. If the program will be re-broadcast (i.e., “yes” from block522), a record event to record all or part of the program re-broadcast is scheduled at block524(FIG. 6). For example, recording application302schedules a recording of the program re-broadcast with program re-broadcast information416. The program re-broadcast information416can include the date(s), time(s), broadcast channel, and similar program information that may be used to schedule a program recording. Recording application302can schedule the record event to record the entire program re-broadcast, or the record event can be scheduled to record a second program segment when the program is re-broadcast, such as the beginning of the program for the missed-recording time422.

At block526, a percentage of the program that was not recorded when the first program segment was recorded is determined. For example, recording application302determines the missed-recording time422which is the difference between when the program broadcast started420and when during the program broadcast the incomplete program recording started418. The percentage of the program that was not recorded is equal to the missed-recording time422divided by the total program broadcast time424.

At block528, a determination is made as to whether the percentage of the program not recorded exceeds a complete program record limit. For example, recording application302determines if the percentage of the program not recorded426is greater than a complete program record limit428. For some programs, such as a three-hour sporting event or a two-hour movie, it may be a better use of system resources to record just the segments of the program that were not initially recorded, such as the first fifteen minutes of either program. Alternatively, if the first thirty minutes of a one-hour program are not initially recorded, it may be a better use of the system resources to record the entire one-hour re-broadcast of the program rather than recording just a program segment and then generating a complete program recording from the program segment and incomplete program recording.

If the percentage of the program not recorded exceeds the complete program record limit (i.e., “yes” from block528), the incomplete program recording is deleted at block530, and at block532, the program re-broadcast is recorded to create a complete program recording. Recording application302deletes the incomplete program recording from disk drive312and maintains the complete program recording in disk drive312as a program recording318. At block534, the complete program recording is rendered when a request to playback the program is received.

If the percentage of the program not recorded does not exceed the complete program record limit (i.e., “no” from block528), a second program segment is recorded at block536when the program is re-broadcast and, at block538, the second program segment is maintained together with the first program segment. For example, recording application302initiates that the second program segment be recorded and that the second program segment be maintained as a second incomplete program recording318in disk drive312. The first program segment and the second program segment are together a complete program recording of the program.

At block540, the second program segment is rendered along with the first program segment when receiving a request to playback the program. For example, recording application302initiates that the two program segments are rendered for display when a viewer request to watch the recorded program is received. In this example, the second program segment (e.g., the beginning of the program) is rendered for the duration of the missed-recording time422followed by the incomplete program recording (e.g., the first program segment) for the remaining program recording.

Alternatively to block540, a complete program recording is generated that includes the first program segment and the second program segment at block542. For example, recording application302can implement a frame pattern recognition algorithm to combine the first program segment with the second program segment. Further, an MPEG-based algorithm can be implemented to combine MPEG sections of the program segments to generate a complete program recording, or one common content stream. Again, at block534, the complete program recording is rendered when a request to playback the program is received.

It is to be appreciated that, although only first and second program segments are described in this example method for program recording completion, any number of program segments can be recorded from one or more re-broadcasts of a program. For example, a viewer may begin watching a program and initiate a record event for the program after the broadcast of the program has already started. Further, the incomplete program recording may be interrupted near the end of the program broadcast, in which case, both the beginning and the ending of the program are not recorded. Recording application302can initiate recording a second program segment (i.e., the beginning of the incomplete program recording) and a third program segment (i.e., the ending of the incomplete program recording). In this example, the incomplete program recording and the second and third program segments are together a complete program recording.

If the program will not be re-broadcast (i.e., “no” from block522) (FIG. 5), a request is communicated to a program provider for a second program segment at block544. For example, recording application302communicates a request for a second program segment to content provider102. At block546, the second program segment is received from the program provider. Alternatively, at block548, the entire program is received from the content provider. The second program segment and/or the entire program can be received from the program provider via a back-channel communication link338(FIG. 3), or from any other type of two-way communication link.

Conclusion

Although the invention has been described in language specific to structural features and/or methods, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as preferred forms of implementing the claimed invention.