`(12) Patent Application Publication (10) Pub. No.: US 2002/0034374A1
`(43) Pub. Date:
`Mar. 21, 2002
`Barton
`
`US 2002.0034374A1
`
`(54) METHOD AND APPARATUS
`IMPLEMENTING RANDOMACCESS AND
`TIME-BASED FUNCTIONS ON A
`CONTINUOUS STREAM OF FORMATTED
`DIGITAL DATA
`
`Publication Classification
`
`(51) Int. Cl." ....................................................... H04N 5/76
`(52) U.S. Cl. ................................................. 386/46; 386/68
`
`(76) Inventor: James M. Barton, Los Gatos, CA (US)
`Correspondence Address:
`GLENN PATENT GROUP
`3475 EDSON WAY
`SUTE L
`MENLO PARK, CA 94025 (US)
`Appl. No.:
`09/994.265
`
`(21)
`(22)
`
`Filed:
`
`Nov. 26, 2001
`Related U.S. Application Data
`(63) Continuation of application No. 09/054,604, filed on
`Apr. 3, 1998, which is a non-provisional of provi
`sional application No. 60/061,693, filed on Oct. 10,
`1997.
`
`(57)
`
`ABSTRACT
`
`A continuous Stream of formatted digital data, Such as a
`Video Segment, audio Segment, or information Stream,
`appears to be a fixed length Segment under certain circum
`stances, defining a virtual Segment within the continuous
`stream which moves forward in time in synchrony with the
`continuous Stream. The virtual Segment thus defined can be
`explored in a non-linear fashion at arbitrary playback rates.
`For instance, concepts Such as rewind, pause, frame
`advance, and fast forward become meaningful even though
`the continuous Stream never ceases.
`
`Operation
`Request
`Source
`
`201
`Buffer
`Controller 90ntrol
`Operations
`vSs N
`
`
`
`Multiplexed
`Streafn Source
`
`
`
`Ex: DVB Satelite, Digital. IV
`real-time alonalog encoder,
`local computer file store,
`network connection, etc.
`
`Where required,
`Demultiplexing demultiplex the components
`Process
`of the stream into separately
`managed pieces.
`3.
`
`
`
`
`
`Multiplexed
`Stream
`Sink
`
`Presentation: TV screen, speakers, PC display; any
`suitable presentation device.
`
`-1-
`
`Amazon v. Audio Pod
`US Patent 10,091,266
`Amazon EX-1022
`
`
`
`Patent Application Publication Mar. 21, 2002. Sheet 1 of 3
`
`US 2002/0034374A1
`
`
`
`„ / 84000 pipe?
`
`==~::~) •
`
`/ ’91, H.
`
`
`
`
`
`uo!!99!!!C! pupMuo-uo?} 09.1 10 esueae)
`
`
`
`
`
`X100|q e?ODO ?sep?o a?a?eg
`
`
`
`
`
`––– X
`
`-2-
`
`
`
`Patent Application Publication Mar. 21, 2002 Sheet 2 of 3
`
`US 2002/0034374A1
`
`Operation
`Request
`Source
`
`201
`Buffer
`Controller
`
`S
`--
`C
`O
`C
`go
`-
`s
`--P
`O
`d
`
`Control
`Operations
`
`N
`
`NN
`n N-
`
`1.
`
`Multiplexed
`ultiplex
`Stream Source
`
`Ex: DVB Satelite, Digital TV
`real-time alonalog encoder,
`computer file store,
`network connection, etc.
`
`o
`O
`Where required,
`Demultiplexing demultiplex the components
`Process
`of the stream into separately
`managed pieces.
`K
`
`cy
`
`S/g:
`0.
`<
`O
`g
`a.
`
`an
`
`d
`
`426
`&
`&
`%
`u%
`/
`
`Events
`
`
`
`
`
`
`
`Clip
`Capture
`
`203
`
`Multiplexed
`Stream
`Sink
`
`co
`d
`O
`a
`l
`
`O
`
`O
`O
`O
`did
`?
`
`c
`O
`h
`
`O
`C
`O
`O
`()
`c
`
`Presentation: TV screen, speakers, PC display; any
`suitable presentation device.
`
`FIG 2
`
`-3-
`
`
`
`Patent Application Publication
`
`
`
`
`
`
`
`
`
`
`
`-4-
`
`
`
`US 2002/0034374A1
`
`Mar. 21, 2002
`
`METHOD AND APPARATUS IMPLEMENTING
`RANDOMACCESS AND TIME-BASED
`FUNCTIONS ON A CONTINUOUS STREAM OF
`FORMATTED DIGITAL DATA
`
`BACKGROUND OF THE INVENTION
`
`0001) 1. Technical Field
`0002 The invention relates to digital signal processing.
`More particularly, the invention relates to a family of
`methods which provide for the pass through or capture of
`linear Streams of digital information represented in various
`formats.
`0003 2. Description of the Prior Art
`0004. With the advent of consumer audio and video
`products that employ Sophisticated digital Signal processing
`techniques it is becoming necessary to find ways to exploit
`the full potential of digital technology. For example, it
`would be desirable to provide methods for the pass through
`or capture of linear Streams of digital information repre
`Sented in various formats, while at the same time providing
`the appearance to the consumer of a locally Stored digital
`Stream that allows for the repositioning and playback of
`Virtual Segments of the apparently local digital Stream.
`0005 Amechanical device which performs some of these
`functions is the Video Cassette Recorder (VCR), which uses
`a magnetic tape to store the information. The inherently
`linear nature of tape leads to functions Such as rewind, fast
`forward, and pause. However, a VCR cannot both capture
`and play back information at the same time, So it cannot be
`used to implement this capability.
`0006 Linear streams of information are a fixture of
`modern life. Consider broadcast radio Stations, broadcast
`television Stations, Satellite broadcasts, cable television,
`Video tapes, and compact disks. Increasingly, Such informa
`tion is represented in a fashion Suitable for manipulation by
`automated electronic hardware, Such as computers or media
`decoders. For example, the Direct Video Broadcast (DVB)
`Standards address digital broadcasting from Satellites, ter
`restrial Stations, and cable television Systems. Even analog
`broadcasts, such as normal NTSC (National Television
`Standards Committee) broadcasts from familiar local sta
`tions, may be captured and digitized in real time by modern
`equipment, making them appear to be linear digital Streams.
`0007 Though such streams never terminate, and an indi
`vidual viewer of the stream is unable to effect directly how
`Such Streams are delivered, it is desirable to provide the
`illusion for the consumer that recent portions of the Stream
`are Stored locally in Some manner, Such that typical VCR
`like functions can be performed on the Stream, e.g. pause,
`rewind, and fast forward. The desire for this capability arises
`from the fact that the schedule and timing of the broadcast
`almost never matches the needs of the individual viewer. For
`instance, the viewer may wish to Stop the Stream for a few
`moments to discipline an unruly child. Or perhaps the
`viewer's attention was distracted from the stream for a few
`moments, causing him to miss a critical Scene, in which case
`the viewer would like to rewind to the point he missed and
`play it again.
`
`0008 Ideally, a device local to the viewer should capture
`the entire Stream as it is being broadcast and Store it in Some
`manner. For example, if two Video tape recorders are avail
`able, it might be possible to Ping-Pong between the two. In
`this case, the first recorder is started at the beginning of the
`program of interest. If the viewer wishes to rewind the
`broadcast, the Second recorder begins recording, while the
`first recorder is halted, rewound to the appropriate place, and
`playback initiated. However, at least a third video tape
`recorder is required if the viewer wishes to fast forward to
`Some point in time after the initial rewind was requested. In
`this case, the third recorder Starts recording the broadcast
`stream while the second is halted and rewound to the
`appropriate position. Continuing this exercise, one can
`quickly See that the equipment becomes unwieldy, unreli
`able, expensive, and hard to operate, while never Supporting
`all desired functions. In addition, tapes are of finite length,
`and may potentially end at inconvenient times, drastically
`lowering the value of the Solution.
`0009. It is possible to implement this capability using a
`digital computer, where digital Streams are Stored in Some
`fashion analogous to Video tape and where the computer
`performs the Switching between the various virtual tape
`decks. Even using a digital computer, this Strategy Suffers
`from the Same weaknesses as the physical System above. It
`would be desirable to avoid these issues by providing a
`technique for Storing the Streams of information on a tem
`porary basis.
`0010 When using a digital computer to perform any
`technique which achieves this functionality, there are a
`number of issues which must be taken into account for
`proper operation. The first of these is storage of the broad
`cast Stream. Within a digital computer, a stream of infor
`mation is represented as a Sequence of blocks of digital data.
`For example, when encoding an NTSC television broadcast
`Stream, each field of analog data is converted to a block of
`8-bit digital Samples representing the field. If the analog
`Signal is faithfully represented, each digital block contains
`approximately 0.5MB of data, one second of video requires
`approximately 30 MB of storage, and 30 seconds of video
`requires approximately 900 MB of Storage, greater than the
`capacity of a compact disc. Manipulation of Video in this
`form clearly becomes unworkable when any useful length of
`Stored Video is contemplated.
`0011. As an example, consider U.S. Pat No. 5,625,46,
`which concerns the use of a magneto-optic disk for the
`Storage of broadcast television transmissions. The amount of
`Storage available on Such media is currently about 5 to 10
`gigabytes, which is Sufficient for approximately 5 Seconds of
`Video Storage-clearly insufficient. In addition, the device
`disclosed does not permit the Simultaneous recording and
`playback of the same program.
`0012 Limited storage capacity is dealt with by compress
`ing the Video stream using an algorithm, typically one of the
`MPEG (Moving Pictures Experts Group) standard algo
`rithms, which can achieve a useful compression of 100:1 in
`many instances. MPEG video is represented as a Sequence
`of Groups Of Pictures (GOPS), in which each GOP begins
`with an index frame, called the I-frame. The I-frame is a
`block of digital data which is compressed using Discrete
`Cosine Transform (DCT) and other techniques, similar to
`the still-picture Joint Photographic Experts Group (JPEG)
`Standard.
`
`-5-
`
`
`
`US 2002/0034374A1
`
`Mar. 21, 2002
`
`0013 The GOP may represent up to 15 additional frames
`by providing a much Smaller block of digital data that
`indicates how Small portions of the I-frame, referred to as
`macroblocks, move over time. Thus, MPEG achieves its
`compression by assuming that only Small portions of an
`image change over time, making the representation of these
`additional frames extremely compact.
`0.014.
`Unlike the uncompressed data example above, or
`examples based on Video tape recording, each frame is thus
`represented as a variable length block of binary data. Addi
`tionally, although GOPs have no relationship between them
`selves, the frames within a GOP have a specific relationship
`which builds off the initial I-frame. Thus, any method which
`Stores a digitized Stream and allows random access to the
`Stored information must take into account the variable (and
`unpredictable) data sizes involved, as well as be cognizant
`of the relationships between blocks of the stream.
`0.015. A second issue for a digital computer based imple
`mentation of Such methods is that multiple Streams of
`information must be handled in parallel. For example, a
`broadcast Stream is actually composed of at least two unique
`Sequences of information, i.e. a Stream of digital blockS
`representing the Visual image and a stream of digital blockS
`representing the audible image. If the audio effect is instead
`Stereo, then two audio Streams are included, each unique. A
`broadcast Signal may have additional data, Such as the
`Secondary Audio Program (SAP), where the stream of
`information is a translation of the audio signal to a different
`language. Another stream which may be present is the
`Closed Caption (CC) stream, which provides a textual
`representation of spoken language in the audio stream(s).
`The Simple broadcast Stream described earlier may therefore
`have at least five different components, each one compressed
`using different techniques. When presenting this complex
`Stream to a viewer, the blocks of each Stream must be
`decoded at appropriate times for the compression methods
`involved and synchronized with the presentation of all other
`StreamS.
`0016. Also of interest are digital broadcasting technolo
`gies, such as DVB. A DVB channel is formed in an MPEG2
`Transport Multiplex, which is an encoding Scheme that
`provides for interleaving any number of discrete Streams of
`digital information into a Single Stream of digital data, using
`techniques based on Time Division Multiplexing (TDM).
`The example television signal above can be encoded into a
`DVB channel using five discrete Streams, leaving additional
`capacity for other Streams.
`0.017. There is increasing interest in adding additional
`information Streams to a Standard broadcast Signal. For
`instance, it may be desirable to transmit audio channels in
`Several different languages in parallel with the Video Stream.
`Or, perhaps information that is interpreted as a Web page is
`broadcast in Such a way as to be Synchronized with the Video
`to provide a multimedia presentation. The number of
`Streams which must be Synchronized may be arbitrary, and
`each Stream may be represented using different and unique
`Storage and compression techniques which have their own
`Synchronization requirements and inter-frame relationships.
`0.018. Any methods which provide functionality similar
`to that described above using Some form of digital computer
`must contain techniques which resolve these issues.
`
`SUMMARY OF THE INVENTION
`0019. The methods and apparatus described herein
`implement a novel and unique facility that provides for the
`manipulation of a continuous Stream of digital information
`as if it Supported random access and variable rate presen
`tation on demand by the consumer of the Stream. The
`possible operations on the data Stream are limited only by
`the Storage capacity and 10 bandwidth of the System which
`implements the apparatus and methods, whether that Storage
`be volatile, Such as DRAM, or non-volatile, Such as hard
`disk Storage, or a combination of both. The apparatus and
`methods Support operations, Sometimes referred to as Virtual
`VCR functions, Such as pause, rewind, fast forward, and
`play, as well as more Sophisticated and unique operations,
`Such as play faster, play slower, and play in reverse. Addi
`tionally, the apparatus and methods described herein provide
`a mechanism whereby Such operations are instantaneous
`from the point of View of the consumer of the data Stream,
`unlike in mechanical Systems. The apparatus and methods
`also Support the ability to capture portions of the data Stream
`which are temporarily held by the apparatus, Such that this
`captured data can be stored or Sent over a network in formats
`Suitable for presenting the data to other consumers, or for
`editing and manipulation by other tools or methods.
`0020. The invention provides a method and apparatus for
`providing pass through or capture of continuous linear
`Streams of digital information represented in various formats
`while providing the appearance of a locally Stored Stream.
`The preferred embodiment of the invention comprises at
`least one media cache for copying blocks of data from the
`information Stream. Data in the media cache can be viewed
`as a Snapshot of the continuous Stream of digital informa
`tion. The invention also comprises a playback pointer. The
`playback pointer position Selects a portion of the media
`cache that is to be accessed to provide functions including
`any of pause, rewind, fast forward, play, play faster, play
`slower, and play in reverse.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`0021
`FIG. 1 is a schematic representation of a continu
`ous media buffer according to the invention;
`0022 FIG. 2 is a block schematic diagram of a system
`incorporating a continuous media buffer according to the
`invention; and
`0023 FIG. 3 is a timing diagram showing the operation
`of a linear cache according to the invention.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`0024. The invention contemplates a new and unique
`apparatus for transforming and manipulating continuous
`Streams of digital information using the methods and tech
`niques described herein.
`0025 FIG. 1 provides a general overview of how the
`preferred embodiment of the invention operates on a con
`tinuous Stream of data. In particular, one or more media
`caches 10 copy blocks of data from an information Stream
`12. The position of a playback pointer 14 Selects a portion
`of the media cache that is to be accessed, thus allowing Such
`functions as pause, rewind, fast forward, and play, as well as
`
`-6-
`
`
`
`US 2002/0034374A1
`
`Mar. 21, 2002
`
`more Sophisticated and unique operations, Such as play
`faster, play slower, and play in reverse.
`0026. The apparatus is independent of the format of the
`underlying digital data Stream. To apply the invention, it is
`only necessary that the underlying data Stream is composed
`of a number of discrete blocks of data, and that only a Small
`set of attributes are associated with each block. The data
`blocks themselves may be of arbitrary size and format. It is
`assumed that processes specialized to a data Source or to a
`decoding operation may proceed freely within the context of
`the invention, indirectly controlled by the methods described
`herein.
`0027 FIG. 2 illustrates the preferred embodiment of this
`invention. While the example in FIG. 2 is provided in
`connection with an MPEG stream of information, it should
`be appreciated that the invention is readily applied to any
`digital Stream of information.
`0028 Manipulation and transformation of a data stream
`is performed in the invention by a combination of the
`following elements:
`0029) 1. The Buffer Controller (201) is the main
`management device. It accepts external requests
`(generated, for instance, from a remote control
`device) for operations on the digital stream and, in
`turn, generates appropriate control messages for the
`other devices of the invention;
`0030) 2. The Stream Clock (202) provides a general
`device for Synchronizing operations on a set of linear
`caches, Such that multiple Streams of data which
`must be presented in a Synchronized fashion are
`correctly positioned, and that they present their data
`at consistent delivery rates,
`0031) 3. The Linear Cache (204) is a general device
`for buffering the information contained in a stream of
`digital information, Such that the data in the cache
`can be viewed as a Snapshot of the continuous Stream
`of digital data; and
`0032 4. The Clip Capture (203) device is a general
`mechanism for capturing all or part of a cached Set
`of information Streams and presenting the resulting
`data as an organized Stream of data to a data Sink
`Such as, for example, a computer file System or
`another display device.
`0033. The following sections describe each of the fore
`going components, and how they interact, in detail.
`0034) Buffer Controller
`0035) The Buffer Controller (BC) module is responsible
`for instantiating the methods that provide for operation of
`the invention for any particular Stream of data. The preferred
`embodiment of the invention includes one Stream Clock
`(SC) module, Zero or more Clip Capture (CC) modules, and
`one or more Linear Cache (LC) stream modules. Operation
`of the invention preferably relies on designating one of the
`LC Streams as the key Stream. All positioning of playback
`from the LCS is based on first positioning the key Stream,
`and then using the final position of that Stream to position all
`other Streams properly. For example, if the key Stream is an
`MPEG video Stream, then positioning is based on aligning
`the current block pointer to the beginning of an MPEG
`
`Group Of Pictures (GOP). Once the key stream is posi
`tioned, the BC repositions all other streams to be synchro
`nized with the key Stream.
`0036) The BC is also responsible for controlling the clock
`rate of the Stream Clock, which operates as described below.
`The rate at which the SC delivers clock events to the Linear
`Caches is based on the rate specified by the BC. Thus, the
`BC can speed up or slow down the playback of the entire
`collection of Streams by requesting the SC to adjust its clock
`rate.
`0037 Finally, the BC is responsible for initiating clip
`capture operations using the Clip Capture method.
`0.038 Stream Clock
`0039 The Stream Clock provides a central synchroniza
`tion facility that distributes time-based events to a number of
`LCs. Each Stream of information in a broadcast program is
`encoded using different techniques, each technique having
`unique notions of, for example, block size, data format, and
`presentation time Stamps for decoding. For instance, in the
`time it takes for a single MPEG video frame to be decoded
`and presented, there may be several MPEG audio frames to
`be decoded and presented. The Stream Clock distributes
`events to each LC at the proper rate for that LC.
`0040. The Stream Clock uses a single queue for manag
`ing events to be distributed using Standard, prior art tech
`niques that are familiar to those skilled in the art of building
`time-based Software Systems.
`0041) Operation of the Stream Clock is detailed below.
`0042 Events are not queued with an absolute time, but
`with the relative offset from the previously queued event.
`The first event in the queue is marked with a time which is
`the offset from the current time. The Stream Clock then
`requests that the underlying operating System invoke a call
`out when that amount of time has passed, e.g. the SC queues
`a timer event. When the call out is invoked, the SC dis
`patches the first clock event and then each Succeeding event
`whose offset is Zero, i.e. each event that is to occur at the
`Same time as the previous event.
`0043. Each event in the queue is also marked with a time
`interval and the absolute time of the data stream that the next
`event should occur. After a queued event is dispatched, the
`absolute time of the next event is composed by adding the
`time interval to the previous absolute time. The difference
`between this time and the current absolute time determines
`the delay before this event should be repeated. The event is
`then added to the queue at the appropriate position for the
`event's next occurrence. This Strategy insures that even if
`Some delay occurs in dispatching the event, following events
`occur at the proper time. After all events with a offset of Zero
`have been processed, the SC queues a new timer event at the
`offset to the first waiting event, after which the above
`proceSS repeats.
`0044) The decoupling of the absolute clock value and the
`actual dispatching of clock events is critical in implementing
`Some of the unique and novel aspects of the invention, e.g.
`the ability to control easily the rate at which playback of the
`stream occurs. When initially created, the SC records a value
`referred to as the rate multiplier, which is initially Set to one.
`Whenever the SC requests the underlying operating System
`to queue a timer event, the actual time delay requested is
`
`-7-
`
`
`
`US 2002/0034374A1
`
`Mar. 21, 2002
`
`multiplied by the rate multiplier. A rate multiplier greater
`than one results in faster playback of the Stream, while a
`multiplier of less than one results in a slower playback of the
`Stream.
`0045 For the LCs to position themselves properly (see
`below), the same rate multiplier must be used to modify the
`Presentation Time Stamp (PTS) stored in each block when
`calculating positioning. Thus, the SC makes a Small Set of
`functions available to the LC which perform comparisons
`and operations on PTS values, after properly Synchronizing
`those values with the rate multiplier stored in the SC.
`0046) The combination of the Stream Clock, with inde
`pendent event generation for each LC and the ability to
`modify logically the rate at which all events are dispatched
`using a Single value provides a novel and unique application
`of common time-based Software design techniques.
`0047. The Linear Cache
`0.048. A key component of the invention is the Linear
`Cache (LC). The LC is used to store a single stream of
`digital information in proper Sequence. The LC maintains
`this stream as a list of the digital blocks that make up the
`Stream, and assumes that each block has a unique size and
`attributes. Each block within the stream is marked with a
`Presentation Time Stamp (PTS) which indicates when that
`block should be presented to the decoding process, be it
`hardware or software. The PTS is a monotonically increas
`ing value initialized to Zero when the LC first begins
`operation on a stream, and is not related to any time Stamps
`defined by the underlying stream encoding technique except
`that once the LC begins operation, there is a constant offset
`between the PTS stored in the LC and any time stamps
`Stored within the encoded digital blocks. It is assumed that
`the decoding proceSS properly handles embedded time
`stamps. FIG. 3 gives a pictorial overview of the preferred
`embodiment of the Linear Cache.
`0049. The capture mechanism for a particular stream type
`gives each encoded digital block to the LC as it arrives
`(301). The LC marks that block with the current PTS for the
`stream. The LC maintains a window (302), which is defined
`as the maximum time, based on PTS values, between when
`the newest block in the LC arrived and the oldest block
`which the LC may hold. Thus, the window represents a time
`span into the past history of the Stream. The LC discards
`blocks which fall outside the window (303), thus the win
`dow allows one to look a fixed distance into the past history
`of a Stream. This mechanism allows choices and tradeoffs
`between available Storage Space and the availability of past
`information for Viewing.
`0050. The capture mechanism is responsible for provid
`ing certain attributes along with each new block (304). The
`first of these is the key frame attribute, which indicates that
`this block begins a sequence of interrelated blocks. When
`performing random access operations on a Stream, the LC
`only allows positioning of the Stream to a block marked as
`a key frame. The second is the End Of Segment (EOS)
`attribute, which indicates that the Stream has ended, and no
`more data are to be presented. For example, the I-frame of
`an MPEG GOP is marked as a key frame by the capture
`mechanism, but all other blocks are not So marked.
`0051. The LC maintains an indication of the next block to
`be presented to the decoding proceSS, which is referred to as
`
`the current block indicator (305). For normal viewing, this
`block is the block last added to the LC by the capture
`mechanism. Thus, the Stream is presented live, with at most
`a one-frame time delay between capture and presentation.
`0052 Random access to the information stream is
`achieved by moving the current block indicator to Some
`other block in the LC. If the LC is requested to move the
`indicator, and the current block indicated is not a key frame,
`the LC instructs the decoding process to reset its decoding
`State, thus purging any partially constructed presentation
`data. For example, if the current frame is an MPEG predic
`tive frame (P-frame), then the decoding process has state
`information, including the current picture to be modified by
`the P-frame. This data must be purged so that the decoder
`begins in the proper State.
`0053 Referring again to FIG. 2, the BC requests repo
`sitioning of an LC by specifying a PTS value. The LC finds
`the block containing a PTS which is closest to that requested
`by the BC. There are two unique cases for repositioning: the
`first, if the LC is marked as the key Stream, and the Second
`when it is not.
`0054 If the LC is marked as a key stream, the LC scans
`the blocks in the cache to find the key frame which is nearest
`to the requested PTS value, searching both before and after
`the desired value. Once properly positioned, the LC returns
`to the BC the PTS of the key frame block which was
`identified.
`0055 Following positioning of the key stream, the BC
`instructs each remaining stream to position itself to the PTS
`returned by the key-Stream. Key frames in other LCs may
`not align with those in the key Stream. Each LC handles this
`problem by requesting the decoding process to purge any
`decoding State, and then Stores an indication that Suppresses
`the LC from actually presenting blocks to the decoding
`proceSS.
`0056. Following this, the LC behaves normally, accept
`ing clock events and advancing the current block indicator
`to match, except that the blocks are not actually presented to
`the decoding process. When the LC encounters a key frame,
`it deletes the indication Suppressing presentation of blocks,
`and presents the current block to the decoding process. This
`brings the Stream into full Synchronization with the key
`Stream.
`0057 The following Subsections describe in detail how
`positioning operations are handled by the LC.
`0.058 Forward
`0059. The forward function is implemented by moving
`the current block indicator forward through the cache by one
`block for each event generated by the Stream Clock. Each
`Successive block in the cache is given to the decoding
`process for presentation as clock events are dispatched by
`the SC. A rate multiplier of one causes the current block
`indicator to move forward one block in the LC at the same
`rate as new blocks are added to the LC by the capture
`process. Conceptually, the current block indicator points to
`the same position in the cache, while the window of cached
`blocks moves beneath it. From the perspective of the con
`Sumer of a stream, this results in play out at a fixed delay
`from real time.
`
`-8-
`
`
`
`US 2002/0034374A1
`
`Mar. 21, 2002
`
`0060. There exists a rate at which the decoding process
`may not be able to present a block to the consumer before
`decoding of the next block must begin, i.e. the decoder can
`not keep up with the playback rate requested. The LC
`recognizes this case, and reverts to a key frame based
`method, where intermediate blocks are skipped and only key
`frames are presented to the decoder.
`0061 The current block indicator can not be positioned to
`an uncached block. If the rate multiplier indicates a rate
`greater than one, then the current block indicator eventually
`moves to the front of the cache. In this case, the key frame
`LC indicates to the BC that no more blocks are present in the
`cache. The BC resets the SC rate multiplier to one, and each
`LC positions the current block indicator to the latest cached
`block. The effect of this operation is to revert to undelayed
`play out of the actual information Stream.
`0062) Reverse
`0.063. The reverse function is implemented by moving the
`current block indicator backwards through the cache by one
`block for each clock event generated by the SC. Again, the
`key stream LC is used to control positioning. The BC
`instructs each LC to move to reverse mode, in which the
`current block indicator is moved backwards one block on
`each clock event. In addition, this mode causes the LC to
`SuppreSS presentation of all but key frames to the decoding
`process. When the current block indicator is moved over a
`key frame, the block is presented to the decoding process.
`0064. The rate at which blocks are presented to the
`decoding process is controlled by the rate multiplier in the
`Stream Clock, allowing for arbitrary Speed of reverse opera
`tion.
`0065. The current block indicator can not be moved past
`the oldest block in the cache. If a clock event would result
`in moving the current block indicator past the earliest block,
`then the indicator is Set to that block, and play out continues
`as described above. The key frame LC indicates to the BC
`that the oldest cached block was reached. The BC resets the
`SC rate multiplier to one, and each LC positions the current
`block indicator to the oldest cached block. Externally, it
`appears as if the Stream began playing in a forward direction
`again, time delayed by the window size.
`0.066 Pause
`0067. The BC implements the pause function by locking
`the current block indicator in the key stream LC to that
`block. The LC can only lock the indicator to a key frame
`block, thus it Searches forward for Such a block in the cache.
`If no key frame is present, the LC Stores an indication that
`a lock has been requested. When the capture process pre
`Sents a key frame, the LC thus recognizes that the lock was
`requested, and locks the current block indicator to that key
`frame. The LC also presents this key frame to the decoding
`process, Such that proper positioning, from the decoding
`proceSS point of View, is maintained. Following this, as new
`blocks are added to the front of the cache, the block
`indicated moves backwards in the cache. Additionally, the
`LC Sets the indicator Suppressing further presentation of data
`to the decoding p