`
`(12) United States Patent
`Kovacevic
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,095,945 B1
`Aug. 22, 2006
`
`(54) SYSTEM FOR DIGITAL TIME SHIFTING
`AND METHOD THEREOF
`
`9/2004 Morinaga et al.
`6,792,000 B1*
`OTHER PUBLICATIONS
`
`......... .. 386/124
`
`(75)
`
`hwemori Branko Kovacevics Wiiiowdaie (CA)
`.
`(73) Asslgneet ATI Technologies, Inc-, Toronto (CA)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 15403) by 943 days.
`
`Information
`Signals,”
`of Non-Telephone
`“Transmission
`Technology—Generic Coding of Moving Pictures and Associated
`Audio Information: Systems, ITU-T Recommendation H.222.0, Jul.
`1995, 120 pp.
`“Information Technology—Generic Coding of Moving Pictures and
`Associated Audio Information—Pait 3: Audio,” ISO/IEC 13818-3,
`Second Edition, Apr. 15, 1998, 116 pp.
`
`(21) Appl. No.: 09/707,060
`
`(22)
`
`Filed3
`
`N0V- 6: 2000
`
`(51)
`
`Int- Cl-
`(2006.01)
`H04N 9/80
`(52) US. Cl.
`........................... .. 386/12; 386/46; 386/98
`(58) Field of Classification Search ................ .. 386/46,
`386/48, 68, 124—126, 12, 98; 348/4231;
`360/39, 48; 369/32.01
`See application file for complete search history.
`
`(56)
`
`Referenees Cited
`US. pATENT DOCUMENTS
`
`55521922 A ii
`519365925 A ii
`6,072,832 A *
`6,148,135 A *
`6,233,389 B1*
`6,751,170 B1*
`
`5/1996 Fujinflmi et 31 ~~~~~~~ ~~ 348/4231
`
`8/i999 Yesiiie ei iii‘ ““““““ " 360/39
`6/2000 Katto .................... .. 348/423.1
`11/2000 Suzuki
`...................... .. 386/12
`5/2001 Barton et al.
`.
`..... .. 386/68
`6/2004 Ueki
`..................... .. 369/3201
`
`ii eiiee by exeiiiiiiei
`Primary Examiner—James J. Groody
`Assistant Examiner4Christopher Onuaku
`
`(57)
`
`ABSTRACT
`
`A multiplexed packetized data stream carrying real-time
`multimedia programs is received at a first hardware demul-
`tiplexer. Based on a user input, a video and timing portion
`of a program associated with the multiplexed packetized
`data stream can be stored for subsequent display. One type
`of subsequent display is time shifted display, where the
`stored portion of the program is played back while new
`portions of the program are being stored. During time shifted
`play back, a second hardware demultiplexer can be used, so
`that one demultiplexer stores new data and maintains a
`current clock value while the other decodes and displays the
`Stored data
`i
`
`27 Claims, 6 Drawing Sheets
`
`MPEG
`SYSTEM RING
`BUFFER
`BUFFER
`£513
`51%
`
`
`
`
`
`
`
`
`MASTER
`DTSR
`fifl
`
`TS
`
`SYSTEM MEMORY
`CONTROLLER
`630
`
`
`
`STO RAG E
`§o_4
`
`
`
`
`SYSTEM RING
`SECONDARY
`
`
`DTSR
`BUFFER
`
`
`9.2.4.
`5.2.9
`
`
`
`LG Ex. 1001, pg1
`
`LG Ex. 1001, pg 1
`
`
`
`U.S. Patent
`
`Aug. 22,2006
`
`Sheet 1 of 6
`
`US 7,095,945 B1
`
`_O.=CDuEm:
`
`cozmfimnmmin
`
`E35.
`
`b_._o_._qm:__n_E....._ow.522:
`
`
`
`
`
`_EEouh9mu_o:__
`
`.1.II‘I.
`
`coficflxmEmu
`
`cozmfimum:o%.§_8:3monomom
`
`20$0uW>_._Q—.=$OUu:300
`
`mm.m+3..9.wm+mmm+mm
`
`Smo_o:_
`§8_E_
`
`
`
`bmEmEmwEoucmc&__.E_Eoum_ucozmamnm
`w_.__%_..mmwmuom29..
`
`
`
`
`....._.w_<N_O_mn_--
`
`_.mmawm
`
`
`
`¢lI3:3mm:lluw.
`
`
`
`
`
`umoamqtoamce.oim
`
`5:0
`
`:oamcm._.
`
`.9_oma
`
`Emgm
`
`3233:
`
`:o%__§
`
`Exuma
`
`LG Ex. 1001, pg2
`
`LG Ex. 1001, pg 2
`
`
`
`
`
`
`U.S. Patent
`
`Aug. 22,2006
`
`Sheet 2 of 6
`
`US 7,095,945 B1
`
`:o_m:m.xw
`
`Em:
`
`_mumm:
`
`mmi
`
`HE5929%
`
`emu.963mm:
`
`mmtfi
`
`—N
`
`m:__nEm._om
`
`_o.E8
`
`
`
`wwn__m:O_:ODmEGOWmIOWMw._.n_
`>QOUv_0_._uSmWFQ
`
`o.E_.
`
`w“woe
`
`mNN$8an m
`
`
`
`.¢.m<N_O_m_n_...
`
`Nmanor.
`
`LG Ex. 1001, pg 3
`
`LG Ex. 1001, pg 3
`
`
`
`
`
`
`
`U.S. Patent
`
`Aug. 22,2006
`
`Sheet 3 of 6
`
`US 7,095,945 B1
`
`mmm_>5z
`zocbmm
`mm_ms5z
`zo_.5m_m
`mo»<o_oz_
`Fzmxmso
`zo_mmm>
`mmmsfiz
`Eo¢mz<E
`zofiomm
`
`Caz
`
`Q_2<mEm
`
`I._.OZm._
`mO._.<O_DZ_
`
`zofiomm
`
`x<»z>m
`
`IO
`
`w
`
`m
`
`V3
`
`
`
`_2<moomn_s_<mwomn_
`
`
`
`_uo_nE<s_Eumssz
`
`
`
`xmozfimz—>_<~.._OOmn_
`
`eacmmmsiz
`
`
`
`--._.w_<mo_E..
`
`mm_m:w_u_
`
`LG Ex. 1001, pg4
`
`LG Ex. 1001, pg 4
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`60022,2
`
`S
`
`mu
`
`0
`
`0,7SU
`
`9,5
`
`1B5
`
`eaMxmozfimz
`0...
`
`
`zo_E_2mou_z_Awll
`xxo252xmoznmz
`mzmfioi
`
`
`
`zo_+<_oowm<_>_<w_0ON_n_
`
`m._m<._.
`
`os_<m_womn_
`
`_._2<moomn_
`
`‘III__>_<mwomn_
`
`x_>_<mwomn_
`
`m_s_<moomn_
`
`4ozoiomm
`
`umemmom
`
`mmoimommozIDE>m<Fzmsm._wEmncfi
`s_<m_EmIH
`
`4VmN_D0_n_
`
`
`
`9n-._.N._<~_O_N_n_...
`
`
`
`V.s_<moomn_
`
`ozofiomm
`
`_s_<mwomn_
`
`ozofiomw
`
`c_>_<moomn_
`
`ozofiomm
`
`LG EX. 1001, pg 5
`
`
`
`
`
`m:mEn_<_>_s_<moo«_n_
`
`
`
`
`
`m4m<._.n_<_2_2<mooma
`
`LG Ex. 1001, pg 5
`
`
`
`
`
`
`U.S. Patent
`
`Aug. 22,2006
`
`Sheet 5 of 6
`
`US 7,095,945 B1
`
`FUNCTION
`
`FIGURE5
`
`LG Ex. 1001, pg6
`
`LG Ex. 1001, pg 6
`
`
`
`U.S. Patent
`
`uA
`
`60022,2av
`
`6fl.06Hm
`
`nw7SUV
`
`1R.54av
`
`Somo
`
`
`
`>mo_2m_>_sm:.m>w
`
`mm44omHzoo
`
`mo<mo+m
`
`«mm
`
`.%o2.5:
`
`OZEs_mFm>m
`
`mmmmsm
`
`«Mm
`
`>m<ozoomm
`
`mwFo
`
`dmm
`
`mm_.Ln_:mmmtam
`
`mam«fig
`
`omn__>_02.1_2m:m>m
`
`mm:m<_>_
`
`mmE
`
`aflm
`
`wk
`
`LG Ex. 1001, pg 7
`
`LG Ex. 1001, pg 7
`
`
`
`US 7,095,945 B1
`
`1
`SYSTEM FOR DIGITAL TIME SHIFTING
`AND METHOD THEREOF
`
`FIELD OF THE INVENTION
`
`The present invention relates generally to time shifting of
`video data, and more specifically to time shifting of digital
`video data.
`
`BACKGROUND OF THE INVENTION
`
`Systems for time shifting a viewed program are known in
`the industry. For example, if a viewer is interrupted by a
`phone call during a television program, the program can be
`recorded for a few minutes and then played back from the
`point of interruption while addition video information is
`continually recorded. One prior art method of accomplishing
`time shifting is to capture the rendered video signal. When
`the rendered signal is an analog signal it is digitized and
`stored. When the rendered signal is a digital signal it can be
`captured directly. Once captured, the rendered digital data
`can be stored directly. A digital signal stored directly can
`require a large amount of storage space, even when only a
`few minutes of video are captured. The digital signal can be
`compressed to reduce the amount of storage space required.
`However, compressing a video signal requires additional
`processing power, resulting in additional costs.
`As the use of digital video data becomes increasingly
`common, a method and apparatus for time shifting a digital
`program that is more efficient than those known in art would
`be advantageous. One known method to provide digital
`video data is to provide the data using a specific protocol that
`has the ability to transmit
`the digital video data in a
`compressed format. An example of one such format
`is
`known as MPEG-2, and has been approved by the Intema-
`tional Organization for Standards (ISO) Moving Pictures
`Experts Group (MPEG group). MPEG-2 is a versatile com-
`munication standard that gives theoretical explanations
`needed to implement an MPEG-2 decoder through the
`syntax and semantics of coded bit-streams. MPEG-2 is an
`open standard and continues to evolve and be applied to a
`wide variety of applications ranging from video conferenc-
`ing to High Definition Television (HDTV). The MPEG-2
`standard, as a generic and open standard,
`is intended for
`variety of audio/video coding applications.
`One method of transporting large amounts of various
`types of transport stream data is to use a multiplexed
`packetized data stream capable of carrying real-time multi-
`media programs. One example of a multiplexed packetized
`data stream is described in the standard ISO/IEC 13818-1
`
`and will be referred to as a transport stream. Transport
`streams generally offer robustness for noisy channels and
`can carry multiple programs (like multiple TV services)
`within the same multiplex. The transport stream is based on
`188 byte long packets that are well suited for hardware error
`correction and processing schemes needed in noisy envi-
`ronments, such as coaxial cable television networks and
`satellite transponders. Such a transport stream facilitates fast
`program access, charmel hopping and synchronization
`between multiple programs within the transport stream.
`A transport stream consists of fixed length packets based
`on 4 bytes of header followed by 184 bytes of data payload,
`where data payload is obtained by partitioning larger data
`blocks. For example, an elementary stream (ES) is a set of
`data generally consisting of compressed data from a single
`source, such as a video or audio source, with some additional
`ancillary data for identification, characterization and syn-
`
`2
`
`chronization. ES streams are first packetized into either
`constant length or variable length Packetized Elementary
`Stream packets (PES packets) consisting of header and
`payload. Each PES packet header starts with start code
`(ox000001) followed with the stream id byte identifying
`type of ES underneath.
`PES packets from various elementary streams are merged
`together to form a program (service) with its own system
`time clock (STC). All ES component streams within one
`program are synchronized have periodic PTS stamps corre-
`sponding to the STC counter to indicate the proper timing
`for each ES.
`
`The relatively long and most often variable length PES
`packets are further packetized into shorter TS packets hav-
`ing a constant size of 188 bytes. A small and constant TS
`packet size makes error recovery easier and faster. Usually,
`the transport stream carries several programs, each with its
`own STC. Each TS packet consists of a TS Packet header
`with optional Adaptation Field followed by useful data
`payload containing portion of a PES packet. The TS header
`consists of a sync byte, flags, indicators information for error
`detection and timing and Packet_ID (PID) field used to
`identify elementary stream carried underneath of a PES
`packet.
`In addition to identifying specific elementary
`streams, one PID is used to identify a program specific
`Information (PSI) table data.
`Each TS PSI table is sent in sections, usually occupying
`one or more TS packets. Four types of PSI tables exist: 1)
`Program Association Table (PAT) listing unique prograrn_
`number (as an identifier of each program in one multiplex)
`and PID of the PMT table; 2) Program Map Table (PMT)
`listing PIDs of all component streams making a given
`program. PMT may be constructed for each program sepa-
`rately or be common for a group of programs; 3) Conditional
`Access Table (CAT) identifying PID of Entitlement Man-
`agement Messages and ID of used conditional access system
`if any scrambling of TS or PES packets is done; 4) Private
`Table carrying Network Information Table (NIT) or private
`data.
`The Hierarchical structure which exists between ES
`
`streams, PES and TP packets is illustrated in prior art FIGS.
`14!.
`
`A method and apparatus for efi‘icient time shifting of
`multiplexed packetized data streams, such as a packet
`stream, would be advantageous.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIGS. 1—4 illustrate various information associated with
`
`an MPEG transport stream of the prior art.
`FIG. 5 illustrates in graphical form a time line indicating
`various modes of operation in accordance with the present
`invention;
`FIG. 6 illustrates in block diagram form a specific
`embodiment of a system having to digital transport stream
`receivers in accordance with the present invention.
`
`DETAILED DESCRIPTION OF THE DRAWINGS
`
`A specific method and apparatus is disclosed describing a
`time shifting technique. In one embodiment, the disclosed
`time shifting technique can be based upon a hardware
`transport stream demultiplexer that interfaces to a transport
`stream. The hardware demultiplexer application assists in
`the extraction and parsing of a multiplexed packetized data
`stream, such as a MPEG-2 Transport Stream (TS) multiplex.
`One such hardware demultiplexer is disclosed in patent
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`LG Ex. 1001, pg 8
`
`LG Ex. 1001, pg 8
`
`
`
`US 7,095,945 B1
`
`3
`application Ser. No. 09/489,682, which is hereby incorpo-
`rated herein by reference. The disclosed hardware transport
`core is used to filter component streams into 15 memory ring
`buffers, one allocated in the frame memory for the dedicated
`MPEG-2 video decoder and others in the system memory for
`the dedicated software parser. It can demultiplex the most
`frequent transport packets of video stream into an Elemen-
`tary Stream (ES) by monitoring the first packet identifier
`(PID) of each TS packet. This flexible filter can be set to
`extract private data from the adaptation field (AF) or from
`the PES packet header. Thirty-one other PIDs can be simply
`filtered and routed to a common (joint) or
`individual
`memory buffers for subsequent software processing on the
`host processor. The basic idea of a time shifting is shown in
`FIG. 5.
`
`FIG. 5 illustrates three functions performed by a time
`shifting system. A first function is to receive a live broadcast
`stream 510. According to the graph of FIG. 5,
`the live
`broadcast stream is continuously received during the time
`represented in FIG. 5.
`A second function of a time shifting system is to record a
`specific program after a user activates the time shifting
`feature. Vector 520 of FIG. 5 indicates when a specific
`program is being recorded by the time shifting system.
`A third function of the time shifting system is to display
`the specific program. Vector 530 of FIG. 5 indicates when a
`specific program is being played back. Specifically, vector
`portion 531 represents the time where the program is being
`displayed directly from the live broadcast stream. Vector
`portion 532 represents the time that the user is unable to
`view the program, i.e. the user is away from the television.
`Therefore, in one embodiment, during this time no program
`is displayed. In an alternate embodiment, the live feed can
`continue to be displayed, even though the program is being
`recorded.
`
`Vector 533 represents the time during which the time-
`shifted program, which has been stored, is being replayed at
`a normal playback rate. Note that during this time, the live
`program feed continues to be recorded for future time
`shifted play back.
`Vector 534 represents a time during which the time shifted
`program is being replayed at a faster than normal replay rate.
`By being able to playback at a faster than normal rate, it is
`possible to catch-up to the live broadcast stream.
`The receive-only mode of vector 31 represents where the
`digital transport stream receiver (DTSR) is receiving a live
`broadcast and demultiplexing one program of a plurality of
`programs available in the live broadcast stream. This will be
`referred to as Transparent Mode indicating the transport
`stream is accessed immediately and not saved. Therefore,
`from the point of view of digital storage media (DSM), the
`received data is transparent.
`Note that the PAT table is constantly acquired, in trans-
`parent mode, and other modes, so that version number
`change or PMT table PID change for a currently viewed
`program can be detected. If such a change occurs during the
`live broadcast of a program, PIDs will be reprogrammed for
`video and splicing with be handled.
`A Continuous Time Shifting Mode occurs during vectors
`532—534. Continuous time shifting mode occurs when time
`shifting is selected by the viewer to store part or all of a
`program for later viewing after a short or long intermission.
`During continuous time shifting mode, a selected program
`from a given multiplex is received and stored on a hard disk,
`or other storage media, in the form of full transport stream
`packets or PES packets.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`
`A Part-Time Time-Shifting Mode, when selected by the
`viewer, allows for replay of a time shifted program or fast
`forward (FF) replay of a time shifted program at user defined
`FF speed. In FIG. 5 this is represented as vectors 533 and
`534. In a specific embodiment discussed herein, this time-
`shifting mode is the most demanding mode of the 3
`described modes because: the host CPU system is receiving
`and storing a real time event; at the same time, the host CPU
`is retrieving saved stream data from the disk; simultaneously
`with first
`two operations,
`the host CPU is performing
`transport stream de-multiplexing of video, audio, private and
`PSI/SI data on a host CPU; and at the same time the host
`CPU is
`restoring PCR/PTS time-base information as
`described later.
`
`time-shifting
`television applications,
`For some digital
`may be considered a peak event that occurs sometimes or
`occasionally. However, some users may depend on it all the
`time, up to the end of the current program once it was
`started. For those users, typical operating state of the system
`is time shifting, de-coupled from the live stream. Time
`shifting of the digital transport stream should offer the same
`quality as from the live broadcast (source stream).
`Systems suitable for time-shifting need to simultaneously
`receive and decode a transport stream and handle incoming
`source stream (to process all PSI and SI data) and record
`incoming source stream as a full entity or just
`its one
`program. Time shifting allows the viewer to step away from
`the TV monitor without missing any of the program parts.
`One embodiment of time shifting includes storing all trans-
`port packets received on the transport stream. Another
`embodiment of time shifting that is more efficient includes:
`1) selecting just the transport packets of interest (PSI, SI,
`video, audio and data packets) that constitute one program
`event to minimize the bit-rate of the recorded stream, to
`minimize the bandwidth through the host bus interface unit,
`and to minimize hard disk head movement (if any); 2)
`increasing the amount of storage and useful life of the hard
`disk; and 3) assuring that the amount of data that needs to be
`processed by the host processor is received and stored as:
`transport stream packets; PES packets of video, audio, data,
`PSI and SI content, de-multiplexed transport; or PES pack-
`ets of video and audio and bus master compressed video into
`the video bit-strearn buffer of the MPEG video decoding
`device.
`
`Selection of just one time shifted program reduces the
`potentially high bit-rate of a transport stream multiplex to a
`manageable size, suitable for storage on current 10 GB hard
`disk units (two hours of 10 Mbps stream). Obviously, a large
`disk drive is needed to allow any reasonable length of time
`shifting. In time shifting mode where time shifted material
`is simultaneously received and stored, the bit-rate of the host
`bus-interface unit (HBIU) needs to be double a system
`where the HBIU is only responsible for playing a single
`program stream. Generally the bandwidth needed is calcu-
`lated to be approximately 20 Mbps instead 10 Mbps.
`Because closed or proprietary systems, such as set-top
`boxes, usually do not share the hard disk drive with other
`systems, very specialized disk drives for audio-video appli-
`cations with specialized interfaces can be used. Hard drive
`features that would be advantageous include: 1) Increasing
`access speeds and sustained sequence transfers in two direc-
`tions; 2) Having deferred re-calibration of drive heads to
`prevent glitches or latencies during playback; 3) Having
`head offsets to prevent losing a revolution when going from
`side to side on a platter; 4) Supporting on the fly error
`correction; and 5) Having embedded multi-disk drive units
`that decrease access latencies.
`
`LG Ex. 1001, pg 9
`
`LG Ex. 1001, pg 9
`
`
`
`US 7,095,945 B1
`
`5
`The operating system can play a significant role in the
`efficient use of the drive by accessing most frequent video
`data in large blocks and decreasing seek time. Generally,
`larger read/write blocks increase efficiency of data storage
`and retrieval. Sometimes they can cause unwanted glitches
`by increasing latency during access.
`The first time shifting mode of operation is a receive-only
`mode. During receive-only mode of operation a master
`digital time shifting receiver (DTSR) 610, of FIG. 6,
`is
`programmed to receive and parse transport stream packets
`matching video and PCR PIDs. A host CPU 632 is assisting
`MPEG-2 clock recovery, and the same recovered clock data
`is supplying Master DTSR 610 and the Secondary DTSR
`620. In one embodiment, the recovered clock is provided to
`the secondary DTSR 620 registers through the use of the
`system memory controller 630. Also, the Master DTSR 610
`is programmed to perform PID filtering of audio, private,
`and PSI/SI PIDs programmed in the auxiliary PID registers.
`Secondary DTSR 620 is programmed for PID filtering
`operations on Video PID programmed on a first auxiliary
`PID register. However, since the receiver is in receive-only
`mode, the video transport packets in the ring buffer 624 are
`disregarded. The clock recovery algorithm is suppressed on
`the secondary DTSR 620. Only STC of the slave DTSR is
`set upon the charmel change. Host CPU 632 performs PES
`parsing of audio transport stream packets, decode and pre-
`sentation of audio frames (on AC-97 codec or wave device),
`and continuous parsing and data processing of PSI sections
`monitoring real-time events like PID change, PCR discon-
`tinuity or splicing of audio stream. This activity by the host
`CPU 632 is part of the normal receive only mode of
`operation where a specified channel is being decoded and
`displayed. Specific systems and methods for supporting
`these processes are described in the patent application
`already incorporated by reference.
`When in continuous time-shifting mode of operation, the
`host CPU 632 performs additional processing including:
`retrieval; multiplexing;
`time base corrections; storage of
`video audio, private and PSI/SI transport stream packets
`from multiple buffers 614 allocated in the memory space of
`the host CPU. In one embodiment, however,
`the master
`DTSR 620 is used to decode and display video stream as
`describe previously with reference to receive only mode.
`Transport packets from a common program are retrieved
`from the buffer 614 and provided to a digital storage media
`circular file system in a multiplexed manner. Multiplexing is
`performed by inserting audio, video, private, and PSI/SI
`transport stream packets to satisfy a group of relevant
`criteria.
`
`Fundamental functions performed during continuous digi-
`tal time shifting include: 1) Preserving of original ES_rate of
`each component stream; 2) Limiting PCR jitter of newly
`created single program multiplex; 3) Preserving VBV_delay
`value (the number of periods of a 90 KHZ clock derived
`from the 27 MHz system clock that the VBV shall wait after
`receiving the final byte of the picture start code before
`decoding the picture) to insure non-interrupted MPEG video
`decode after initial VBV_delay time in constant bit-rate
`(CBR) stream environments; 4) Preventing underflow or
`overflow of elementary stream decoder buffers in accor-
`dance with the T_STD model defined in ISO/IEC 13818-1
`standard; 5) providing PID values in the video or audio TS
`packets that were originally defined in the PMT section to be
`a video or audio PIDs. Alternatively, a new artificial PCR
`stream can be separately created and injected as TS PCR
`packets at the rate of at least 10 times per second to create
`a new time base for decimated, time-shifted stream stored on
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`the DSM. Whereby, the original PAT transport packet is
`modified or a new PAT packet is inserted into the stream
`instead of the original PAT section to indicate a single
`program only whose PMT section indicates video, audio,
`PCR and other PID that carry subtitles, program descrip-
`tions, etc. As a stable clock source, STC of the Master DTSR
`is used to measure elapsed time between two PCR samples;
`6) Providing PTS values in the video, audio or private data
`streams by using STC of the Master DTSR as elapsed time
`counter; and 7) Initializing STC of the playback DTSR
`device to a first available PCR value encoded in the stream
`
`saved on DSM media, immediately after channel change.
`While in part-time digital time-shifting mode, the host
`CPU 632 performs some additional processing like retrieval
`and de-multiplexing of the single program transport stream
`created in continuous time digital time-shifting mode during
`a storage process. Generally,
`the playback of the stored
`program is combined with continued transport stream de-
`multiplexing and recording of the real-time transport stream.
`Such a mode of operation is the most intensive mode of
`operation because the host CPU 632 must, create/store a
`multiplexed single program transport stream from a contin-
`ued reception of a live broadcast; and retrieve and de-
`multiplex saved content from a digital storage media while
`performing transport stream de-multiplexing, audio decode,
`and bus mastering elementary stream video to the MPEG
`video decoder.
`
`In one implementation, an MPEG decoder associated with
`the Master DTSR 610 is used to decode and display a video
`stream from a DSM media and receive private data, and
`PSI/SI sections from a live broadcast. In such a case, a video
`PID of the Master DTSR 610 is disabled, while video data
`with its PTS information is fed directly to the MPEG
`decoder using the system memory controller 630. However,
`PCR PID is programmed on a Master DTSR so that MPEG
`clock recovery continues from a live transport stream feed
`and is supplied to the STC counters of both the master DTSR
`610 and the second DTSR 620. In one implementation, only
`the video PID is programmed into the Slave DTSR for
`retrieving live video stream and sending it to circular buffer
`on the host system in the form of a full MPEG-2 transport
`stream packets, while the Master DTSR is used to buffer the
`non-video components of a specific program.
`In another embodiment, a different partition of the soft-
`ware tasks is possible on the host CPU 632 to achieve all
`three modes of a digital time shifting. In the second embodi-
`ment, a first DTSR is used as a combo video-PCR only
`device, either to receive and decode video from a live
`broadcast or from a DSM media. The PCR PID of the first
`
`DTSR is programmed always to match live broadcast, and
`full clock recovery is done by the first DTSR. A second
`DTSR can be used in all 3 modes to receive video, audio,
`private data and PSI/SI sections, all utilizing auxiliary PID
`filters and received as full MPEG-2 transport packets arriv-
`ing in the single memory queue. This way, the temporal
`order of a stream and validity of the T-STD decoder model
`is inherently preserved. Also, the amount of the host DRAM
`memory required for queue allocation is less than in the first
`case. In both embodiments, a quality digital stream time
`shifting at the transport packet level is achieved.
`In yet another operating mode, a different partition of the
`software tasks is possible on the host CPU 632 to achieve all
`three modes of digital time shifting by storing PES layers as
`a basic format of the audio/video data saved on a DSM. In
`
`PES operating mode, two hardware embodiments are pos-
`sible, the same as in TP operating mode.
`
`LGEx.1001,pg1O
`
`LG Ex. 1001, pg 10
`
`
`
`US 7,095,945 B1
`
`7
`In a first hardware embodiment, the first DTSM is used as
`a combo device, to achieve playback of live or stored MPEG
`video and reception of audio, private & PSI/SI content. The
`second device is used only to receive and de-multiplex
`MPEG-2 video transport stream and retrieve MPEG-2
`elementary stream from a live broadcast. Upon retrieval of
`ES video, PES packets are formed and stored on the DSM
`media. In the second hardware embodiment, the first DTSM
`is used as a combo video-PCR only device, either to receive
`and decode video from a live broadcast or from a DSM
`
`media. The PCR PID is programmed always to match live
`broadcast, and full clock recovery is done by the first DTSR.
`A second DTSR is used in all 3 time-shifting modes to
`receive audio, private data, PSI/SI sections, by utilizing
`auxiliary PID filters to store the transport packets to a single
`memory queue. That way, a temporal order of a stream and
`validity of T-STD decoder model is already preserved.
`In yet another time shifting embodiment, the video is
`de-multiplexed to the level of elementary stream and stored
`at the bit-stream buffer of the MPEG video decoder physi-
`cally allocated in the frame memory. The MPEG video
`stream is then retrieved from this buffer by a software
`processing thread running on a host CPU. Every time a
`picture start code is found in the video bit-stream buffer, a
`full compressed MPEG picture, in the form of elementary
`stream, is sent to the system memory bulfer by DMA. One
`such method is disclosed in patent application Ser. No.
`09/489,682 which is hereby incorporated herein by refer-
`ence.
`
`Before storing the full compressed MPEG picture in the
`DSM, a PES packet header is added. The audio stream is
`de-multiplexed and decoded by the host CPU. In a similar
`fashion as the video, prior to audio decoding, the audio
`frames are packetized into PES packets. Essential informa-
`tion from the PSI/SI/private data tables is decoded and
`stored in a pure source form on a DSM. This way, further
`reduction of the host DRAM memory requirements for
`queue allocation and memory on the DSM media is reduced.
`An advantage of this mode is reduction of CPU cycles
`needed for A/V playback of stored data due to the PES
`format of audio/video data. PES de-multiplexing is done in
`place, passing pointers to the payload of PES packets that
`contain video or audio frames, other
`implementations
`required they be sent by DMA to the video decoder before
`they were decoded on host CPU (MPEG or AC-3 audio). As
`a result, the host CPU doesn’t move any raw audio or video
`data, and host CPU utilization is reduced in order of mag-
`nitude compared to TS playback operating mode.
`In the foregoing specification,
`the invention has been
`described with reference to specific embodiments. However,
`one of ordinary skill
`in the art appreciates that various
`modifications and changes can be made without departing
`from the scope of the present invention as set forth in the
`claims below. For example, the specific time-shifting imple-
`mentation has been described as with reference to a specific
`transport stream demultiplexer, and described in a previous
`applications which have been incorporated by reference.
`Different transport stream demultiplexers and method of
`implementing specific aspects of the present invention can
`be used as well. Likewise, specific partitions between hard-
`ware and software implementions have been described,
`which can vary depending upon the implemented demulti-
`plexer. For example, the video stream parser can be designed
`to support routing the parsed video data to a circular buffer
`that is accessible by the system memory controller. Accord-
`ingly, the specification and figures are to be regarded in an
`illustrative rather than a restrictive sense, and all such
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`modifications are intended to be included within the scope of
`present
`invention.
`In the claims, means-plus-function
`clause(s), if any, cover the structures described herein that
`perform the recited function(s). The mean-plus-function
`clause(s) also cover structural equivalents and equivalent
`structures that perform the recited function(s). Benefits,
`other advantages, and solutions to problems have been
`described above with regard to specific embodiments. How-
`ever, the benefits, advantages, solutions to problems, and
`any element(s) that may cause any benefit, advantage, or
`solution to occur or become more pronounced are not to be
`construed as a critical, required, or essential feature or
`element of any or all the claims.
`What is claimed is:
`
`1. A method comprising:
`receiving a multiplexed packetized data stream that car-
`ries real-time multimedia programs;
`during a first time:
`storing a first portion of the packetized data stream
`representing video data and timing data of a program;
`setting a system time indicator to a stored system time
`value, wherein the stored system time value is based on
`a portion of the timing data of the first portion of the
`packetized data stream;
`during a second time:
`incrementing the system time indicator;
`retrieving the video data of the first portion of the pack-
`etized data stream for video decoding; and
`storing a second portion of the packetized data stream
`representing video data and timing data of the program.
`2. The method of claim 1, wherein
`storing the first portion of the packetized data stream
`includes the first portion of the packetized data stream
`representing audio data of the program;
`storing the second portion of the packetized data stream
`includes the second portion of the packetized data
`stream representing audio data of the program;
`the method further including:
`during the second time:
`accessing the audio data of the first portion of the pack-
`etized data stream for audio playback.
`3. The method of claim 1, wherein the multiplexed
`packetized data steam is a multiplexed packetized data
`stream that substantially meets an MPEG2 specification.
`4. The method of claim 3, wherein storing the first portion
`includes storing transport stream packets.
`5. The method of claim 4, wherein storing the first portion
`includes:
`
`determining transport stream packets containing data
`associated w