[X] The "/Open DHCP Server/1.32 Stable/OpenDHCPServerInstallerV1.32.exe" file could not be found or is not available. Please select another file.

The Open Video Player (OVP) initiative leverages the use of open standards, best practices, and established development methodologies to standardize and simplify the development of advanced, scalable, and robust media player applications.

Open Video Player (Flash) Change Log



This document lists the code changes included in the zip distributions of the Open Video Player Flash code base.  In addition to this document please see the ASDoc generated documentation for specific details on classes and their properties, methods, and events.



Changes from zip release v1.0.0 to v1.0.1 - December 10, 2008

-------------------------------------------------------------

1) ASDoc comments complete

The ASDoc code documentation is now complete for the Flash OVP code base. 



2) Live Stream Subscribe Process

The live stream subscribe logic (FCSubscribe) has been added to the OVP code base. Note this logic will be obsolete and unnecessary for the Akamai network with an Akamai server-side release scheduled for late January 2009. 



A new method was added to the OvpConnection class called serverVersion and a new property was added to the AkamaiConnection class called subscribeRequiredForLiveStreams, which returns true or false based on the capabilities of the server.  Therefore the calling code can use this property to determine whether or not the subscribe mechanism is required by the server.



Please see the ASDocs for descriptions of these classes and their properties, methods and events.



Both the Flash CS3 and Flex samples for live streams demonstrate and test this new code, CS3sampleLive.fla and FLEXsampleLive.mxml respectively.





Changes from zip release v1.0.1 to v1.0.2 - December 29, 2008

-------------------------------------------------------------

1) New ActionScript Cue Points class

A new class has been added to the org.openvideoplayer.net package called OvpCuePointManager.as.  This class allows you to add ActionScript cue points at run-time (as opposed to embedded cue points which are set at encoding-time).

New Flash and Flex samples for the ActionScript Cue Points Class

Two new samples have been added: FLEXsampleAsCuePoints.mxml, a Flex sample and CS3sampleAsCuePoints.fla, a Flash sample. These samples demonstrate how to add ActionScript cue points at run-time. 



2) New Error Numbers and Descriptions added to OvpError Class

Three new errors and matching descriptions were added to the OvpError class to support the new ActionScript cue points class.  The new errors are INVALID_CUEPOINT, INVALID_CUEPOINT_TIME, and INVALID_CUEPOINT_NAME.



3) ASDoc changes to the END_OF_STREAM and COMPLETE events

The ASDoc text was edited for these two events, mainly to clarify that the END_OF_STREAM event can be used for either progressive downloads or streaming.  While the COMPLETE event is only for streaming and is the preferred event to listen for when streaming from FMS 2.5 or higher.



4) New streamLength property added to the OvpNetStream Class

A new read-only property streamLength was added to the OvpNetStream class. This property will be greater than zero for progressive downloads only and only after the OvpNetStream class onMetaData event handler has been called.



The OvpNetStream class will continue to dispatch an OvpEvent.STREAM_LENGTH event when the onMetaData event handler is called for progressive downloads.  Therefore, you need only one event handler for both progressive downloads and streaming since the same event is fired from OvpConnection (after calling requestStreamLength for streaming video from an FMS server) and OvpNetStream (for progressive downloads when the class onMetaData event handler is called).





Changes from zip release v1.0.2 to v1.1.0 - January 16, 2009

------------------------------------------------------------

1) Support for Multi-Bit Rate Streaming 

A series of new classes have been added to support the Adobe implementation of Dynamic Streaming. These classes require at least Flash Player 10 on the client and FMS3.5 on the server in order to function. They are contained in the org.openvideoplayer.net. and org.openvideoplayer.net.dynamicstream folders and are:



A. OvpDynamicNetStream - The OvpDynamicNetStream class extends OvpNetStream to implement Adobe's Dynamic Switching -i.e the ability to switch smoothly between a suite of consistent source files which vary in their bitrate and dimensions. Note that this class can function as both a standard non-switching and as a switching netstream, depending on the argument passed to the play() method. If you pass an instance of a DynamicStreamItem, it will invoke dynamic stream switching. If you pass a String, it will default to the same behavior as OvpNetStream.



B. AkamaiDynamicNetStream - This class extends OvpDynamicNetStream to provide support for live stream subscription and authentication on the Akamai CDN.



C. INetStreamMetrics - an interface that a class must implement to provide netstream metrics for dynamic switching rules.



D. MetricsProvider - this class provides run-time metrics to the switching rules and implements INetStreamMetrics. It uses the metrics offered by netstream.info, but more importantly it calculates running averages, which we feel are more robust metrics on which to make switching decisions. Its goal is to be the one-stop shop for all the info you need about the health of the stream.



