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)
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?