Changeset 2245


Ignore:
Timestamp:
06/11/12 12:58:27 (11 months ago)
Author:
alex
Message:

final changes based on code review.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/hds/src/com/longtailvideo/jwplayer/media/HDSMediaProvider.as

    r2244 r2245  
    2828        import org.osmf.events.MediaPlayerStateChangeEvent; 
    2929        import org.osmf.events.PlayEvent; 
     30        import org.osmf.events.TimeEvent; 
    3031        import org.osmf.media.DefaultMediaFactory; 
    3132        import org.osmf.media.MediaElement; 
     
    4445        public class HDSMediaProvider extends MediaProvider { 
    4546                /** OSMF player **/ 
    46                 protected var _player:MediaPlayer; 
     47                protected var _osmfPlayer:MediaPlayer; 
    4748                 /**OSMF media container**/ 
    4849                protected var _container:MediaContainer; 
     
    5152                /** ID for the position interval. **/ 
    5253                protected var _positionInterval:Number; 
    53                  
     54 
    5455                public function HDSMediaProvider() { 
    5556                        //OSMFSettings.enableStageVideo = false; 
    56                         _player = new MediaPlayer(); 
     57                        _osmfPlayer = new MediaPlayer(); 
    5758                        _container = new MediaContainer(); 
     59                        _osmfPlayer.addEventListener(TimeEvent.COMPLETE, completeEvent); 
     60                        _osmfPlayer.addEventListener(BufferEvent.BUFFERING_CHANGE,bufferingChangeHandler); 
     61                        _osmfPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE,positionHandler); 
    5862                        super("hds"); 
    5963                } 
     
    8084                        _container.addMediaElement(_element); 
    8185                        super.load(itm); 
    82                         _player.media = _element; 
    83                         _player.addEventListener(BufferEvent.BUFFERING_CHANGE,bufferingChangeHandler); 
    84                         _player.addEventListener(PlayEvent.PLAY_STATE_CHANGE, completeEvent); 
     86                        _osmfPlayer.volume = config.mute ? 0 : config.volume; 
     87                        _osmfPlayer.media = _element; 
     88 
    8589                        _element.addEventListener(MediaErrorEvent.MEDIA_ERROR,errorEvent); 
    86                         clearInterval(_positionInterval); 
    87                         _positionInterval = setInterval(positionHandler, 200); 
    88                 } 
    89                  
     90                         
     91                } 
     92                 
     93 
    9094                /** 
    9195                 * handles the position of the status bar 
    9296                 *  
    9397                 **/ 
    94                 protected function positionHandler():void { 
    95                          
    96                         var pos:Number = Math.round(Math.min(_player.currentTime, Math.max(_player.duration, 0)) * 100) / 100; 
    97                         var timeRemaining:Number = _player.duration > 0 ? (_player.duration - _player.currentTime) : _player.currentTime; 
     98                protected function positionHandler(event:TimeEvent):void { 
     99                         
     100                        var pos:Number = Math.round(Math.min(_osmfPlayer.currentTime, Math.max(_osmfPlayer.duration, 0)) * 100) / 100; 
     101                        var timeRemaining:Number = _osmfPlayer.duration > 0 ? (_osmfPlayer.duration - _osmfPlayer.currentTime) : _osmfPlayer.currentTime; 
    98102 
    99103                        if (state != PlayerState.PLAYING) { 
     
    103107                        _position = pos; 
    104108                         
    105                         if (position < _player.duration) { 
     109                        if (position < _osmfPlayer.duration) { 
    106110                                if (position >= 0) { 
    107                                         sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_TIME, {position: position, duration: _player.duration}); 
     111                                        sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_TIME, {position: position, duration: _osmfPlayer.duration}); 
    108112                                } 
    109113                        }  
     
    116120                private function bufferingChangeHandler(event:BufferEvent): void 
    117121                { 
    118                         if (_player.buffering) { 
     122                        if (_osmfPlayer.buffering) { 
    119123                                sendBufferEvent(0); 
    120124                                setState(PlayerState.BUFFERING); 
    121                         } else { 
     125                        } else if (_osmfPlayer.playing) { 
    122126 
    123127                                dispatchEvent(new MediaEvent(MediaEvent.JWPLAYER_MEDIA_BUFFER_FULL)); 
    124                                 _item.duration = _player.duration; 
     128                                _item.duration = _osmfPlayer.duration; 
    125129                                //fixes size issue 
    126130                                resize(_width,_height); 
    127131                        } 
    128  
    129132                } 
    130133                 
     
    133136                 * @param the play state change event 
    134137                 **/ 
    135                 private function completeEvent(event:PlayEvent):void { 
    136                         if (event.playState ==  PlayState.STOPPED) {     
    137                                 complete(); 
    138                 } 
     138                private function completeEvent(event:TimeEvent):void { 
     139                        complete(); 
    139140                } 
    140141                 
     
    144145                 **/ 
    145146                private function errorEvent(event:MediaErrorEvent):void { 
    146                         //for some reason i am not getting an error code, only a detail 
    147                         error(event.error.detail); 
     147                        Logger.log(event.error.detail); 
     148                        error("OSMF Playback Error"); 
    148149                } 
    149150                 
    150151                /** Resume playback of the item. **/ 
    151152                public override function play():void { 
    152                         if (_player.paused) {  
    153                                 _player.play(); 
     153                        if (_osmfPlayer.paused) {  
     154                                _osmfPlayer.play(); 
    154155                        }  
    155156                        super.play(); 
    156157                } 
    157                  
    158                  
     158 
    159159                /** Pause playback of the item. **/ 
    160160                public override function pause():void { 
    161                         if (_player.playing) {  
    162                                 _player.pause(); 
     161                        if (_osmfPlayer.playing) {  
     162                                _osmfPlayer.pause(); 
    163163                        } 
    164164                        super.pause(); 
     
    174174                override public function seek(pos:Number):void { 
    175175 
    176                         _player.seek(pos); 
    177                          
    178                         //jw should restart on seek (move to MediaProvider.as?) 
    179                         if (_player.paused) { 
     176                        _osmfPlayer.seek(pos); 
     177                         
     178                        //jw should restart on seek 
     179                        if (_osmfPlayer.paused) { 
    180180                                play(); 
    181181                        } 
     
    185185                /** Stop playing and loading the item. **/ 
    186186                public override function stop():void { 
    187  
    188                         if (_player.state == PlayState.PLAYING) { 
    189                                 _player.pause(); 
    190                                 _player.stop(); 
    191                                 clearInterval(_positionInterval); 
    192                                 _positionInterval = undefined; 
    193                                 _player.removeEventListener(BufferEvent.BUFFERING_CHANGE,bufferingChangeHandler); 
    194                                 _player.removeEventListener(PlayEvent.PLAY_STATE_CHANGE,completeEvent); 
    195                                 if (_element != null){ 
    196                                         _container.removeMediaElement(_element); 
    197                                         _element = null; 
    198                                 } 
    199                         }        
     187                        _osmfPlayer.stop(); 
     188                        if (_element != null){ 
     189                                _container.removeMediaElement(_element); 
     190                                _element = null; 
     191                        } 
    200192                        super.stop(); 
    201193                } 
     
    209201                 **/ 
    210202                public override function setVolume(vol:Number):void { 
    211                         _player.volume = vol/100; 
     203                        _osmfPlayer.volume = vol/100; 
    212204                        super.setVolume(vol); 
    213205                } 
Note: See TracChangeset for help on using the changeset viewer.