throbber
Ulllted States Patent
`
`[19]
`
`[11] Patent Number:
`
`6,014,706
`
`Cannon et al.
`
`[45] Date of Patent:
`
`Jan. 11, 2000
`
`US006014706A
`
`[75]
`
`[54] METHODS AND APPARATUS FOR
`IMPLEMENTING CONTROL FUNCTIONS IN
`A STREAMED VIDEO DISPLAY SYSTEM
`,
`_
`IHVGIHOFSI AI1th0I1y C3I1I10I1; D3Vld del V31, b01h
`of Mountain View; Anders Klemets,
`Sunnyvale’ an of Calif.
`_
`_
`,
`[73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`...........................
`V4/1997 DuLac el al.
`5,625,405
`~-
`I]3I1%he ettal-1
`..
`..
`e son e a.
`,
`,
`.. 348/426
`.
`4/1998 Kandlur et al.
`5,742,347
`6/1998 Ran ................... ..
`.. 709/247
`5,768,533
`5,828,848 10/1998 MacCormack et al.
`.............. .. 709/247
`
`
`
`348/47
`
`FOREIGN PATENT DOCUMENTS
`0605115
`7/1994 European Pat. Off.
`.
`0653884
`5/1995
`European pot. Off.
`.
`0676898 10/1995
`European Pat. Off.
`.
`0746158 12/1996
`European Pat. Off.
`.
`
`OTHER PUBLICATIONS
`
`[21] Appl. No: 03/819,586
`
`[22]
`
`1:115:93
`
`M31‘ 14: 1997
`
`[60]
`
`[51]
`
`Related U-S- Applicatiml Data
`Provisional application No. 60/036,662, Jan. 30, 1997, and
`provisional application No. 60/036,661, Jan. 30, 1997.
`Int Cl-7 ------------------------------------------------------ G061: 13/00
`US: Cl.
`........................ ..
`
`709/248
`[58] Field of Search ....................... .. 395/200.48, 200.61,
`395/200.63, 200.59, 200.65, 182.16; 709/217,
`218, 219, 229, 231, 233, 235, 248; 371/30,
`32> 33; 707/10
`
`,
`[56]
`
`_
`References Clted
`Us. PATENT DOCUMENTS
`
`Chen, H.J., et al., “A Scalable Video—011—Dei1iand Service
`for the Provision of VCR—Like Functions”, IEEE Proceed-
`ings of the International Conference on Multimedia Com-
`puting and S_}vs[ems7 Washington, DC, 65-72, (May 15-18,
`1995).
`Primary Examiner—Frank J. Asta
`Assistant ExaminerTJaS0n
`Cardong
`Attorney, Agent,
`or
`Firm—Schewgman,
`Woesnner & Kluth, P.A.
`_
`ABSTRACT
`[37]
`A method for displaying streamed digital video data on a
`client computer. The client computer is configured to receive
`the streamed digital video data from a server computer via
`a computer network. The streamed digital video data is
`transmitted from the server computer to the client computer
`as a stream of video frames. The method includes receiving
`a first plurality of video frames at the client computer. The
`plurality of video frames represents a subset of the stream of
`video frames. The stream of video frames comprises inde-
`pendent playable video frames and dependent playable
`/
`.d
`f
`h
`h d fu h
`.
`1 d
`d.
`1
`.
`h
`395/200
`vi eo rames. T e. met o
`rt er incu es.
`isp ayingt e
`348/7
`first plurality of video frames on a video display terminal
`N 370/17
`associated with the client computer. There is further
`395/650
`included issuing a rewind command from the client com-
`370/94.2
`puter to the server. The rewind command causes a second
`. 395/200.1
`plurality of video frames of the stream of video frames
`370/604
`different from the first plurality of video frames to be
`370/604
`Z Streamed from the server computer to the client computer.
`N 370/7'9
`The second plurality of video frames has been streamed at
`.. 370/84
`19315‘ 011“ to the C116“ °°mP“““~r~
`370/68.1
`........................ .. 395/806
`
`Liindberg,
`
`28 Claims, 8 Drawing Sheets
`
`.............................. .. 364/513
`6/1990 Isle et al.
`4,931,950
`---- --
`-- 370/50
`9/4991 G0]?/Stflnl
`5,050,151
`641992 B9991 9‘ 31-
`--
`395/154
`591199474
`gemjl ,et a1'1 “
`5374758
`’
`“Sum et a ‘
`5311454
`8/1994 Gelman et al.
`5,341,474
`51,4995 Hooper et al.
`5414 455
`7/1995 Chnnonto, Jr" et al.
`5,434,848
`5:455:910 10/1995 Johnson ot o1:
`5,481,542
`1/1996 Logston et al.
`5,490,252
`2/1996 Macera et al.
`5,504,744
`4/1996 Adams et a1~
`5519701
`5':1996 C°1m‘mt'°t a1‘ "
`ghcndett ‘:11.
`7’,1996 B33553: eteafi
`10/1996 Davis .......... ..
`11/1996 Bales et al.
`4/1997 Palmer et al.
`
`
`
`"
`
`5’537’408
`5:566:175
`5,574,724
`5,623,690
`
`_
`
`ENOODER
`
`I06
`
`WE)
`100
`
`/
`
`I02
`
`
`
`12345«
`148 RETRANSMISSION
`aurrzn
`
`
`SERVER
`
`\
`
`\
`CLIENT P\.AV—0UT
`BUFFER
`
`
`J
`/
`
`A
`
`RPX Exhibit 1042
`RPX Exhibit 1042
`RPX v. DAE
`RPX V. DAE
`
`

`
`U.S. Patent
`
`Jan. 11,2000
`
`Sheet 1 of8
`
`6,014,706
`
`110
`
`
`
`ENCODER
`
`102
`
`SERVER
`
`1 18 RETRAN
`
`SMISSION
`
`
`
`
`
`
`BU
`
`FFER
`
`CLIENT
`
`122
`
`RENDERER
`
`FIG. 1A
`
`

`
`U.S. Patent
`
`Jan. 11,2000
`
`Sheet 2 of 8
`
`6,014,706
`
`
`
`m:.9...
`
`+9
`
`

`
`P&U
`
`Sheet 3 of 8
`
`6,014,706
`
`
`
`I
`
`O N
`
`tH..&NmaHn_.............................................-LwAa8m
`
`._
`
`
`»mw.vm_2HH__
`_«mmH__0_wonanMH.<~_w__m__~_m_._mommmooEomo_z
`8NI_EHJ__
`
`_
`
`__H__H
`
`
`

`
`aP3U
`
`6
`
`M7,4m,
`
`Mcom
`
`
`
`
`
`F/\|\/[I/\.|I.\
`
`
`
`(I/\|I\mEconSymonA38»EnNon
`
`
`Mo.nmomo_nmomW...V$95:$95:
`
`5Rzo_mm_mn_:oon._.__.._
`
`M.o_.._
`
`
`

`
`tHEtaP5U
`
`Jan. 11, 2000
`
`Sheet 5 of 8
`
`607,410’6
`
`
`
`zggg@@@m@@@2
`
`
`
`¢N¢um.‘ON.‘m30?3.‘NT‘03.mo...mo...3...No.»//00¢
`
`¢.9...
`
`sagggEgg2
`m3m9.1:.N38.»mm;mm?fiemm.‘\\on¢
`
`
`

`
`U.S. Patent
`
`Jan. 11,2000
`
`Sheet 6 of 8
`
`6,014,706
`
`® 500
`
`CLIENT SENDS COMMAND
`AND TIME PARAMETER
`
`502
`
`SERVER ASCERTAINS FIRST
`DATA PACKET TO SEND
`
`504
`
`SERVER AND CLIENT
`FLUSH BUFFERS
`
`SERVER COMMUNICATES TO
`CLIENT FIRST PACKET
`SEQUENCE NUMBER
`
`505
`
`508
`
`SERVER STREAMS PACKETS
`To CLIENT
`
`510
`
`CLIENT DISPLAYS
`STREAMED DATA PACKETS
`
`512
`
`@ 514
`
`FIG. 5
`
`

`
`U.S. Patent
`
`Jan. 11,2000
`
`Sheet 7 of 8
`
`6,014,706
`
`530
`
`504
`
`
`
`
`SERVER SEEKS BACKWARD/FORWARD
`FOR SEEKABLE FRAME lMMEDlATELY
`NEXT TO FRAME ASSOCIATED
`WITH TIME PARAMETER OF
`STEP 502
`
`
` 532
`
`
`
`
`
`
`DESIGNATE SEEKABLE FRAME
`OF STEP 532 FIRST FRAME
`TO SEND TO CLIENT
`
` 534
`
`
`
` SERVER WAITS FOR NEXT
`
`SEEKABLE FRAME FROM
`ENCODER
`
`
`
`
`
` DESIGNATE SEEKABLE FRAME
`
` 554
`OF STEP 552 FIRST FRAME
`TO SEND TO CLIENT
`
`552
`
`
`
` FIG. 7
`
`

`
`U.S. Patent
`
`Jan. 11,2000
`
`Sheet 8 of 8
`
`6,014,706
`
`800
`
`
`
`
`SERVER SEEKS BACK IN FAST FORWARD
`STREAM FOR FIRST SEEKABLE FRAME
`STARTING FROM FRAME WHOSE TIME
`STAMP MOST CLOSELY CORRESPONDS TO
`TIME STAMP OF STEP 502
`
`
`
`
`
`802
`
`804
`
`
`
`
`
`
`
`DESIGNATE SEEKABLE FRAME
`OF STEP 802 FIRST FRAME
`TO SEND TO CLIENT
`
`
`
`902
`
`
`
`
`
`
`SERVER SEEKS BACK IN PLAY
`STREAM FOR FIRST SEEKABLE FRAME
`
`
`STARTING FROM FRAME WHOSE TIME
`STAMP MOST CLOSELY CORRESPONDS TO
`TIME STAMP OF STEP 502
`
` DESIGNATE SEEKABLE FRAME
`
` 904
`OF STEP 902 FIRST FRAME
`TO SEND TO CLIENT
`
` FIG. 9
`
`

`
`6,014,706
`
`1
`METHODS AND APPARATUS FOR
`IMPLEMENTING CONTROL FUNCTIONS IN
`A STREAMED VIDEO DISPLAY SYSTEM
`
`This application claims priority under 35 U.S.C 119 (e)
`of a provisional application entitled VCR LIKE FUNC-
`TIONS FOR RENDERING VIDEO ON DEMAND (VOD)
`filed Jan. 30, 1997 by inventors Anthony W. Cannon, Anders
`E. Klemets, Hemanth S. Ravi, and David del Val
`(Application No. 60/036,661) and a provisional application
`entitled “METHODS AND APPARATUS FOR AUTODE-
`TECTING PROTOCOLS IN A COMPUTER NETWORK”
`
`(Our Ref. No. VXTMP002+) filed Jan. 30, 1997 by inven-
`tors Anthony W. Cannon, Anders E. Klemets, Hemanth S.
`Ravi, and David del Val (Application No. 60/036,662).
`CROSS REFERENCE TO RELATED
`APPLICATIONS
`
`This application is related to co-pending U.S. patent
`application Ser. No. 08/818,805, entitled “Method and
`Apparatus for Implementing Motion Detection in Video
`Compression,”U.S. patent application Ser. No. 08/819,507,
`entitled “Digital Video Signal Encoder and Encoding
`Method,” U.S. patent application Ser. No. 08/818,804,
`entitled “Production of a Video Stream with Synchronized
`Annotations over a Computer Network,” U.S. patent appli-
`cation Ser. No. 08/818,769, entitled “Methods and Appara-
`tus for Automatically Detecting Protocols in a Computer
`Network,” U.S. patent application Ser. No. 08/818,127,
`entitled “Dynamic Bandwidth Selection for Efficient Trans-
`mission of Multimedia Streams in a Computer Network,”
`U.S. patent application Ser. No. 08/819,585, entitled
`“Streaming and Displaying of a Video Stream with Syn-
`chronized Annotations over a Computer Network,” U.S.
`patent application Ser. No. 08/818,644, allowed on Jan. 20,
`1999, entitled “Selective Retransmission for Efficient and
`Reliable Streaming of Multimedia Packets in a Computer
`Network,” U.S. patent application Ser. No. 08/819,579,
`entitled “Method and Apparatus for Table-Based Compres-
`sion with Embedded Coding,” U.S. patent application Ser.
`No. 08/819,587, entitled “Method and Apparatus for Imple-
`menting Motion Estimation in Video Compression,” all filed
`on Mar. 14, 1997, U.S. patent application Ser. No. 08/822,
`156, entitled “Method and Apparatus for Communication
`Media Commands and Data Using the HTTP Protocol,” filed
`on Mar. 17, 1997, U.S. patent application Ser. No. 08/818,
`826, filed on Mar. 14, 1997 and allowed on Nov. 23, 1998,
`entitled “Conditional Replenishment Mechanism for Digital
`Video Signal Encoding,” U.S. patent application Ser. No.
`08/623,299, filed Mar. 28, 1996, U.S. patent application Ser.
`No. 08/625,650, filed Mar. 29, 1996, and U.S. patent appli-
`cation Ser. No. 08/714,447, filed Sep. 16, 1996, which are all
`incorporated herein by reference in their entirety for all
`purposes.
`
`BACKGROUND OF THE INVENTION
`
`The present invention rclatcs to improved techniques for
`displaying video images transmitted over a computer net-
`work. More particularly,
`the present invention relates to
`improved methods and apparatus for implementing control
`features, such as play, rewind, fast forward, pause, stop,
`record, and the like, on a real-time video stream and/or live
`video stream delivered via a computer network from server
`computers to client computers.
`It is well known that digital video data may be manipu-
`lated and rendered using computers. In a computer network,
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`e.g., a client-server computer network, one or more coni-
`puters may be employed to receive the analog video data
`(e.g., from a video camera), encode that analog video data to
`a suitable digital format, and store the digital video data file.
`Using a computer coupled to the network, a user may, at a
`subsequent time, request the pre-stored digital video data file
`for display on a video display associated with the clicnt
`computer.
`As computers become more pervasive in the workplace
`and in the home,
`the demand for digital video services
`correspondingly increases. By way of example, it has been
`recognized that it is possible to employ networked comput-
`ers as a mass communication medium whereby a pre-stored
`digital video file may be transmitted from a server to one or
`more client computers to permit the client computers to
`display the images after the file is received. This technology
`may be employed to, for example, deliver movie or training
`video clips from a central server to one or more client
`computers for display.
`In the above example, it is typically necessary for the
`client computer to receive the entire prc-storcd digital video
`file prior to rendering the images. Real-time video
`streaming, on the other hand, refers to the situation wherein
`the client computer renders the images while they are
`streamed from the server computer. In some applications,
`real-time video streaming is favored since it permits the user
`to begin viewing video frames shortly after requesting the
`video file instead of having to wait until the entire pre-stored
`file is downloaded from the server computer.
`It has been found, however, that real-time video streaming
`is diflicult to implement on heterogeneous, lossy networks
`such as corporate intranets or the Internet, i.e., the well-
`known international computer network that links, among
`others, various military, governmental, educational,
`nonprofit, industrial and financial institutions, commercial
`enterprises, and individuals. This is because real-time digital
`video applications, as are all digital video applications, are
`resource-intensive to implement. Even with compression,
`the transmission of quality video clips (i.e.,
`those with
`acceptable frame rate and frame quality) places a heavy
`bandwidth burden on the computer network. For that reason,
`real-time video streaming has traditionally been imple-
`mented on proprietary and expensive networks that are
`capable of supporting a high bit rate (e.g., private high-speed
`local area networks (LAN) or dedicated data links).
`Furthermore, real-time video data is time-sensitive, i.e.,
`the data packets containing the real-time video data must be
`received in a timely manner in the proper sequence for
`acceptable display. In bandwidth limited networks, e.g.,
`corporate intranets which support a high number of users or
`heterogeneous, lossy public networks such as the aforemen-
`tioned Internet, the time-sensitive nature of real-time digital
`video data poses special challenges. There is, for example,
`less time to rctransmit a lost data packet because if the time
`for displaying a given data packet at the client computer has
`passed, there is little use for that data packet if and when it
`arrives.
`
`It has also been found that real-time digital video stream-
`ing poses complex frame synchronization issues. Since the
`video frames to be displayed are not stored with the client
`computer, there is no pre-stored file on which to perform
`control features such as rewind, fast forward, play, and
`pause. Typically, the video frames necessary for performing
`these functions are requested from the server computer
`itself. Responsive to the control commands,
`the video
`frames necessary for performing the requested control fea-
`
`

`
`6,014,706
`
`3
`ture are then streamed to the client computer, typically over
`the same data connection to minimize the latency associated
`with opening another data connection. As can be appreciated
`by those skilled, complications can arise while switching
`among different groups of video frames, some of which may
`be waiting to be sent at the server, waiting to be displayed
`at the client, in transit through the network, or lost.
`The complexity involved in implementing control fea-
`tures on real-time video stream is further compounded by
`the requirement of low latency, which is imposed by real-
`time video applications, i.e., the requirement that any delay
`between the time a given video frame is transmitted from the
`server computer and the moment it is rendered at the client
`computer be minimized. Unless these control features are
`properly implemented, undue latency may occur and/or the
`quality of the viewing experience may degrade.
`All
`the challenges discussed above also apply to live
`video streaming. In live video streaming, the video data may
`be digitized in one location, then encoded and transmitted to
`a client computer (via a server) substantially instantaneously
`(with some delay due to the encoding and transmission of
`video frames) for display. Live video and real-time video
`may be thought of as subsets of streamed video since both
`live video frames and real-time video frames are rendered as
`
`they are streamed from the server. Live video rendering,
`however, results in the display of most recently encoded
`video frames whereas real-time video rendering may result
`in displaying past video frames of a currently recorded event
`or even an event that happened and was recorded a long time
`ago. As can be appreciated, live video streaming applica-
`tions are even more sensitive with respect to the data packets
`transmitted via the network. This is because the live event
`being record continues to unfold, and video frames related
`thereto continue to be formed and require to be displayed as
`time goes by.
`Frame synchronization issues pertaining to live video
`streaming are further complicated by the fact that the digital
`video data file at the server is being formed at the same time
`the video frames pertaining thereto are displayed at
`the
`client computer. This is because copies of video frames sent
`to the client computer are also stored in the server in a digital
`video data file for subsequent use. Accordingly, there are
`complexities involved when, for example, the user wishes to
`switch from a live video viewing mode to a rewind mode,
`view past video frames for a few seconds, and fast forward
`to the end of the still growing digital video data file to again
`play live video frames. Because of the complexities
`involved, as well as the bandwidth and latency requirements,
`prior art attempts at implementing control features on live
`video streams have largely been unsatisfactory. While this is
`true for most networks, it is particularly true for the Internet
`wherein the transport network is typically lossy and outside
`the control of the owner of the server and/or the client
`computer, and wherein the bandwidth available is both
`limited and subject to fluctuations.
`In View of the foregoing,
`there are desired improved
`methods and apparatus for implementing control features on
`real-time video streams and/or live video streams transmit-
`ted via a computer network from server computer(s) to client
`computer(s).
`SUMMARY OF THE INVENTION
`
`The invention relates, ir1 one enibodinient, to a method for
`transmitting streamed digital video data from a server. The
`server is configured for coupling to a client computer via a
`computer network. The method includes inputting a first
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`plurality of data packets into a server play-out buffer of the
`server. The first plurality of the data packets contains video
`frames representing the streamed digital video data. An
`output of the server play-out buffer is configured to be
`coupled to a network data connection for transmitting the
`first plurality of the data packets to the client computer.
`The method includes receiving, using a retransmission
`buffer, the first plurality of the data packets from the server
`play-out buffer. An output of the retransmission buffer is
`coupled to the network data connection. The method further
`includes outputting the first plurality of the data packets
`from the server play-out buffer onto the network data
`connection for transmitting the data packets to the client
`computer via the computer network.
`In another embodiment, the invention relates to a method
`for displaying streamed digital video data on a client com-
`puter. The client computer is configured to receive the
`streamed digital video data from a server computer via a
`computer network. The streamed digital video data is trans-
`mitted from the server computer to the client computer as a
`stream of video frames. The method includes receiving a
`first plurality of video frames at the client computer. The
`plurality of video frames represents a subset of the stream of
`video frames. The stream of video frames comprises inde-
`pendent playable video frames and dependent playable
`video frames.
`
`The method further includes displaying the first plurality
`of video frames on a video display terminal associated with
`the client computer. There is further included issuing a
`rewind command from the client computer to the server. The
`rewind command causes a second plurality of video frames
`of the stream of video frames different from the first plurality
`of video frames to be streamed from the server computer to
`the client computer. The second plurality of video frames
`has been streamed at least once to the client computer.
`In yet another embodiment, the invention relates to a
`computer readable medium containing computer-readable
`instructions for implementing control features configured
`for controlling a display of streamed digital video data at a
`client computer as the client computer transitions from a first
`control mode to a second control mode. The client computer
`is configured for coupling to a server computer via a
`computer network. The streamed digital video data is trans-
`mitted from the server computer to the client computer as a
`stream of video frames comprising independent video
`frames and dependent video frames. The stream of video
`frames is encapsulated in a plurality of data packets each
`having a unique packet sequence number and a unique
`timestamp. The computer readable instructions include com-
`puter readable instructions for sending a control command
`and a time parameter from the client computer to the server
`computer. The control command represents a command to
`the server to transmit a first plurality of video frames of the
`stream of video frames to the client computer in accordance
`with the second control mode.
`
`The computer readable instructions also include computer
`readable instructions for ascertaining, responsive to the
`control command and using the server computer, a first
`independent video frame to transmit to the client computer.
`The first independent video frame is selected responsive to
`the time parameter. The computer readable instructions
`further include computer readable instructions for transmit-
`ting from the server computer to the client computer a packet
`sequence number associated with the first independent video
`frame. The computer readable instructions further include
`computer readable instructions for streaming the first plu-
`
`

`
`6,014,706
`
`5
`rality of video frames of the stream of video frames starting
`from the first independent video frame from the server
`computer to the client computer to permit the first plurality
`of video frames to be displayed at the client computer.
`These and other features of the present invention will be
`described in more detail below in the detailed description of
`the invention and in conjunction with the following figures.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1A depicts in accordance with one embodiment of
`the present
`invention a computer network 1 suitable for
`implementing the inventive streamed video display tech-
`nique.
`FIG. 1B illustrates an embodiment of the invention
`wherein an encoder furnishes video data from a video source
`
`to multiple servers.
`FIG. 2 is a block diagram of an exemplar digital
`computer, representing a computer suitable for implement-
`ing either the server computer or the client computer of the
`present invention.
`FIG. 3 illustrates, in accordance with one embodiment of
`the invention, a VXF-formatted file, representing a file
`suitable for streaming encoded video data from the source,
`e.g., a video camera, to the server and the client application.
`FIG. 4 depicts, in accordance with one embodiment of the
`invention,
`two video streams: a play stream and a fast-
`forward stream to facilitate discussion.
`
`FIG. 5 illustrates, in accordance with one embodiment of
`the invention, a simplified flowchart illustrating the imple-
`mentation of certain control features such as play and fast
`forward.
`
`FIG. 6 illustrates the steps involved, in one embodiment
`of the present invention, to implement the step for ascer-
`taining the first data packet for sending for the real-time play
`mode.
`
`FIG. 7 illustrates the steps involved in implementing the
`step for ascertaining the first data packet for sending for the
`live play mode, in accordance with one embodiment of the
`present invention.
`FIG. 8 illustrates the steps involved, in one embodiment
`of the present invention, to implement the step for ascer-
`taining the first data packet for sending when transitioning
`from the real-time play mode (or other modes except live
`play) to the fast forward mode.
`FIG. 9 illustrates the steps involved, in one embodiment
`of the present invention, to implement the step for ascer-
`taining the first data packet for sending when transitioning
`from the fast forward mode to the real-time play mode.
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`The present invention will now be described in detail with
`reference to a few preferred embodiments thereof as illus-
`trated in the accompanying drawings.
`In the following
`description, numerous specific details are set forth in order
`to provide a thorough understanding of the present inven-
`tion. It will be apparent, however, to one skilled in the art,
`that the present invention may be practiced without some or
`all of these specific details. In other instances, well known
`process steps have not been described in detail in order to
`not unnecessarily obscure the present invention.
`In accordance with one aspect of the present invention,
`there are provided improved techniques for streaming real-
`time video data from the server computer to the client
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`computer for display. In accordance with this aspect of the
`present invention, digital data pertaining to the real-time
`video stream is transmitted from the server computer to the
`client computer as data packets in either one of two streams:
`a play stream and a fast forward stream. As will be explored
`in great details herein, the use of a separate fast forward
`stream of video frames advantageously permits the fast
`forward feature to be implemented with lower bandwidth
`requirements and improved display quality. As the user
`switches from the play mode to the fast forward mode and
`vice versa, data packets containing video data in either the
`play stream or the fast forward stream are transmitted from
`the server computer to the client computer for display.
`The play stream includes frames which, when played at
`the designated frame rate by the renderer application in the
`client computer (about 10 frames per second in one
`example), maximizes quality while minimizing the band-
`width requirement. This normal play mode represents the
`mode that the user normally employs to view the video
`frames (e.g., watching a movie or a video clip). It should be
`understood that normal play is typically accompanied by
`sound (typically furnished to the client via a data connection
`different from the one used to transmit video), and perhaps
`other applets. The fast forward stream includes frames
`which, when played at the designated frame rate by the
`renderer application in the client computer, provides the user
`with a fast forward effect while advantageously keeping the
`display quality higher and the bit rate lower than would have
`been possible had the play stream been employed for fast
`forwarding. This aspect of the invention is discussed in
`detail later herein. By way of example,
`the fast forward
`stream may be played at 5 frames per second, which displays
`frame at five times the play speed.
`In accordance with another aspect of the present
`invention, the data packets traverse at least two buffers prior
`to arriving at the render application in the client computer
`for display: a retransmit buffer at the server computer and a
`client play-out buffer at
`the client computer.
`In one
`embodiment, a server play-out buffer is provided at the
`server as well to facilitate efficient data packet transmission.
`The use of the client play-o11t buffer and/or the server
`play-out buffer advantageously maintain(s) small supply of
`data packets available at the client ready for display, thereby
`minimizing impacts on the viewing experience due to tem-
`porary fluctuations in the network’s available bandwidth and
`the temporary disruptions to the transmission of data packets
`through the computer network, e.g., due to temporary net-
`work congestion.
`In accordance with yet another aspect of the present
`invention, there are provided novel and efficient implemen-
`tations of control features, such as play, rewind, fast forward,
`pause, stop, record, and/or the like. In one embodiment, the
`control features are implemented to maximize the user’s
`familiarity with common video cassette recorder (VCR)
`control features. Using the control features of the present
`invention, the user is able to control, in a user-friendly and
`intuitive manner, the transmission and display of the video
`frames pertaining to a
`real-time video stream or,
`advantageously, even a live video stream at
`the client
`computer. This aspect of the invention is particularly advan-
`tageous since the user may, using the inventive technique,
`flexibly control
`the display of streamed real-time video
`frames without being unduly constrained by the real-time
`nature of the data or the inherent time-sensitive nature of the
`transmitted real-time data packets. In one embodiment, the
`transition between the different control modes, e.g., from
`play to fast forward, from rewind to play, and the like, are
`
`

`
`6,014,706
`
`7
`made efficient and synchronized, thereby maximizing the
`display quality of video frames.
`To further facilitate discussion of the foregoing, FIG. 1A
`depicts in accordance with one embodiment of the present
`invention a computer network 100, representing a computer
`network suitable for implementing the inventive real-time
`video display technique. Computer network 100 may, for
`example, represent a portion of the aforementioned Internet
`or corporate intranet.
`In FIG. 1A, computer network 100 includes a server
`computer 102 and a client computer 104. There is also
`shown a video camera 106. In the present example, video
`camera 106 represents the device for recording video data.
`The recorded video data may then be digitized and encoded
`by encoder 110 into the proper digital data format for
`transmission to either server 102 or memory 115 for storage.
`Encoder 110 represents, in one embodiment of the invention,
`the video source from which data may be streamed to the
`client via the server. Encoder 110, which may be imple-
`mented in hardware or software, may also perform com-
`pression on the raw digital video data to improve storage and
`transmission efliciency. One suitable encoding scheme is
`disclosed in a commonly assigned co—pending patent U.S.
`patent application Ser. No. 08/623,299, filed Mar. 28, 1996,
`incorporated herein by reference for all purposes.
`Data packets outputted by encoder 110 (or retrieved from
`memory 115) are then buffered within server play-out buffer
`112 for transmission to client computer 104. Although
`memory 115 is depicted as nonvolatile disk memory in FIG.
`1A, it may represent any suitable type of memory device,
`including volatile semiconductor memory. As will be dis-
`cussed earlier, the file of data packets stored within memory
`115 may be employed by client computer 104 to facilitate
`rewind, fast forward, and other control modes.
`As each data packet or group of data packets is outputted
`from server play-out buffer 112 onto data connection 114 for
`transmission (e.g., responsive to a command from client
`computer 104 which is received by server computer 102 via
`a control connection 116), the same data packet or group of
`data packets is input into retransmit buffer 118 at the server.
`Control connection 116 and data connection 114 have been
`discussed in detail in a commonly assigned co—pending U.S.
`patent application Ser. No. 08/819,586, filed on Mar. 14,
`1997, entitled “Methods and Apparatus for Implementing
`Control Functions in a Streamed Video Display System.”
`Retransmit buffer 118 represents in one embodiment a
`first-in-first-out (FIFO) buffer which retains for a limited
`time a data packet transmitted from server play-out buffer
`112. As new data packets are input into retransmit buffer
`118, old data packets (starting with the oldest data packets)
`are discarded from transmit buffer 118. The use of the
`
`retransmit buffer advantageously facilitates the rapid
`retransmission of a data packet therein if that data packet is
`requested by client computer 104 for retransmission (e.g., in
`the event a data packet is detected to be missing by client
`computer 104). Retransmit bufier 118 is preferably sized
`such that a data packet stays in retransmit buffer 118 slightly
`longer than the average latency period between the time a
`data packet is transmitted from server 102 and when it is
`displayed at client computer 104. There is no need, in one
`embodiment of the invention, for the retransmit buffer 118
`to be much larger than mentioned since, due to the time-
`sensitive nature of real-time video and/or live video, it is
`typically not usefiil to keep a data packet therein long past
`the time it is required at client computer 104 for display.
`As data packets are received by client computer 104 from
`data connection 114, they are inputted into client play-out
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`buffer 120 to be displayed by renderer application 122.
`Client play-out buffer 120 may represent,
`in one
`embodiment, a FIFO buffer. Client play-out buffer 120
`and/or server play-out buffer 112 are typically sized appro-
`priately to minimize latency while taking into account the
`reliability and stability of network 100 through which data
`connection 114 traverses. If the network is fairly reliable and
`its bandwidth is fairly stable, client play-out buffer 120
`and/or server play-out buffer 112 may be relatively small to
`minimize the latency between the time a data packet is
`outputted by encoder 110 and the time it is displayed at the
`client computer. On the other hand, a larger client play-out
`buffer 120 and/or server play-out buffer 112 may be able to
`more effectively insulate renderer application 122 from
`temporary bandwidth capacity fiuctuations and disruptions
`in the transmission of data packets from server computer
`102.
`
`Client play-out buffer 120 may be, but is not required to
`be, equal in size to retransmit buifer 118 since retransmis-
`sion of a data packet from retransmit buffer 118

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket