home *** CD-ROM | disk | FTP | other *** search
- package mx.controls
- {
- import flash.display.DisplayObject;
- import flash.events.Event;
- import flash.events.ProgressEvent;
- import flash.media.Camera;
- import mx.controls.videoClasses.VideoPlayer;
- import mx.core.EdgeMetrics;
- import mx.core.IFlexDisplayObject;
- import mx.core.IRectangularBorder;
- import mx.core.IUIComponent;
- import mx.core.UIComponent;
- import mx.core.mx_internal;
- import mx.events.CuePointEvent;
- import mx.events.FlexEvent;
- import mx.events.MetadataEvent;
- import mx.events.VideoEvent;
- import mx.styles.ISimpleStyleClient;
- import mx.utils.LoaderUtil;
-
- use namespace mx_internal;
-
- public class VideoDisplay extends UIComponent
- {
- mx_internal static const VERSION:String = "3.5.0.12683";
-
- private static const DEFAULT_WIDTH:Number = 10;
-
- private static const DEFAULT_HEIGHT:Number = 10;
-
- private var sourceChanged:Boolean = false;
-
- private var _playheadUpdateInterval:int = -1;
-
- private var _autoBandWidthDetection:Boolean = false;
-
- protected var border:IFlexDisplayObject;
-
- private var _idleTimeout:int = -1;
-
- private var _volume:Number = 0.75;
-
- private var _source:String = null;
-
- private var creationCompleted:Boolean = false;
-
- mx_internal var videoPlayer:VideoPlayer = null;
-
- private var _ncManagerClass:Class = null;
-
- private var _maintainAspectRatio:Boolean = true;
-
- private var _cuePointManagerClass:Class = null;
-
- private var _progressInterval:int = -1;
-
- private var _cuePoints:Array = null;
-
- private var asCuePointIndexResetPending:Boolean = false;
-
- private var makeVideoVisibleOnLayout:Boolean = false;
-
- private var _cuePointManager:Object = null;
-
- private var closeCalled:Boolean = false;
-
- private var _totalTime:Number = NaN;
-
- private var _live:Boolean = false;
-
- private var _bufferTime:Number = 0.1;
-
- private var _playheadTime:Number = NaN;
-
- private var _autoPlay:Boolean = true;
-
- private var _autoRewind:Boolean = true;
-
- public function VideoDisplay()
- {
- super();
- addEventListener(FlexEvent.CREATION_COMPLETE,creationCompleteHandler);
- }
-
- [Bindable("playheadUpdate")]
- [Bindable("playheadTimeChanged")]
- [Bindable("change")]
- public function get playheadTime() : Number
- {
- return mx_internal::videoPlayer != null ? mx_internal::videoPlayer.playheadTime : _playheadTime;
- }
-
- public function set playheadTime(param1:Number) : void
- {
- _playheadTime = param1;
- asCuePointIndexResetPending = true;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.playheadTime = param1;
- dispatchEvent(new Event("playheadTimeChanged"));
- }
- }
-
- [Bindable("autoBandWidthDetection")]
- public function get autoBandWidthDetection() : Boolean
- {
- return _autoBandWidthDetection;
- }
-
- public function set autoBandWidthDetection(param1:Boolean) : void
- {
- if(_autoBandWidthDetection != param1)
- {
- _autoBandWidthDetection = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.autoBandWidthDetection = param1;
- }
- dispatchEvent(new Event("autoBandWidthDetectionChanged"));
- }
- }
-
- [Bindable("maintainAspectRatioChanged")]
- public function get maintainAspectRatio() : Boolean
- {
- return _maintainAspectRatio;
- }
-
- [Bindable("resize")]
- public function get videoWidth() : int
- {
- return !!mx_internal::videoPlayer ? mx_internal::videoPlayer.videoWidth : -1;
- }
-
- public function set autoPlay(param1:Boolean) : void
- {
- _autoPlay = param1;
- }
-
- public function set cuePointManagerClass(param1:Class) : void
- {
- _cuePointManagerClass = param1;
- }
-
- public function stop() : void
- {
- if(!mx_internal::videoPlayer)
- {
- return;
- }
- mx_internal::videoPlayer.stop();
- }
-
- public function get progressInterval() : int
- {
- if(mx_internal::videoPlayer)
- {
- return mx_internal::videoPlayer.progressInterval;
- }
- return _progressInterval == -1 ? int(VideoPlayer.DEFAULT_UPDATE_PROGRESS_INTERVAL) : _progressInterval;
- }
-
- public function set maintainAspectRatio(param1:Boolean) : void
- {
- if(_maintainAspectRatio != param1)
- {
- _maintainAspectRatio = param1;
- invalidateSize();
- invalidateDisplayList();
- dispatchEvent(new Event("maintainAspectRatioChanged"));
- }
- }
-
- private function videoPlayer_metadataHandler(param1:MetadataEvent) : void
- {
- resizeVideo();
- dispatchEvent(param1.clone());
- }
-
- [Bindable("volumeChanged")]
- public function get volume() : Number
- {
- return !!mx_internal::videoPlayer ? mx_internal::videoPlayer.volume : _volume;
- }
-
- [Bindable("sourceChanged")]
- public function get source() : String
- {
- return _source;
- }
-
- private function get ncManagerClass() : Class
- {
- return _ncManagerClass != null ? _ncManagerClass : VideoPlayer.DEFAULT_INCMANAGER;
- }
-
- public function set progressInterval(param1:int) : void
- {
- if(_progressInterval != param1)
- {
- _progressInterval = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.progressInterval = param1;
- }
- }
- }
-
- [Bindable("stateChange")]
- public function get stateResponsive() : Boolean
- {
- return !!mx_internal::videoPlayer ? mx_internal::videoPlayer.stateResponsive : true;
- }
-
- private function resizeVideo() : void
- {
- var _loc1_:Number = mx_internal::videoPlayer.videoWidth;
- var _loc2_:Number = mx_internal::videoPlayer.videoHeight;
- if(_loc1_ > 0 && _loc2_ > 0 && (measuredWidth != _loc1_ || measuredHeight != _loc2_))
- {
- invalidateSize();
- invalidateDisplayList();
- makeVideoVisibleOnLayout = true;
- }
- }
-
- [Bindable("bufferTimeChanged")]
- public function get bufferTime() : Number
- {
- return _bufferTime;
- }
-
- [Bindable("metadataReceived")]
- public function get metadata() : Object
- {
- return mx_internal::videoPlayer != null ? mx_internal::videoPlayer.metadata : null;
- }
-
- [Bindable("metadataReceived")]
- [Bindable("totalTimeUpdated")]
- [Bindable("complete")]
- public function get totalTime() : Number
- {
- if(!isNaN(_totalTime))
- {
- return _totalTime;
- }
- return mx_internal::videoPlayer != null ? mx_internal::videoPlayer.totalTime : NaN;
- }
-
- public function set volume(param1:Number) : void
- {
- if(_volume != param1)
- {
- _volume = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.volume = param1;
- }
- dispatchEvent(new Event("volumeChanged"));
- }
- }
-
- [Bindable("stateChange")]
- public function get playing() : Boolean
- {
- return mx_internal::videoPlayer != null && mx_internal::videoPlayer.state == VideoPlayer.PLAYING;
- }
-
- public function set source(param1:String) : void
- {
- if(_source != param1)
- {
- _source = param1;
- _playheadTime = NaN;
- sourceChanged = true;
- dispatchEvent(new Event("sourceChanged"));
- if(_autoPlay && creationCompleted)
- {
- autoPlaying();
- }
- }
- }
-
- override protected function createChildren() : void
- {
- super.createChildren();
- createBorder();
- createVideoPlayer();
- }
-
- private function set ncManagerClass(param1:Class) : void
- {
- _ncManagerClass = param1;
- }
-
- public function play() : void
- {
- if(!mx_internal::videoPlayer)
- {
- createVideoPlayer();
- }
- if(mx_internal::videoPlayer.playheadTime >= 0)
- {
- asCuePointIndexResetPending = true;
- }
- if(sourceChanged || closeCalled)
- {
- sourceChanged = false;
- closeCalled = false;
- mx_internal::videoPlayer.play(getActualURL(_source),_live,isNaN(_totalTime) ? -1 : _totalTime);
- }
- else
- {
- mx_internal::videoPlayer.play(null,_live,isNaN(_totalTime) ? -1 : _totalTime);
- }
- }
-
- protected function layoutChrome(param1:Number, param2:Number) : void
- {
- if(border)
- {
- border.move(0,0);
- border.setActualSize(param1,param2);
- }
- }
-
- protected function createBorder() : void
- {
- var _loc1_:Class = null;
- if(!border && isBorderNeeded())
- {
- _loc1_ = getStyle("borderSkin");
- border = new _loc1_();
- if(border is IUIComponent)
- {
- IUIComponent(border).enabled = enabled;
- }
- if(border is ISimpleStyleClient)
- {
- ISimpleStyleClient(border).styleName = this;
- }
- addChildAt(DisplayObject(border),0);
- invalidateDisplayList();
- }
- }
-
- [Bindable("autoRewindChanged")]
- public function get autoRewind() : Boolean
- {
- return _autoRewind;
- }
-
- private function videoPlayer_rewindHandler(param1:VideoEvent) : void
- {
- dispatchEvent(param1.clone());
- }
-
- [Bindable("progress")]
- [Bindable("complete")]
- public function get bytesLoaded() : int
- {
- if(mx_internal::videoPlayer)
- {
- return mx_internal::videoPlayer.bytesLoaded;
- }
- return -1;
- }
-
- private function videoPlayer_readyHandler(param1:VideoEvent) : void
- {
- resizeVideo();
- dispatchEvent(param1.clone());
- }
-
- private function getActualURL(param1:String) : String
- {
- var _loc2_:String = null;
- var _loc3_:int = 0;
- if(!(param1.indexOf(":") > -1 || param1.indexOf("/") == 0 || param1.indexOf("\\") == 0))
- {
- if(root)
- {
- _loc2_ = LoaderUtil.normalizeURL(root.loaderInfo);
- }
- else if(systemManager)
- {
- _loc2_ = LoaderUtil.normalizeURL(DisplayObject(systemManager).loaderInfo);
- }
- if(_loc2_)
- {
- _loc3_ = Math.max(_loc2_.lastIndexOf("\\"),_loc2_.lastIndexOf("/"));
- if(_loc3_ != -1)
- {
- param1 = _loc2_.substr(0,_loc3_ + 1) + param1;
- }
- }
- }
- return param1;
- }
-
- private function videoPlayer_stateChangeHandler(param1:VideoEvent) : void
- {
- if(mx_internal::videoPlayer.state == VideoPlayer.PLAYING)
- {
- resizeVideo();
- }
- if(param1.state == VideoEvent.CONNECTION_ERROR)
- {
- this.close();
- }
- dispatchEvent(param1.clone());
- }
-
- public function set bufferTime(param1:Number) : void
- {
- if(_bufferTime != param1)
- {
- _bufferTime = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.bufferTime = param1;
- }
- dispatchEvent(new Event("bufferTimeChanged"));
- }
- }
-
- override protected function measure() : void
- {
- var _loc2_:Number = NaN;
- super.measure();
- var _loc1_:Number = mx_internal::videoPlayer.videoWidth;
- _loc2_ = mx_internal::videoPlayer.videoHeight;
- measuredWidth = Math.max(_loc1_,DEFAULT_WIDTH);
- measuredHeight = Math.max(_loc2_,DEFAULT_HEIGHT);
- var _loc3_:* = !isNaN(explicitWidth);
- var _loc4_:* = !isNaN(explicitHeight);
- if(_maintainAspectRatio && (_loc3_ || _loc4_))
- {
- if(_loc3_ && !_loc4_ && _loc1_ > 0)
- {
- measuredHeight = explicitWidth * _loc2_ / _loc1_;
- }
- else if(_loc4_ && !_loc3_ && _loc2_ > 0)
- {
- measuredWidth = explicitHeight * _loc1_ / _loc2_;
- }
- }
- measuredMinWidth = DEFAULT_WIDTH;
- measuredMinHeight = DEFAULT_HEIGHT;
- }
-
- private function videoPlayer_progressHandler(param1:ProgressEvent) : void
- {
- dispatchEvent(param1.clone());
- }
-
- public function set totalTime(param1:Number) : void
- {
- if(_totalTime != param1)
- {
- _totalTime = param1;
- dispatchEvent(new Event("totalTimeUpdated"));
- }
- }
-
- private function isBorderNeeded() : Boolean
- {
- var _loc1_:Object = getStyle("borderStyle");
- if(_loc1_)
- {
- if(_loc1_ != "none" || _loc1_ == "none" && getStyle("mouseShield"))
- {
- return true;
- }
- }
- _loc1_ = getStyle("backgroundColor");
- if(_loc1_ !== null && _loc1_ !== "")
- {
- return true;
- }
- _loc1_ = getStyle("backgroundImage");
- return _loc1_ != null && _loc1_ != "";
- }
-
- private function videoPlayer_cuePointHandler(param1:MetadataEvent) : void
- {
- var _loc2_:Object = param1.info;
- var _loc3_:CuePointEvent = new CuePointEvent(CuePointEvent.CUE_POINT);
- _loc3_.cuePointName = _loc2_.name;
- _loc3_.cuePointTime = _loc2_.time;
- _loc3_.cuePointType = _loc2_.type;
- dispatchEvent(_loc3_);
- }
-
- private function autoPlaying() : void
- {
- if(_source)
- {
- if(_autoPlay)
- {
- play();
- }
- else
- {
- load();
- }
- if(!isNaN(_playheadTime))
- {
- asCuePointIndexResetPending = Boolean(_playheadTime >= 0);
- mx_internal::videoPlayer.seek(_playheadTime);
- }
- }
- }
-
- [Bindable("resize")]
- public function get videoHeight() : int
- {
- return !!mx_internal::videoPlayer ? mx_internal::videoPlayer.videoHeight : -1;
- }
-
- public function get autoPlay() : Boolean
- {
- return _autoPlay;
- }
-
- public function get cuePointManagerClass() : Class
- {
- return _cuePointManagerClass;
- }
-
- public function set autoRewind(param1:Boolean) : void
- {
- if(_autoRewind != param1)
- {
- _autoRewind = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.autoRewind = param1;
- }
- dispatchEvent(new Event("autoRewindChanged"));
- }
- }
-
- [Bindable("progress")]
- [Bindable("complete")]
- public function get bytesTotal() : int
- {
- if(mx_internal::videoPlayer)
- {
- return mx_internal::videoPlayer.bytesTotal;
- }
- return -1;
- }
-
- [Bindable("stateChange")]
- public function get state() : String
- {
- return !!mx_internal::videoPlayer ? mx_internal::videoPlayer.state : VideoPlayer.DISCONNECTED;
- }
-
- private function createVideoPlayer() : void
- {
- mx_internal::videoPlayer = new VideoPlayer(10,10,_ncManagerClass);
- addChild(mx_internal::videoPlayer);
- mx_internal::videoPlayer.visible = false;
- mx_internal::videoPlayer.autoBandWidthDetection = _autoBandWidthDetection;
- mx_internal::videoPlayer.autoRewind = _autoRewind;
- mx_internal::videoPlayer.bufferTime = _bufferTime;
- mx_internal::videoPlayer.volume = _volume;
- if(_idleTimeout != -1)
- {
- mx_internal::videoPlayer.idleTimeout = _idleTimeout;
- }
- if(_playheadUpdateInterval != -1)
- {
- mx_internal::videoPlayer.playheadUpdateInterval = _playheadUpdateInterval;
- }
- if(_progressInterval != -1)
- {
- mx_internal::videoPlayer.progressInterval = _progressInterval;
- }
- mx_internal::videoPlayer.addEventListener(VideoEvent.PLAYHEAD_UPDATE,videoPlayer_playheadUpdateHandler);
- mx_internal::videoPlayer.addEventListener(VideoEvent.COMPLETE,videoPlayer_completeHandler);
- mx_internal::videoPlayer.addEventListener(MetadataEvent.CUE_POINT,videoPlayer_cuePointHandler);
- mx_internal::videoPlayer.addEventListener(MetadataEvent.METADATA_RECEIVED,videoPlayer_metadataHandler);
- mx_internal::videoPlayer.addEventListener(ProgressEvent.PROGRESS,videoPlayer_progressHandler);
- mx_internal::videoPlayer.addEventListener(VideoEvent.READY,videoPlayer_readyHandler);
- mx_internal::videoPlayer.addEventListener(VideoEvent.REWIND,videoPlayer_rewindHandler);
- mx_internal::videoPlayer.addEventListener(VideoEvent.STATE_CHANGE,videoPlayer_stateChangeHandler);
- if(cuePointManagerClass)
- {
- _cuePointManager = new cuePointManagerClass(mx_internal::videoPlayer);
- _cuePointManager.videoDisplay = this;
- }
- if(_cuePoints)
- {
- setCuePoints(_cuePoints);
- }
- }
-
- private function setCuePoints(param1:Array) : void
- {
- if(_cuePointManager)
- {
- _cuePointManager.setCuePoints(param1);
- }
- _cuePoints = null;
- dispatchEvent(new Event("cuePointsChanged"));
- }
-
- public function attachCamera(param1:Camera) : void
- {
- if(!mx_internal::videoPlayer)
- {
- createVideoPlayer();
- }
- mx_internal::videoPlayer.attachCamera(param1);
- mx_internal::videoPlayer.visible = true;
- }
-
- public function get cuePointManager() : Object
- {
- return _cuePointManager;
- }
-
- private function videoPlayer_playheadUpdateHandler(param1:VideoEvent) : void
- {
- dispatchEvent(param1.clone());
- if(_cuePointManager)
- {
- if(asCuePointIndexResetPending && mx_internal::videoPlayer.state != VideoPlayer.SEEKING)
- {
- asCuePointIndexResetPending = false;
- _cuePointManager.resetCuePointIndex(param1.playheadTime);
- }
- _cuePointManager.dispatchCuePoints();
- }
- }
-
- public function set playheadUpdateInterval(param1:int) : void
- {
- if(_playheadUpdateInterval != param1)
- {
- _playheadUpdateInterval = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.playheadUpdateInterval = param1;
- }
- }
- }
-
- private function videoPlayer_completeHandler(param1:VideoEvent) : void
- {
- dispatchEvent(param1.clone());
- }
-
- public function set live(param1:Boolean) : void
- {
- _live = param1;
- }
-
- public function set idleTimeout(param1:int) : void
- {
- if(_idleTimeout != param1)
- {
- _idleTimeout = param1;
- if(mx_internal::videoPlayer)
- {
- mx_internal::videoPlayer.idleTimeout = param1;
- }
- }
- }
-
- public function load() : void
- {
- if(!mx_internal::videoPlayer)
- {
- createVideoPlayer();
- }
- if(sourceChanged)
- {
- sourceChanged = false;
- mx_internal::videoPlayer.load(getActualURL(_source),false,isNaN(_totalTime) ? -1 : _totalTime);
- }
- }
-
- public function set cuePoints(param1:Array) : void
- {
- _cuePoints = param1;
- if(_cuePointManager)
- {
- setCuePoints(param1);
- }
- }
-
- public function get idleTimeout() : int
- {
- if(mx_internal::videoPlayer)
- {
- return mx_internal::videoPlayer.idleTimeout;
- }
- return _idleTimeout == -1 ? int(VideoPlayer.DEFAULT_IDLE_TIMEOUT_INTERVAL) : _idleTimeout;
- }
-
- public function get playheadUpdateInterval() : int
- {
- if(mx_internal::videoPlayer)
- {
- return mx_internal::videoPlayer.playheadUpdateInterval;
- }
- return _playheadUpdateInterval == -1 ? int(VideoPlayer.DEFAULT_UPDATE_TIME_INTERVAL) : _playheadUpdateInterval;
- }
-
- private function creationCompleteHandler(param1:FlexEvent) : void
- {
- removeEventListener(FlexEvent.CREATION_COMPLETE,creationCompleteHandler);
- creationCompleted = true;
- autoPlaying();
- }
-
- public function get live() : Boolean
- {
- return _live;
- }
-
- public function pause() : void
- {
- if(!mx_internal::videoPlayer)
- {
- return;
- }
- mx_internal::videoPlayer.pause();
- }
-
- override protected function updateDisplayList(param1:Number, param2:Number) : void
- {
- var _loc10_:Number = NaN;
- var _loc11_:Number = NaN;
- super.updateDisplayList(param1,param2);
- layoutChrome(param1,param2);
- if(!mx_internal::videoPlayer)
- {
- return;
- }
- var _loc3_:EdgeMetrics = borderMetrics;
- var _loc4_:Number = _loc3_.left;
- var _loc5_:Number = _loc3_.top;
- var _loc6_:Number = param1 - _loc3_.left - _loc3_.right;
- var _loc7_:Number = param2 - _loc3_.top - _loc3_.bottom;
- var _loc8_:Number = mx_internal::videoPlayer.videoWidth;
- var _loc9_:Number = mx_internal::videoPlayer.videoHeight;
- if(_maintainAspectRatio && _loc8_ > 0 && _loc9_ > 0)
- {
- _loc10_ = _loc6_ / _loc8_;
- _loc11_ = _loc7_ / _loc9_;
- if(_loc10_ < _loc11_)
- {
- _loc7_ = _loc6_ * _loc9_ / _loc8_;
- _loc5_ = (param2 - _loc7_) / 2;
- }
- else if(_loc11_ < _loc10_)
- {
- _loc6_ = _loc7_ * _loc8_ / _loc9_;
- _loc4_ = (param1 - _loc6_) / 2;
- }
- }
- mx_internal::videoPlayer.x = _loc4_;
- mx_internal::videoPlayer.y = _loc5_;
- mx_internal::videoPlayer.setSize(_loc6_,_loc7_);
- if(makeVideoVisibleOnLayout)
- {
- makeVideoVisibleOnLayout = false;
- mx_internal::videoPlayer.visible = true;
- }
- }
-
- public function close() : void
- {
- if(!mx_internal::videoPlayer)
- {
- return;
- }
- mx_internal::videoPlayer.close();
- closeCalled = true;
- }
-
- [Bindable("cuePointsChanged")]
- public function get cuePoints() : Array
- {
- if(!_cuePointManager)
- {
- return _cuePoints;
- }
- return _cuePointManager.getCuePoints();
- }
-
- public function get borderMetrics() : EdgeMetrics
- {
- return Boolean(border) && border is IRectangularBorder ? IRectangularBorder(border).borderMetrics : EdgeMetrics.EMPTY;
- }
- }
- }
-
-