`Case 1:20-cv-01202—UNA Document 1-3 Filed 09/09/20 Page 1 of 20 PageID #: 86
`
`
`
`
`
`EXHIBIT 3
`
`EXHIBIT 3
`
`
`
`US010412141B2
`
`( 12 ) United States Patent
`Osborne
`
`( 10 ) Patent No . : US 10 , 412 , 141 B2
`( 45 ) Date of Patent :
`Sep . 10 , 2019
`
`( 54 ) SYSTEMS AND METHODS FOR SEEKING
`WITHIN MULTIMEDIA CONTENT DURING
`STREAMING PLAYBACK
`( 71 ) Applicant : DIVX , LLC , San Diego , CA ( US )
`( 72 ) Inventor : Roland Osborne , San Francisco , CA
`( US )
`( 73 ) Assignee : DIVX , LLC , San Diego , CA ( US )
`Subject to any disclaimer , the term of this
`( * ) Notice :
`patent is extended or adjusted under 35
`U . S . C . 154 ( b ) by 0 days .
`( 21 ) Appl . No . : 16 / 136 , 149
`Sep . 19 , 2018
`( 22 ) Filed :
`Prior Publication Data
`( 65 )
`US 2019 / 0020704 A1
`Jan . 17 , 2019
`
`Related U . S . Application Data
`( 63 ) Continuation of application No . 15 / 682 , 379 , filed on
`Aug . 21 , 2017 , which is a continuation of application
`( Continued )
`
`( 51 ) Int . Ci .
`( 2019 . 01 )
`GOOF 16 / 71
`H04L 29 / 06
`( 2006 . 01 )
`( Continued )
`( 52 ) U . S . CI .
`CPC . . . . . . . . . . . H04L 65 / 604 ( 2013 . 01 ) ; G06F 16 / 71
`( 2019 . 01 ) ; G06F 16 / 739 ( 2019 . 01 ) ;
`( Continued )
`( 58 ) Field of Classification Search
`CPC . . . . . . . . . . . GO6F 17 / 30 ; HO4L 65 / 40 ; HO4N 5 / 76
`( Continued )
`
`( 56 )
`
`CA
`CN
`
`References Cited
`U . S . PATENT DOCUMENTS
`5 / 2004 Lango et al .
`6 , 742 , 082 B1
`7 , 664 , 872 B2
`2 / 2010 Osborne et al .
`( Continued )
`FOREIGN PATENT DOCUMENTS
`2306524 AL 9 / 2001
`1575595 A
`2 / 2005
`( Continued )
`
`OTHER PUBLICATIONS
`Adobe Development Center : Flash video learning guide , printed
`Jan . 13 , 2009 from http : / / www . adobe . com / devnet / flash / articles /
`video guide _ 02 . html , 5 pgs .
`( Continued )
`Primary Examiner — Glenford J Madamba
`( 74 ) Attorney , Agent , or Firm — KPPB LLP
`ABSTRACT
`( 57 )
`A receiver driven approach for playback of remote content
`is described . One embodiment includes obtaining informa
`tion concerning the content of the media file from the remote
`server , identifying a starting location within the media
`sequence , identifying byte ranges of the media file corre
`sponding to media required to play the media sequence from
`the starting location , requesting the byte ranges required to
`play the media sequence from the starting location , buffering
`received bytes of information pending commencement of
`playback , playing back the buffered bytes of information ,
`receiving a user instruction , identifying byte ranges of the
`media file corresponding to media required to play the media
`sequence in accordance with the user instruction , flushing
`previous byte range requests , and requesting the byte ranges
`required to play the media in accordance with the user
`instruction .
`
`30 Claims , 9 Drawing Sheets
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 2 of 20 PageID #: 87
`
`Stari
`
`Obtar index
`
`Determine start iocator
`
`Ootzin data
`
`46
`
`Determine required media
`
`Render multimedia
`
`NO
`
`NO
`
`: > - - - -
`mm
`
`- 50
`
`<
`
`User instruction ?
`
`Yes
`
`Stop playing ?
`
`Yes
`End
`
`
`
`US 10 , 412 , 141 B2
`Page 2
`
`( 51 )
`
`( 52 )
`
`( 56 )
`
`( 2019 . 01 )
`( 2006 . 01 )
`( 2006 . 01 )
`( 2011 . 01 )
`( 2011 . 01 )
`( 2011 . 01 )
`( 2011 . 01 )
`( 2011 . 01 )
`
`Related U . S . Application Data
`No . 14 / 632 , 670 , filed on Feb . 26 , 2015 , now Pat . No .
`9 , 794 , 318 , which is a continuation of application No .
`12 / 982 , 413 , filed on Dec . 30 , 2010 , now Pat . No .
`8 , 977 , 768 , which is a continuation of application No .
`11 / 970 , 493 , filed on Jan . 7 , 2008 , now Pat . No .
`7 , 886 , 069 .
`( 60 ) Provisional application No . 60 / 883 , 659 , filed on Jan .
`5 , 2007 .
`Int . CI .
`G06F 16 / 738
`HO4N 5 / 76
`H04N 5 / 783
`HO4N 7 / 173
`H04N 21 / 234
`H04N 21 / 44
`HO4N 21 / 472
`H04N 21 / 6587
`U . S . CI .
`CPC . . . . . . H04L 65 / 4084 ( 2013 . 01 ) ; H04L 65 / 4092
`( 2013 . 01 ) ; H04N 5 / 76 ( 2013 . 01 ) ; H04N 5 / 783
`( 2013 . 01 ) ; H04N 7717318 ( 2013 . 01 ) ; H04N
`21 / 23406 ( 2013 . 01 ) ; H04N 21 / 44004
`( 2013 . 01 ) ; H04N 21 / 472 ( 2013 . 01 ) ; H04N
`21 / 6587 ( 2013 . 01 )
`( 58 ) Field of Classification Search
`. . . . . . . . . . . . . . . . . 709 / 100
`USPC . . . . . . .
`See application file for complete search history .
`References Cited
`U . S . PATENT DOCUMENTS
`7 , 734 , 806 B26 / 2010 Park
`7 , 886 , 069 B2
`2 / 2011 Osborne
`7 , 895 , 311 B1
`2 / 2011 Juenger
`8 , 731 , 369 B2
`5 / 2014 Li et al .
`8 , 977 , 768 B2
`3 / 2015 Osborne
`9 , 794 , 318 B2
`10 / 2017 Osborne
`2002 / 0161797 A1 *
`10 / 2002 Gallo
`. . . . . . . . . . . . GO6F 17 / 30905
`715 / 203
`2003 / 0077071 AL
`4 / 2003 Lin et al .
`9 / 2003 Aggarwal . . . . . . . . . . . . . . . G06T 9 / 004
`2003 / 0169815 A1 *
`375 / 240 . 12
`2005 / 0102371 Al
`5 / 2005 Aksu
`9 / 2005 Zoest . . . . . . . . . . . . . . . G11B 20 / 00086
`2005 / 0207442 A1 *
`370 / 465
`2006 / 0037057 A
`2 / 2006 Xu
`2006 / 0059223 AL
`3 / 2006 Klemets et al .
`2006 / 0093318 Al
`5 / 2006 Cohen et al .
`2006 / 0129909 Al 6 / 2006 Butt et al .
`2006 / 0161635 A1 7 / 2006 Lamkin et al .
`2006 / 0168291 A1
`7 / 2006 Van Zoest et al .
`2006 / 0174021 A1
`8 / 2006 Osborne et al .
`2006 / 0174026 A1
`8 / 2006 Robinson et al .
`2006 / 0195884 Al 8 / 2006 Van Zoest et al .
`2006 / 0200744 Al
`9 / 2006 Bourke et al .
`2006 / 0294212 A
`12 / 2006 Kikkawa et al .
`2007 / 0083663 A1 4 / 2007 Tanabe et al .
`2007 / 0106863 A1
`5 / 2007 Bonwick et al .
`2007 / 0157267 A1
`7 / 2007 Lopez - Estrada
`2007 / 0162568 A1 *
`7 / 2007 Gupta . .
`. . . . .
`
`G06Q 30 / 0242
`709 / 219
`
`9 / 2007 Shaver et al .
`2007 / 0209005 Al
`9 / 2007 Loyer
`2007 / 0220118 A1
`1 / 2008 Wu et al .
`2008 / 0022005 Al
`3 / 2008 Moriya et al .
`2008 / 0071838 A1
`4 / 2008 Bodin et al .
`2008 / 0082576 Al
`7 / 2008 Osborne
`2008 / 0168133 Al
`7 / 2008 Epstein et al .
`2008 / 0177793 A1
`2009 / 0067367 A1
`3 / 2009 Buracchini et al .
`8 / 2010 Harrang et al .
`2010 / 0198943 A1
`2011 / 0099225 Al
`4 / 2011 Osborne
`2015 / 0172351 Al
`6 / 2015 Osborne
`12 / 2017 Osborne
`2017 / 0353520 Al
`FOREIGN PATENT DOCUMENTS
`1581971 A
`2 / 2005
`1596403 A
`3 / 2005
`1801929 A
`7 / 2006
`101636726 A
`1 / 2010
`101636726 B
`10 / 2013
`103559165 A
`2 / 2014
`2 / 2014
`103561278 A
`103559165 B
`8 / 2016
`103561278 B
`4 / 2017
`1534013 A1
`5 / 2005
`2122482 A1 11 / 2009
`2122482 B1 11 / 2018
`3467666 A1
`4 / 2019
`2003504984
`2 / 2003
`2003111048
`4 / 2003
`2003111048 A
`4 / 2003
`2004295568
`10 / 2004
`2004362099
`12 / 2004
`2005149029
`6 / 2005
`2005518726
`6 / 2005
`2005341334 A
`12 / 2005
`2006074511 A
`3 / 2006
`2010516123 A
`5 / 2010
`2001006788 A1
`1 / 2001
`2003046750
`6 / 2003
`WO - 03046750 A1 *
`6 / 2003
`2003071800 A1 8 / 2003
`2003088665 A
`10 / 2003
`2005057906 A2
`6 / 2005
`2006045334 AL
`5 / 2006
`2008086313 Al 7 / 2008
`
`CN
`CN
`CN
`CN
`CN
`CN
`CN
`CN
`CN
`EP
`EP
`EP
`EP
`
`E e e e e e eg
`
`JP
`WO
`WO
`WO
`WO
`WO
`Wo
`WO
`WO
`
`. . . . . . . H04L 29 / 06027
`
`OTHER PUBLICATIONS
`International Preliminary Report on Patentability for International
`Application No . PCT / US2008 / 050440 , Report Completed Aug . 7 ,
`2009 , dated Aug . 11 , 2009 , 8 pgs .
`International Search Report for International Application No . PCT /
`US2008 / 050440 , International Filing Date Jan . 7 , 2008 , Search
`completed Apr . 23 , 2008 , dated May 16 , 2008 , 2 pgs .
`RedOrbit News , New DivX Web Player Hits 1 Milling Downloads
`in One Week , printed Jan . 13 , 2009 from http : / / www . redorbit . com
`modules / news / tools . php ? tool = print & id = 421307 , 2 pgs .
`Vuze HD Network , printed Jun . 1 , 2009 from http : / / www . vuze . com /
`Index . html , 1 pg .
`Written Opinion of international Application No . PCT / US2008 /
`050440 ; International filed Jan . 7 , 2008 , Opinion completed Apr . 23 ,
`2008 , dated May 16 , 2008 , 9 pgs .
`Fielding et al . , “ Hypertext Transfer Protocol — HTTP1 . 1 " , Network
`Working Group , RFC 2616 , Jun . 1999 , 114 pgs .
`Extended European Search Report for European Application No .
`18206048 . 3 , Search completed Feb . 8 , 2019 , dated Feb . 21 , 2019 ,
`11 Pgs .
`* cited by examiner
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 3 of 20 PageID #: 88
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 1 of 9
`
`US 10 , 412 , 141 B2
`
`16
`
`* * * * * * * * * * *
`
`* * * * * * * * * * * *
`
`14
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 4 of 20 PageID #: 89
`
`. .
`
`. . . . . . . . .
`
`. . .
`
`. . . . . .
`
`. . . .
`
`- - - - - - - - - - - - - - - - - - - - - - - - - -
`
`- - - - -
`
`Network
`
`26
`
`20
`
`92
`
`Internet
`
`FIG . 1
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 2 of 9
`
`US 10 , 412 , 141 B2
`
`Start
`
`Obtain index
`
`Determine start location
`
`42
`
`44
`
`Obtain data
`
`wwwwwww 46
`
`Determine required media
`
`Render multimedia
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 5 of 20 PageID #: 90
`
`FIG . 2
`
`User instruction ?
`
`Stop playing ?
`
`Yes
`
`End
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 3 of 9
`
`US 10 , 412 , 141 B2
`
`60
`
`Playback Engine
`
`File Parser
`
`66
`
`Download Manager
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 6 of 20 PageID #: 91
`
`FIG . 3
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 4 of 9
`
`US 10 , 412 , 141 B2
`
`DivX Download Manager
`ODManager GetovaSots
`
`QVS Module
`
`DOManagerCreale
`DDManager Close
`
`- - -
`
`ODManagerFileOpen
`DDManagerfieclose
`DOManagerFileFlush
`
`DivX Download File
`
`siwiwuwu . 604 visive
`
`OVS Connection
`
`ettetetteketeeeeeeeeeeeee
`
`Remote File
`
`HTTP Connection
`
`Threach
`
`-
`
`- - - - - - - - - - - - - - - - - - -
`
`ODManagerFileRequestData
`DOManagerFileRead
`DOManagerFileCheck
`
`caloack
`
`- - - -
`
`- - - - - - -
`
`Partial File
`
`Completed Data File
`
`Micve Completed
`- - - - - -
`
`- - - -
`
`Status Fila
`
`Data File
`
`78
`
`- I - - I -
`
`- I - II - I - I -
`
`- I - I - I - - I - - I -
`
`- I -
`
`- I - I - - I - I -
`
`- I -
`
`- I - - I -
`
`- I -
`
`- I - I
`
`I
`
`- - - - - - - - - - - - - - - - - - - - - - -
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 7 of 20 PageID #: 92
`
`Output File Path
`
`Temporary Data Path
`
`FIG . 4
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 5 of 9
`
`US 10 , 412 , 141 B2
`
`Start
`
`W
`
`. . .
`
`Receive byte range
`
`Open connection
`
`Queue portions of byte
`range not already stored
`
`Request next byte
`range ( s ) in queue from
`remote server
`
`Byte range request
`received ?
`
`File download
`complete ?
`
`Yes
`- - - . . . V . .
`
`Close connection
`
`102
`
`FIG . 5
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 8 of 20 PageID #: 93
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 6 of 9
`
`US 10 , 412 , 141 B2
`
`Start
`
`Receive flush request
`
`momenomenad
`
`- 116
`
`Flush request queue
`
`Close connection
`
`Ed
`
`FIG . 6
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 9 of 20 PageID #: 94
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 7 of 9
`
`US 10 , 412 , 141 B2
`
`Start
`
`Receive bytes
`
`Update Status File
`
`Update Data File
`
`File complete ?
`
`Qutput downloaded file
`
`end
`
`FIG . 7
`
`138
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 10 of 20 PageID #: 95
`
`
`
`U . S . Patent
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 8 of 9
`
`US 10 , 412 , 141 B2
`
`Start
`
`Obtain menu information
`and number of media
`sequences
`
`* * * * * *
`
`* * * * * * * * * * 444444
`
`Obtain information
`concerning each media
`seqeunce
`
`
`
`
`
`
`
`
`
`
`
`??? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???
`
`
`
`
`
`
`
`
`
`
`
`
`
`Receive media sequence
`Selection
`
`* * * * * *
`
`yy
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 11 of 20 PageID #: 96
`
`Obtain index to media
`Segeunce
`
`extract data
`
`( End
`
`)
`
`FIG . 8
`
`
`
`atent
`
`Sep . 10 , 2019
`
`Sheet 9 of 9
`
`US 10 , 412 , 141 B2
`
`190
`
`Start
`
`Index Extraction
`
`Data block selection
`
`Download data block
`
`Playback data block
`
`End
`
`FIG . 9
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 12 of 20 PageID #: 97
`
`
`
`US 10 , 412 , 141 B2
`
`SYSTEMS AND METHODS FOR SEEKING
`WITHIN MULTIMEDIA CONTENT DURING
`STREAMING PLAYBACK
`CROSS - REFERENCE TO RELATED
`APPLICATIONS
`
`Browser based players often implement receiver driven
`playback by parsing the video file as it is downloaded
`linearly . When a long clip is started , it is impossible to seek
`or fast - forward to a point in the file that has not already been
`5 downloaded . Samba ( open source software available at
`http : / / us2 . samba . org / samba / ) can be used to give any appli
`cation access to a remote file as if it were a local file . It tries
`to minimize the access latency by pre - caching data from the
`The current application is a continuation of U . S . patent
`application Ser . No . 15 / 682 , 379 , entitled “ Video Distribu
`current file position , which can be randomly set . This may
`tion System Including Progressive Playback ” , filed Aug . 21 , 10 hei
`be insufficient when trying to perform “ trick play ” functions
`2017 , which is a continuation of U . S . patent application Ser .
`( e . g . performing functions such as rewinding , fast forward
`No . 14 / 632 , 670 , entitled “ Video Distribution System Includ
`ing and skipping between scenes that require non - sequential
`ing Progressive Playback ” , filed Feb . 26 , 2015 , which is a
`access of media content ) . The video frames to be delivered
`continuation of U . S . patent application Ser . No . 12 / 982 , 413 ,
`entitled " Video Distribution System Including Progressive 15 15 to the player in these scenarios can be spaced far apart or
`require more complex ordering , greatly diminishing the
`Playback ” , filed Dec . 30 , 2010 and issued as U . S . Pat . No .
`utility of traditional pre - caching methods which are based on
`8 , 977 , 768 on Mar . 10 , 2015 , which is a continuation of U . S .
`assumptions regarding the subsequent video frames to be
`patent application Ser . No . 11 / 970 , 493 , entitled “ Video
`Distribution System Including Progressive Playback ” , filed
`viewed .
`Jan . 7 , 2008 and issued as U . S . Pat . No . 7 , 886 , 069 on Feb . 20
`SUMMARY OF THE INVENTION
`8 , 2011 , which claims priority to U . S . Provisional Applica
`tion Ser . No . 60 / 883 , 659 , entitled " Video Distribution Sys
`Systems and methods are described for performing pro
`tem Including Progressive Playback ” , filed Jan . 5 , 2007 , the
`gressive playback and “ trick play ” functions on partially
`disclosures of which are incorporated herein by reference .
`25 downloaded media files . Many embodiments of the inven
`BACKGROUND
`tion include a receiver or player driven system supporting
`features such as the maintenance at all times of a full
`capacity download stream of only certain required data ,
`The present invention relates generally to playing multi -
`including data in certain byte ranges , the discarding of
`media files over a network and more specifically to the
`progressive playback of multimedia files as they are down - 30 previous requests , and the issuing of new requests for data
`at the highest priority . Additionally , several embodiments of
`loaded over a network .
`Progressive playback is the idea of playing back remote
`the invention include features such as random file access at
`content as it is being downloaded . With this feature a user
`any point in a file , and asynchronous requests , which pro
`can select a remote movie and commence watching it before
`vide users flexibility in the playback of a file . In a number
`it is fully downloaded . Even with a fast Internet connection , 35 of embodiments , the systems and processes support scal
`waiting for a movie to fully download can range from
`ability for implementation on Internet servers that store files
`minutes to hours depending on the size of the media file .
`that can contain multiple titles , titles that include multiple
`With progressive playback a user only has to wait a couple
`audio tracks , and / or titles that include one or more subtitle
`of seconds before playback can begin .
`tracks .
`Current implementations of receiver or player driven 40
`In several embodiments , the ability to provide full fea
`progressive playback , while suitable for the short video clips
`tured progressive playback is due in part to the tight cou
`that are dominant in many current applications , are typically
`pling of the playback engine for the media sequence ( i . e . , the
`limited in the scope and flexibility of the progressive play -
`system that decodes and plays back the encoded media ) with
`back they provide . Players typically download files linearly
`a transport protocol that provides random access to the
`from the beginning to the end . Playback then begins when 45 remote file . Interfacing of the playback engine with the
`the player has buffered enough data to provide a likelihood
`transport protocol via a file parser can reduce latency and
`that the media will play without interruption . The buffering
`enable the client and media server to operate in parallel
`requirement can either be a fixed amount suitable for a large
`improving download efficiency and interactivity . In a num
`percentage of content , or a dynamic amount , where the
`ber of embodiments , the system and processes are config
`player infers how much data is required to play the entire 50 ured for use with files that are formatted to include an index
`content without suffering buffer under - run . Although suit
`to the data within the file and a transport protocol that allows
`able for playback of short video clips , these methods typi -
`for downloading specific byte ranges within a file .
`cally do not support random seeking , trick - play and play
`One embodiment of the method of the invention includes ,
`back of remotely stored longer content such as feature length
`obtaining information concerning the content of the media
`55 file from the remote server , identifying a starting location
`movies .
`Some systems are implemented with a server driven
`within the media sequence , identifying byte ranges of the
`approach . Examples of server driven approaches include the
`media file corresponding to media required to play the media
`systems described in
`U . S . patent application Ser . Nos .
`sequence from the starting location , requesting the byte
`11 / 323 , 044 , 11 / 323 , 062 , 11 / 327 , 543 , and 11 / 322 , 604 , the
`ranges required to play the media sequence from the starting
`disclosure of which is incorporated herein by reference in its 60 location , buffering received bytes of information pending
`entirety . In these systems , the server parses the data file and
`commencement of playback , playing back the buffered bytes
`determines which data to send . Network efficiency and
`of information , receiving a user instruction , identifying byte
`flexibility in playback becomes a much easier task . Standard
`ranges of the media file corresponding to media required to
`HTTP web servers however do not typically provide this
`play the media sequence in accordance with the user instruc
`functionality , and custom web servers providing this func - 65 tion , flushing previous byte range requests , and requesting
`tionality often scale poorly when called upon to deliver
`the byte ranges required to play the media in accordance
`content simultaneously to a large number of players .
`with the user instruction .
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 13 of 20 PageID #: 98
`
`
`
`US 10 , 412 , 141 B2
`
`requested portions of the media file and break at least one of
`A further embodiment of the method of the invention
`the connections in response to the receipt of a predetermined
`includes , maintaining a mask of the portions of the media
`user instruction .
`file that have been downloaded , identifying that at least a
`In still another embodiment of the invention , the client is
`portion of a byte range required to play the media in
`accordance with the user instruction has already been down - 5 configured to store a file map and a data file , the file map
`loaded using the mask , and requesting only the portions of
`contains a mask indicating the portions of the media file that
`byte ranges that have not already been downloaded from the
`have been downloaded , and the data file contains the down
`loaded portions of the media file .
`media server .
`Another embodiment of the method of the invention
`in a yet further embodiment of the invention , the data file
`includes storing downloaded bytes in a data file , and out - 10 is a sparse nie .
`In yet another embodiment of the invention , the media file
`putting the downloaded media file when all bytes of the
`includes a media sequence and an index , and the client
`media file have been downloaded .
`includes a playback engine configured to obtain the index
`In a still further embodiment of the method of the inven
`and determine the portions of the media sequence required
`tion , the data file is a sparse data file .
`15 to comply with user playback instructions , a file parser
`In still another embodiment of the method of the inven
`configured to use the index to map the portions of the media
`tion , the media file contains a plurality of media sequences
`sequence to portions of the media file and a download
`and menu information , and identifying a starting location
`manager configured to communicate with the media server
`within the media sequence further includes displaying menu
`to download portions of the media file .
`A further embodiment again of the invention includes a
`information , receiving a user instruction indicative of the 20
`selection of the media sequence , and receiving a user
`user interface configured to receive user instructions , a
`instruction indicative of a starting location within the media
`storage device configured to store at least one media file , a
`sequence .
`network connection , a download manager configured to
`In a yet further embodiment of the method of the inven -
`asynchronously request at least one byte range of a file from
`tion , the media sequence includes a plurality of interchange - 25 a remotely stored media file via the network connection , a
`able audio tracks , identifying a starting location within the
`playback engine configured to determine portions of a
`media sequence further comprises selecting an audio track ,
`remotely stored media file that must be downloaded in
`and identifying byte ranges of the media file corresponding
`response to user instructions received via the user interface ,
`to media required to play the media sequence from the
`and a file parser configured to translate requests for portions
`starting location further comprises selecting byte ranges that 30 of a remotely stored media file to byte ranges and to provide
`do not include the audio tracks that were not selected .
`the byte ranges to the download manager .
`In yet another embodiment of the method of invention , the
`In another embodiment again of the invention , the down
`media sequence includes a plurality of interchangeable
`load manager is configured to create a status file containing
`subtitle tracks , identifying a starting location within the
`a map of blocks of a media file that have been downloaded ,
`media sequence further comprises selecting a subtitle track , 35 and the download manager is configured to create a data file
`and identifying byte ranges of the media file corresponding
`in which to store blocks of a downloaded media file .
`to media required to play the media sequence from the
`In a further additional embodiment of the invention , the
`starting location further includes selecting byte ranges that
`download manager is configured to maintain a queue of
`do not include the subtitle tracks that were not selected .
`requested byte ranges .
`In a further embodiment again of the method of the 40
`In another additional embodiment of the invention , the
`invention , the sequence includes key frames , and identifying
`download manager is configured to flush the queue .
`byte ranges of the media file corresponding to media
`n a still yet further embodiment of the invention , the
`I
`required to play the media in accordance with the user
`playback engine is configured to generate a menu using
`instruction further includes identifying a sequence of key
`menu information obtained from a remote media file .
`frames in response to a predetermined user instruction , and 45
`In still yet another embodiment of the invention , the
`identifying byte ranges of the media file corresponding to
`playback engine is configured to receive a selection of one
`the identified key frames .
`of a plurality of media sequences in a remote media file via
`One embodiment of the invention includes a media server ,
`the menu .
`a client , and a network . In addition , the client and the media
`In a still further embodiment again of the invention , the
`server are configured to communicate via the network , the 50 playback engine is configured to receive a selection of one
`client is configured to send requests for at least one portion
`of a plurality of audio tracks for a media sequence in a
`of the media file to the media server , the server is configured
`remote media file via the menu .
`to provide requested portions of the media file to the client ,
`In still another embodiment again of the invention , the
`and the client is configured to receive user instructions
`playback engine is configured to receive a selection of a
`concerning the playback of the media file and to request 55 subtitle track for a media sequence in a remote media file via
`portions of the media file that have not been downloaded and
`the menu .
`that are required to comply with the playback instructions
`BRIEF DESCRIPTION OF THE DRAWINGS
`from the media server .
`In a further embodiment of the invention , proximate
`portions of the media file grouped and the groups are 60
`FIG . 1 is a semi - schematic network diagram of progres
`requested on an earliest deadline first basis .
`sive playback system in accordance with an embodiment of
`In another embodiment of the invention , the client is
`the invention .
`configured to maintain a queue of requested portions of the
`FIG . 2 is a flow chart showing a process for progressively
`playing back a remotely stored media file in accordance with
`media file .
`In a still further embodiment of the invention , the client 65 an embodiment of the invention .
`and the server are configured to communicate via at least one
`FIG . 3 is a conceptual illustration of a client application
`connection , and the client is configured to flush the queue of
`configured to request byte ranges from a remote server and
`
`Case 1:20-cv-01202-UNA Document 1-3 Filed 09/09/20 Page 14 of 20 PageID #: 99
`
`
`
`US 10 , 412 , 141 B2
`
`10
`
`tainer formats supported in a specific application . Although
`to support “ trick play ” functions in accordance with an
`embodiment of the invention .
`numerous embodiments are discussed below , other varia
`tions appropriate to different container formats can be con
`FIG . 4 is a conceptual illustration of a download manager
`in accordance with an embodiment of the invention .
`structed in accordance with embodiments of the invention .
`A progressive playback system in accordance with an
`FIG . 5 is a flow chart showing a process for requesting 5
`embodiment of the invention is shown in FIG . 1 . The
`byte ranges from a media server in accordance with an
`progressive playback system 10 includes a media server 12
`embodiment of the invention .
`FIG . 6 is a flow chart showing a process for flushing a
`connected to a network 14 . Media files are stored on the
`connection with a media server in accordance with an
`media server 14 and can be accessed by devices configured
`embodiment of the invention .
`with a client application . In the illustrated embodiment ,
`FIG . 7 is a flow chart showing a process for building a
`devices that access media files on the media server include
`data file during the non - sequential downloading of byte
`a personal computer 16 , a consumer electronics device such
`ranges of the data file in accordance with an embodiment of
`as a set top box 18 connected to a playback device such as
`the invention .
`a television 20 , and a portable device such as a personal
`FIG . 8 is a flow chart showing a process that can be used 15 digital assistant 22 or a mobile phone handset . The devices
`by a file parser to identify menu information and media
`and the media server 12 can communicate over a network 14
`sequences within a remote media file and to extract infor
`that is connected to the Internet 24 via a gateway 26 . In other
`mation from the file in accordance with an embodiment of
`embodiments , the media server 14 and the devices commu
`the invention .
`FIG . 9 is a flow chart showing a process used by a 20 nicate over the Internet .
`playback engine to obtain data chunks from a remote media
`The devices are configured with client applications that
`file formatted using a container format that utilizes chunks
`can request portions of media files from the media server 12
`for playing . The client application can be implemented in
`in accordance with an embodiment of the invention .
`software , in firmware , in hardware or in a combination of the
`DETAILED DESCRIPTION OF THE
`25 above . In many embodiments , the device plays media from
`INVENTION
`downloaded media files . In several embodiments , the device
`provides one or more outputs that enable another device to
`Turning now to the drawings , a system for progressively
`play the media . When the media file includes an index , a
`downloading and playing media is shown . In many embodi
`device configured with a client application in accordance
`ments , the media is stored in a file on a remote server and 30 with an embodiment of the invention can use the index to
`a device configured with a client application retrieves por
`determine the location of various portions of the media .
`tions of the media file and plays the media . The client
`Therefore , the index can be used to provide a user with “ trick
`application typically does not possess the entire media file
`play ” functions . When a user provides a “ trick play ” instruc
`when it commences playing and can request non - sequential
`portions of the media file . In this way , the client application 35 tion , the device uses the index to determine the portion or
`portions of the media file that are required in order to
`can support “ trick play ” functions . “ Trick play ” functions
`execute the “ trick play ” function and requests those portions
`impact the playing of a media file such as non - sequential
`from the server . In a number of embodiments , the client
`functions including pausing , rewinding , fast forwarding and
`skipping between scenes . Instead of sequentially download
`application requests portions of the media file using a
`ing a media file and waiting until the required information 40 transport protocol that allows for downloading of specific
`has been downloaded to perform a “ trick play ” function ,
`byte ranges within the media file . One such protocol is the
`client applications in accordance with embodiments of the
`HTTP 1 . 1 protocol published by The Internet Society or
`invention can determine portions of a media file that are
`BitTorrent available from www . bittorrent . org . In other
`required to support a specific “ trick play ” function and
`embodiments , other protocols and / or mechanisms can be
`request those portions of the file from the remote server . 45 used to obtain specific portions of the media file from the
`When a “ trick play ” function involves skipping to portions
`media server .
`of the media that have not been downloaded , such as fast
`A flow chart showing a process for requesting media from
`forwarding and skipping between chapters , latency can be
`a media server in accordance with an embodiment of the
`significantly reduced compared to sequential download .
`invention is shown in FIG . 2 . The process 40 includes
`The configuration of a progressive playback system in 50 obtaining ( 42 ) the index of the media file from the media
`accordance with an embodiment of the invention can depend
`server . A location from which to start playing the media file
`upon the container formats supported by the progressive
`is then determined ( 44 ) . In a number of embodiments , all
`playback system . Examples of container formats include the
`files commence playing at the start of a media sequence . In
`AVI 1 . 0 file format specified by Microsof