E. DynamicStreamItem -  provides a container to hold the constituents of a dynamic streaming package. It is based on the original class by Adobe Systems, but we have extended it to represent each item as an instance of the new DynamicStreamBitrate class, so that each bitrate can store some information about itself and its state.



F. DynamicStreamBitrate - defines an individual bitrate in a DynamicStreamItem

G. ISwitchingRule - defines an interface for heuristics switching rules to implement in order to be callable by the managing dynamic stream class.

H. BandwidthRule - switching rule focused on bandwidth analysis. 

I. BufferRule - switching rule focused on buffer analysis

J. FrameDropRule - switching rule focused on frame drop analysis.



2) New Player with UI code

The Akamai MultiPlayer is introduced. This player plays multiple types of content including



* Stream OS media RSS playlists

* Stream OS metafiles, Type I, Type II, Type IV

* Stream OS progressive download links

* AMD streaming links, both ondemand and live

* progressive links

* Dynamic Streaming packages (as SMIL files)



The player has many features including



* Dynamically scalable - all views are re-scaled and positioned each time the flash player is resized

* Supports two layout modes - overlay (where the controls are overlaid over the video and hide themselves if you mouse-off the player) and side-by-side, where the controls are permanently on the screen and the playlist view is located to the right of the video content area. You may switch between layout modes during runtime.

* Three video rendering modes - fit, stretch and native

* controls - play/pause, volume, seek, current position, duration

* mode

* Supports link and embed data for re-distribution

* Playlist button allows playlist visibility to be toggled

* Built-in debug screen to assist with debugging connection and play back problems

* Right-click context menu control over display mode, video scaling mode, debug panel and dynamic stream auto switching.

* Flashvars parameters can be used to customize the player, including src, autostart, layout-mode, frame-color, theme-color,font-color, link and embed.



Note that while provided by Akamai, the only parts of the player particular to that CDN are the StreamOS parsing classes. The remainder is generic, especially the playback of progressive streams. The player will function well as a generic player against any FMS implementation.



3) New Flash and Flex samples for Multi-Bit Rate Streaming

Two new samples have been added: FLEXsampleMultiBitRate.mxml, a Flex sample and CS4sampleMultiBitRate.fla, a Flash sample. These samples demonstrate multi-bit rate streaming. 



4) Changes to the OvpError Class

CONNECTION_REJECTED event was removed since it was not being used.



INVALID_INDEX event was added to handle invalid stream index switching for multi-bit rate streaming.



INVALID_ARGUMENT event was added as a general error event that properties and methods can use when an argument is invalid. 



5) Changes to the OvpEvent Class

The END_OF_STREAM event was removed to avoid confusion and make life easier for developers who must support streaming and progressive download content in the same player.  The COMPLETE event is now fired for both streaming and progressive download.



A new event called DEBUG was added.  Classes can listen for this event to display or trace debug information coming from the internal OVP classes.



6) Changes to the OvpConnection Class

The default object encoding is now set to AMF3 in the constructor, but can be set via a new property called defaultObjectEncoding.



Various properties and methods now check for a valid NetConnection before using that object.  For example, in the connected method, there was no check for null on the _nc member variable before calling _nc.connected.



A new cacheable property was added for the convenience of those wishing to extend the OvpConnection class.  Setting this property can tell the player code whether or not it can cache a connection and reuse it.



A new attemptInterval property was added.  This property allows you to set the connection attempt interval when trying multiple ports and protocols.  The default is 200 milliseconds.



A new reconnect method was added which attempts to establish a connection based on the arguments passed to the connect method.



The class now dispatches "NetConnection.Connect.InvalidApp".



7) Changes to OvpNetStream

A new property called createProgressivePauseEvents was added.  If set to true, the class will dispatch pause and resume events for progressive download files since the Flash Player dispatches these events only for streaming (not progressive download files).  Since Adobe may one day fix this problem, the default value is false.



New isLive property was added for convenience. This is simply a holder for this value; this class does nothing with it.  Classes that extend OvpNetStream can set this property as needed.



New netConnection property was added for convenience. This property returns the NetConnection object the class is using.





Changes from zip release v1.1.0 to v1.1.1 - January 20, 2009

------------------------------------------------------------

1) Changes to the OvpDynamicNetStream.as

Modified the behavior of the handleNetStatus private method so that the stable bufferlength is set even if the netstream.buffer.full.event occurs when the stream time is 0.



2) Changes to the DebugPanelView.as

