TiVo Inc. v. Cisco Systems, Inc.

Filing 1

COMPLAINT FOR PATENT INFRINGEMENT against Cisco Systems, Inc. ( Filing fee $ 350 receipt number 0540-3618781.), filed by TiVo Inc.. (Attachments: #1 Exhibit A, #2 Exhibit B, #3 Exhibit C, #4 Exhibit D, #5 Civil Cover Sheet)(Baxter, Samuel)

Download PDF
EXHIBIT C United States Patent (10) Van Stam et al. (12) (45) (54) AUTOMATIC PLAYBACK OVERSHOOT CORRECTION SYSTEM 5,710,601 A 5,878,186 A (75) Inventors: Wijnand Van Stam, Sunnyvale, CA (US); Robert Vallone, Palo Alto, CA (US) (73) Assignee: TiVo Inc., Alviso, CA (US) ( * ) Notice: Patent NO.: US 7,493,015 ~1 Date of Patent: *Feb. 17,2009 111998 Marshall et a1 311999 Bennett et al. (Continued) FOREIGN PATENT DOCUMENTS EP 0435370 A2 711991 Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 543 days. OTHER PUBLICATIONS This patent is subject to a terminal disclaimer. Official Action from EPO foreign application No. 00 921 559.1-1247 dated Jul. 20, 2007 (4 pgs)-attached. (21) Appl. No.: 101846,431 (22) Filed: (Continued) (Continued) Primary Examiner-Huy T Nguyen (74) Attorney, Agent, or Firm-Kirk Palermo Truong & Becker LLP May 13,2004 Related U.S. Application Data D. Wong; Hickman (63) Continuation of application No. 091539,295, filed on Mar. 30, 2000, now Pat. No. 6,850,691. (57) (60) Provisional application No. 601127,178, filed on Mar. 30, 1999. An automatic playback overshoot correction system predicts the position in the program material where the user expects to be when the user stops the fast forward or reverse progression of the program material. The system determines the position where the program material was stopped and transitions to the new mode that the user selected, starting at the stopped position with an overshoot correction factor added or subtracted from it. The system uses a prediction method to correctly place the user within the program upon transition out of fast forward or reverse mode and determines if the speed of the fast forward or reverse modes and then automatically subtracts or adds, respectively, a time multiple to the frame where the transition was detected and positions the user at the correct frame. The time multiple is fine tuned if the user is consistently correcting after the fast forward or rewind mode stops. (51) Int. C1. H04N 5/91 (2006.01) (52) U.S. Cl. ........................................ 386168; 386170 (58) Field of Classification Search ................... 386168, 386170, 80, 81, 82, 95; 369144.28 See application file for complete search history. (56) References Cited U.S. PATENT DOCUMENTS 4,600,989 4,805,050 5,063,547 5,502,504 5,701,383 A A A A A 711986 211989 1111991 311996 1211997 Schwartz et a1 Aoyagi et al. Custers et al. Marshall et al. Russo et al. 24 Claims, 34 Drawing Sheets - - Device ABSTRACT US 7,493,015 B1 Page 2 U.S. PATENT DOCUMENTS 6,055,355 A 6,850,691 B1 * 412000 Lee 212005 Stam et al. .................... FOREIGN PATENT DOCUMENTS OTHER PUBLICATIONS Current Claims in EPO foreign application No. 00 921 559.1-1247 (4 pgs)-attached. * cited by examiner U.S. Patent Feb. 17,2009 102 101 lnpu t streams -~ Sheet 1 of 34 MPEG streams ~ Module Media Switch 103 MPEG streams I I CPU 1 1~ e mryl o 106 105 Disk FIG. 1 b04 Ouput Module TV U.S. Patent Feb. 17,2009 Sheet 2 of 34 t Output Module input Module lnput Module Output Module FIG. 2 U.S. Patent Feb. 17,2009 Sheet 3 of 34 FIG. 3 U.S. Patent Sheet 4 of 34 Feb. 17,2009 411 pointer next pointer / I irni t limit It I audio b u f f e r I 412 - pointer next pointer / 404 limit (init '----I- I I I private data buffer 1 pointer imi -next pointer I llimitt - I 1 1 FIG. 4 504 address time stamp I event buffer I 502 41 3 f I U.S. Patent Sheet 5 of 34 Feb. 17,2009 Circular Segment A Logical Buffers Segment Address Video Buffer 1 Audio Buffer Private Data Buffer 602 /- A PES Buffer FIG. 6 609' Length Type = I-FRAME 607/ Timestamp = 096453 I '604 U.S. Patent Feb. 17,2009 Sheet 6 of 34 6 hard disk VEI data audio data address -712 U.S. Patent Sheet 7 of 34 Feb. 17,2009 8uD il 802 buffers fers Sources data - Transforms 1 encoder hard disk FIG. 8 o f data ) . Sinks U.S. Patent Feb. 17,2009 Sheet 8 of 34 1 /-903 Transform Tmk Source Media Switch Media Switch push current Sink U.S. Patent Feb. 17,2009 Sheet 9 of 34 FIG. 10 U.S. Patent Feb. 17,2009 Sheet 10 of 34 FIG. I7 U.S. Patent Sheet 11 of 34 Feb. 17,2009 NTSC Field Sequence \lor \ 1 VBI Line 21 (FCC Mandated) .If Even field, Line 21 I Reaion \ I Active p:-1,Y,-I L l l t: , 1202 1 Contains Extended Data Services (EDS) data (e-g., Time o f day, V-chip) Two characters p e r odd f i e l d I Word Parser Recognizer state mach Separate i n t o words -Word1 StateA -----Word2 State8 Word3 1207 StateC . .. ... Trigger Act ion 1206 1205 Words added t o a special segment i n the fixed-size PES b u f f e r . FIG. I 2 S t a r t capture, Stop capture, Phrase seen, U.S. Patent Feb. 17,2009 Sheet 12 of 34 F I G . 13 U.S. Patent Feb. 17,2009 Sheet 13 of 34 Fig. 14 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 14 of 34 1505 1501 Device Fig. 15 U.S. Patent Feb. 17,2009 Sheet 15 of 34 Fig. 16 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 16 of 34 Fig. 17 U.S. Patent 1812 Feb. 17,2009 181 1 Sheet 17 of 34 Fig. 18 1805 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 18 of 34 Fig. 19 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 19 of 34 Fig. 20a U.S. Patent Feb. 17,2009 Sheet 20 of 34 Fig. 20b US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 21 of 34 Fig. 20c US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 22 of 34 Fig. 21 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 23 of 34 Fig. 22 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 24 of 34 Fiq. 23 US 7,493,015 BI U.S. Patent Feb. 17,2009 Sheet 25 of 34 Fiq. 24 U.S. Patent Feb. 17,2009 Sheet 26 of 34 Fig. 25 US 7,493,015 BI U.S. Patent Feb. 17,2009 US 7,493,015 BI Sheet 27 of 34 I 2602 Fig. 26 2606 2610 U.S. Patent Feb. 17,2009 Fig. 27 Sheet 28 of 34 US 7,493,015 BI U.S. Patent 2804 Feb. 17,2009 Sheet 29 of 34 Fig. 28 U.S. Patent Feb. 17,2009 Sheet 30 of 34 Fig. 29 U.S. Patent Feb. 17,2009 Sheet 31 of 34 Fig. 30 U.S. Patent Feb. 17,2009 Sheet 32 of 34 Fig. 31 U.S. Patent Feb. 17,2009 3204 Fig. 32 Sheet 33 of 34 U.S. Patent Feb. 17,2009 Sheet 34 of 34 Fiq. 33 US 7,493,015 B1 1 2 AUTOMATIC PLAYBACK OVERSHOOT CORRECTION SYSTEM between the user's expected stop position in the program media and the actual position where the media was stopped. It would further be advantageous to provide a system that is transparent to the user during operation. CROSS-REFERENCE TO RELATED APPLICATIONS; PRIORITY CLAIM 5 SUMMARY OF THE INVENTION This application claims benefit as a Continuation of application Ser. No. 091539,295,filed Mar. 30,2000 now U.S. Pat. No. 6,850,691, which claims benefit of Provisional APP~~. 601127,178,filed Mar. 30, 1999, the entire contents of which is hereby incorporated by reference as if fully set forth herein, under 35 U.S.C. g120. 10 BACKGROUND OF THE INVENTION l5 1. Technical Field The invention relates to the operation of audio and video equipment in a computer environment. More particularly, the invention relates to automatically compensating for a user's time when the forward Or reverse progession through audio or video program media in a computer environment. 2. Description of the Prior Art Multimedia devices such as VCRs, DVD players, MP3 players, cassette players, CD players, video tape editors, and the new class of Personal Video Recorders (PVR) are extremely popular with consumers, Almost every household in the United States has at least one of these devices. Multimedia devices must have some way of jumping through the program material to allow the user to select his desired position in the program material, hi^ has commonly been achieved using a fast forward and reverse mode. The fast forward mode moves through the program material in a forward progression and the reverse mode moves backwards in program material. neuser simply presses a button (normally on a remote control) to initiate a fast forward or reverse mode and then presses a button to terminate the fast forward or reverse mode, The time that it takes the user to recognize the audio or video passage that he desires, to press the button to terminate the fast forward or reverse progression, and the multimedia device to react to the user's command and stop the progression varies among multimedia devices. Several factors are involved in this time lag. The first is the user's reaction time. The average human being has a fairly slow reaction time to visual events. That is, the time that it takes for a human being to recognize a visual event and to physically react is relatively slow. Military tests have &own that this reaction time is, for pilots, on the average of one tenth of a second. The second factor is the time that it takes for the user's command to be sent from the device that he is using to the device (typically a and the device's react the and the media. This factor varies with the multimedia device and the media itself. The third factor is the speed of the fast forward or reverse mode. The faster speed results in the further progression through the program material and therefore a larger error factor. neposition where the program material stopped is normally not where the user had expected it to be, The user typically must correct for the error by fast forwarding or reversing the program material once again to get to the expected position. It would be advantageousto provide an automatic playback overshoot correction system that corrects for the difference 20 25 30 35 40 45 50 55 The invention provides an automatic playback overshoot correction system. The system automatically corrects for the difference between the user's expected stop position in the program material and the actual position where the media was stopped whenever the user terminates fast forwarding or reversing the program material. In addition, the invention provides a system that is operationally transparent to the user. An embodiment of the inventionpredicts the position in the program material where the user expects to be when the user stops the fast forward or reverse progression of the program material. The invention determines the position where the program material was stopped. The media controller transitions to the new mode that the user selected, starting at the stoppedposition with an overshoot correction factor added or subtracted from it. The invention to the user remembering how (i.e., reverses fast forwards) after he much the user StopSthe fast forward Or reverse mode (in each 'peed if 'peed fast forward Or reverse modes are Correction factors are calculatedusing the user's corrections. The invention adjusts the correction factors if it observes that the user continues to make corrections. The invention also uses a prediction method to correctly ~lacetheuserwithinthe~rogramu~ontransitionoutof either mode. The prediction method determines the speed of the fast forward or reverse modes and then automatically subtracts or adds, respectively,a time multiple (dependingupon the actual speed) to the frame where the transition was detected and positions the user at the COrrect frame. The system fine tunes the time multiple if it sees that the user is consistently correcting after the fast f~rwai-d rewind mode stops. or Another method initially tests the user's reaction time using a test video. It asks the user to press the fast forward or reverse button on his control device during the test video and then asks the user to position the video to the place that he expected the system to have been. This time span is then used whenever the user uses the fast forward or reverse modes and is adjusted with a multiple for each speed. A final method allows the user to simply set a setting that the system will use as a correction factor. The invention will subtract or add a multiple of the factor to the release frame whenever the user uses the fast forward or reverse modes, respectively, Other aspects and advantages of the invention will become apparent from the following detailed description in combination with the accompanying drawings, illustrating, by way of example, the principles of the invention, BRIEF DESCRIPTION OF THE DRAWINGS 60 65 FIG. 1is a block schematic diagram of a high level view of an embodiment of the invention according to the invention; FIG. 2 is a block schematic diagram of an embodiment of the invention using multiple input and output n ~ ~ d u l e s according to the invention; FIG. 3 is a schematic diagram of an Moving Pictures Experts Group (MPEG) data stream and its video and audio components according to the invention; US 7,493,015 B1 3 4 FIG. 4 is a block schematic diagram of a parser and four direct memory access (DMA) input engines contained in the Media Switch according to the invention; FIG. 5 is a schematic diagram of the components of a packetized elementary stream (PES) buffer according to the invention; FIG. 6 is a schematic diagram of the construction of a PES buffer from the parsed components in the Media Switch output circular buffers; FIG. 7 is a block schematic diagram of the Media Switch and the various components that it communicates with according to the invention; FIG. 8 is a block schematic diagram of a high level view of the program logic according to the invention; FIG. 9 is a block schematic diagram of a class hierarchy of the program logic according to the invention; FIG. 10 is a block schematic diagram of an embodiment of the clip cache component of the invention according to the invention; FIG. 11 is a block schematic diagram of an embodiment of the invention that emulates a broadcast studio video mixer according to the invention; FIG. 12 is a block schematic diagram of a closed caption parser according to the invention; FIG. 13 is a block schematic diagram of a high level view of an embodiment of the invention utilizing a VCR as an integral component of the invention according to the invention; FIG. 14 is a diagram of a remote control according to the invention; FIG. 15 is a block schematic diagram of a high level view of an embodiment of the invention showing the viewer interface module interaction according to the invention; FIG. 16 is a schematic diagram of a central menu screen according to the invention; FIG. 17 is a schematic diagram of a program list screen according to the invention; FIG. 18 is a schematic diagram of a detailed program information screen according to the invention; FIG. 19 is a schematic diagram of a detailed program information screen according to the invention; FIG. 20a is a schematic diagram of a small banner displayed over program content according to the invention; FIG. 20b is a schematic diagram of a medium banner displayed over program content according to the invention; FIG. 20c is a schematic diagram of a detailed banner displayed over program content according to the invention; FIG. 21 is a schematic diagram of a suggestedprogram list screen according to the invention; FIG. 22 is a schematic diagram of a network listing screen according to the invention; FIG. 23 is a schematic diagram of a program theme list screen according to the invention; FIG. 24 is a schematic diagram of a to do list screen according to the invention; FIG. 25 is a schematic diagram of a conflictwarning screen according to the invention; FIG. 26 is a schematic diagram of a trick play bar overlaid on program material according to the invention; FIG. 27 is a schematic diagram of a the trick bar and its associated components according to the invention; FIG. 28 is a schematic diagram of a two column multimedia schedule screen according to the invention; FIG. 29 is a schematic diagram of a two column themebased schedule screen according to the invention; FIG. 30 is a schematic diagram of a two column themebased schedule screen according to the invention; FIG. 31 is a schematic diagram of a two column themebased schedule screen according to the invention; FIG. 32 is a schematic diagram of a two column program schedule screen according to the invention; and FIG. 33 is a schematic diagram of a two column program schedule screen showing a program duration indicator according to the invention. 5 DETAILED DESCRIPTION OF THE INVENTION lo 15 20 25 30 35 40 45 50 55 60 65 The invention is embodied in an automatic playback overshoot correction system in a computer envir0nment.A system according to the invention automatically corrects for the difference between the user's expected stop position in the program material and the actual position where the media was stopped whenever the user terminates fast forwarding or reversing the program material. In addition, the invention provides a system that is operationallytransparent to the user. An embodiment of the invention predicts the position in the program material where the user expects to be when the user stops the fast f~rward reverse progression of the program or material. Referring to FIG. 1, an embodiment of the invention has an Input Section 101, Media Switch 102, and an Output Section 103. The Input Section 101 takes television (TV) input streams in a multitude of forms, for example, National Television Standards Committee (NTSC) or PAL broadcast, and digital forms such as Digital Satellite System (DSS), Digital Broadcast Services (DBS), or Advanced Television Standards Committee (ATSC). DBS, DSS andATSC are based on standards called Moving Pictures Experts Group 2 (MPEG2) and MPEG2 Transport. MPEG2 Transport is a standard for formatting the digital data stream from the TV source transmitter so that a TV receiver can disassemble the input stream to find programs in the multiplexed signal. The Input Section 101 produces MPEG streams. An MPEG2 transport multiplex supports multiple programs in the same broadcast channel, withmultiple video and audio feeds and private data. The Input Section 101 tunes the channel to a particular program, extracts a specific MPEG program out of it, and feeds it to the rest of the system. Analog TV signals are encoded into a similar MPEG format using separate video and audio encoders, such that the remainder of the system is unaware of how the signal was obtained. Information may be modulated into the Vertical Blanking Interval WBI) of the analog TV signal in a number of standard ways; for example, the North American Broadcast Teletext Standard (NABTS) may be used to modulate information onto lines 10 through 20 of an NTSC signal, while the FCC mandates the use of line 21 for Closed Caption (CC) and Extended Data Services (EDS). Such signals are decoded by the input section and passed to the other sections as if they were delivered via an MPEG2 private data channel. The Media Switch 102 mediates between a microprocessor CPU 106, hard disk or storage device 105, and memory 104. Input streams are converted to an MPEG stream and sent to the Media Switch 102. The Media Switch 102 buffers the MPEG stream into memory. It then performs two operations if the user is watching real time TV: the stream is sent to the Output Section 103 and it is written simultaneously to the hard disk or storage device 105. The Output Section 103 takes MPEG streams as input and produces an analog TV signal according to the NTSC, PAL, or other required TV standards.The Output Section 103 contains an MPEG decoder, On-Screen Display (OSD) generator, analog TV encoder and audio logic. The OSD generator allows the program logic to supply images which will be overlaid on top of the resulting analog TV signal. Additionparser 401 sees an audio event, it redirects the byte stream to ally, the Output Section can modulate information supplied the audio DMA engine 403 and generates an event into the event buffer 413. Similarly,when the parser 401 sees a private by the program logic onto the VBI of the output signal in a data event, it directs the byte stream to the private data DMA number of standard formats, including NABTS, CC and EDS. With respect to FIG. 2, the invention easily expands to 5 engine 404 and directs an event to the event buffer 413. The accommodate multiple Input Sections (tuners) 201,202,203, Media Switch notifies the program logic via an interrupt 204, each can be tuned to different types of input. Multiple mechanism when events are placed in the event buffer. Output Modules (decoders) 206,207,208,209 are added as Referring to FIGS. 4 and 5, the event buffer 413 is filled by well. Special effects such as picture in a picture can be implethe parser 401 with events. Each event 501 in the event buffer mented with multiple decoders. The Media Switch 205 l o has an offset 502, event type 503, and time stamp field 504. records one program while the user is watching another. This The parser 401 provides the type and offset of each event as it means that a stream can be extracted off the disk while is placed into the buffer. For example, when an audio event another stream is being stored onto the disk. occurs, the event type field is set to an audio event and the offset indicates the location in the audio buffer 411. The Referring to FIG. 3, the incoming MPEG stream 301 has interleaved video 302. 305. 306 and audio 303. 304. 307 1s nronram lonic knows where the audio buffer 411 starts and , , , , u u segments. These elements must be separated and recombined adds the offset to find the event in the stream. The address to create separate video 308 and audio 309 streams or buffers. offset 502 tells the program logic where the next event This is necessary because separate decoders are used to conoccurred, but not where it ended. The previous event is cached so the end of the current event can be found as well as the vert MPEG elements back into audio or video analog components. Such separate delivery requires that time sequence 20 length of the segment. information be generated so that the decoders may be propWith respect to FIGS. 5 and 6, the program logic reads accumulated events in the event buffer 602 when it is intererly synchronized for accurate playback of the signal. rupted by the Media Switch 601. From these events the proThe Media Switch enables the program logic to associate gram logic generates a sequence of logical segments 603 proper time sequence information with each segment, possibly embedding it directly into the stream. The time sequence 25 which correspond to the parsed MPEG segments 615. The program logic converts the offset 502 into the actual address information for each segment is called a time stamp. These 610 of each segment, and records the event length 609 using time stamps are monotonically increasing and start at zero the last cached event. If the stream was produced by encoding each time the system boots up. This allows the invention to an analog signal, it will not contain Program Time Stamp find any particular spot in any particular video segment. For example, if the system needs to read five seconds into an 30 (PTS) values, which are used by the decoders to properly incoming contiguous video stream that is being cached, the present the resulting output. Thus, the program logic uses the system simply has to start reading forward into the stream and generated time stamp 504 to calculate a simulated PTS for look for the appropriate time stamp. each segment and places that into the logical segment timesA binary search can be performed on a stored file to index tamp 607. In the case of a digital TV stream, PTS values are into a stream. Each stream is stored as a seauence of fixed-size 35 alreadv encoded in the stream. The oromam lonic extracts this u u segments enabling fast binary searches because of the uniinformation and places it in the logical segment timestamp form timestamping. If the user wants to start in the middle of 607. the program, the system performs a binary search of the The program logic continues collecting logical segments 603 until it reaches the fixed buffer size. When this occurs, the stored segments until it finds the appropriate spot, obtaining the desired results with a minimal amount of information. If 40 program logic generates a new buffer, called a Packetized the signal were instead stored as an MPEG stream, it would be Elementary Stream (PES) 605 buffer containing these logical necessary to linearly parse the stream from the beginning to segments 603 in order, plus ancillary control information. find the desired location. Each logical segment points 604 directly to the circular With respect to FIG. 4, the Media Switch contains four buffer, e.g., the video buffer 613, filled by the Media Switch input Direct Memory Access (DMA) engines 402,403, 404, 45 601. This new buffer is then passed to other logic compo405 each DMA engine has an associated buffer 410,411,412, nents, which may further process the stream in the buffer in 413. Conceptually, each DMA engine has a pointer 406, a some way, such as presenting it for decoding or writing it to the storage media. Thus, the MPEG data is not copied from limit forthat pointer 407, a next pointer 408, and a limit for the one location in memory to another by the processor. This next pointer 409. Each DMA engine is dedicated to a particular type of information, for example, video 402, audio 403, 50 results in a more cost effective design since lower memory bandwidth and processor bandwidth is required. and parsed events 405. The buffers 410, 411, 412, 413 are circular and collect the specific information. The DMA A unique feature of the MPEG stream transformation into PES buffers is that the data associated with logical segments engine increments the pointer 406 into the associated buffer need not be present in the buffer itself, as presented above. until it reaches the limit 407 and then loads the next pointer 408 and limit 409. Setting the pointer 406 and next pointer 55 When a PES buffer is written to storage, these logical seg408 to the same value, along with the corresponding limit ments are written to the storage medium in the logical order in which they appear. This has the effect of gathering compovalue creates a circular buffer. The next pointer 408 can be set to a different address to provide vector DMA. nents of the stream, whether they be in the video, audio or private data circular buffers, into a single linear buffer of The input stream flows through a parser 401. The parser 401 parses the stream looking for MPEG distinguished events 60 stream data on the storage medium. The buffer is read back indicating the start of video, audio or private data segments. from the storage medium with a single transfer from the storage media, and the logical segment information is For example, when the parser 401 finds a video event, it updated to correspond with the actual locations in the buffer directs the stream to the video DMA engine 402. The parser 401 buffers up data and DMAs it into the video buffer 410 606. Higher level program logic is unaware of this transforthrough the video DMA engine 402. At the same time, the 65 mation, since it handles only the logical segments, thus stream data is easily managed without requiring that the data parser 401 directs an event to the event DMA engine 405 which generates an event into the event buffer 413. When the ever be copied between locations in DRAM by the CPU. L . 7 8 Aunique aspect ofthe Media Switch is the ability to handle small. The CPU 713 does not have to be very fast at any point high data rates effectively and inexpensively. It performs the in time. The Media Switch 701 gives the CPU 713 as much functions of taking video and audio data in, sending video and time as possible to complete tasks. The parsing mechanism 705 and event queue 708 decouple the CPU 713 from parsing audio data out, sending video and audio data to disk, and extracting video and audio data from the disk on a low cost 5 the audio, video, and buffers and the real time nature of the platform. Generally, the Media Switch runs asynchronously streams, which allows for lower costs. It also allows the use of and autonomously with the microprocessor CPU, using its a bus structure in a CPU environment that operates at a much DMA capabilities to move large quantities of information lower clock rate with much cheaper memory than would be with minimal intervention by the CPU. required otherwise. The CPU 713 has the ability to queue up one DMA transfer Referring to FIG. 7, the input side of the Media Switch 701 l o is connected to an MPEG encoder 703. There are also circuits and can set up the next DMA transfer at its leisure. This gives the CPU 713 large time intervals within which it can service specific to MPEG audio 704 and vertical blanking interval the DMA controller 709. The CPU 713 may respond to a (VBI) data 702 feeding into the Media Switch 701. If a digital DMA interrupt within a larger time window because of the TV signal is being processed instead, the MPEG encoder 703 is replaced with an MPEG2 Transport Demultiplexor,and the 1s large latency allowed. MPEG streams, whether extracted from an MPEG2 Transport or encoded from an analog TV MPEG audio encoder 704 and VBI decoder 702 are deleted. The demultiplexor multiplexes the extracted audio, video and signal, are typically encoded using a technique called Variprivate data channel streams through the video input Media able Bit Rate encoding (VBR). This technique varies the Switch port. amount of data required to represent a sequence of images by The parser 705 parses the input data stream from the 20 the amount of movement between those images. This technique can greatly reduce the required bandwidth for a signal, MPEG encoder 703, audio encoder 704 andVBI decoder 702, or from the transport demultiplexor in the case of a digital TV however sequences with rapid movement (such as a basketball game) may be encoded with much greater bandwidth stream. The parser 705 detects the beginning of all of the important events in a video or audio stream, the start of all of requirements. For example, the Hughes DirecTV satellite the frames, the start of sequence headers-all of the pieces of 25 system encodes signals with anywhere from 1 to 10 Mbls of information that the program logic needs to know about in required bandwidth, varying from frame to frame. It would be order to both properly play back and perform special effects difficult for any computer system to keep up with such rapidly varying data rates without this structure. on the stream, e.g. fast forward, reverse, play, pause, fastislow play, indexing, and fastislow reverse play. With respect to FIG. 8, the program logic within the CPU The parser 705 places tags 707 into the FIFO 706 when it 30 has three conceptual components: sources 801, transforms identifies video or audio segments, or is given private data. 802, and sinks 803. The sources 801 produce buffers of data. Transforms 802 process buffers of data and sinks 803 conThe DMA 709 controls when these tags are taken out. The sume buffers of data. A transform is responsible for allocating tags 707 and the DMA addresses of the segments are placed and queuing the buffers of data on which it will operate. into the event queue 708. The frame type information, whether it is a start of a video I-frame, video B-frame, video 35 Buffers are allocated as if "empty" to sources of data, which P-frame, video PES, audio PES, a sequence header, an audio give them back "full". The buffers are then queued and given frame, or private data packet, is placed into the event queue to sinks as "full", and the sink will return the buffer "empty". 708 along with the offset in the related circular buffer where A source 801 accepts data from encoders, e.g., a digital the piece of information was placed. The program logic opersatellite receiver. It acquires buffers for this data from the ating in the CPU 713 examines events in the circular buffer 40 downstream transform, packages the data into a buffer, then pushes the buffer down the pipeline as described above. The after it is transferred to the DRAM 714. source object 801 does not know anything about therest ofthe The Media Switch 701 has a data bus 711 that connects to the CPU 713 and DRAM 714. An address bus 712 is also system. The sink 803 consumes buffers, taking a buffer from shared between the Media Switch 701, CPU 713, and DRAM the upstream transform, sending the data to the decoder, and 714. A hard disk or storage device 710 is connected to one of 45 then releasing the buffer for reuse. the ports of the Media Switch 701. The Media Switch 701 There are two types of transforms 802 used: spatial and temporal. Spatial transforms are transforms that perform, for outputs streams to an MPEG video decoder 715 and a sepaexample, an image convolution or compressioddecompresrate audio decoder 717. The audio decoder 717 signals contain audio cues generated by the system in response to the sion on the buffered data that is passing through. Temporal user's commands on a remote control or other internal events. 50 transforms are used when there is no time relation that is The decoded audio output from the MPEG decoder is digiexpressible between buffers going in and buffers coming out of a system. Such a transform writes the buffer to a file 804 on tally mixed 718 with the separate audio signal. The resulting signals contain video, audio, and on screen displays and are the storage medium. The buffer is pulled out at a later time, sent down the pipeline, and properly sequenced within the sent to the TV 716. The Media Switch 701 takes in 8-bit data and sends it to the 55 stream. disk, while at the same time extracts another stream of data off Referring to FIG. 9, a C++ class hierarchy derivation of the program logic is shown. The TiVo Media Kernel (Tmk) 904, of the disk and sends it to the MPEG decoder 715. All of the DMA engines described above can be working at the same 908, 913 mediates with the operating system kernel. The kernel provides operations such as: memory allocation, syntime. The Media Switch 701 can be implemented in hardware using a Field Programmable Gate Array (FPGA), ASIC, or 60 chronization, and threading. The TmkCore 904, 908, 913 discrete logic. structures memory taken from the media kernel as an object. Rather than having to parse through an immense data It provides operators, new and delete, for constructing and deconstructing the object. Each object (source 901, transform stream looking for the start ofwhere each frame would be, the program logic only has to look at the circular event buffer in 902, and sink 903) is multi-threaded by definition and can run DRAM 714 and it can tell where the start of each frame is and 65 in parallel. the frame type. This approach saves a large amount of CPU The TmkPipeline class 905, 909, 914 is responsible for power, keeping the real time requirements of the CPU 713 flow control through the system. The pipelines point to the 9 next pipeline in the flow from source 901 to sink 903. To The control object 917 accepts commands from the user pause the pipeline, for example, an event called "pause" is and sends events into the pipeline to control what the pipeline sent to the first object in the pipeline. The event is relayed on is doing. For example, if the user has a remote control and is to the next object and so on down the pipeline. This all watching TV, the user presses pause and the control object happens asynchronously to the data going through the pipe- 5 917 sends an event to the sink 903, that tells it pause. The sink 903 stops asking for new buffers. The current pointer 920 line. Thus, similar to applications such as telephony, control stays where it is at. The sink903 starts taking buffers out again of the flow of MPEG streams is asynchronous and separate when it receives another event that tells it to play. The system from the streams themselves. This allows for a simple logic is in perfect synchronization; it starts from the frame that it design that is at the same time powerful enough to support the features described previously, including pause, rewind, fast l o stopped at. forward and others. In addition, this structure allows fast and The remote control may also have a fast forward key. When efficient switching between stream sources, since buffered the fast forward key is pressed, the control object 917 sends an event to the transform 902, that tells it to move forward two data can be simply discarded and decoders reset using a single seconds. The transform 902 finds that the two second time event, after which data from the new stream will pass down the pipeline. Such a capability is needed, for example, when 1s span requires it to move forward three buffers. It then issues a switching the channel being captured by the input section, or reset event to the downstream pipeline, so that any queued when switching between a live signal from the input section data or state that may be present in the hardware decoders is and a stored stream. flushed. This is a critical step, since the structure of MPEG The source object 901 is a TmkSource 906 and the transstreams requires maintenance of state across multiple frames form obiect 902 is a TmkXform 910. These are intermediate 20 of data. and that state will be rendered invalid bv renositiona classes that define standard behaviors for the classes in the ing the pointer. It then moves the current pointer 920 forward pipeline. Conceptually, they handshake buffers down the three buffers. The next time the sink 903 calls nextFullBuf it gets the new current buffer. The same method works for fast pipeline. The source object 901 takes data out of a physical data source, such as the Media Switch, and places it into a reverse in that the transform 902 moves the current pointer PES buffer. To obtain the buffer. the source obiect 901 asks 25 920 backwards. A system clock reference resides in the decoder. The systhe down stream object in his pipeline for a buffer (allocEmptyBuf). The source object 901 is blocked until there is suffitem clock reference is sped up for fast play or slowed down cient memory. This means that the pipeline is self-regulating; for slow play. The sink simply asks for full buffers faster or slower, depending on the clock speed. it has automatic flow control. When the source object 901 has With respect to FIG. 10, two other objects derived from the filled up the buffer, it hands it back to the transform 902 30 through the pushFullBuf function. TmkXform class are placed in the pipeline for disk access. One is called TmkClipReader 1003 and the other is called The sink 903 is flow controlled as well. It calls nextFullBuf TmkClipWriter 1001. Buffers come into the TmkClipWriter which tells the transform 902 that it is ready for the next filled 1001 and are pushed to a file on a storage medium 1004. buffer. This operation can block the sink 903 until a buffer is ready. When the sink 903 is finished with a buffer (i.e., it has 35 TmkClipReader 1003 asks for buffers which are taken off of a file on a storage medium 1005. A TmkClipReader 1003 consumed the data in the buffer) it calls releaseEmptyBuf. ReleaseEmptyBuf gives the buffer back to the transform 902. provides only the allocEmptyBuf and pushFullBuf methods, while a TmkClipWriter 1001 provides only the nextFullBuf The transform 902 can then hand that buffer, for example, back to the source object 901 to fill up again. Inaddition to the and releaseEmptyBuf methods. A TmkClipReader 1003 automatic flow-controlbenefit of this method, it also provides 40 therefore performs the same function as the input, or "push" for limiting the amount of memory dedicated to buffers by side of a TmkClipCache 1002, while a TmkClipWriter 1001 allowing enforcement of a fixed allocation of buffers by a therefore performs the same function as the output, or "pull" transform. This is an important feature in achieving a costside of a TmkClipCache 1002. effective limited DRAM environment. Referring to FIG. 11, an embodiment that accomplishes The MediaSwitch class 909 calls the allocEmptyBuf 45 multiple functions is shown. A source 1101 has a TV signal method of the TmkClipCache 912 object and receives a PES input. The source sends data to a PushSwitch 1102 which is a buffer from it. It then goes out to the circular buffers in the transform derived from TmkXform. The PushSwitch 1102 Media Switch hardware and generates PES buffers. The has multiple outputs that can be switched by the control object MediaSwitch class 909 fills the buffer up and pushes it back 1114. This means that one part of the pipeline can be stopped 50 and another can be started at the users whim. The user can to the TmkClipCache 912 object. switch to different storage devices. The PushSwitch 1102 The TmkClipCache 912 maintains a cache file 918 on a storage medium. It also maintains two pointers into this could output to a TmkClipWriter 1106, which goes onto a storage device 1107 or write to the cache transform 1103. cache: a push pointer 919 that shows where the next buffer coming from the source 901 is inserted; and a current pointer An important feature of this apparatus is the ease with 920 which points to the current buffer used. 55 which it can selectively capture portions of an incoming sigThe buffer that is pointed to by the current pointer is handed nal under the control of program logic. Based on information to thevela decoder class 916. TheVela decoder class 916 talks such as the current time, or perhaps a specific time span, or to the decoder 921 in the hardware. The decoder 921 produces perhaps via a remote control button press by the viewer, a a decoded TV signal that is subsequently encoded into an TmkClipWriter 1106 may be switched on to record a portion analog TV signal in NTSC, PAL or other analog format. 60 of the signal, and switched off at some later time. This switchWhen the Vela decoder class 916 is finished with the buffer it ing is typically caused by sending a "switch" event to the calls releaseEmptyBuf. PushSwitch 1102 object. The structure of the classes makes the system easy to test An additional method for triggering selective capture is and debug. Each level can be tested separately to make sure it through information modulated into theVBI or placed into an performs in the appropriate manner, and the classes may be 65 MPEG private data channel. Data decoded from the VBI or gradually aggregated to achieve the desired functionality private data channel is passed to the program logic. The while retaining the ability to effectively test each object. program logic examines this data to determine if the data L 11 12 indicates that capture of the TV signal into which it was pipeline is constructed. The Push and Pull Switches are the modulated should begin. Similarly,this informationmay also same as video switches in a broadcast studio. indicate when recording should end, or another data item may The derived class and resulting objects described here may be modulated into the signal indicating when the capture be combined in an arbitrary way to create a number of differshould end. The starting and ending indicators may be explic- 5 ent useful configurations for storing, retrieving, switching itly modulated into the signal or other information that is and viewing of TV streams. For example, if multiple input placed into the signal in a standard fashion may be used to and output sections are available, one input is viewed while encode this information. another is stored, and a picture-in-picture window generated by the second output is used to preview previously stored With respect to FIG. 12, an example is shown which demonstrates how the program logic scans the words contained l o streams. Such configurations represent a unique and novel within the closed caption (CC) fields to determine starting application of software transformations to achieve the funcand ending times, using particular words or phrases to trigger tionality expected of expensive, sophisticated hardware solutions within a single cost-effective device. the capture. A stream of NTSC or PAL fields 1201 is preWith respect to FIG. 13, a high-level systemview is shown sented. CC bytes are extracted from each odd field 1202, and entered in a circular buffer 1203 for processing by the Word 1s which implements aVCR backup. The Output Module 1303 Parser 1204. The Word Parser 1204 collects characters until it sends TV signals to the VCR 1307. This allows the user to encounters a word boundary, usually a space, period or other record TV programs directly on to video tape. The invention delineating character. Recall from above, that the MPEG allows theuser to queueup programs from disk to be recorded audio and video segments are collected into a series of fixedonto video tape and to schedulethe time that the programs are size PES buffers. A special segment is added to each PES 20 sent to theVCR 1307. Title pages (EPG data) can be sent to theVCR 1307 before a program is sent. Longer programs can buffer to hold the words extracted from the CC field 1205. Thus, the CC information is preserved in time synchronizabe scaled to fit onto smaller video tapes by speeding up the tion with the audio and video, and can be correctly presented play speed or dropping frames. to the viewer when the stream is displayed. This also allows The VCR 1307 output can also be routed back into the the stored stream to be processed for CC information at the 25 Input Module 1301. In this configuration the VCR acts as a backup system for the Media Switch 1302. Any overflow leisure ofthe program logic, which spreads out load, reducing cost and improving efficiency. In such a case, the words stored storage or lower priority programming is sent to the VCR 1307 for later retrieval. in the special segment are simply passed to the state table logic 1206. The Input Module 1301 can decode and pass to the remainDuring stream capture, each word is looked up in a table 30 der of the system information encoded on thevertical Blank1206 which indicates the action to take on recognizing that ing Interval (VBI). The Output Module 1303 can encode into the output VBI data provided by the remainder of the system. word. This action may simply change the state of the recogThe program logic may arrange to encode identifying infornizer state machine 1207, or may cause the state machine 1207 to issue an action request, such as "start capture", "stop mation of various kinds into the output signal, which will be capture", "phrase seen", or other similar requests. Indeed, a 35 recorded onto tape using the VCR 1307. Playing this tape recognized word or phrase may cause the pipeline to be back into the input allows the program logic to read back this switched; for example, to overlay a different audio track if identifying information, such that the TV signal recorded on undesirable language is used in the program. the tape is properly handled. For example, a particular proNote that the parsing state table 1206 and recognizer state gram may be recorded to tape along with information about machine 1207 mav be modified or changed at anv time. For 40 when it was recorded. the source network. etc. When this u example, a different table and state machine may be provided program is played back into the Input Module, this informafor each input channel. Alternatively, these elements may be tion can be used to control storage of the signal, presentation switched depending on the time of day, or because of other to the viewer, etc. One skilled in the art will readily appreciate that such a events. Referring to FIG. 11, a PullSwitch is added 1104 which 45 mechanism may be used to introduce various data items to the outputs to the sink 1105. The sink 1105 calls nextFullBuf and program logic which are not properly conceived of as televireleaseEmptyBuf to get or return buffers from the PullSwitch sion signals. For instance, software updates or other data may 1104. The PullSwitch 1104 can have any number of inputs. be passed to the system. The program logic receiving this data from the television stream may impose controls on how the One input could be an ActionClip 1113. The remote control can switch between input sources. The control object 1114 50 data is handled, such as requiring certain authentication sequences andor decrypting the embedded information sends an event to the PullSwitch 1104, telling it to switch. It will switch from the current input source to whatever input according to some previously acquired key. Such a method source the control object selects. works for normal broadcast signals as well, leading to an efficient means of providing non-TV control information and An ActionClip class provides for sequencing a number of different stored signals in a predictable and controllable man- 55 data to the program logic. ner, possibly with the added control of viewer selection via a Additionally, one skilled in the art will readily appreciate that although a VCR is specifically mentioned above, any remote control. Thus, it appears as a derivative of a TmkXform object that accepts a "switch" event for switching to the multimedia recording device (e.g., a Digitalvideo Disk-Rannext stored signal. dom Access Memory (DVD-RAM) recorder) is easily subThis allows the program logic or user to create custom 60 stituted in its place. sequences of video output. Any number of video segments One skilled in the art will readily appreciate that other can be lined up and combined as if the program logic or user applications may be substituted for those set forth herein were using a broadcast studio video mixer. TmkClipReaders without departing from the spirit and scope of the present 1108, 1109, 1110 are allocated and each is hooked into the invention. For example, the invention can be used in the PullSwitch 1104. The PullSwitch 1104 switches between the 65 detection of gambling casino crime. The input section of the TmkClipReaders 1108, 1109, 1110 to combine video and invention is connected to the casino's video surveillance sysaudio clips. Flow control is automatic because of the way the tem. Recorded video is cached and simultaneously output to 13 14 external VCRs. The user can switch to any video feed and stream, thereby offloading the CPU. Additionally, video examine (i.e., rewind, play, slow play, fast forward, etc.) a loopsets are an inexpensive method of displaying high resospecific segment of the recorded video while the external lution graphics. VCRs are being loaded with the real-time input video. Any temporal elements (e.g., names, icons, location indiReferring again to FIG. 1, an embodiment of the invention 5 cators) are drawn onto the screen over the video loops using provides a viewer interface that allows the viewer to access the OSD. Menu items such as Now Showing 1604 are drawn different functions of the system. The system's construct overthevideo 1oopset.A highlight bar 1605 is used to indicate the current menu item that can be selected by the user. allows items called video loopsets to be stored on the hard disk or storage device 105. The video loopsets enter the Highlight bars can be displayed using video loopsets. The system through input streams into the Input Module 101 and l o highlight bar 1605 appears to be drawn onto the screen but is actually a video loopset. Each time the user presses a button converted to MPEG streams and placed onto the storage device by the Media Switch 102. The video loopsets also 1403 on the remote control to move the highlight bar 1605, an enter the system in the form of MPEG streams (through a appropriate video loopset is selected for that position. Alternatively, the highlight bar 1605 can be drawn over the backchannel, VBI, transmission media, etc.), bypass the MPEG conversion cycle by the Input Module 101 and are 1s video loonsets in the same manner as a temnoral item. Information is presented in a successive disclosure format. written to the storage device 105 by the Media Switch 102. The user navigates through menus by moving to the right (by The viewer interface program logic (executed by the CPU 106) commands the Media Switch 102 to retrieve a video pressing right side of the button 1403 on the remote control) to obtain more information or to the left (by pressing the left loopset from the storage device 105.A video loopset is a three to four second (the lendh is denendent unon the amount of 20 side of the button 1403 on the remote control) to see less u information displayed and can be longer) loop of video is information and return to the previous location. The select created so that the ending and beginning seamlessly merge button 1404 selects the menu item and causes the appropriate together to give the effect of a continuous video stream as the action to be executed. system plays the loopset from beginning to end, looping back The background colors of each set of menus remains conto the beginning of the loopset each time the end is reached. 25 sistent throughout the user's experience. For example, the As detailed above, the Output Section 103 takes MPEGvideo background screen color for Now Showing is amberlyellow loopset streams as input and produces an analog TV signal and the background screen color for Network Showcases is according to the NTSC, PAL, or other required TV standards. purple. The user intuitively knows what menu area he is in The Output Section's 103 OSD generator allows the program through the color cues. logic to overlay text and graphics on top of the resulting 30 Referring to FIGS. 14, 16, and 17, the invention provides "whispering arrows" 1706,1707,1708,1709on each screen analog TV signal. that tell the user that more information is available in that A lower level viewpoint of the system is shown in FIG. 7. The CPU 713 tells the Media Switch 701 that a specific video particular direction. These arrows point up 1709, down 1707, loopset must be retrieved from the storage device 710 and sent left 1708, and right 1706. A right arrow 1706 indicates that to the MPEG decoder 715. On screen displays are created by 35 there is more detailed content that the user can access by pressing the right side of the button 1403 on the remote the CPU 713 and routed through the OSD generator to the control 1401. A left arrow 1708 indicates that a more general digital mixer 718. The digital mixer 718 allows video loopsets, on screen displays, and audio cues to be mixed and level of detail exists that the user can access by pressing the sent to the TV or monitor 716. left side of the button 1403 on the remote control 1401. Up The invention's viewer interface reacts to user invut 40 1709 and down 1707 arrows indicate that the current list has through an input device such as the exemplary remote control more items above or below, respectively, from the location shown in FIG. 14. With respect to FIG. 15, the user's comthat the user currently has highlighted with the highlight bar 1710. If an arrow does not exist, then there is nowhere else to mands are processed through the Control Input Module 1504. go in that direction. The viewer interface 1503 processes the input commands. Appropriate commands are issued (such as displaying 45 For example, the user simply highlights the Now Showing name 1604 and presses theright side of the button 1403 on the loopsets) to the Media Control 1501. On screen displays are generatedby theviewer interface 1503 androutedthrough the remote control 1401. TheNow Showing screen 1701 is shown which has a list of programs 1705 that are displayed to the Output Module 1505 as described above. Aviewer using this type of remote control 1401 presses the user in descending order with the most recently obtained TiVo button 1401 and the viewer interface displays a menu as 50 program at the top of the list. The Now Showing listing 1705 shown in FIG. 16. TiVo Central 1601 is a central location that contains a list of shows that the user requested the system to contains a list of areas that the viewer can visit and is easily record and also programs that the system believes are of accessed through a single button push on the remote control. interest to the user. The system's list is based upon the proThe viewer interface displays video loopsets in the backgram preferences that the user has expressed to the system ground area of the screen on a TV or monitor. Here, the 55 using the thumbs up and thumbs down ratings described character 1602 in the upper left-hand portion of the screen is below and are indicated with a TiVo logo 1712. A yellow dot 1702 is a warning indicator that indicates that a program is a separate video loopset. The character's loopset animates the going to expire and will be deleted from the hard drive in a character 1602 by giving the viewer the sense that the character is alive. His antennae move and he rocks from side to short time (e.g., in 24 hours). A yellow dot with an exclamaside on his feet. Each element of the screen can be a separate 60 tion point 1704 indicates that a program will be deleted within video loopset. The subdued text's 1603 loopset rotates the a much shorter time (e.g., within the next few hours). Green text in a banner-like mode from the right side of the screen to dots 1703 indicate that the system will save the program until the left side. The rest of the background details are on another the user explicitly deletes it. A red dot 1713 indicates that the loopset. One loopset can be used for the entire background program is currently being saved on the storage device. A down arrow 1711 is displayed in the lower area of the display if so desired. Video loopsets free the CPU from having 65 to draw continuous animations. The system simply plays the listing 1705 whenever the user has more information to scroll loopsets in the same manner as playing any other MPEG or page down through. An up arrow is displayed in the upper area of the listing 1705whenever there is more information to identification and checks the preferences on the storage scroll or page up through. The user presses up or down on the device 1502 for any associated preference files. The viewer button 1403 on the remote control 1401 to scroll up or down, interface 1503 then uses the associated preference file (or respectively, through the listing. The channel button 1410 is default preference file if no match was found) bookmark pressed up or down to page up or down, respectively, through 5 information for the user. Any bookmarks that do not have the listing. associated programs stored on the storage device 1502 are When the user presses on the right side of the button 1403 ignored and deleted. The viewer interface 1503 commands the Media Control 1501to display programs with start frames on the remote control 1401, a more detailed program information screen is displayed to the user. Referring to FIG. 18, corresponding to the preference file bookmarks, if they exist. The encoded remote control can also be used for parental this screen supplies the user with more information related to l o the particular program. Theuser canchoose to let the program controls. Specific remote control(s) can be set up so that be deleted automatically by taking no action 1805, view it different levels of parental controls are engaged for each immediately 1801, delete it immediately 1803, ask the invenremote control. Children, for example, will have their own tion to save the program longer 1802, or save until deleted by personal remote controls that are set up to not allow them to the user 1802. If the user asks the invention to save the 1s watch anv shows with u greater than a G-ratinn. u program longer, then the yellow or yellow dot with an exclaOne skilled in the art will readily appreciate that, although mation point will disappear. The user can also save a program coded remote controls are mentioned as a method of accessto an external VCR for archiving 1805. The invention consising individual user preference files, other methods such as tently displays the highlight bar 1806, whispering arrows manual selection can be used. Multiple bookmarks for a program are transparent to the 1810,1811,1812, andvideo loopsets 1807.Atext description 20 of the program 1809 is displayed. user because the remote control that the user uses tells the A down arrow 1813 is shown in the lower portion of the system to only display and activate that particular user's screen to indicate that the user can press down on the channel bookmarks. A user can also see other users' bookmarks if so button 1410 on the remote control 1401 to see a detailed desired. One skilled in the art will readily appreciate that the invenprogram information screen for the next program on the Now 25 Showing list. An up arrow displayed in the upper portion of tion's bookmarks can be applied to any video or audio applithe screen area indicates that the program list has additional cation where the physical position in the material is readily programs in that direction. This functionality allows the user ascertainable e.g., DVDs, VCRs, MP3s, etc. to obtain the same information shown in the Now Showing Users can indicate their preferences for a certain program. 30 A user can rate a particular program with either one, two, or listing 1705 in a more detailed format. With respect to FIGS. 7,15, and 18, the invention provides three thumbs up, indicating the degree that he likes the proa bookmark function that allows the user to bookmark a gram. One, two, or three thumbs down are used to indicate the program where he left off. The CPU 713 records the frame of degree that the user dislikes the program. The degree that the the program where the user stopped or the user commands the user likes or dislikes the program increases as the number of system to place a bookmark. The Media Switch 701 updates 35 thumbs up or down increases (i.e., two thumbs up indicates a the CPU 713 on the status of the video stream. For example, stronger preference than one thumbs up). a user can watch the first half-hour of a two-hour program The user can rate a program while he is watching it or stored in the storage device 710 and then bookmark the proviewing the program's information. The accumulation ofprogram where he left off or he can place bookmarks within the gram ratings allows the system to save related programs onto program to mark points of interest. Alternatively, the inven- 40 the system storage device. This influences the performance of tion automatically bookmarks the program for the user if the the underlying system as described in U.S. Pat. No. 6,233, user exits viewing the program by going to live TV or to the 389, owned by the Applicant. menu mode. The invention places an indicator 1708 on the Referring to FIGS. 19, 20a, 20b, and 20c the invention screen, indicating that a bookmark has been saved. displays the thumbs rating (if it exists) 1901 for a particular The user can, at any time, access any of his bookmarks and 45 program to the user whenever an episode of the program is continue viewing the program from the bookmark. When a viewed or the user looks at the program information 1908. A program is deleted from the storage device 710, the associbanner 2001 is displayed in the upper region of the screen whenever the user changes channels, transitions to live TV, or ated bookmark(s) is also deleted. The user can also select and delete a specific bookmark or all bookmarks for a program. commands the banner to be displayed. The user can rotate through three different levels of banOnce the program is playing, the user can jump to a bookmark 50 ners, each successively containing more information about using the jump button 1414 on the remote control 1401 and the program. The lowest level banner 2001 contains minimal press the select button 1406 to remove the bookmark. A information such as channel 2002, station ID 2003, and time bookmark is placed in the same manner by pressing the select 2004. The second level banner 2005 displays, in addition to button 1406 to create a bookmark. Bookmarks within a single program can be set for different 55 the information inthe minimal banner 2001, information such users. Remote controls are encoded for a specific user in a as program title 2006, duration 2007, program MPAA or TV household. This allows each person in the household to have rating 2008, and thumbs rating. The final level banner 2009 a personal remote control. The advantage to having individual adds program text description2010 to the second level banner remote controls is that parental controls, personal prefer2005. The program text description 2010 is semi-transparent, ences, and bookmarks are automatically activated when each 60 allowing the user to watch the progress of the program while remote control is used. The CPU 713 notes that a bookmark reading the text. belongs to a certain encoded remote control. Each set of data With respect to FIG. 21, programs that the user has indiare stored on the storage device 710. cated a preference for and other programs that the system The remote control identifies itself to the system via a believes that the user is interested in (through a user profile) coded chip onboard the remote control. The Control Input 65 are displayed 2102 in the TiVo's Suggestions area 2101. Module 1504 receives the remote control's command signals. The user can tell the system to record one instance of a The viewer interface 1503 processes the remote control's program, the next x number of showings, record all occur- US 7,493,015 B1 17 18 rences of a program for a set time period, or get a season pass for a program. A season pass tells the system that the user wants to record each airing of a certain program for the entire season. The system notes, for example, that the program is shown every Monday at 8:OO PM and saves the program on the storage device every Monday at 8:OO PM until the end of the seas0n.A season pass will only be offered to the user if the program is episodic in nature. At anytime during the viewing of live television, the user is able to tell the system to save the program in progress, record the program the next time, if any, it is shown, or get a season pass for the program. If the user is watching a show and tells the system to record the program in progress, then the system will record the program from that point on and will add onto the saved recording (prepending) the portion of the program that has already passed and has been buffered, The user's choices will appear in his profile so he can edit it later. Referring to FIGS. 22 and 23, a Showcase area 2201 contains program listings that certain television or cable networks are promoting 2202. These are programs that the networks are currently promoting from their lineups, The user can, for example, move the highlight bar to the right and look at the network listings, ~h~ user can choose NBC 2203 by highlighting that particular line and moving the highlight bar 2204 to the right, l-he list ofprogram categories for NBC will appear on the next screen 2301, The user can then move the highlight bar 2303 to highlight a program category and then move the highlight bar 2303 to the right to see the program listings on the next screen. Referring again to FIG. 19, a screen displaying the information for a program is shown. The user is given the thumbs rating if it exists 1901 along with a program description and channel information. The user is presented with a list of options such as: watch now 1902; record the episode 1903; get a season pass 1904; view upcoming showings 1905; cancel the particular recording 1906; and view theme 1907 (which displays other shows in the same theme area). With respect to FIG. 24, TiVo's To Do List 2401 contains a listing of the programs 2402 that the 'ystem is going to store On the 'ystem hard disk. A list of beginning from the current is Each has a list programs that the 'ystem store On the 'ystem hard disk. The user can the that he wants to query highlighting the particular day andmoving the highlight bar to the right. A list of programs that the system will record on that particular day is displayed. Alternatively, the invention will the entire list ofprograms 2402 with the 2404 that the program will be recorded listed in line with the program name 2407. A ~ l ~ ~ k mnextkto a Program name indicates that the ar user has requested the system to record the Program. Two ~haAm~arks mean that the Program 2407 is Part of a 2403 season Pass. The user can check oruncheck any Program on the list. The Programs that are heck marked have a higher priority to be stored on the system hard disk than the unchecked programs. If the user attempts to checkmark too many programs, the invention will notify the user that there will be insufficient room on the system hard disk. The user is told what programs should be freed up from the programs that are currently or planned to be saved on the system hard disk in order to save the desired program. The user can accept the system's recommendations or he can obtain a listing of what programs are currently stored and scheduled to be stored on the storage device and can choose to remove the unwanted programs from the storage device. The user selects the unwanted pro- grams by placing an "X"next to the program's name or he can let the system select the programs that will be removed. Referring to FIG. 25, any program schedule conflicts are displayed 2501 to the viewer immediately whenever a conflict arises. Such conflicts can be caused, for example, by the viewer selecting two programs to be saved that are shown at the same time or have overlapping times when only one tuner is available. Referring again to FIG. 14, the viewer can also use the thumbs UP 1405 and thumbs down 1404 buttons on theremote control 1401 to tell the system what actors or types of shows he does or does not prefer. For example, the viewer can select actors from a list and place one, two, or three thumbs up or down next to a particular actor's name. The viewer can access his favorite actor list and add or delete actors from the list. Favorite directors are designated in the same way as favorite actors. The system adjusts to the viewer's preferences and programs with the and types shows that the user prefers. With respect and 26, as the user watches a program, a trick play bar 2601 is overlaid onto the live video. TheCPU713 uses the OSD generator to display the trick play bar 2601 and its associated components through the digital mixer 718 the TV Or monitor. The trick play bar 2601 visually informs the user of the size of the circular program cache is and, if the cache is not at capacity, how much of the cache is filled. The CPU 713 is informed by the Media Switch 701 of the frame that is being displayed and the cache status. The current program is stored in a circular cache as described above. The green cache bar 2602 inside of the trick play bar 2601 indicates how much of the circular cache is filled. Time marks 2603, 2604 are displayed inside the trick play bar 2601 giving the user a visual reference point from which to judge the current time and how far back in time the cache has recorded. The time marks 2603, 2604 can be any increment of time needed, but usually are in half hour or 15 minute increments. Every half hour (or selected increment), the cache bar2602 slides to the left. The current time is always between the time indicated at right hand side 2610 of the trick play bar 2601 minus the time increment of the middle time 2604 whenwatching live television, The entire length of the trick play bar 2601 is calculated by subtracting the time indicated on the left hand side 2609 of the trick play bar 2601 fromthetime indicatedonthe right hand side 2610 of the trick play bar 2601, 5 10 15 20 25 30 35 40 45 50 55 60 65 A slider 2605 moves along the trick play bar 2601 and on top of the cache bar 2602, The slider 2605 along with the position indicator 2608 are l i k e d together and tell the user visually where his current position is within the program material. The slider displays the time mark 2605 of the position. A mode indicator 2606 is positioned below the slider 2605 and follows the slider's 2605 movement. The mode indicator 2606 displays whether the user is in play, record, pause, slow play, fast play, fast forward (1x, 2x, and 3x), slow reverse play, slow reverse, and fast reverse (lx, 2x, and 3x) modes. The lx, 2x, and 3x speeds are adjustable by the system to be any variable desired (e.g., 2x, 16x, and 32x). The cache bar 2602 expands, when the cache has not been filled, to the right as more of the program is stored in the circular cache. If the cache is filled, the cache bar 2602 simply shifts to the right. When the cache bar 2602 reaches the end of the right side of the trick play bar 2601, it will shift to the left side of the trick play bar 2601 so the right hand end of the cache bar 2602 is positioned in the trick play bar 2601 at the time mark 2604. The slider 2605 and position indicator 2608 within the trick play bar2601 will also shift inunisonwith the cache bar 2602, reflecting the current position in the cache. 19 20 The time display at the right hand side 2607 of the trick play vertical barthat is colored, flagged, or labeleduniquely giving the user visual cues that an index or bookmark exists in that bar 2601 will be one half hour from the time mark 2604 at the position. The user can sequentially jump to each index or middle of the trick play bar 2601 (when half hour increments are used). bookmark indicator by pressing the jump button 1414 on the The left half of the trick play bar 2601 can also display a 5 remote control 1401. Indexes and bookmarks are easily compressed time scale. The compressed time scale is used placed or removed by the user as noted above. when a large circular cache is used. Sometimes it is not One skilled in the art will readily appreciate that the invendesirable to have the right half of the trick play bar 2601 tion's trick play bar can be applied to any video or audio indicating a time span larger than a half an hour because the application where the physical position in the material is cache bar 2602 shifts to the left when it reaches the end of the l o readily ascertainable e.g., DVDs, VCRs, MP3s, etc. right side and can be confusing to the user. Another unique aspect of the invention is that the user can The slider 2605 can be moved anywhere within the cache watch a pre-recorded program stored on the storage device bar 2602 by the user. The user uses the play 1411, rewind while the system is recording another program and storing it 1407, fast forward 1408, pause 1412, slow motion 1413,jump on the storage device. This simultaneous operation is a natural 1414, and instant replay 1415 buttons to position the slider 1s feature of the architecture of the invention. The number of 2605. The jump button 1414 positions the slider 2605 at the programs being recorded and stored on the storage device is end of the cache bar 2602. While the instant replay button extended to the number of tuners or sources available in the 1415 causes the slider 2605 to reposition ten seconds (the system. time span is system adjustable) backwards into the cache bar Referring again to FIGS. 14 and 15, the invention predicts 2602, thereby allowing the user to view a portion of the 20 the position (overshoot correction) in the program material program in the same manner as an instant replay operates in where the user expects to be when the user stops the fast football broadcasts. forward or reverse modes. The user commands from the When the user watches a program that has been recorded, remote control 1401 are received by the Control Input Modthe trick play bar time indicator on the right hand side 2610 ule 1504. The user initially places the operational mode into represents the total time of the program recording. The cache 25 fast forward or reverse by pressing the fast forward button 1408 or the reverse button 1407. The viewer interface 1503 bar 2602 fills the entire trick play bar 2601 indicating that the program is stored entirely on the system. If a partial program tells the Media Control 1501 to fast forward or reverse the program material. Each successive press of the fast forward is stored, then the cache bar 2602 displays the length of the program saved by the system. For example, if the user records 1408 or reverse 1407 buttons places the system into the 1x, a program after it has already started and the system does not 30 2x, or 3x fast forward or reverse modes, respectively. When have the beginning of the program stored in the cache, then the user wants to stop the fast forward or reverse progression, he simply presses any other media control button, however the cache bar 2602 will show that the program starts a certain amount of time after the beginning of the program. The same the play button 1411 is most commonly used. type of behavior occurs when a program being recorded has The viewer interface 1503 receives the command from the prematurely ended. The cache bar 2602 will end at the point 35 Control Input Module 1504 and tells the Media Control 1501 where the recording stopped. The slider 2605 displays the to stop. The Media Control 1501 sends the viewer interface amount of time (e.g., one hour) in the program that the user is 1503 the frame position where the program material was stopped. The viewer interface then tells the Media Control at. The mode indicator 2606 operates as described above and 1501 to transition to the mode the user selected and passes the below. Referring to FIG. 27, the components around the trick play 40 Media Control 1501 the frame to start the mode from. This frame start position is the present frame with an overshoot bar are shown. The trick play bar is shown by itself 2701 and correction factor added or subtracted from it. with the cache bar 2702, slider 2703, and a half-hour timing The invention adapts to the user by remembering how mark 2704. The mode indicator can indicate that a recording is in progress 2704.Aunique aspect ofthe invention is that the much the user corrects (i.e., reverses or fast forwards) after he user can move around the program material that has been 45 stops the fast forward or reverse mode (in each speed). Correcorded while the actual recording is taking place. The slider rection factors are calculated by taking the user's corrections 2703 can be moved to any point in the cache bar 2702. The and setting the factors to the average, median, or any other method desired, for each speed. The system will adjust the cache bar 2702 indicates the progress of the recording. The correction factors if it observes that the user continues to mode indicator 2705 will display any combination of record 2706 and play 2707, rewind (three speeds) 2708,2709,2710, 50 make corrections. The invention also uses a prediction method to correctly fast forward (three speeds) 2711,2712,2713,pause 2714, and place the user within the program upon transition out of either slow motion 2715. Examples ofrecord combined with 2x fast mode. The prediction method determines if the user is in lx, forward 2716 and 3x fast forward 2717 are shown. 2x, or 3x fast forward or reverse modes and then automatiThe trick play bar and its associated components are drawn over the program content for a short duration. The trick play 55 cally subtracts or adds, respectively,a time multiple (dependbar appears whenever the user activates any of the trick play ing upon the actual speed used for 1x, 2x, or 3x) to the frame where the transition was detected and positions the user at the features i.e., record, play, rewind, fast forward, pause, and slow motion. If themode is either play orrecord, thenthe trick correct frame. The system fine tunes the time multiple if it play bar and its associated components will remain on the sees that the user is consistently correcting after the fast screen for a short time period. This removes any obstructions 60 forward or rewind mode stops. from the program material displayed on the screen and is for Another method initially tests the user's reaction time the convenience of the viewer. This time period is adjustable using a test video. It asks the user to press the fast forward 1408 or reverse 1407 button during the test video and then by the system. The trick play bar and its associated components may be displayed indefinitely if in an editing mode or a asks the userto positionthe video to the place that he expected 65 the system to have been. This time span is thenused whenever dedicated trick play display is used. Additionally, index or bookmark indicators are displayed the user uses the fast forward or reverse modes and is adjusted over the trick play bar. These marks appear as, for example, a with a multiple for each speed. A final method allows the user to simply set a sensitivity Program information for the program currently showing on setting that the system will use as a correction factor. The the highlighted channel is displayed in the upper area 2806, invention will subtract or add a multiple of the factor to the 2808 of the program guide area 2810. All of the data that the release frame whenever the user uses the fast forward or user needs to know about the program that is currently 5 selected is displayed in the upper area 2806,2808.This inforreverse modes, respectively. One skilled in the art will readily appreciate that the invenmation includes: the program title; episode title; program tion's overshoot correction can be applied to any video or description; the actors or actresses appearing in the program; audio application where the physical position in the material any advisories; audio parameters; the genre that the program is in; start and stop times; the program's MPAA or TV rating; is readily ascertainable e.g., DVDs, VCRs, MP3s, etc. Withrespect to FIGS. 7,14,28,29,30,and 31 the invention l o the logo of the network that the program is being broadcast displays a program guide area 2801 to the user which is a list on; the current time; if the program is selected to be recorded; of the programs that are currently airing, was aired, or is if it has been selected as a season pass; if the user has scheduled on live TV. Program guide information is stored on expressed a thumbs up or down rating. The user moves the highlight bar to the right hand column the storage device 710. The CPU 713 parses the program guide information andcreates program schedule information. 1s 2805 by pressing the right side of the button 1403 on the remote control 1401 allowing him to scroll through the proThe program guide area 2801 is semi-transparent and overlays on the actual broadcast program 2802 that the user is grams 2805 for that particular channel. As each program is currently watching. Theuser can see how the program 2802 is highlighted, the program's information (as described above) progressing while he is browsing the program guide schedis displayed in the upper area 2806, 2808 of the program ules 2803, thereby allowing the user to immediately switch 20 guide area 2801. back to the program 2802. For example, the user switches to The right hand column 2805 displays a schedule of the browsing the program guide 2803 while a commercial break programs for the particular channel. The schedule begins at has occurred during the current program. The user sees when the time 2807 indicated above the left column 2804. The the commercial break ends and immediately switches back to program name 2814 and start time 2813 are displayed. For 25 example, channel 2 is highlighted and the right hand column the program 2802. shows all of the programs showing from the current or A simple touch of the Live TV Guide button 1409 on the remote control 1401 brings up a central program guide area selected time. The user can move the highlight bar up and 2801 where the user navigates through the program schedule down the list of programs 2805, scrolling through the time information. The program guide area 2803 presents what is slots for each day in the program guide information. As on live TV now, what is on all channels, and what is on a 30 described above, a page up or page down function is also particular channel that is coming up. The invention displays easily accessed by the user. This saves the user the effort of the program guide information in two different modes: two having to scroll through the program list in either column. column or three column. Generally, only two columns are The channel number and ID 2815 are displayed above the shown on the screen at a time to declutter the display and right hand column 2805. The user changes the channel numpresent the information to the user in a friendlier format. The 35 ber 2815 through a single press of the back 1407 or forward 1408 button on the remote control 1401, moving the channel information is not presented in the traditional channelltime grid format. number 2815 backward or forward, respectively, through the channel list. The channel list in the left hand column 2804 The two column mode 2803 displays the available channels in a rotating endless list fashion in the left hand column follows the user's channel selections, scrolling backward or 2804 and the programs for the highlighted channel in the right 40 forward in the channel list. The program list in the right hand column 2805 changes to the programs associated with the hand column 2805. The user scrolls or pages up or down channel number 2815 selected by the user, starting at the time through the channel list by pressing the button 1403 up or indicated 2807 above the left hand column 2804. down, or the channel button 1410 up or down, respectively. The interface is consistent throughout all columns with The program list in the right hand column 2805 can be respect to scrolling and paging. Whispering arrows are also 45 shownintwo intuitive forms. The first form 3201 lists the start consistent in this interface, showing that more information time 3202 of each program next to the program name 3203. exists in the indicated direction. Information is also more The list 3204 is in descending order from the most recent time detailed as the highlight bar is moved to the right (successive to the latest time. disclosure) as described above. The second form 3301 also lists the start time 3302 next to The current time period 2807 is shown above the left col- 50 each of the program names 3303. The list 3304 continues the time intervals 3302 by listing each half, quarter hour, or umn 2804 on the screen. The time period 2807 is easily selectable intervals. The duration of the program is indicated changed by the user. The user changes the time period 2807 by an arrow 3305 extending from the program start time 3302 through a single press of the back 1407 or forward 1408 button on the remote control 1401, moving the time period down to the program end time 3306. This gives the user a 2807 backward or forward, respectively. Below the time dis- 55 visual cue as to the duration of the program time slot. The user can highlight a program and again move the play is the listing of the channels 2804 available to the user. highlight bar to the right to obtain a screen such as the one Next to each channel number 2809 is the station ID 2810 and the title 2811 of the current program that is being aired. The shown in FIG. 18. The user is given choices to watch the programnow (if the program is currently airing) 1802, record user moves the highlight bar 2812 over the channel that he is interested in and a description 2806, 2808 of the current 60 the episode 1803, get a season pass 1804, view a list of the upcoming showings of the program 1805, cancel the recordprogram that is showing on the channel 2809 is displayed.An embodiment of the invention places the description area 2806 ing (if the program is being recorded or is scheduled to be above the two columns. As the user changes the time period recorded) 1806, or view programs in that theme area 1807. 2807, the program titles 2811 change to the names of the The three column mode adds a higher level column to the program that were, are, or will be shown at that time period 65 two-column mode. This means that, conceptually, an addi2807. The programs in the right hand column 2805 will also tional column is added to the left of the channel column, change to correspond to the time period 2807. although visually, only two columns are displayed at a time. US 7,493,015 B1 23 24 Larger screens and higher resolutions will allow all three columns to be displayed at once. The program guide information is sorted in different ways, e.g., all movies 2901, favorite channels 3001, all channels 3101, all sports, etc. The first column 3103 contains the sorting methods available to the user. The second column 3104 presents the available channels that correspond to the sorting method with the description of the channel column consistent with that of the two-column method. The user simply highlights the preferred sorting method with the highlight bar 3102. The sorted channels then appear in the right hand column 3104. The user can then move the highlight bar to the right hand column 3104 by pressing the right side of the button 1403 on the remote control 1401 allowing him to scroll through the channels 3104. The program information for the highlighted channel is displayed in the upper screen area of the program guide area as described above. The user can once again move the highlight bar to the right to obtain the two column channellprogram format described above. This two column format may differ (when a sort method other than all channels is selected) in that the channels displayed in the left hand column are those that correspond to the sorting method. The user presses the Live TV Guide button 1409 again to remove the Program guide area 2801 from the screen and to return to the program viewing mode. The invention generates transitional sounds through the digital mixer 718, as described above, whenever the user moves the highlight bar to another area. Warning sounds occur when the user attempts an action that is not allowed, e.g., when the user tries to move the highlight bar to an area that does not exist, i.e., where a whispering arrow is not displayed. These sounds can be turned on or off by the user. Although the invention is described herein with reference to the preferred embodiment, one skilled in the art will readily appreciate that other applications may be substituted forthose set forth herein without departing from the spirit and scope of the present invention.Accordingly, the invention should only be limited by the Claims included below. The invention claimed is: 1. A method, comprising: receiving a first user command; playing audio or video program material to a user based on the first user command; fast forwarding or reversing through the program material based on a second user command; terminating fast forward or reverse progression through the program material based on a third user command; detecting current position in the program material where the termination occurred; calculating a new position in the program material to pensate for a difference between the current position and the user's expected termination point in the program material by adding a positional offset to the current position when reverse mode has been terminated or subtracting a positional offset from the current position when fast forward mode has been terminated; and playing the program material starting at the new position based on the third user command. 2. The method of claim 1, wherein the calculating step adapts to the user's prior positional corrections to calculate the new position. 3. The method of claim 1, wherein the calculating step calculates the new position based on a user-selected speed of the fast forward or reverse progression. 4. The method of claim 1, wherein the calculating step calculates the new position based on a measurement of the user's reaction time. 5.Aprocess for automatically correcting playback position within an audio or video program's material after a user terminates a fast forward or reverse progression through the program material, comprising: receiving a user command; terminating fast forward or reverse progression through the program material based on the user's command; detecting current position in the program material where the termination occurred; calculating a new position in the program material to compensate for a difference between the current position and the user's expected termination point in the program material by adding a positional offset to the current position when reverse mode has been terminated or subtracting a positional offset from the current position when fast forward mode has been terminated; and playing the program material starting at the new position. 6, The process of claim 5, wherein the calculating step adapts to the user's prior positional corrections to calculate the new position. 7, l-he process of claim 5, wherein the calculating step calculates the new position based on a user-selected speed of the fast forward or reverse progression, 8. The process of claim 5, wherein the calculating step calculates the new position based on a measurement of the user>sreaction time, 9, A, apparatus, comprising: a module for receiving a fist user a module for playing audio or video program material to a User based on the first user a module for fast forwarding or reversing through the program material based on a second user command; a module for terminating fast forward or reverse progression through the program material based on a third user command; a module for detecting current position in the program material where the termination occurred; a module for calculating a new position in the program material to compensate for a difference between the current position and the third user expected termination point in the program material by adding a positional offset to the current position when reverse mode has been terminated or subtracting a positional offset from the current position when fast forward mode has been terminated; and a module for playing the program material starting at the new position based on the third user command. 10. The apparatus of claim 9, wherein the calculating module adapts to the user's prior positional corrections to calculate the new position. 11. The apparatus of claim 9, wherein the calculating module calculates the new position based on a user-selected speed the fast forward Or reverse progression. 12. The apparatus of claim 9, wherein the calculating module calculates the new position based on a measurement of the user's reaction time. 13.An apparatus for automatically correcting the playback position within an audio or video program's material after a user terminates a fast forward or reverse ~rogressionthrough the program material, comprising: a module for receiving a user command; a module for terminating fast forward or reverse progression through the program material based on the user's command; a module for detecting current position in the program material where the termination occurred; 5 10 15 20 25 30 35 40 45 50 55 60 65 US 7,493,015 B1 25 26 an overshoot correctionmodule for calculating a new position in the program material to compensate for a difference between the current position and the user's expected termination point in the program material by adding a positional offset to the current position when reverse mode has been terminated or subtracting a positional offset from the current position when fast forward mode has been terminated; and a module for playing the program material starting at the new position. 14. The apparatus of claim 13, wherein the overshoot torrection module adapts to the user's prior positional corrections to calculate the new position. 15. The apparatus of claim 13, wherein the overshoot torrection module calculates the new position based on a userselected speed of the fast forward or reverse progression. 16. The apparatus of claim 13, wherein the overshoot correction module calculates the new position based on a measurement of the user's reaction time. 17. A computer-readab1emedium carrying One Or sequences of instructions, which instructions, when executed by one or more processors, cause the one or more processors to perform a method comprising: receiving a first user command; playing audio or video program material to a user based on the first user command; fast forwarding or reversing through the program material based on a second user command; terminating fast forward or reverse progression through the program material based on a third user detecting current position in the program material where the termination occurred; calculating a new position in the program material to compensate for a difference between the current position and the user's expected termination point in the program material by adding a positional offset to the current position when reverse mode has been terminated or subtracting a positional offset from the current position when fast forward mode has been terminated; and playing the program material starting at the new position based on the third user command. 18. The method of claim 17, wherein the calculating step adapts to the user's prior positional corrections to calculate thenew position. 19. The method of claim 17, wherein the calculating step calculates the new position based on a user-selected speed of the fast forward or reverse progression. 20. The method of claim 17, wherein the calculating step calculates the new position based on a measurement of the user's reaction time. 21. A computer-readable medium carrying one or more sequences of instructions for automatically correcting the playback position within an audio or video program's material after a user terminates a fast forward or reverse progression through the program material, which instructions, when executed by one or more processors, cause the one or more processors to perform a method comprising: receiving a user terminating fast forward or reverse progression through the program material based on the user's command; detecting current position in the program material where the termination occurred; calculating a new position in the program material to compensate for a difference between the current position and the user's expected termination point in the program material by adding a positional offset to the current position when reverse mode has been terminated or subtracting a positional offset from the current position when fast forward mode has been terminated; and playing the program material starting at the new position. 2 2 The method of claim 21, wherein the calculating step adapts to the user's prior positional corrections to calculate the new position. 2 3 The method of claim 21, wherein the calculating step calculates the new position based on a user-selected speed of the fast f0rwai-d or reverse ~ro!iTession. 24. The method of claim 21, wherein the calculating step calculates the new position based on a measurement of the user's reaction time. 5 10 15 20 25 3o 35 40 * * * * *

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?