Index: /trunk/fl5/src/com/longtailvideo/jwplayer/model/PlaylistItem.as
===================================================================
--- /trunk/fl5/src/com/longtailvideo/jwplayer/model/PlaylistItem.as	(revision 961)
+++ /trunk/fl5/src/com/longtailvideo/jwplayer/model/PlaylistItem.as	(revision 1243)
@@ -79,17 +79,35 @@
 		/** Insert an additional bitrate level, keeping the array sorted from highest to lowest. **/
 		public function addLevel(newLevel:PlaylistItemLevel):void {
-			if (_currentLevel < 0) _currentLevel = 0;
-			for (var i:Number = 0; i < _levels.length; i++) {
-				var level:PlaylistItemLevel = _levels[i] as PlaylistItemLevel;
-				if (newLevel.bitrate > level.bitrate) {
-					_levels.splice(i, 0, newLevel);
-					return;
-				} else if (newLevel.bitrate == level.bitrate && newLevel.width > level.width) {
-					_levels.splice(i, 0, newLevel);
-					return;
+			if (validExtension(newLevel.file)) {
+
+				if (_currentLevel < 0) _currentLevel = 0;
+				for (var i:Number = 0; i < _levels.length; i++) {
+					var level:PlaylistItemLevel = _levels[i] as PlaylistItemLevel;
+					if (newLevel.bitrate > level.bitrate) {
+						_levels.splice(i, 0, newLevel);
+						return;
+					} else if (newLevel.bitrate == level.bitrate && newLevel.width > level.width) {
+						_levels.splice(i, 0, newLevel);
+						return;
+					}
 				}
+				_levels.push(newLevel);
 			}
-			
-			_levels.push(newLevel);
+		}
+		
+		/**
+		 * Determines whether this file extension can be played in the Flash player.  If not, ignore the level.
+		 * This is useful for unified HTML5 / Flash failover setups.
+		 **/
+		protected function validExtension(filename:String):Boolean {
+			var foo:String = Strings.extension(filename); 
+			switch(Strings.extension(filename)) {
+				case "ogv":
+				case "ogg":
+				case "webm":
+					return false;
+				default:
+					return true;
+			}
 		}
 
Index: /trunk/fl5/src/com/longtailvideo/jwplayer/utils/Stretcher.as
===================================================================
--- /trunk/fl5/src/com/longtailvideo/jwplayer/utils/Stretcher.as	(revision 1238)
+++ /trunk/fl5/src/com/longtailvideo/jwplayer/utils/Stretcher.as	(revision 1243)
@@ -61,31 +61,8 @@
 			clp.x = Math.round(wid / 2 - clp.width / 2);
 			clp.y = Math.round(hei / 2 - clp.height / 2);
-			clp.width = Math.ceil(clp.width);
-			clp.height = Math.ceil(clp.height);
+			if (clp.width > 0) clp.width = Math.ceil(clp.width);
+			if (clp.height > 0) clp.height = Math.ceil(clp.height);
 		}
 		
-		/**
-		 * Calculates the stretching dimensions of a clip without modifying it
-		 *
-		 * @param clp	The display element to resize.
-		 * @param wid	The target width.
-		 * @param hei	The target height.
-		 * @param typ	The stretching type.
-		 **/
-		public static function stretchDimensions(clp:DisplayObject, wid:Number, hei:Number, typ:String='uniform'):Rectangle {
-			var tempParent:Sprite = new Sprite();
-			tempParent.graphics.beginFill(1, 1);
-			tempParent.graphics.drawRect(0, 0, wid, hei);
-			
-			var tempChild:Sprite = new Sprite();
-			tempChild.graphics.beginFill(1, 1);
-			tempChild.graphics.drawRect(0, 0, clp.width, clp.height);
-			tempParent.addChild(tempChild);
-			
-			stretch(tempChild, wid, hei, typ);
-			
-			return new Rectangle(tempChild.x, tempChild.y, tempChild.width, tempChild.height);
-		}
-
 	}
 
Index: /trunk/fl5/src/com/longtailvideo/jwplayer/view/View.as
===================================================================
--- /trunk/fl5/src/com/longtailvideo/jwplayer/view/View.as	(revision 1238)
+++ /trunk/fl5/src/com/longtailvideo/jwplayer/view/View.as	(revision 1243)
@@ -52,4 +52,5 @@
 		protected var _components:IPlayerComponents;
 		protected var _fullscreen:Boolean = false;
+		protected var _normalScreen:Rectangle;
 		protected var stage:Stage;
 
@@ -106,4 +107,5 @@
 
 			_root = new MovieClip();
+			_normalScreen = new Rectangle();
 		}
 
@@ -274,5 +276,5 @@
 			}
 			dispatchEvent(new ViewEvent(ViewEvent.JWPLAYER_RESIZE, {width: RootReference.stage.stageWidth, height: RootReference.stage.stageHeight}));