Added the display of the current buffer length, in seconds.



3) Changes to the Model.as

Added the bufferLength getter/setter property.



4) Changes to VideoController.as

Class now updated model with current buffer length. 





Changes from zip release v1.1.1 to v1.1.2 - January 21, 2009

------------------------------------------------------------

1) Changes to the OvpEvent class

A new event was added called NETSTREAM_XMPDATA.



2) Changes to the OvpNetStream class

New callback added, onXMPData, which dispatches the new NETSTREAM_XMPDATA event.

 



Changes from zip release v1.1.2 to v1.1.3 - January 26, 2009
------------------------------------------------------------

1) Consolidated all change PDFs to this single change log.



2) Changes to DynamicStreamItem.as

The public var "startRate" was changed to "startingIndex", making it clearer what value it is holding.



3) Changes to OvpDynamicNetStream.as

The "startPlay()" method will now use the DynamicStreamItem.startingIndex to determine what stream to begin with if this value has been set.



4) Changes to VideoController.as

The "connectedHandler()" method now checks for a valid connection object before continuing.

The "progressHandler()" method now checks for a valid NetStream object before continuing.



5) Change to Model.as

The "parseSource()" method now looks at the file extension before looking at the "http" protocol to determine the source type.  The class was not correctly loading SMIL files over HTTP before this change since it was looking at the protocol before looking at the extension.



6) Change to ControlbarView.as

Fixed a bug where the scrub bar was not being sized correctly for some content.

Changes from zip release v1.1.3 to v1.1.4 - January 27, 2009
-------------------------------------------------------------
1) Added a new event to OvpEvent called ASYNC_ERROR
2) Added a new event handler to OvpNetStream to handle AsyncErrorEvent.ASYNC_ERROR events.  The OvpNetStream class will dispatch an OvpEvent.ASYNC_ERROR in this case and the error's text will be in the data member of the OvpEvent object.
3) Modified the CS3sampleAMDOnDemand.fla sample to trace OvpEvent.ASYNC_ERROR events.
 
Changes from zip release v1.1.4 to v1.1.5 - January 28, 2009
------------------------------------------------------------
1) Added a new event to OvpEvent called ONFI
2) Added a new event handler to OvpNetStream to handle the onFI callback. Flash Media Live Encoder contains a special built-in handler, onFI, that subscribing clients can use 
in their ActionScript code to access timecode information. You can get timecode and system date and time information, if timecode and system date and time were embedded in the stream, 
by accessing the tc, sd, and st properties of the data object when handling this event.
3) Added OvpEvent.ONFI event handlers to the CS3sampleAMDOnDemand.fla and FLEXsampleAMDOnDemand.mxml sample files.


Changes from zip release v1.1.5 to v2.0.0 - March 11, 2009
------------------------------------------------------------

1) A significant code-refactoring has taken place with this release. In the prior release, any CDN-dependent class (such as AkamaiConnection) was bundled into the org.openvideoplaer.net folder and differentiated only by its prefix. We regard this differentiation as weak and so to further enforce the separation of generic FMS code from CDN-specific implementations, we have moved all CDN-specific classes into their own com packages, in the case com.akamai.net. The following classes have been effected by this change
WAS -> IS
org.openvideoplayer.net.AkamaiConnection -> com.akamai.net.AkamaiConnection
org.openvideoplayer.net.AkamaiNetStream -> com.akamai.net.AkamaiNetStream
org.openvideoplayer.net.AkamaiDynamicNetStream -> com.akamai.net.AkamaiDynamicNetStream
org.openvideoplayer.net.AkamaiEnhancedNetStream -> com.akamai.net.AkamaiEnhancedNetStream
org.openvideoplayer.rss.AkamaiBOSSParser -> com.akamai.rss.AkamaiBOSSParser
org.openvideoplayer.rss.AkamaiMediaRSS -> com.akamai.rss.AkamaiMediaRSS

2) A second refactoring includes separating the core connection and netstream management code from the player implementations. In the prior release, the player implementation was in trunk.flash.org.openvideoplayer.players. This has now been moved to trunk.flash.players. Additionally the core com and org folders have been moved out of the flash root and down one level into the core folder. 

3) A swc of the core code classes (everything in flash.core branch) is now available inside trunk/flash/core/bin

4) org.openvideoplayer.net.dynamicstream.ISwitchingRule - modified to add reason method to indicate the reason for the switch

5) org.openvideoplayer.net.dynamicstream.BandwidthRule - modified to add reason method.

6) org.openvideoplayer.net.dynamicstream.BufferRule - modified to add reason method. Also panic mode restricted from being invoked at stream time of 0.

