Changeset 1243


Ignore:
Timestamp:
08/26/10 19:02:04 (3 years ago)
Author:
pablo
Message:
  • Excludes certain filetypes from levels for HTML5 failover configurations. (981)
  • Fixes aspect-ratio maintaining when switching to fullscreen before playing
Location:
trunk/fl5
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/fl5/src/com/longtailvideo/jwplayer/model/PlaylistItem.as

    r961 r1243  
    7979                /** Insert an additional bitrate level, keeping the array sorted from highest to lowest. **/ 
    8080                public function addLevel(newLevel:PlaylistItemLevel):void { 
    81                         if (_currentLevel < 0) _currentLevel = 0; 
    82                         for (var i:Number = 0; i < _levels.length; i++) { 
    83                                 var level:PlaylistItemLevel = _levels[i] as PlaylistItemLevel; 
    84                                 if (newLevel.bitrate > level.bitrate) { 
    85                                         _levels.splice(i, 0, newLevel); 
    86                                         return; 
    87                                 } else if (newLevel.bitrate == level.bitrate && newLevel.width > level.width) { 
    88                                         _levels.splice(i, 0, newLevel); 
    89                                         return; 
     81                        if (validExtension(newLevel.file)) { 
     82 
     83                                if (_currentLevel < 0) _currentLevel = 0; 
     84                                for (var i:Number = 0; i < _levels.length; i++) { 
     85                                        var level:PlaylistItemLevel = _levels[i] as PlaylistItemLevel; 
     86                                        if (newLevel.bitrate > level.bitrate) { 
     87                                                _levels.splice(i, 0, newLevel); 
     88                                                return; 
     89                                        } else if (newLevel.bitrate == level.bitrate && newLevel.width > level.width) { 
     90                                                _levels.splice(i, 0, newLevel); 
     91                                                return; 
     92                                        } 
    9093                                } 
     94                                _levels.push(newLevel); 
    9195                        } 
    92                          
    93                         _levels.push(newLevel); 
     96                } 
     97                 
     98                /** 
     99                 * Determines whether this file extension can be played in the Flash player.  If not, ignore the level. 
     100                 * This is useful for unified HTML5 / Flash failover setups. 
     101                 **/ 
     102                protected function validExtension(filename:String):Boolean { 
     103                        var foo:String = Strings.extension(filename);  
     104                        switch(Strings.extension(filename)) { 
     105                                case "ogv": 
     106                                case "ogg": 
     107                                case "webm": 
     108                                        return false; 
     109                                default: 
     110                                        return true; 
     111                        } 
    94112                } 
    95113 
  • trunk/fl5/src/com/longtailvideo/jwplayer/player/PlayerVersion.as

    r1240 r1243  
    33         
    44        public class PlayerVersion { 
    5                 protected static var _version:String = "5.3.1240"; 
     5                protected static var _version:String = "5.3.1243"; 
    66                 
    77                public static function get version():String { 
  • trunk/fl5/src/com/longtailvideo/jwplayer/utils/Stretcher.as

    r1238 r1243  
    6161                        clp.x = Math.round(wid / 2 - clp.width / 2); 
    6262                        clp.y = Math.round(hei / 2 - clp.height / 2); 
    63                         clp.width = Math.ceil(clp.width); 
    64                         clp.height = Math.ceil(clp.height); 
     63                        if (clp.width > 0) clp.width = Math.ceil(clp.width); 
     64                        if (clp.height > 0) clp.height = Math.ceil(clp.height); 
    6565                } 
    6666                 
    67                 /** 
    68                  * Calculates the stretching dimensions of a clip without modifying it 
    69                  * 
    70                  * @param clp   The display element to resize. 
    71                  * @param wid   The target width. 
    72                  * @param hei   The target height. 
    73                  * @param typ   The stretching type. 
    74                  **/ 
    75                 public static function stretchDimensions(clp:DisplayObject, wid:Number, hei:Number, typ:String='uniform'):Rectangle { 
    76                         var tempParent:Sprite = new Sprite(); 
    77                         tempParent.graphics.beginFill(1, 1); 
    78                         tempParent.graphics.drawRect(0, 0, wid, hei); 
    79                          
    80                         var tempChild:Sprite = new Sprite(); 
    81                         tempChild.graphics.beginFill(1, 1); 
    82                         tempChild.graphics.drawRect(0, 0, clp.width, clp.height); 
    83                         tempParent.addChild(tempChild); 
    84                          
    85                         stretch(tempChild, wid, hei, typ); 
    86                          
    87                         return new Rectangle(tempChild.x, tempChild.y, tempChild.width, tempChild.height); 
    88                 } 
    89  
    9067        } 
    9168 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/View.as

    r1238 r1243  
    5252                protected var _components:IPlayerComponents; 
    5353                protected var _fullscreen:Boolean = false; 
     54                protected var _normalScreen:Rectangle; 
    5455                protected var stage:Stage; 
    5556 
     
    106107 
    107108                        _root = new MovieClip(); 
     109                        _normalScreen = new Rectangle(); 
    108110                } 
    109111 
     
    274276                        } 
    275277                        dispatchEvent(new ViewEvent(ViewEvent.JWPLAYER_RESIZE, {width: RootReference.stage.stageWidth, height: RootReference.stage.stageHeight})); 
    276                          
     278 
    277279                        redraw(); 
    278280                } 
     
    293295 
    294296                        _components.resize(_player.config.width, _player.config.height); 
     297                        if (!_fullscreen) { 
     298                                _normalScreen.width = _player.config.width; 
     299                                _normalScreen.height = _player.config.height; 
     300                        }  
    295301 
    296302                        resizeBackground(); 
    297303                        resizeMasker(); 
    298304 
    299                         if (_imageLayer.numChildren) { 
    300                                 _imageLayer.x = _components.display.x; 
    301                                 _imageLayer.y = _components.display.y; 
    302                                 Stretcher.stretch(_image, _player.config.width, _player.config.height, _player.config.stretching); 
    303                         } 
    304  
    305                         if (_mediaLayer.numChildren && _model.media.display) { 
    306                                 _mediaLayer.x = _components.display.x; 
    307                                 _mediaLayer.y = _components.display.y; 
    308                                 if (_fullscreen && _model.config.stretching == Stretcher.EXACTFIT) { 
    309                                         var dimensions:Rectangle = Stretcher.stretchDimensions(_model.media.display, _player.config.width, _player.config.height, Stretcher.UNIFORM); 
    310                                         _model.media.resize(dimensions.width, dimensions.height); 
    311                                         _mediaLayer.x = dimensions.x; 
    312                                         _mediaLayer.y = dimensions.y; 
    313                                 } else { 
    314                                         _model.media.resize(_player.config.width, _player.config.height); 
    315                                 } 
    316                         } 
     305                        _imageLayer.x = _mediaLayer.x = _components.display.x; 
     306                        _imageLayer.y = _mediaLayer.y = _components.display.y; 
     307 
     308                        resizeImage(_player.config.width, _player.config.height); 
     309                        resizeMedia(_player.config.width, _player.config.height); 
     310                         
    317311 
    318312                        if (_logo) { 
     
    345339                } 
    346340 
     341                protected function resizeMedia(width:Number, height:Number):void { 
     342                        if (_mediaLayer.numChildren > 0 && _model.media.display) { 
     343                                if (_player.config.stretching == Stretcher.EXACTFIT) { 
     344                                        if (_fullscreen) { 
     345                                                _model.media.resize(_normalScreen.width, _normalScreen.height); 
     346                                                Stretcher.stretch(_mediaLayer, width, height, Stretcher.UNIFORM); 
     347                                        } else { 
     348                                                _model.media.resize(width, height); 
     349                                                _mediaLayer.scaleX = _mediaLayer.scaleY = 1; 
     350                                                _mediaLayer.x = _mediaLayer.y = 0; 
     351                                        } 
     352                                } else { 
     353                                        _model.media.resize(width, height); 
     354                                        _mediaLayer.x = _mediaLayer.y = 0; 
     355                                } 
     356                                _mediaLayer.x += _components.display.x; 
     357                                _mediaLayer.y += _components.display.y; 
     358                        } 
     359                } 
     360 
     361                protected function resizeImage(width:Number, height:Number):void { 
     362                        if (_imageLayer.numChildren > 0) { 
     363                                if (_player.config.stretching == Stretcher.EXACTFIT) { 
     364                                        if (_fullscreen) { 
     365                                                Stretcher.stretch(_imageLayer, width, height, Stretcher.UNIFORM); 
     366                                                Stretcher.stretch(_image, _normalScreen.width, _normalScreen.height, _player.config.stretching); 
     367                                        } else { 
     368                                                Stretcher.stretch(_image, width, height, _player.config.stretching); 
     369                                                Stretcher.stretch(_imageLayer, width, height, Stretcher.NONE); 
     370                                        } 
     371                                } else { 
     372                                        Stretcher.stretch(_image, width, height, _player.config.stretching); 
     373                                        _imageLayer.x = _imageLayer.y = 0; 
     374                                } 
     375                                _imageLayer.x += _components.display.x; 
     376                                _imageLayer.y += _components.display.y; 
     377                        } 
     378                         
     379                } 
    347380 
    348381                protected function resizeBackground():void { 
     
    434467 
    435468                protected function mediaLoaded(evt:MediaEvent):void { 
    436                         _mediaLayer.x = _components.display.x; 
    437                         _mediaLayer.y = _components.display.y; 
    438469                        if (_model.media.display) { 
    439                                 _model.media.resize(_player.config.width, _player.config.height); 
    440470                                _mediaLayer.addChild(_model.media.display); 
     471                                resizeMedia(_player.config.width, _player.config.height); 
    441472                        } 
    442473                } 
     
    464495                        if (_image) { 
    465496                                _imageLayer.addChild(_image); 
    466                                 _imageLayer.x = _components.display.x; 
    467                                 _imageLayer.y = _components.display.y; 
    468                                 Stretcher.stretch(_image, _player.config.width, _player.config.height, _player.config.stretching); 
     497                                resizeImage(_player.config.width, _player.config.height); 
    469498                                try { 
    470499                                        Draw.smooth(_image.content as Bitmap); 
Note: See TracChangeset for help on using the changeset viewer.