`(12) Patent Application Publication (10) Pub. No.: US 2004/0267899 A1
`(43) Pub. Date:
`Dec. 30, 2004
`Rahman et al.
`
`US 2004O267899A1
`
`(54) INCORPORATING INTERACTIVE MEDIA
`INTO A PLAYLIST
`(75) Inventors: Shafiq Ur Rahman, Redmond, WA
`(US); Sohail Baig Mohammed,
`Redmond, WA (US); Khurshed
`Mazhar, Kirkland, WA (US); Kevin P.
`Larkin, Mercer Island, WA (US);
`Patrick N. Nelson, Seattle, WA (US);
`Bret P. O'Rourke, Kirkland, WA (US)
`Correspondence Address:
`LEE & HAYES PLLC
`421 W RIVERSIDEAVENUE SUTE 500
`SPOKANE, WA 992.01
`(73) Assignee: MICROSOFT CORPORATION, RED
`MOND, WA (US)
`(21) Appl. No.:
`10/608,648
`
`(22) Filed:
`
`Jun. 27, 2003
`Publication Classification
`
`(51) Int. Cl." ..................................................... G06F 15/16
`(52) U.S. Cl. ............................................ 709/217; 709/234
`(57)
`ABSTRACT
`An exemplary System includes a media control operable to
`begin playing a media Segment automatically after buffering
`the media Segment, and a host application operable to
`receive a reference to the media Segment, initialize the
`media control with the media Segment, and cause the media
`control to postpone playing of the media Segment after the
`media Segment is buffered. An exemplary method includes
`receiving a playlist referencing a first media Segment and a
`Second media Segment, the Second media Segment operable
`to play automatically without a prompt after being loaded,
`presenting the first media Segment, and prerolling the Second
`media Segment.
`
`100-y
`
`Interactive Media Events Wrapper 106
`
`Host Application 102
`
`Playlist112
`REF 1
`114-1REF2
`
`
`
`REF 3
`
`REF N
`
`Interactive Media
`Presentation Control 108
`
`Interactive Media
`Segment110
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`User Interface 104
`
`1
`
`Charter Ex. 1133
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 1 of 6
`
`US 2004/0267899 A1
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`2
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 2 of 6
`
`US 2004/0267899 A1
`
`
`
`3
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 3 of 6
`
`US 2004/0267899 A1
`
`
`
`029
`
`Z09
`
`4
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 4 of 6
`
`US 2004/0267899 A1
`
`400 k
`
`402
`
`Parse ASX
`
`4.04
`
`406
`
`Load First Playlist
`Reference
`
`Select Wrapper Based on
`ASX media segment type
`
`408
`
`Launch Selected Wrapper
`
`410
`
`Initialize Flash Control
`
`4. 12
`
`14
`4
`
`416
`
`Negotiate U Resources
`
`Call wrapper -> Play()
`
`Start presentation of
`Flash movie
`
`418
`
`Flash Control Calls FSCOmmand with
`WMPEndofplayback
`
`420
`
`Translate event to Endofplayback
`
`Fire Endofplayback to host application
`
`424
`
`5
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 5 of 6
`
`US 2004/0267899 A1
`
`5 O O
`
`502
`
`P
`
`ASX
`
`506
`
`Play video.wmv.
`
`508
`
`video.wmv fires
`EndofStreaming
`
`510
`
`Prerol flash.SWf
`
`512
`
`514
`
`Video.WmV fires
`Endofplayback
`
`Plav flashSWf
`ay TaSn.S
`
`flash.swf fires
`EndofBuffering
`
`flash.swf fires
`EndofStreaming
`
`516
`
`517
`
`Prerol audio.Wma
`
`518
`
`520
`
`522
`
`524
`
`525
`
`526
`
`Flash.swf fires
`Endofplayback
`
`Play audio.wma
`
`Audio.wma fires
`Endofbuffering
`
`Audio.Wma fires
`EndofStreaming
`
`Audio.wma fires
`Endoflayback
`
`End
`
`528
`
`F.G. 5
`
`6
`
`
`
`Patent Application Publication Dec. 30,2004 Sheet 6 of 6
`
`US 2004/0267899 A1
`
`6v9
`
`YOLINOW
`
`WauW907
`
`MYOMLAN
`
`oz9+3
`
`19!O3QIAONISS3OOUd!ard\29
`629SNdWALSAS
`ualdvavLINN
`
`
`WvdS0udMSHLONOWVONMdd¥JONILVYad
`vivaSTINGOWSWVWYDOYd|WSLSAS
`
`
`YYOMLAN
`Wisas
`
`Lud
`
`SAO
`
`xsId
`
`WolLdO
`OILANOVN
`YSIdGYVH
`
`JOVAYNSLNI
`FOVAYALNI
`S0VIYSLNI
`FOVAYSLNI
`SAG
`dOVAYSLNI
`
`AAG
`
`ONILVeadO
`
`WALSAS
`
`NOILVOIIdd¥
`
`SWVHDOud
`
`YSHLO
`
`WVvdo0ud
`
`SaINGOW
`
`Wvdd0ud
`
`vivd
`
`09
`
`"KUOWSWWALSAS
`
`)¥e9(WOU
`
`aLOWsY
`
`YALNdNOO
`
`NOILVOMdd¥
`
`SWVe9OUd
`
`WYd9Oud
`
`0
`
`7
`
`
`
`
`
`
`
`
`
`
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`INCORPORATING INTERACTIVE MEDIA INTO A
`PLAYLIST
`
`TECHNICAL FIELD
`0001. The described subject matter relates generally to
`methods, devices, and Systems for incorporating media into
`a playlist.
`
`BACKGROUND
`0002. A typical media player (e.g., Windows Media
`Player(R) employs a “playlist.” A playlist is a listing of one
`or more references to one or more media (e.g., video, audio,
`text, and/or animation data) segments. The playlist may also
`include information about the media segment(s), Such as
`titles, authors, order of play, and the like. For example, a
`playlist may include a list of compact disk (CD) Song titles.
`The media player presents the CD Song titles to a user, and
`the user can Select and play a Song from the list of titles.
`Typically, each of the media Segments referenced in a
`playlist has a start indicator and an end indicator, which
`indicate when each of the media Segments are to start and
`end, respectively. When a Start and end indicator are pro
`Vided, the media player can use these indicators to facilitate
`Sequencing through the media Segment(s) referenced by the
`playlist.
`0003. In addition, in order to “seamlessly” transition
`from one media segment (e.g., a Song on a CD) to another
`media segment referenced in a playlist, the media player can
`"preroll” an upcoming Segment. Prerolling refers to loading
`an upcoming media Segment while a current media Segment
`is playing. Thus, the upcoming media Segment is already
`loaded and ready to play immediately after the current media
`Segment has finished playing. After the media player
`receives messages that prerolling is complete, and the cur
`rent media Segment has finished playing, the media player
`explicitly prompts the prerolled media Segment to begin
`playing. Thus, there is a Seamless transition from the current
`media Segment to the next media Segment, and there is no
`overlap in playing of the two media Segments.
`0004 Some types of media are “continuous”, in that they
`do not have a definite end associated with them. For
`example, many types of interactive media, Such as Flash(E),
`are continuous. A Flash(E) movie is typically composed of a
`number of Scenes, often animated, that are to be played
`repeatedly, while waiting for user input. When the user
`selects a specified location in the Flash(R) movie, the movie
`may change to a different Set of Scenes and/or prompt the
`user for other input. In addition, Flash(R) and other types of
`interactive media often begin playing automatically after
`they are loaded, without being prompted. For example,
`when a web page is accessed that has an embedded Flash(E)
`movie, the movie will load, and automatically begin playing,
`waiting for user input. Interactive media, Such as Flash(E),
`have become extremely popular for use in “web pages on
`the Internet because of their interactive nature, and continu
`ous and unprompted play. Thus, Flash(E) and other interac
`tive media are well-adapted to implementation on web
`pageS.
`0005. However, the continuous and unprompted nature of
`Such interactive media has rendered Such media ineffective
`or unusable in playlists. An interactive media Segment
`without a definite end prevents typical media players from
`
`being able to prompt play of a Subsequent media Segment via
`a playlist and the media player will not play through the
`entire play list. In addition, interactive media that automati
`cally begins playing after loading does not allow for the
`Seamless playback provided by many media players because
`the media automatically starts playing after loading, regard
`less of whether other media is currently playing. Thus, much
`of the interactive media that has been developed for web
`browsing cannot be reused by a typical media player
`employing playlists. Unfortunately, as a result, many media
`developerS have resorted to developing non-interactive
`media, which does not provide the advantages of interactive
`media, So that their media can be played via playlists.
`SUMMARY
`0006 Implementations described and claimed herein
`Solve the discussed problems, and other problems.
`0007 An exemplary system includes a media control
`operable to begin playing a media Segment automatically
`after buffering the media Segment, and a host application
`operable to receive a reference to the media Segment,
`initialize the media control with the media Segment, and
`cause the media control to postpone playing of the media
`Segment after the media Segment is buffered.
`0008 An exemplary method includes receiving a playlist
`referencing a first media Segment and a Second media
`Segment, the Second media Segment operable to play auto
`matically without a prompt after being loaded, presenting
`the first media Segment, and prerolling the Second media
`Segment.
`0009. Another exemplary method includes parsing a
`playlist having at least one reference to an interactive media
`Segment operable to play continuously, playing the interac
`tive media Segment in an interface of a host application with
`a control operable to play the interactive media Segment, and
`receiving a media Segment event from the control indicating
`that the playing of the interactive media Segment has fin
`ished.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`0010. A more complete understanding of the various
`methods and arrangements described herein, and equivalents
`thereof, may be had by reference to the following detailed
`description when taken in conjunction with the accompa
`nying drawings wherein:
`0011 FIG. 1 is a block diagram illustrating an exemplary
`architecture that may be used to incorporate interactive
`media into a playlist.
`0012 FIG. 2 illustrates an exemplary playlist in ASX
`format including a reference to an interactive media Seg
`ment.
`0013 FIG. 3 is a block diagram illustrating an exemplary
`interactive media events wrapper that may be used to
`interface between an interactive media presentation control
`and a host application for incorporating an interactive media
`Segment into a playlist.
`0014 FIG. 4 is an exemplary interactive media presen
`tation operation having exemplary operations for presenting
`an interactive media Segment referenced in a playlist, even
`though the interactive media Segment is designed to play
`continuously.
`
`8
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`FIG. 5 is an exemplary interactive media presen
`0.015
`tation operation having exemplary operations for prerolling
`an interactive media Segment referenced in the playlist of
`FIG. 2, even though the interactive media Segment is
`operable to automatically begin playing after the Segment is
`loaded.
`0016 FIG. 6 is a block diagram illustrating an exemplary
`computer and/or computing environment Suitable for use
`with various methods, units, System, and/or architectures
`described herein.
`
`DETAILED DESCRIPTION
`0017 Turning to the drawings, wherein like reference
`numerals refer to like elements, various methods are illus
`trated as being implemented in a Suitable computing envi
`ronment. Although not required, various exemplary methods
`will be described in the general context of computer-execut
`able instructions, Such as program modules, being executed
`by a personal computer and/or other computing device.
`Generally, program modules include routines, programs,
`objects, components, data structures, etc. that perform par
`ticular tasks or implement particular abstract data types.
`Moreover, those skilled in the art will appreciate that various
`exemplary methods may be practiced with other computer
`System configurations, including hand-held devices, multi
`processor Systems, microprocessor based or programmable
`consumer electronics, network PCs, minicomputers, main
`frame computers, and the like. Various exemplary methods
`may also be practiced in distributed computing environ
`ments where tasks are performed by remote processing
`devices that are linked through a communications network.
`In a distributed computing environment, program modules
`may be located in both local and remote memory Storage
`devices.
`0.018. In some diagrams herein, various algorithmic acts
`are Summarized in individual “blocks'. Such blocks
`describe specific actions or decisions that are made or
`carried out as a proceSS proceeds. Where a microcontroller
`(or equivalent) is employed, the flow charts presented herein
`provide a basis for a “control program' or Software/firmware
`that may be used by Such a microcontroller (or equivalent)
`to effectuate the desired control. AS Such, the processes are
`implemented as machine-readable instructions Storable in
`memory that, when executed by a processor, perform the
`various acts illustrated as blockS.
`0.019 Those skilled in the art may readily write such a
`control program based on the flow charts and other descrip
`tions presented herein. It is to be understood and appreciated
`that the Subject matter described herein includes not only
`devices and/or Systems when programmed to perform the
`acts described below, but the software that is configured to
`program the microcontrollers and, additionally, any and all
`computer-readable media on which Such Software might be
`embodied. Examples of Such computer-readable media
`include, without limitation, floppy disks, hard disks, CDS,
`RAM, ROM, flash memory and the like.
`0020 Exemplary Architecture
`0021. An exemplary media presentation system 100 for
`presenting information, including media content, is illus
`trated in FIG. 1. As used herein, the terms “present,”“play,”
`and "playback,” refer to the process of showing media
`
`content. The media presentation system 100 generally
`includes a host application 102, a UI 104, and an interactive
`media events wrapper 106. The interactive media events
`wrapper 106 Serves as an interface between the host appli
`cation 102 and an interactive media presentation control 108
`to facilitate presentation of an interactive media Segment
`110. The host application 102 hosts the interactive media
`segment 110 in the user interface 104.
`0022. A host application 102 executes on a computing
`device, such as the computer system 600 in FIG. 6, to
`present information, including media content, to a user via
`the user interface (UI) 104. The media content may be video,
`audio, animation, or any other type of content that the UI
`104 is able to present. Thus, the UI 104 is generically
`depicted in FIG. 1 to include any of various hardware,
`Software, and/or firmware devices operable to present any
`type of media content. An exemplary implementation of the
`UI 104 includes a video monitor, audio speakers, and video
`and audio buffering or enhancement modules. Details about
`devices and Systems that can be implemented in relation to
`the UI 104 and that support communication between the host
`application 102 and the UI 104 in order to present media
`content are described in further detail with respect to FIG.
`6.
`0023. One implementation of the host application 102 is
`a media player, such as Windows Media Player(R) by
`Microsoft(R). In this implementation, the host application 102
`is operable to host media content, Such as the interactive
`media segment 110 in the user interface 104. The host
`application 102 manages the manner (e.g., timing and loca
`tion) in which the interactive media segment 110 is pre
`sented using the interactive media events wrapper 106. The
`interactive media Segment 110 might not be designed to
`directly interface with the host application 102. Therefore,
`the interactive media events wrapper 106 is used to interpret
`messages communicated between the interactive media Seg
`ment 110 and the host application 102.
`0024. The interactive media segment 110 is an item of
`media content. By way of example, the interactive media
`segment 110 might be a movie based on Flash(R) or Shock
`wave(R) technologies. Flash(R) and Shockwave(R) are vector
`based graphics animation technologies that were developed
`by Macromedia, Inc.(R). Movies developed with these tech
`nologies are composed of a number of Scenes, or frames,
`defined with lines and shapes using vector values, Such as
`angles of ascent, and the like. Scenes in the movies can
`contain bitmap images. Although Flash(R) and Shockwave(R)
`movies are described in detail herein, it is to be understood
`that other types of interactive media content can be included
`in the interactive media segment 110.
`0025 The interactive media presentation control 108
`controls the presentation of the interactive media Segment
`110. The interactive media presentation control 108 also
`responds to commands from the interactive media events
`wrapper 106. To control presentation of the interactive
`media Segment 110, the interactive media presentation con
`trol 108 responds to a number of commands including, but
`not limited to, load, Start, and/or Stop.
`0026. The interactive media presentation control 108
`corresponds to the content type of the interactive media
`segment 110. Thus, for example, if the interactive media
`segment 110 is a Flash(R) movie, the interactive media
`
`9
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`presentation control 108 may be a Macromedia Flash
`Player(R) or an ActiveX Flash control. One implementation
`of the control 108 continuously loops sequentially through
`the scenes in the interactive media segment 110. In this
`implementation, as Soon as the last Scene in the interactive
`media segment 110 has finished playing, the control 108
`Starts again at the first Scene in the interactive media Segment
`110.
`Is AS discussed in further detail below, playing of
`0.027
`the interactive media Segment 110 need not be continuous.
`Various exemplary methods and interfaces are described
`below that facilitate Stopping the playback of the interactive
`media segment 110. The methods and interfaces may be
`employed effectively to Stop playback of the interactive
`media Segment 110 even when the interactive media Seg
`ment 110 has been designed for continuous play. AS dis
`cussed throughout herein, Stopping the play of the interac
`tive media segment 110 enables the host application 102 to
`incorporate the interactive media Segment 110 into a playlist
`that can be presented to a user via the UI 104.
`0028. Another implementation of the interactive media
`presentation control 108 is operable to begin playing the
`interactive media Segment 110 automatically without being
`prompted, after the interactive media Segment 110 is loaded.
`Exemplary operations and interfaces are discussed below,
`which enable the interactive media events wrapper 106 to
`postpone playback of the interactive media Segment 110.
`Such exemplary operations and interfaces enable the host
`application 102 to preroll the interactive media segment 110,
`when played in conjunction with a playlist.
`0029. As discussed in more detail below, one implemen
`tation of the interactive media events wrapper 106 translates
`messages and/or events from the host application 102 into
`messages Sent to the interactive media presentation control
`108 and vice versa. The host application 102 is operable to
`respond to events related to presentation of the interactive
`media Segment 110 and/or user interaction. The host appli
`cation 102 receives events, analyzes events, determines the
`appropriate response(s) to the events, and responsively ini
`tiates the appropriate actions. For example, during presen
`tation of interactive media Segment 110, a user may select
`“stop” on the UI 104, which causes a “stop” event to be sent
`to the host application 102. In response to receipt of the
`“Stop' event, the host application 102 passes the Stop event
`to the interactive media events wrapper 106 to Stop presen
`tation of the interactive media segment 110.
`0030 The host application 102 has access to a playlist
`112, which the host application 102 uses to present media
`content to a user via the UI 104. The exemplary playlist 112
`is a file having one or more references 114 to one or more
`asSociated media Segments, Such as the interactive media
`segment 110. The playlist 112 may include information
`about the referenced media Segment(s), Such as titles,
`authors, time of play, order or play, creation time, and the
`like. Exemplary contents and formats of the playlist 112 are
`discussed in further detail below with respect to FIG. 2.
`0031. The playlist 112 may be a client-side playlist or a
`Server-Side playlist. A client-side playlist resides locally at
`the computer on which the host application 102 executes.
`The locally resident client-side playlist 112 may be down
`loaded from a remote computer or obtained from Some other
`Source. A Server-side playlist resides on a remote computer,
`
`Such as a Server that communicates with the host application
`102 over a network. In a server-Side playlist implementation,
`the host application 102 accesses the playlist 112 and the
`playlist references 114 by Sending requests over the network
`to the server.
`0032. As shown in FIG. 2, one particular implementation
`of the playlist 112 is an ASX file 200. The ASX file 200
`includes a number of exemplary references 202 that each
`refer to an associated media Segment. The exemplary refer
`ences 202 indicate the locations of the associated media
`Segments, So that the media Segments can be retrieved and
`played. In the implementation depicted in FIG. 2, the
`references 202 are uniform resource locators (URLs).
`0033. In FIG. 2, the reference “http://www.domainname
`.com/video.wmv' refers to a Windows Media Movie file
`located at a site on the Internet given by a Hypertext
`Transport Protocol (HTTP) address. The reference “http://
`www.domainname.com/flash.swf refers to a Flash(E) movie
`located at the same site on the Internet. The reference
`“http://www.domainname.com/audio.wma” refers to a Win
`dows Media Audio file located at the same site on the
`Internet. A referenced media segment in the ASX file 200
`may be referred to as a playlist entry.
`0034). In another implementation of the ASX file 200, the
`media Segments referred to need not be located at the same
`locations, and need not be located at remote Sites as shown
`in FIG. 2. For example, another implementation of the ASX
`file 200 may include references to media segments located
`on an Intranet or a proprietary network. In addition, the
`references 202 may refer to other playlists. Thus, the ASX
`file 200 may have one or more playlists embedded in the
`ASX file 200.
`0035) In addition, each of the referenced media segments
`in the ASX file 200 may have one or more media segments
`embedded within it. If a media Segment has an embedded
`media Segment, the two media Segments need not be of the
`Same media type or format. For example, a Flash movie
`could be embedded in a QuickTime(R) media segment. The
`referenced media Segment having a different type of embed
`ded media is referred to as mixed media.
`0036) The exemplary ASX file 200 includes an exem
`plary event identifier 204. The event identifier 204 has an
`asSociated name, “Intro.” In a Flash movie, events can be
`issued. The events have names. If, during playback of a
`Flash movie, an event with the name “Intro” is issued, the
`host application will find the event identifier 204 in the ASX
`file 200. The host application will then present the media
`Segment referenced by an entry reference 206 associated
`with the event identifier 204. Thus, as shown in FIG. 2, the
`media Segment "http://www.domainname.com/Flashin
`tro.swf will be presented when a Flash movie issues the
`“Intro” event. A directive, “Resume', is provided with the
`event identifier 204, which directs the host application on
`how to proceed after the media Segment in the event
`reference 206 is complete. Resume directs the host appli
`cation to continue playing the Flash movie that issued the
`eVent.
`0037 Referring again to FIG. 1, regardless of where the
`exemplary playlist 112 physically resides, and regardless of
`the particular format of the references 114 or location of the
`referenced media Segments, the host application 102 reads
`
`10
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`the references 114 from the playlist 112 and manages the
`presentation of media Segments associated with the refer
`ences 114. For example, the host application 102 determines
`that a reference 114 refers to the interactive media Segment
`110, retrieves the interactive media segment 110 from a
`location indicated by the associated reference 114, and hosts
`the interactive media segment 110.
`0.038. In one implementation of the host application 102,
`the host application 102 instantiates the interactive media
`presentation control 108 and the interactive media events
`wrapper 106. In another implementation, the interactive
`media events wrapper 106 is an interface included in the host
`application 102. Exemplary operations and interfaces
`employed by the interactive media events wrapper 106, the
`host application 102, and the interactive media presentation
`control 108 are discussed in further detail below.
`0.039
`FIG. 3 illustrates an exemplary interactive media
`events wrapper 300 to facilitate communication between an
`interactive media presentation control (e.g., the interactive
`media presentation control 108, FIG. 1) and a host appli
`cation (e.g., the host application 102, FIG. 1) using a playlist
`(e.g., the playlist 112, FIG. 1; the ASX file 200, FIG. 2).
`Generally, the interactive media events wrapper 300
`includes a number of functions that can be called by the host
`application and/or the interactive media presentation con
`trol. The interactive media events wrapper 300 also includes
`a number of functions that the interactive media events
`wrapper 300 calls to send messages to the host application
`and/or the interactive media control. It is to be understood
`that the exemplary functions illustrated in FIG.3 are not the
`only functions that the wrapper 300 may employ.
`0040. The interactive media events wrapper 300 also
`includes logic and data for interpreting messages from the
`interactive media presentation control and responsively fir
`ing appropriate event(s) to the host application. In addition,
`the interactive media events wrapper 300 interprets com
`mands from the host application and responsively sends an
`appropriate command to the interactive media presentation
`control. An event is any occurrence or happening of Signifi
`cance to a task or program, Such as the completion of loading
`of an interactive media Segment. Firing of an event refers to
`issuing a notification of the event.
`0041. The exemplary interactive media events wrapper
`300 shown in FIG. 3 implements an interface called
`ISWFVelperEvents which was designed for Flash(R) tech
`nology. The ISWFHelperEvents interface includes an
`OnReadyStateChange(newState) function 302, an OnPro
`gress(percentDone) function 304, and a FSCommand(com
`mand, args) function 306.
`0042. The OnReadyStateChange(newState) function 302
`can be called by the Flash control when the ready state of the
`control changes. In one implementation, the newState
`parameter can take on the following values:
`0043 0=Loading
`0044) 1=Uninitialized
`0045 2=Loaded
`0046) 3=Interactive
`0047 4=Complete
`
`0.048. The OnProgress(percentDone) function 304 can be
`called by the Flash control as a Flash(R) movie is download
`ing. The percentIDOne parameter gives the percentage of the
`movie downloaded so far.
`0049. The FSCommand(command, args) function 306
`can be called by the interactive media presentation control to
`communicate events to the wrapper 300. The events origi
`nate in the interactive media Segment itself. For example, an
`author of a Flash(E) movie can embed a script within the
`movie, which can be used to notify the Flash control of
`events. When the Flash (movie calls the Flash control with
`an event, the Flash control can call the FSCommand func
`tion 306 in the wrapper 300 to notify the wrapper 300 of the
`event. The FSCommand function 306 takes two arguments,
`the first is a String which represents a command or event, the
`Second is a String representing related parameters.
`0050. The FSCommand function 306 can be used to
`communicate information from a media Segment to appli
`cations outside the host application. Applications can be
`designed to “listen' to events from the host application. The
`host application forwards received events on to the listening
`applications. Based on the received events, the listening
`applications can responsively perform a predefined task. For
`example, the Windows Media Player(R) can forward, or issue
`(i.e., fire), an event from a playing Flash movie to another
`listening application, which executes a task based on the
`event. Events can be customized to a designer's particular
`application. The args' parameter can be used to indicate a
`particular Script to execute in response to the event. The
`FSCommand function 306 may be used to notify the wrap
`per 300 of an “Endofplayback' event when the last scene in
`the Flash(R) movie has finished playing. The function call
`made by the Flash control in this example is FSCommand
`(WMPEndPlayback, args). In response to receiving the
`function call, the wrapper 300 fires Endofplayback to the
`host application using a Fire(Endoff?layback) function 308.
`The Fire(EndofPlayback) function 308 notifies the host
`application that the Flash movie has completed, at which
`time the host application can present a next media Segment
`in a playlist. In this situation, the “args' parameter may be
`ignored by the wrapper 300.
`0051. Other types of events that can be fired by a control
`using the FSCommand function 306 are an EndofEuffering
`event and an Endofstreaming event. A control fires the
`EndofEuffering event after the control has finished buffering
`a portion of the media Segment in response to a preroll
`command (see the preroll command 310 below). The End
`of Streaming event can be fired by a control to indicate that
`all of a media Segment has been buffered.
`0.052 A preroll command 310 can be called by the host
`application to preroll the Flash(R) movie. When the wrapper
`300 receives the preroll command 310, the wrapper 300 calls
`a load() command in the Flash control to load the Flash(R)
`movie. In response to the load() command, the Flash control
`begins loading the Flash(R) movie. As used herein, “buffer
`ing” and "loading” are used interchangeably. Loading and
`buffering refer to copying at least a portion of the Flash(E)
`movie from Some Source, Such as a remote computer, into
`memory, such as Random Access Memory (RAM), for
`execution. The wrapper 300 then employs one or more
`operations to postpone the Flash control from automatically
`playing the Flash(R) movie after the movie is loaded. Exem
`
`11
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`plary operations for postponing playback of the Flash(E)
`movie are discussed in further detail below.
`0053) The wrapper 300 is notified that at least a portion
`of the Flash(R) movie has finished buffering when the wrap
`per receives a call to the OnReadyStateChange function 302
`with any of the following parameters:
`0054) 2=Loaded
`0.055
`3=Interactive
`0056 4=Complete
`0057. In one implementation, the wrapper 300 facilitates
`prerolling of an interactive media Segment based on control
`calls to the OnProgress function 304. The OnProgress func
`tion 304 takes an input parameter “percentDone,” which
`indicates the percent of the interactive media Segment that
`has been buffered. When the percentDone value reaches a
`predetermined minimum buffer value, a Sufficient amount of
`the interactive media 15 segment has been buffered for
`smooth playback. When the wrapper 300 receives a call to
`the OnProgress function 304, in which the percentDone
`parameter is equal to or greater than the minimum buffer
`value, the wrapper 300 can call a Fire(Endof Buffering)
`function 312 to notify the host application that the interac
`tive media Segment is Sufficiently buffered for playback.
`0.058. The predetermined minimum buffer value is imple
`mentation specific. For example, in a particular implemen
`tation in which the interactive media segment in a Flash(E)
`movie, the minimum buffer value is 100%; i.e., the entire
`Flash(R) movie is to be buffered before play can begin. In this
`implementation, when the percentIDone parameter of the
`OnProgress function 304 reaches 100%, the wrapper 300
`calls the Fire(Endof Buffering) function 312 to notify the
`host application that the Flash(R) movie is sufficiently buff
`ered So that the Flash(E) can begin playing when commanded.
`In other implementations, the minimum buffer value is leSS
`than 100%.
`0059. In yet other implementations, the minimum buffer
`value is specified in terms of a minimum unit of time. In
`Such an implementation, the minimum buffer value may be
`5 seconds. In such an imp