7) org.openvideoplayer.net.dynamicstream.FrameDropRule - modified to add reason method.

8) org.openvideoplayer.net.OvpDynamicNetStream 
* Lowered default stable buffer to 5s from 10s. This is to allow faster switching between bitrates.
* New algorithm for setting bandwidth throttling between server and client. Previously bw was throttled to 125% of max rendition bitrate. Now bw is throttled dynamically with each rendition change, to 140% of the that rendition’s bitrate.
* Fixed bug in constructor regarding setting of the inherited isLive attribute and maxBufferLength properties.
* Stable buffer level can now be adjusted by the parent player via the inherited maxBufferLength property.

9) com.akamai.net.AkamaiNetStream - added code to monitor live stream unpublish events and have the client automatically attempt to resubscribe every 10s 

10) com.akamai.net.AkamaiDynamicNetStream - added code to monitor live stream unpublish events and have the client automatically attempt to resubscribe every 10s 

11) org.openvideoplayer.parsers.ParserBase.as - added as a building block for custom parsing classes

12) org.openvideoplayer.parsers.DynamicSmilParser.as 
* enhanced to use the new ParserBase class
* bug fix to handle parsing of SMIL files with a declared namespace. 

13) org.openvideoplayer.cc - this is a new package providing support for closed captioning.  See the Flex and Flash samples and the ASDocs for more information.
14) org.openvideoplayer.parsers.DfxpParser - this new class parses closed captioning xml files and supports a subset of the W3C Timed Text Authoring Format 1.0 - Distribution Format Exchange Profile (DFXP). 
15) New Flex and Flash samples for closed captioning.
16) All Flash samples now updated to CS4 and require CS4 to load and compile.
17) A new Flex Builder project has been added to make it easier for developers. Simply import this project into Flex Builder, it contains all of the Flex sample MXML applications.

Changes from zip release v2.0.0 to v2.1.0 - October 14, 2009
------------------------------------------------------------
1) A new plug-in architecture is introduced in this release. The Akamai MultiPlayer implements the IOvpPlayer interface and plug-ins are specified by 
flashvars in the containing html. Take a look at the html file called "AkamaiMultiPlayerExample_WITH_AD_PREROLL.html". 

2) There are 3 new plugins in this release:
a) AdPlayer.swf - this plugin implements an IVPAID interface and knows how to play a video ad. This SWF implements a JavaScript bridge and can be 
controlled from either JavaScript or ActionScript.
b) VASTHandler.swf - this plugin implements the IAB VAST standard for specifying an ad experience.
c) MainSail.swf - this plugin implements the Akamai pre-standard called MAST (Media Abstract Sequencing Template) representing the "when" and "where"
of the ad experience.

3) There are two new Flex samples showing the new Ad plugins, The Flex Builder project is called "flex-advertising" and can be found in the 
/trunk/flash/samples/flex-advertising folder.  There is also a Flash sample in /trunk/flash/samples/flash/akamai/CS4advertisingSampleRSS.

4) There is a new OvpClientProxy class in the org.openvideoplayer.net package and the client property on the OvpNetStream class has changed. See the client "setter" in OvpNetStream.as 
or the ASDocs for more info.

5) The Akamai MultiPlayer has been modified:
a) to properly use hardware scaling in fullscreen mode.
b) a new flashvar has been added to disable the fullscreen button (enableFullscreen parameter).
c) to resize video based on video.videoWidth and video.videoHeight if no metadata present.
d) to accept a starting image placeholder.
e) to implement the IOvpPlugin interface.

6) Modified OVP CS4sampleLive.fla to show how to correctly supply auth params.

7) Modified OVP Flex samples to show how to correctly supply auth params. Removed all mentions of connection auth from the AkamaiSampleLive.mxml Flex project.

8) New blinkx integration (blinkx.com) sample can be found in the /trunk/flash/samples/flash/OVP_Blinkx_API.

9) There is now a Flex Builder project for the core code.  Simply import the project found in /trunk/flash/core into Flex Builder to build the core SWC.

10) Bug fixes:
2837857 - rtmpe connection url fails for servers which enforce rtmpe
2819734 - OvpConnection.call is broken
2819730 - OvpConnection doesn't dispatch FCSUBSCRIBE event
2819315 - AkamaiNetStream FCSubscribe should stop on close()
2805149 - In Flash multiplayer, with autostart=false, seek & play fail
2784483 - Disable fullscreen button for MultiPlayer
2779896 - Multi-player v2 - video scaling when metadata not present
 
[End of Document]