Abstract:
The present invention is directed to a video recorder having user extended and automatically extended time slots. An embodiment of the present invention includes a set top box having an internal storage device, such as a hard drive where broadcasts are transferred from a broadcast input source to the storage device. The set top box is connected to an output device such as a television, which displays a graphical user interface (GUI) and an interactive program guide (IPG). The user has the option to extend a chosen time slot, in which a show is scheduled to be transferred to the storage device. The time slot may be extended before the show, after the show, or both. The system also implements an automatic extension of the time slot by default, which is used to ensure that the data is completely captured to the system, in case the broadcast and the set top box are slightly out of sync, the broadcaster unexpectedly begins a show&#39;s broadcast slightly early or late, or the show unexpectedly runs longer than the IPG indicates.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a continuation of U.S. patent application Ser. No. 12/940,628, filed on Nov. 5, 2010 (now allowed), which is a continuation of U.S. patent application Ser. No. 10/707,834, filed on Jan. 15, 2004 (now U.S. Pat. No. 7,853,120), which is a continuation of U.S. patent application Ser. No. 10/249,575, filed on Apr. 21, 2003 (now U.S. Pat. No. 6,760,538). These prior applications are hereby incorporated by reference herewith in their entireties. 
     
    
     COPYRIGHT STATEMENT 
       [0002]    All of the material in this patent document is subject to copyright protection under the copyright laws of the United States and of other countries. The owner of the copyright has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the United States Patent and Trademark Office file or records, but otherwise reserves all copyrights whatsoever. 
       BACKGROUND OF INVENTION 
       [0003]    1. Field of the Invention 
         [0004]    The present invention relates generally to systems that transfer broadcast content to volatile and/or nonvolatile storage devices. 
         [0005]    2. Background of the Invention 
         [0006]    The capture of broadcast content gained major popularity with the advent of the VCR. 
         [0007]    A user was able to tune their television to a station that had a show that they wanted to save and they simply inserted a storage device (e.g., a VHS tape), moved the tape to the appropriate location, and began capturing the broadcast. Recently, other types of equipment have developed to perform similar functionality. These types of equipment include, for instance, DVD recorders (DVDR) and set top boxes that include digital video recorders. 
         [0008]    Both of these types of equipment are used in a manner that is similar to the operation of VCRs. Each has its own storage device (i.e., a DVD or hard drive) and each storage device is of finite space, if a user is saving a long program, multiple programs, or begins saving the program when the storage device is nearly full, there is a chance that the program the user is trying to save will be lost. This is a frustrating problem for the average user, specifically when they want to save content when they are away from the home. 
       Saving Broadcast Content 
       [0009]    Saving broadcast content in its simplest form comprises turning on the television set and pressing a button on a VCR. More recently, VCRs, DVDRs, and digital video recorders (DVR), include interfaces which allow users to schedule the transfer of programs at a later date or time. Using this interface, the user is able to give the device a time and a channel and when it is the right time the device tunes to the channel, and begins saving the program. This is useful, for instance, when the user is away from home and wants to see the program later. 
         [0010]    Another modern interface allows the user to focus on a favorite program. For instance, a user may love Monday Night Football, which occurs every Monday night from 6:00 P.M. to 9:00 P.M. So, the user may wish to transfer this broadcast to a storage device regardless of whether they are home or not and may not want to have to instruct the machine every time. Using the interface, the user is able to set the system to save content for the three hours on Monday night when the football game is broadcast every week. 
       Tuner Conflicts 
       [0011]    However, these schemes are inadequate because conflicts may arise in the scheduling system. Typically, a system is limited by the number of tuners it has. A one tuner system, for instance can either be used to save a program on a specific channel or watch the channel, however, the system cannot save content on one station and be used to watch another station. A two tuner system can be used to transfer and watch two different stations. Situations arise, however, where the system has been given instructions to transfer multiple shows simultaneously and there are not enough available tuners to perform this function. 
       Show Prioritization 
       [0012]    One technique prioritizes shows scheduled to be transferred and when a conflict arises only the highest priority show is transferred. This technique is limited, however, because sometimes a user extends a timeslot in the transfer schedule to a few minutes before and a few minutes after the actual show. The user might do this because, for instance, they might want to save part of a pregame show for a sports event, or they might want to save content after a sports event, if it goes into overtime. Moreover, the system might automatically extend time slots by brief periods automatically to avoid missing content if the broadcaster&#39;s clock and the system&#39;s clock are out of sync or if the broadcast starts a few minutes early or late. 
         [0013]    In such a case, a conflict may arise solely because of a user extended or automatically extended time slot, if these additional time slots are not treated as separate entries, unexpected results may occur. For instance a high priority first show may override a lower priority second show and cause the second show to not be saved merely because the first show overlapped the second show by an automatically extended minute or two. Such a result is clearly inadequate. 
       SUMMARY OF INVENTION 
       [0014]    The present invention is directed to a video recorder having user extended and automatically extended time slots. An embodiment of the present invention includes a set top box having an internal storage device, such as a hard drive where broadcasts are transferred from a broadcast input source to the storage device and are played back from the storage device to an output device, such as a television or computer monitor. The set top box displays a graphical user interface (GUI) and an interactive program guide (IPG) on the output device. The IPG displays a list of shows that are available by tuning to different channels at different times as well as descriptions and details about each show. The GUI allows the user to navigate through the IPG, for instance, by viewing different times and dates for broadcasts, and also allows the user to view the shows that are scheduled to be transferred to the storage device in the future, and the shows that have already been transferred to the storage device. 
         [0015]    The GUI also allows the user to utilize a video recorder, for instance by navigating the IPG and selecting broadcasts to later transfer to the storage device. The user may select one or more broadcasts, or may repeatedly transfer the same program in a series to the storage device. The user has the option to extend the time slot, in which a show is scheduled to be transferred to the storage device. The time slot may be extended before the show, after the show, or both. The system also implements an automatic extension of the time slot by default. Automatically extended time is used to ensure that the data is completely captured to the system, in case the broadcast time and the set top box time are slightly out of sync or the broadcaster unexpectedly begins a show&#39;s broadcast slightly early or late. 
         [0016]    Each show is given a priority either automatically or manually. Each user extended and automatically extended timeslot is also prioritized. When a conflict arises, the present invention generates solutions to the conflicts. When a conflict is merely multiple shows that overlap, various factors are used to determine which show is the highest priority. When a user extended or automatically extended time slot causes a conflict, then the extended time slots are prioritized separately from the actual show and the algorithms attempt to resolve conflicts by removing user extended or automatically extended time slots. 
         [0017]    In one embodiment, where there are several solutions to a conflict, the system automatically finds the shows that, when removed from the transfer schedule, will result in the most shows of the highest priority to be transferred. Typically the system will present one or two of the most optimal shows to remove from the schedule to achieve a good solution. In another embodiment, an adjacent show list is implemented. The adjacent show list contains metadata for the shows immediately before and after a scheduled show. The adjacent show list is used to disable user extended time for parental control reasons, so that an unauthorized user is not able to extend the transfer into the body of another show that they are not permitted to capture. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0018]    The invention will be more fully understood by reference to the following drawings, which are for illustrative purposes only: 
           [0019]      FIG. 1  is a functional block diagram of an embodiment of a set top box. 
           [0020]      FIG. 2  is a diagram of a configuration for one of the multiple tuners associated with the video recorder. 
           [0021]      FIG. 3  shows a configuration for a single decoder. 
           [0022]      FIG. 4  is a diagram of a typical tuner arrangement for use with a live TV signal. 
           [0023]      FIG. 5  is a diagram of a typical tuner arrangement for use when transferring a signal to a storage device. 
           [0024]      FIG. 6  shows an arrangement for when a user is watching a show that has already been transferred to a storage device. 
           [0025]      FIG. 7  shows an arrangement for when a user is watching a show on the storage device while another show is being transferred to the storage device. 
           [0026]      FIG. 8  is a block diagram showing the components of a scheduled show and its corresponding timeslots according to one embodiment of the invention. 
           [0027]      FIG. 9  is a flowchart showing how one embodiment of the present invention manually resolves conflicts. 
           [0028]      FIG. 10  is a flowchart showing how one embodiment of the present invention automatically resolves conflicts. 
           [0029]      FIG. 11  is a block diagram showing a process whereby an embodiment of the present invention searches future guide data to transfer, in order to solve a conflict. 
           [0030]      FIG. 12  is another flowchart showing how an embodiment of the present invention automatically resolves conflicts. 
           [0031]      FIG. 13  is a block diagram showing how a conflict might arise that requires a manual resolution simplification process. 
           [0032]      FIG. 14  is a flowchart showing how an embodiment of the present invention produces the results of a manual resolution simplification process. 
           [0033]      FIG. 15  is a flowchart showing the management of a conflict according to one embodiment of the invention. 
           [0034]      FIG. 16  is a flowchart showing the management of a conflict according to one embodiment of the invention. 
           [0035]      FIG. 17  is a block diagram showing the implementation of an adjacent show list according to one embodiment of the invention. 
           [0036]      FIG. 18  is a flowchart showing how one embodiment of the invention handles an adjacent show list. 
           [0037]      FIG. 19  is a functional block diagram of a video recorder according to an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0038]    The present invention is directed to a video recorder having user extended and automatically extended time slots. A video recorder as used herein refers to a device capable of transferring one or more broadcast signals to a storage device and retrieving the broadcast signals from the storage device. The terms video recorder, personal video recorder (PVR), and digital video recorder (DVR) are used herein interchangeably. Referring more specifically to the drawings, for illustrative purposes an embodiment of a video recorder is shown in the functional block diagram of  FIG. 1 . 
       Video Recorder 
       [0039]    A video recorder  5  is an internal or external component of a set top box  10 . The video recorder  5  includes some or all of a combination of software, hardware, and firmware. In one embodiment, the video recorder  5  uses a storage device  6 , such as a hard drive that is internal or external to the set top box  10  where shows are saved. The set top box  10  connects to an output device  20 , which facilitates the use of broadcast signals, such as live television signals, video on demand broadcasts, downloads of Internet content, viewing of web pages, and viewing of content previously transferred to the storage device  6 . In the example of  FIG. 1 , set top box  10  is shown as being external to output device  20 . It should be understood by someone having ordinary skill in the art, that set top box  10  may be internal to output device  20  as well. 
         [0040]    A GUI  7  that includes an IPG  8  is provided, which is displayed on the output device  20 . GUI  7  in conjunction with IPG  8  allows the user to control the video recorder  5 , typically using a remote control  60 . For instance, the user may search the IPG  8  and select shows which are then scheduled to be transferred to storage device  6 . The software or firmware that controls set top box  10  may be installed locally or it may be downloaded from the Internet as needed when configuring new set top boxes or when updating existing ones. 
         [0041]    Set top box  10  is connected to output device  20  via a transmission line  30 . Broadcast signals are received by the set top box  10  via broadcast input source  40 , which may be connected to either an antenna, cable television outlet, or other suitable input source. One or more tuner systems  45  are configured to allow the system to utilize broadcast signals from multiple channels. The video recorder component  5  includes a hard disk drive  6  in conjunction with a volatile memory  46 , such as a Random Access Memory (RAM). Typically, the broadcast input along line  40  is bandied by the tuner  45 . The signal is temporarily resident in memory  46  using a circular buffer or other cache before being transferred more or less permanently to storage device  6 . The tuner system  45  works in conjunction with the storage device  6  so that for each tuner in the system, each can simultaneously transfer broadcast signals to the storage device  6 , or display channels up to the given number of tuners on output device  20 . 
         [0042]    Set top box  10  receives power through a line  50 . Set top box  10  receives user input entered from a handheld remote control  60  over a wireless link  70 . Wireless link  70  may be an infrared (IR) link, a radio frequency (RF) link, or any other suitable type of link. A bidirectional data path  80  is provided to set top box  10 , through which set top box  10  can access the Internet  90 . Transmission line  40  may provide data from a variety of input sources including cable, satellite, or electromagnetic waves. 
       Tuner Management 
       [0043]    In one embodiment of the present invention, the PVR uses multiple tuners. Each of the tuners is normally associated with one encoder and one cache, which may be a fixed or variable size cache (for a live signal) or a fixed file in the case where the incoming signal is merely transferred to the storage device.  FIG. 2  shows various configurations for one of the multiple tuners associated with the PVR. Video stream  200  is provided to tuner  210 , which passes the signal to encoder  220 , which transfers the data in a cache  230 . This configuration is used for analog use of a live TV signal. 
         [0044]    An alternate configuration includes a video stream  240 , which is then provided to tuner  245 , which is then passed to encoder  250  and then to fixed file block  260 . This configuration is useful for the analog transfer of a signal. For digital channels, encoder blocks  220  and  250  are removed, since the signal has already been digitized. 
         [0045]      FIG. 3  shows a configuration for a single decoder. Cache  300  provides data to decoder  310 , which outputs video signal  320 . This arrangement is useful for watching live TV. Alternatively, fixed file block  330  provides data to decoder  340 , which outputs a video signal  350 . This embodiment is useful for playing back a show that has already been transferred to the storage device. 
         [0046]    Each decoder shown in  FIG. 3  is associated with a tuner/encoder pair. For a live TV signal,  FIG. 4  shows an example of a typical arrangement, where video signal  400  is transmitted to tuner  410  then to encoder  420  and to cache  430 . After it leaves cache  430  it is decoded in block  440  and the outgoing video signal  450  is displayed on the television, it should be noted that a delay interval  460  of a given (x) number of seconds occurs between the time the signal reaches encoder  420  and is output by decoder  440 . Therefore, a live TV signal is typically a signal that has been delayed by (x) seconds. If a user is watching a program and is currently transferring the program to a storage device as well, a cache, as shown in block  430  of  FIG. 4  is not used. Instead, a fixed buffer  500 , shown in  FIG. 5  is used. 
         [0047]    If the user is watching a show that has already been transferred to the storage device, the decoder is decoupled from the encoder (i.e., it reads from a different cache than the encoder), which continues to encode and cache the live video signal. This embodiment is shown in  FIG. 6 , where video signal  600  is tuned at block  605  and encoded at block  610  and stored in buffer  620 . Fixed buffer  630  is used to provide data to decoder  640 , which provides the output signal  650 . 
         [0048]    Finally, if a user is watching a show that resides already on the storage device while another show is currently being transferred to the storage device, two different fixed buffers are implemented. This embodiment of the present invention is shown in  FIG. 7 , Video signal  700  is tuned at block  705  and encoded at block  710  and stored in a first fixed buffer  720 . A second fixed buffer  730  is used to watch the previously saved show, by transmitting and decoding the data at block  740  and displaying the output video signal  750  on a television. 
       Show Scheduling 
       [0049]    A user might schedule a show in a number of ways that could potentially give rise to a conflict, in one scenario the user is watching a television broadcast and presses a button on a remote control intended to initiate a transfer of the current show to the storage device. At the same time, another show is already being transferred to the storage device on another channel and the system cannot transfer both simultaneously. Alternatively, the user may have scheduled a number of shows to automatically be transferred to the storage device, for instance by accessing an IPG and selecting shows and/or by setting up the automatic transfer of certain series or specific programs (a series manager). If at some time that number of shows scheduled to be transferred exceeds the number of available tuners, a conflict arises. 
         [0050]    Whenever a user schedules a show, the complete timeslot the system needs to have a tuner available to transfer the show is partitioned into its respective component timeslots.  FIG. 8  gives an example of some of the components in a typical complete timeslot. Complete timeslot  800  has a start time  810  and an end time  820 . Between start time  810  and end time  820  is the complete time slot. The timeslot  800  comprises automatically extended  830  and automatically extended trail time  840 . Automatically extended times  830  and  840  are typically only for a few minutes and may be automatically added to every show scheduled by the user. User extended lead time  850  and user extended trail time  860  are timeslots the user has manually asked the system to append to the actual show that comprises the core time  870  also referred to as the body of the show. Each component of the partitioned timeslot  800  is given a different priority and each is handled as a separate entity when the system attempts to resolve a conflict. 
       Conflict Resolution 
       [0051]    An embodiment of the present invention is configured to process conflicts. A conflict occurs when the number of shows (or component timeslots) scheduled to be transferred to the storage device exceed the number of available tuners. For the purposes of this example, it is assumed for simplicity that the system has two tuners, although the system may have any number of tuners. In one scenario the user is watching a television broadcast and presses a button on a remote control intended to initiate a transfer of the current show to the storage device. The pressing of the button generates an instruction to the video recorder which causes it to schedule the show. At the same time, another show is already being transferred to the storage device on another channel. 
         [0052]    Alternatively, the user may have instructed the system to schedule a number of shows to automatically be transferred to the storage device, for instance by accessing an IPG and selecting shows and/or by setting up the automatic transfer of certain series or specific programs in the series manager, if at some time that number of shows scheduled to be transferred exceeds the number of available tuners, a conflict arises. Moreover, the user may have automatically extended timeslots enabled on their system, if so, the time slot either leading or trailing the show may extend into the body of another show. If this event causes the number of available tuners to be exceeded, then a conflict arises. Also, a user may have extended a show either at the lead or trail end and this manual extension may run into the body of another program and cause a similar conflict. 
         [0053]    When conflicts arise, the user will typically be given notice and an opportunity to correct (solve) the conflict manually before it occurs. However, if the user does not or is not available to interact with the system, then the system automatically solves the conflict.  FIG. 9  is a flowchart giving an example of how one embodiment of the present invention identifies and finds solutions to conflicts manually. 
         [0054]    At block  900  a user schedules shows (including user extended and automatically extended timeslots) that they want to transfer to the storage device, collectively this is called timeslot x. At block  910  it is determined if the number of available tuners during timeslot x is less than what is needed to completely transfer timeslot x and any other shows that are scheduled during that timeslot (i.e., there is a conflict). If there is no conflict, the system transfers timeslot x at block  915  to the storage device, and block  900  repeats. 
         [0055]    If there is a conflict then at block  920 , the system provides the user with a manual resolution screen. An example of a manual resolution screen includes various choices to manually resolve the conflict. These include, for instance, cancel show A, cancel show B, do not schedule timeslot x, or trim shows A and/or B. Trimming the show includes, for instance, removing user extended or automatically extended timeslots. At block  930 , it is determined if the user has solved the conflict manually by trimming or canceling shows A and/or B. If so, then timeslot x is added to the schedule queue at block  940  and flow proceeds to block  915 . Otherwise, the user does not wish to schedule timeslot x, so the process is complete. 
         [0056]    In another embodiment of the present invention, the conflicts are resolved automatically. This embodiment is shown in  FIG. 10 , where at block  1000  shows are automatically scheduled to be transferred to a storage device (including user extended and automatically extended timeslots), collectively this is called timeslot z. Timeslot z may be scheduled for instance, by an automated process (series manager) configured to transfer every instance of a certain show, type of sporting event, genre, title, timeslot, etc. At block  1010  it is determined if the number of available tuners during timeslot  2  is less than what is needed to completely transfer timeslot z and any other shows that are scheduled during that timeslot (i.e., there is a conflict). If there is no conflict, the system transfers timeslot z at block  1015  to the storage device, and block  1000  repeats. 
         [0057]    If there is a conflict then at block  1020 , the system examines the priorities of the conflicting timeslots (including timeslot z). At block  1030 , it is determined if timeslot z is the lowest priority timeslot. If so, then timeslot z is not scheduled and the process is complete. Otherwise, timeslot  2  is added to the schedule queue at block  1040  and block  1015  repeats. 
         [0058]    In another embodiment of the present invention, shows that are not transferred because of a conflict remain in a separate list or queue waiting to be transferred later if an opportunity occurs. For instance, the missed transfer may be broadcast again the next day. The system will attempt to initiate the transfer automatically the next day when the show occurs if it is possible.  FIG. 11  shows how this process works according to one embodiment of the present invention. 
         [0059]    Guide data  1110 , which contains the information needed to determine what shows are broadcast at certain times, is transferred to the set top in portions over time. For instance, one day of guide data may be downloaded at a time as first portion  1140 . A loop  1120  walks through the guide data by comparing each component of the guide data to show A  1100 , which has been entered in a queue  1160 . It is assumed for the purposes of  FIG. 11 , that show B  1130  has been previously scheduled and that show B has a higher priority than show A  1100 . In this example, show A  1100  is not transferred and show B  1130  is transferred when loop  1120  reaches first guide data component  1105  of guide data  1110 . 
         [0060]    As a second portion  1170  of guide data  1110  is downloaded, for instance the next day, the system continues walking through the guide data  1110  using loop  1120 . Eventually, the system matches show A  1100  in queue  1160  with a repeated airing of show A  1150  when the loop  1120  reaches a second component of the guide data  1155 . At this point the system is able to transfer repeated show A  1150  and the conflict is solved, since original show A  1100  is transferred and show B  1130  was also transferred. From a user perspective this is satisfactory, since they have stored both broadcasts and if the user did not immediately try to watch original show A, the whole process occurred transparently to the user. 
         [0061]    In one embodiment, queue  1160  described in connection with  FIG. 11  comprises multiple queues that are used together to resolve conflict. Table I shows some of the queues used to resolve conflicts: 
         [0000]    
       
         
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 Name of 
                   
               
               
                 Queue 
                 Purpose 
               
               
                   
               
             
             
               
                 Saved 
                 Saved shows are placed in the saved shows queue along with 
               
               
                 Show 
                 shows that are actively being transferred to the storage device 
               
               
                 Queue 
               
               
                 Schedule 
                 Shows that are scheduled to be transferred to the storage 
               
               
                 Queue 
                 device in the future arc placed to this queue 
               
               
                 Series 
                 Each entry In this queue comprises a template having data 
               
               
                 Manager 
                 about each series that is automatically transferred to the 
               
               
                 Queue 
                 storage device. This includes, for instance, the series title, 
               
               
                   
                 genre, time, etc. The data is used, for instance to find matches 
               
               
                   
                 in guide data entries when a loop walks the guide data. 
               
               
                 Manually 
                 This queue contains shows the user has manually deleted from 
               
               
                 Deleted 
                 a series manager or schedule queue. 
               
               
                 Queue 
               
               
                 Adjacent 
                 Contains entries about shows adjacent (before and after) 
               
               
                 Shows 
                 shows in the schedule queue. It is used to prevent the system 
               
               
                 Queue 
                 from transferring a portion of a show (user or automatically 
               
               
                   
                 extended timeslot) that might have adult content. 
               
               
                   
               
             
          
         
       
     
         [0062]      FIG. 12  is a flowchart showing how the queues described with respect to Table 1 are used when carrying out a process, such as the process described in  FIG. 10 . At block  1200  a component of the guide data representing a show is examined. At block  1210 , it is determined if the component of the block of guide data matches a pattern of a show in the series manager queue (i.e., the user intends to record this show every time it occurs). If not, block  1200  repeats on the next available component of the guide data. If so, then at block  1220 , it is determined if that component of the guide data already resides in the saved show queue if it does, then the show is not transferred, since it already has been saved, and block  1200  repeats. Otherwise, it is determined if the guide data component is already in the schedule queue at block  1230 . If so, then it is not acted upon and block  1200  repeats. Otherwise, it is determined if the show is in the manually deleted queue at block  1240 . If so, it is not acted upon since the user has decided manually not to transfer the show anymore, so block  1200  repeats. Otherwise, it is determined if there is a conflict at block  1250 . If not, the show is transferred to the storage device at block  1260 . Otherwise, the conflict is resolved at block  1270 . 
       Manual Resolution Simplification Process 
       [0063]    When a PVR, DVR, or other video recording system has many tuners, there may be an exponentially large number of potential solutions that will solve a conflict. To simplify the interface that is presented to the user to manually resolve the conflict, the present invention typically selects one or two choices to present to the user that are most satisfactory.  FIG. 13  is a diagram showing how multiple solutions may occur. 
         [0064]    Assume the user has scheduled a long show 1300 for transfer to the storage device. The long show may, for instance be a sporting event or a movie. Within complete timeslot reserved for long show 1300, short programs A  1320 , B  1321 , C  1322 , D  1323 , E  1324 , and F  1325  are also scheduled. Assuming the system under consideration has two tuners, three conflicts have arisen. There are multiple solutions to this conflict. A first solution is to choose A  1320 , C  1322 , E  1324 , and long show 1300. A second solution is to choose B  1321 , C  1322 , E  1324 , and long show 1300. There are a total of eight solutions to the present conflict. Instead of presenting the user with all eight solutions, the system, according to one embodiment, presents the user with only one or two optimal choices that will resolve the conflict. 
         [0065]      FIG. 14  is a flowchart describing the process of how an embodiment of the present invention finds and presents a user with a small amount of optimal choices to solve a conflict. The process begins at block  1400  where all conflicting programs/timeslots are obtained. At block  1410 , all of the solutions are obtained and added to a list. At block  1420 , each timeslot in the solution has its priority examined. At block  1430 , a cumulative priority is given to the entry in the list based on the priorities of all of its timeslots involved in the solution. At block  1440 , it is determined if there are any more entries for solutions in the list. If so, block  1420  repeats and the next solution entry in the list is prioritized. After the entire list is examined, the system presents the user at block  1450  with one or two of the lowest priority solutions, so that the user may delete one of those solutions to solve the conflict. 
       Show Priority 
       [0066]    If there are instructions that cause a conflict for system resources, which prevent all the desired content from being transferred to the storage device, a prioritization system is used to determine which content is more desirable. This system is also used to determine undesirable content when deciding which shows to suggest to the user to delete in order to avoid conflicts as shown in  FIG. 14 . Each time slot to be saved, based on user instructions, is handled as a type. A first type may be, for instance, automatically extended time, while a second type may be a show&#39;s body (or core time). Table 2 shows some examples of the various typing of timeslots and the resulting priority, according to an embodiment of the present invention: 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 Type 1 
                 Type 2 
                 Priority 
               
               
                   
               
             
             
               
                 Currently being transferred to 
                 Other content 
                 Content 1 is given a higher 
               
               
                 the storage device 
                   
                 priority. 
               
               
                 Scheduled manually by the 
                 An episode automatically 
                 Content 1 is given a higher 
               
               
                 user to be transferred to the 
                 transferred to the storage 
                 priority 
               
               
                 storage device 
                 device by a series manager 
               
               
                 Content automatically 
                 Content automatically 
                 The content with the highest 
               
               
                 transferred to the storage 
                 transferred to the storage 
                 series priority is chosen. The 
               
               
                 device by a series manager 
                 device by a series manager 
                 series priority may be set 
               
               
                   
                   
                 manually. One embodiment 
               
               
                   
                   
                 determines this by a position 
               
               
                   
                   
                 in a series queue. Shows 
               
               
                   
                   
                 closer to the top are more 
               
               
                   
                   
                 desirable 
               
               
                 Equal priority as content 2 
                 Equal priority as content 1 
                 The longer consent is given 
               
               
                   
                   
                 priority. 
               
               
                 Automatically extended time 
                 Not automatically extended 
                 The content that is not 
               
               
                   
                 time 
                 automatically extended time is 
               
               
                   
                   
                 given a higher priority 
               
               
                 User extended lead time that 
                 Other content 
                 The body of content 2 is 
               
               
                 extends into the body of 
                   
                 preserved, and the user 
               
               
                 content 2 
                   
                 extended lead time is not 
               
               
                   
                   
                 recorded 
               
               
                 User extended trail time that is 
                 Other content 
                 The body of content 2 is 
               
               
                 less than a fixed interval and 
                   
                 preserved and the user 
               
               
                 extends into the body of 
                   
                 extended trail time is not 
               
               
                 content 2 
                   
                 recorded. The fixed interval 
               
               
                   
                   
                 may be, for instance, 5 
               
               
                   
                   
                 minutes. 
               
               
                 User emended trail time that 
                 Other content 
                 The extended trail time is 
               
               
                 is greater than a fixed interval 
                   
                 recorded and the body of 
               
               
                 and extends into the body of 
                   
                 content 2 is truncated. 
               
               
                 content 2 
               
               
                 User extended trail time 
                 User extended lead time 
                 User extended trail time is 
               
               
                   
                   
                 given a higher priority. 
               
               
                   
               
             
          
         
       
     
         [0067]    When the system finds one or more conflicts and priority is needed to solve the conflict, the flowchart of  FIG. 15  shows how one embodiment of the present invention resolves the conflict. The algorithm takes as input at block  1500  timeslots A and B, which are in conflict. Timeslots A and B are, for instance, the body of a show, user extended lead or trail time, or automatically extended lead or trail time. At block  1510 , it is determined if timeslot A is automatically extended time. If timeslot A is automatically extended time, then it is determined at block  1520  if timeslot B is automatically extended time, if timeslot B is not automatically extended time, then timeslot B is given higher priority and the conflict is solved at block  1530 . 
         [0068]    If, however, at block  1510 , timeslot A is not automatically extended time. Then it is determined at block  1540  if timeslot B is automatically extended time. If it is, then timeslot A is given a higher priority and the conflict is solved at block  1550 . If, however, at block  1540 , B is not automatically extended time or at block  1520 , B is automatically extended time (meaning either both timeslots A and B are both automatically extended time or both are not automatically extended time) then at block  1560 , it is determined if timeslot A is of a higher priority. If so then flow proceeds to block  1550 . Otherwise, flow proceeds to block  1530 . 
         [0069]    If a conflict cannot be solved by using automatically extended time alone, then additional decision making algorithms are employed. These steps are invoked, for instance, when block  1560  of  FIG. 15  is reached.  FIG. 16  describes the steps that an embodiment of the present invention takes when it reaches a situation such as block  1560  of  FIG. 15  when a conflict cannot be solved simply by not transferring the automatically extended time to the storage device.  FIG. 16  assumes that timeslot A comprises user extended time. 
         [0070]    At block  1600  the algorithm takes as input a user extended timeslot in timeslot A and other content, such as the body of a show or user extended time in timeslot B. At block  1610 , it is determined if timeslot A is user extended lead time. If so, then at block  1615 , it is determined if timeslot B is the body of a show. If so, then timeslot B is given priority at block  1620 , and the user extended lead time is not transferred to the storage device. 
         [0071]    If however, at block  1610 , timeslot A is user extended trail time, it is determined at block  1630 , if the user extended trail time is less than a fixed interval, five minutes, for instance. If so, then it is determined at block  1615  if timeslot B is the body of a show. If so, then flow proceeds to block  1620  and timeslot B is transferred to the storage device if it is the body of a show. Otherwise, the trail time exceeds the fixed interval, so at block  1640 , timeslot A is given priority and transferred to the storage device, while timeslot B is truncated. Returning to block  1615 , if timeslot B is not the body of a show, then the timeslot with the highest priority is chosen at block  1650 . 
       Adjacent Shows 
       [0072]    In one embodiment of the present invention, a list is maintained of shows that are adjacent to a show that has been scheduled to be transferred to the storage device. This is useful, for instance, for parental control reasons, it is used to prevent an unauthorized user, such as a child, from misusing user extended lead time and user extended trail time to extend a transfer into the body of another show that might have objectionable content. The adjacent show list contains metadata for each show that is adjacent to a scheduled show. 
         [0073]      FIG. 17  is a block diagram showing the lists that are used by an embodiment of the present invention. Program guide  1700  contains all of the shows the user can currently schedule. Show A  1710  has been selected by the user. Show A  1710  is placed in schedule list  1720 . Shows X  1730  and Y  1740  are adjacent to show A  1710 . Adjacent shows X  1730  and Y  1740  are placed in adjacent show list  1750 . One or more metadata columns  1760  are associated with each entry. Currently a metadata entry  1770  is activated in association with show Y  1740 . This is one way in which a system is able to identify show Y  1740  as being one that needs parental control. For instance metadata column entry  1770  might indicate that show Y  1740  is rated R. Similarly, it might indicate that show Y  1740  is rated X or show Y  1740  has violent content, graphic language, nudity, other objectionable rating information such as being on a specific channel, a content advisory, etc. Since show Y  1740  has a metadata entry  1770  indicating that show Y  1740  violates a system content control, a user who has scheduled show A  1710  will not be able to enable user extended trail time to extend into the body of show Y  1740 , without the proper authentication, PIN, key, or the like. 
         [0074]      FIG. 18  is a flowchart showing the process of using an adjacent show list according to one embodiment of the present invention. At block  1800 , a user schedules a show to be transferred to the storage device. At block  1810 , the system begins transferring the show to the storage device. At block  1820 , the shows adjacent to the show currently being transferred are placed in an adjacent show list. At block  1830 , the metadata for the shows in the adjacent show list is checked. At block  1840 , it is determined if the metadata indicates that either show in the adjacent show list contains content that might be restricted through parental controls. If so, the system blocks the show in the adjacent show list at block  1860 . Otherwise, the system unblocks the show at block  1850 . 
         [0075]    After blocks  1850  or  1860 , it is determined if the current time is within the current metadata record at block  1870 . This is accomplished, for instance, by using a playback head that moves sequentially in time as the current show is transferred. As the playback head reaches the end of the current show and moves to the next show in time, the system will discover that the metadata in the adjacent show list is no longer current. At that point the system updates the adjacent show list and block  1870  becomes false. When block  1870  becomes false, block  1820  repeats. Otherwise the system loops until block  1870  becomes false. 
       Overall System 
       [0076]      FIG. 19  is a functional block diagram that illustrates the components of an embodiment of the present invention. Note that  FIG. 19  is intended to be a conceptual diagram and does not necessarily reflect the exact physical construction and interconnections of these components, set top box  10  includes processing and control circuitry  1900 , which controls the overall operation of the system. Coupled to the processing and control circuitry  1900  are one or more TV tuners  1910 , a storage device  1920 , a communication device  1930 , and a remote interface  1940 . 
         [0077]    Tuners  1910  receive broadcast signals on transmission line  1960 , which may originate from an antenna, a cable television outlet, a satellite connection, or another suitable broadcast input source. Processing and control circuitry  1900  provides audio and video output to device  170  via a line  1970 . Remote interface  1940  receives signals from remote control  60  via wireless connection  70 . Communication device  1930  is used to transfer data between set tap box  10  and one or more remote processing systems, such as a web server  1980 , via a data path  1990 . 
         [0078]    Processing and control circuitry  1900  may include one or more of devices such as general purpose microprocessors, digital signal processors, application specific integrated circuits, various types of signal conditioning circuitry, including analog to digital converters, digital to analog converters, input/output buffers, etc. Storage device  1920  may include one or more physical memory devices, which may include volatile storage devices, nonvolatile storage devices, or both. For example, storage device  1920  may include both random access memory (RAM), read only memory (ROM), hard disk drives, various forms of programmable and/or erasable ROM, flash memory, or any combination of these devices. 
         [0079]    Communication device  1930  may be a conventional telephone modem, an integrated Services Digital Network adapter, a Digital Subscriber Line adapter, a cable television modem, or any other suitable data communication device. Logic  1995  typically is resident in storage device  1920 . Logic  1995  controls the overall functionality of the system, including the GUI, IPG, and may also be used when the video recorder has been given conflicting instructions to transfer more shows to storage device  1920  then there are tuners  1910  available. For instance, an instruction might be generated from remote control  70  handled by the user. The instruction would be sent across line  70 , through remote interface  1940 , and to processing and control circuitry  1900  via logic  1995 . Logic  1995  interprets and determines the action needed to be taken based on the instruction and might eventually store information in storage device  1920  that would allow the system to act on the instruction at the appropriate time. 
         [0080]    One or more of the algorithms and processes described herein to manually and/or automatically resolve conflicts are stored in logic portion  1995 . These algorithms and other codes in logic portion  1995  are used, for instance, to recognize the existence of conflicts and to prioritize the conflicting programs to find solutions to the conflicts by using automatically extended time, user extended time, and core time, as well as other factors in assessing the priorities of conflicting timeslots. 
         [0081]    Although the description above contains many specificities, these should not be construed as limiting the scope of the invention but as merely providing illustrations of some of the presently preferred embodiments of this invention. Thus the scope of this invention should be determined by the appended claims and their legal equivalents.