diff --git a/includes/jplayer.theme.inc b/includes/jplayer.theme.inc
index 410d605..ad1e368 100644
--- a/includes/jplayer.theme.inc
+++ b/includes/jplayer.theme.inc
@@ -20,13 +20,25 @@ function template_preprocess_jplayer(&$vars) {
   $vars['playlist'] = theme('jplayer_item_list', array('items' => $player['playlist']));
   $vars['type'] = $player['type'];
 
+  // jplayer does not expect to see mp4 type, but m4v
+  $extensions = str_replace('mp4', 'm4v', $player['extensions']);
+  foreach ($player['files'] as $file) {
+    if (array_key_exists('mp4', $file)) {
+      $new_files[] = array('m4v' => $file['mp4']);
+    }
+    else {
+      $new_files[] = $file;
+    }
+  }
+  $player['files'] = $new_files;
+
   // Add player settings
   $player = array(
     'jplayerInstances' => array(
       $vars['player_id'] => array(
         'files' => $player['files'],
         'solution' => $vars['settings']['solution'],
-        'supplied' => $player['extensions'],
+        'supplied' => $extensions,
         'preload' => $vars['settings']['preload'],
         'volume' => $vars['settings']['volume'] / 100,
         'muted' => (boolean)$vars['settings']['muted'],
@@ -37,10 +49,17 @@ function template_preprocess_jplayer(&$vars) {
       ),
     ),
   );
+  if (array_key_exists('size', $vars['settings'])) {
+    $player['jplayerInstances'][$vars['player_id']]['size'] = array(
+      'cssStyle' => $vars['settings']['size']['cssStyle'],
+      'width' => $vars['settings']['size']['width'],
+      'height' => $vars['settings']['size']['height'],
+    );
+  }
+
   drupal_add_js($player, 'setting');
 
   $vars['dynamic'] = jplayer_add_core_js();
-
 }
 
 /**
@@ -111,6 +130,9 @@ function theme_jplayer_item_list($variables) {
  *   a settings array of data being passed to jPlayer instance
  */
 function jplayer_sort_files($raw_files = array(), $player_id, $type = 'single', $item_type = 'file') {
+  if (!$item_type) {
+    $item_type = 'file';
+  }
   $video_extensions = array('m4v', 'mp4', 'ogv', 'webmv');
   $audio_extensions = array('mp3', 'm4a', 'oga', 'webma', 'wav');
   $poster_extensions = array('jpg', 'jpeg', 'png', 'gif');
@@ -129,12 +151,12 @@ function jplayer_sort_files($raw_files = array(), $player_id, $type = 'single',
     // Get file URL
     if (!isset($item['url'])) {
       switch($item_type){
-        case 'file':
-          $item['url'] = file_create_url($item['uri']);
-          break;
         case 'text':
           $item['url'] = $item['safe_value'];
           break;
+        case 'file':
+          $item['url'] = file_create_url($item['uri']);
+          break;
       }
     }
 
diff --git a/jplayer.module b/jplayer.module
index f773671..cc0d08d 100644
--- a/jplayer.module
+++ b/jplayer.module
@@ -80,6 +80,11 @@ function jplayer_field_formatter_info() {
         'repeat' => 'none',
         'backgroundColor' => '000000',
         'mode' => 'playlist',
+        'size' => array(
+          'cssClass' => '',
+          'width' => 480,
+          'height' => 270,
+        ),
       ),
     ),
   );
@@ -224,6 +229,37 @@ function jplayer_field_formatter_settings_form($field, $instance, $view_mode, $f
       '#size' => 6,
       '#default_value' => $settings['backgroundColor'],
     );
+
+    $bundle = $form_state['build_info']['args'][0];
+    if ($bundle->type == 'video') {
+      $form['size'] = array(
+        '#title' => t('Size'),
+        '#type' => 'fieldset',
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+      );
+      $form['size']['cssClass'] = array(
+        '#title' => t('CSS class'),
+        '#type' => 'textfield',
+        '#default_value' => $settings['size']['cssClass'],
+      );
+      $form['size']['width'] = array(
+        '#title' => t('Width'),
+        '#type' => 'textfield',
+        '#field_suffix' => 'px',
+        '#maxlength' => 6,
+        '#size' => 6,
+        '#default_value' => $settings['size']['width'],
+      );
+      $form['size']['height'] = array(
+        '#title' => t('Height'),
+        '#type' => 'textfield',
+        '#field_suffix' => 'px',
+        '#maxlength' => 6,
+        '#size' => 6,
+        '#default_value' => $settings['size']['height'],
+      );
+    }
   }
 
   return $form;
diff --git a/theme/jplayer.js b/theme/jplayer.js
index cf93b37..3c41e77 100644
--- a/theme/jplayer.js
+++ b/theme/jplayer.js
@@ -32,11 +32,27 @@
         var playerSettings = Drupal.settings.jplayerInstances[playerId];
         var type = $(this).parent().attr('class');
         player.playerType = $(this).parent().attr('class');
-        
+
+        var params = {
+         swfPath: Drupal.settings.jPlayer.swfPath,
+         cssSelectorAncestor: '#'+playerId+'_interface',
+         solution: playerSettings.solution,
+         supplied: playerSettings.supplied,
+         preload: playerSettings.preload,
+         volume: playerSettings.volume,
+         muted: playerSettings.muted
+        };
+        if (typeof(playerSettings.size) != 'undefined') {
+         if (typeof(playerSettings.size.cssClass) != 'undefined') {
+          params.size = {'cssClass':playerSettings.size.cssClass};
+         }
+         else if (typeof(playerSettings.size.width) != 'undefined') {
+          params.size = {width:playerSettings.size.width+'px', height:playerSettings.size.height+'px'};
+         };
+        };
+
         if (type == 'jp-type-single') {
-          // Initialise single player
-          $(player).jPlayer({
-            ready: function() {
+          params.ready = function() {
               $(this).jPlayer("setMedia", playerSettings.files);
               
               // Make sure we pause other players on play
@@ -57,20 +73,12 @@
               if (playerSettings.autoplay == true) {
                 $(this).jPlayer("play");
               }
-            },
-            swfPath: Drupal.settings.jPlayer.swfPath,
-            cssSelectorAncestor: '#'+playerId+'_interface',
-            solution: playerSettings.solution,
-            supplied: playerSettings.supplied,
-            preload: playerSettings.preload,
-            volume: playerSettings.volume,
-            muted: playerSettings.muted
-          });
+          };
+          // Initialise single player
+          $(player).jPlayer(params);
         }
         else {
-          // Initialise playlist player
-          $(player).jPlayer({
-            ready: function() {
+          params.ready = function() {
               Drupal.jPlayer.setFiles(wrapper, player, 0, playerSettings.autoplay);
               
               // Pause other players on play
@@ -112,15 +120,9 @@
                   $(this).jPlayer("play");
                 });
               }
-            },
-            swfPath: Drupal.settings.jPlayer.swfPath,
-            cssSelectorAncestor: '#'+playerId+'_interface',
-            solution: playerSettings.solution,
-            supplied: playerSettings.supplied,
-            preload: playerSettings.preload,
-            volume: playerSettings.volume,
-            muted: playerSettings.muted
-          });
+          };
+          // Initialise playlist player
+          $(player).jPlayer(params);
           
           // Next
           $(wrapper).find('.jp-next').click(function() {