-			
+
 			redraw();
 		}
@@ -293,26 +295,18 @@
 
 			_components.resize(_player.config.width, _player.config.height);
+			if (!_fullscreen) {
+				_normalScreen.width = _player.config.width;
+				_normalScreen.height = _player.config.height;
+			} 
 
 			resizeBackground();
 			resizeMasker();
 
-			if (_imageLayer.numChildren) {
-				_imageLayer.x = _components.display.x;
-				_imageLayer.y = _components.display.y;
-				Stretcher.stretch(_image, _player.config.width, _player.config.height, _player.config.stretching);
-			}
-
-			if (_mediaLayer.numChildren && _model.media.display) {
-				_mediaLayer.x = _components.display.x;
-				_mediaLayer.y = _components.display.y;
-				if (_fullscreen && _model.config.stretching == Stretcher.EXACTFIT) {
-					var dimensions:Rectangle = Stretcher.stretchDimensions(_model.media.display, _player.config.width, _player.config.height, Stretcher.UNIFORM);
-					_model.media.resize(dimensions.width, dimensions.height);
-					_mediaLayer.x = dimensions.x;
-					_mediaLayer.y = dimensions.y;
-				} else {
-					_model.media.resize(_player.config.width, _player.config.height);
-				}
-			}
+			_imageLayer.x = _mediaLayer.x = _components.display.x;
+			_imageLayer.y = _mediaLayer.y = _components.display.y;
+
+			resizeImage(_player.config.width, _player.config.height);
+			resizeMedia(_player.config.width, _player.config.height);
+			
 
 			if (_logo) {
@@ -345,4 +339,43 @@
 		}
 
+		protected function resizeMedia(width:Number, height:Number):void {
+			if (_mediaLayer.numChildren > 0 && _model.media.display) {
+				if (_player.config.stretching == Stretcher.EXACTFIT) {
+					if (_fullscreen) {
+						_model.media.resize(_normalScreen.width, _normalScreen.height);
+						Stretcher.stretch(_mediaLayer, width, height, Stretcher.UNIFORM);
+					} else {
+						_model.media.resize(width, height);
+						_mediaLayer.scaleX = _mediaLayer.scaleY = 1;
+						_mediaLayer.x = _mediaLayer.y = 0;
+					}
+				} else {
+					_model.media.resize(width, height);
+					_mediaLayer.x = _mediaLayer.y = 0;
+				}
+				_mediaLayer.x += _components.display.x;
+				_mediaLayer.y += _components.display.y;
+			}
+		}
+
+		protected function resizeImage(width:Number, height:Number):void {
+			if (_imageLayer.numChildren > 0) {
+				if (_player.config.stretching == Stretcher.EXACTFIT) {
+					if (_fullscreen) {
+						Stretcher.stretch(_imageLayer, width, height, Stretcher.UNIFORM);
+						Stretcher.stretch(_image, _normalScreen.width, _normalScreen.height, _player.config.stretching);
+					} else {
+						Stretcher.stretch(_image, width, height, _player.config.stretching);
+						Stretcher.stretch(_imageLayer, width, height, Stretcher.NONE);
+					}
+				} else {
+					Stretcher.stretch(_image, width, height, _player.config.stretching);
+					_imageLayer.x = _imageLayer.y = 0;
+				}
+				_imageLayer.x += _components.display.x;
+				_imageLayer.y += _components.display.y;
+			}
+			
+		}
 
 		protected function resizeBackground():void {
@@ -434,9 +467,7 @@
 
 		protected function mediaLoaded(evt:MediaEvent):void {
-			_mediaLayer.x = _components.display.x;
-			_mediaLayer.y = _components.display.y;
 			if (_model.media.display) {
-				_model.media.resize(_player.config.width, _player.config.height);
 				_mediaLayer.addChild(_model.media.display);
+				resizeMedia(_player.config.width, _player.config.height);
 			}
 		}
@@ -464,7 +495,5 @@
 			if (_image) {
 				_imageLayer.addChild(_image);
-				_imageLayer.x = _components.display.x;
-				_imageLayer.y = _components.display.y;
-				Stretcher.stretch(_image, _player.config.width, _player.config.height, _player.config.stretching);
+				resizeImage(_player.config.width, _player.config.height);
 				try {
 					Draw.smooth(_image.content as Bitmap);
Index: /trunk/fl5/src/com/longtailvideo/jwplayer/player/PlayerVersion.as
===================================================================
--- /trunk/fl5/src/com/longtailvideo/jwplayer/player/PlayerVersion.as	(revision 1240)
+++ /trunk/fl5/src/com/longtailvideo/jwplayer/player/PlayerVersion.as	(revision 1243)
@@ -3,5 +3,5 @@
 	
 	public class PlayerVersion {
-		protected static var _version:String = "5.3.1240";
+		protected static var _version:String = "5.3.1243";
 		
 		public static function get version():String {
