`(12) Patent Application Publication (10) Pub. No.: US 2004/0267899 A1
`Rahman et al.
`(43) Pub. Date:
`Dec. 30, 2004
`
`US 20040267899A1
`
`(54) INCORPORATING INTERACTIVE MEDIA
`INTO A PLAYLIST
`
`(22) Filed:
`
`Jun. 27, 2003
`
`Publication Classi?cation
`
`(75) Inventors: Sha?q Ur Rahman, Redmond, WA
`(Us); Sohai] 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 RIVERSIDE AVENUE SUITE 500
`SPOKANE, WA 99201
`
`(73) Assignee: MICROSOFT CORPORATION, RED
`MOND, WA (US)
`
`(21) Appl. No.:
`
`10/608,648
`
`(51) Int. Cl.7 ................................................... .. G06F 15/16
`(52) US. 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 ?rst media segment and a
`second media segment, the second media segment operable
`to play automatically Without a prompt after being loaded,
`presenting the ?rst media segment, and prerolling the second
`media segment.
`
`100w
`
`K interactive Media Events Wrapper 106\
`
`Host Application m
`
`Interactive Media
`Presentation Control m
`
`Piaylist _1_1_2_
`
`ll
`
`interactive Media
`Segment 11_0
`
`User interface M
`
`Yamaha Corporation of America Exhibit 1018 Page 1
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 1 0f 6
`
`US 2004/0267899 Al
`
`1
`Y
`
`
`
`or momtQE Low:
`
`F .OI
`
`Yamaha Corporation of America Exhibit 1018 Page 2
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 2 0f 6
`
`US 2004/0267899 A1
`
`mom Z
`
`Now
`
`vow
`
`Yamaha Corporation of America Exhibit 1018 Page 3
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 3 0f 6
`
`US 2004/0267899 A1
`
`m_‘m
`
`3m
`
`em
`
`m5
`
`omm
`
`a:_Em§m_oEm§_u_
`
`Amucw>wEBw=o§E
`
`m_o=:00to%cm:.
`
`Emywmfimmhgmfiflmzommz
`
`m.GE
`
`NrmScrmtsmaoucmvgu39m.ucmEEooncmEEoowu
`
`mom3639‘sEm>m£85.95995
`
`
`
`
`Axomfiméoucmvgm$553239.”cogmam‘smmmco
`
`
`Now
`
`mom
`
`Yamaha Corporation of America
`
`Exhibit 1018
`
`Page 4
`
`Yamaha Corporation of America Exhibit 1018 Page 4
`
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 4 0f 6
`
`US 2004/0267899 A1
`
`400 m
`
`402 '~—{ Parse ASX ,
`
`404
`
`406
`
`v
`Load First Playlist 7
`Reference
`J
`
`V
`Select Wrapper Based or?
`ASX media segment typeJ
`
`Fara
`
`408
`
`Launch Selected Wrapper
`
`a
`
`aiia
`
`410
`
`initialize Flash Control
`
`V
`
`\
`
`J
`
`\
`Negotiate Ul Resources
`J
`
`ii
`
`ii
`
`Call wrapper 9 Play()
`
`ii
`Start presentation of \
`Flash movie
`
`418
`
`ti
`Flash control calls FSCommand with
`WMPEndofPlayback
`
`i
`420 1E Translate event to EndofPlayback J
`tr
`422 ‘{ Fire EndofPlayback to host application 1
`
`424
`
`r
`End
`
`FIG. 4
`
`Yamaha Corporation of America Exhibit 1018 Page 5
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 5 0f 6
`
`US 2004/0267899 A1
`
`500 1
`
`502 L-( Parse ASX ’
`
`504 i (
`
`v
`Load video.wmv
`
`1
`
`506 Li
`
`\
`
`Play video.wmv
`
`'
`
`i
`508 1 video.wmv ?res
`L EndofStreammg J
`
`v
`
`51 o I’ Preroll ?ash.swf
`\
`
`J
`
`V
`512 1 video.wmv ?res
`\ EndofPlayback
`
`514
`
`r i
`
`Play ?ash.swf
`
`4
`
`?ash.swf ?res
`EndofBuffering
`
`?ash.swf ?res
`EndofStreaming
`
`516
`
`517
`
`Y
`
`[ Prerol|audio.wma F518
`
`Flashswf ?res
`EndofPlayback
`
`J- 520
`
`Play audio.wma
`
`f 522
`
`Audio.wma ?res
`EndofBuffering
`
`Audio.wma ?res
`EndofStreaming
`
`V
`. _—_'_1
`Audro.wma ?res
`EndofPlayback
`
`FIG. 5
`
`Yamaha Corporation of America Exhibit 1018 Page 6
`
`
`
`Patent Application Publication Dec. 30, 2004 Sheet 6 0f 6
`
`US 2004/0267899 A1
`
`mg
`
`moczoz_ms"
`éogmz”EmmaSEQ$592:g.zéooE”Emiég_0522.2EEO.
`__"mzéooE"__Hmmmam555zo:<o:&<“owe1L556u"Egg:2:wzpsmao"a"89>ozammooE.............................uugogo_
`__
`
`moEmEzmoEmEzBEE;moimEz."mofimmcz.m9E55358:_
`
`xmozfizEomam$5$55_
`
`_
`
`_
`
`mmsn—EOQ
`
`zo_.r<o_._n_n_<
`
`m§<m00mm
`
`[axmozfimz<mm<mg«m.
`
`
`
`
`NmmDHU
`
`
`
`«EEOzo:.<o:n_n_<oz_._.<mmn_o
`
`__w
`
`Eéwomm
`
`
`
`$58.2mszmooma555
`
`Yamaha Corporation of America
`
`Exhibit 1018
`
`Page 7
`
`Yamaha Corporation of America Exhibit 1018 Page 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®) employs a “playlist.” Aplaylist 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 segrnent(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 segrnent(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 ?nished playing. After the media player
`receives messages that prerolling is complete, and the cur
`rent media segment has ?nished 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 de?nite end associated With them. For
`example, many types of interactive media, such as Flash®,
`are continuous. A Flash® 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 speci?ed location in the Flash® movie, the movie
`may change to a different set of scenes and/or prompt the
`user for other input. In addition, Flash® 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®
`movie, the movie Will load, and automatically begin playing,
`Waiting for user input. Interactive media, such as Flash®,
`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® 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 de?nite 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 ?rst media segment and a second media
`segment, the second media segment operable to play auto
`matically Without a prompt after being loaded, presenting
`the ?rst 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 ?n
`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.
`
`Yamaha Corporation of America Exhibit 1018 Page 8
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`[0015] FIG. 5 is an exemplary interactive media presen
`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 con?gurations, 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.
`
`[0018] In some diagrams herein, various algorithmic acts
`are summariZed in individual “blocks”. Such blocks
`describe speci?c actions or decisions that are made or
`carried out as a process proceeds. Where a microcontroller
`(or equivalent) is employed, the How charts presented herein
`provide a basis for a “control program” or softWare/?rmWare
`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.
`
`[0019] Those skilled in the art may readily Write such a
`control program based on the How 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 con?gured 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, ?oppy disks, hard disks, CDs,
`RAM, ROM, ?ash 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 U1 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 ?rmWare 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® by
`Microsoft®. 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 (eg, 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® or Shock
`Wave® technologies. Flash® and Shockwave@ are vector
`based graphics animation technologies that Were developed
`by Macromedia, Inc.®. Movies developed With these tech
`nologies are composed of a number of scenes, or frames,
`de?ned 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® and Shockwave@
`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® movie, the interactive media
`
`Yamaha Corporation of America Exhibit 1018 Page 9
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`presentation control 108 may be a Macromedia Flash
`Player® 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 ?nished playing, the control 108
`starts again at the ?rst scene in the interactive media segment
`110.
`
`[0027] Is As discussed in further detail beloW, playing of
`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 ?le 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 ?le 200. The .ASX ?le 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://WWWdomainname
`.com/video.Wmv” refers to a WindoWs Media Movie ?le
`located at a site on the Internet given by a Hypertext
`Transport Protocol (HTTP) address. The reference “http://
`WWW.domainname.com/?ash.sWf” refers to a Flash® movie
`located at the same site on the Internet. The reference
`“http://WWW.domainname.com/audio.Wma” refers to a Win
`doWs Media Audio ?le located at the same site on the
`Internet. A referenced media segment in the .ASX ?le 200
`may be referred to as a playlist entry.
`
`[0034] In another implementation of the .ASX ?le 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
`?le 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
`?le 200 may have one or more playlists embedded in the
`.ASX ?le 200.
`
`[0035] In addition, each of the referenced media segments
`in the .ASX ?le 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® media segment. The
`referenced media segment having a different type of embed
`ded media is referred to as mixed media.
`
`[0036] The exemplary .ASX ?le 200 includes an exem
`plary event identi?er 204. The event identi?er 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 ?nd the event identi?er 204 in the .ASX
`?le 200. The host application Will then present the media
`segment referenced by an entry reference 206 associated
`With the event identi?er 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 identi?er 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
`
`Yamaha Corporation of America Exhibit 1018 Page 10
`
`
`
`US 2004/0267899 Al
`
`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.
`
`[0038] 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.
`
`[0039] 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 ?le 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 ?r
`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 signi?
`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 noti?cation 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® 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
`
`[0048] The OnProgress(percentDone) function 304 can be
`called by the Flash control as a Flash® movie is doWnload
`ing. The percentDone 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® 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 ?rst 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 prede?ned task. For
`example, the WindoWs Media Player® can forWard, or issue
`(i.e., ?re), 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® movie has ?nished 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 ?res EndofPlayback to the
`host application using a Fire(EndofPlayback) function 308.
`The Fire(EndofPlayback) function 308 noti?es 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 ?red by a control
`using the FSCommand function 306 are an EndofBuffering
`event and an EndofStreaming event. A control ?res the
`EndofBuffering event after the control has ?nished buffering
`a portion of the media segment in response to a preroll
`command (see the preroll command 310 beloW). The End
`ofStreaming event can be ?red by a control to indicate that
`all of a media segment has been buffered.
`
`[0052] A preroll command 310 can be called by the host
`application to preroll the Flash® 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®
`movie. In response to the load() command, the Flash control
`begins loading the Flash® movie. As used herein, “buffer
`ing” and “loading” are used interchangeably. Loading and
`buffering refer to copying at least a portion of the Flash®
`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® movie after the movie is loaded. Exem
`
`Yamaha Corporation of America Exhibit 1018 Page 11
`
`
`
`US 2004/0267899 A1
`
`Dec. 30, 2004
`
`plary operations for postponing playback of the Flash®
`movie are discussed in further detail below.
`
`[0053] The Wrapper 300 is noti?ed that at least a portion
`of the Flash® movie has ?nished buffering When the Wrap
`per receives a call to the OnReadyStateChange function 302
`With any of the following parameters:
`[0054] 2=Loaded
`[0055] 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(EndofBuffering)
`function 312 to notify the host application that the interac