Index: video_for_everybody.module
===================================================================
--- video_for_everybody.module	(revision 3031)
+++ video_for_everybody.module	(working copy)
@@ -248,10 +248,26 @@
  *  Main theming function
  */
 function theme_video_for_everybody_video($node, $settings = array()) {
+  $width = variable_get('video_for_everybody_default_player_width', 640);
+  $height = variable_get('video_for_everybody_default_player_height', 360);
+  
+  // override dimensions with node value
+  if (!empty($node->field_dimensions[0]['value'])) {
+    $dimensions = explode('x', $node->field_dimensions[0]['value']);
+    if (count($dimensions) == 2) {
+      $dimensions[0] = intval($dimensions[0]);
+      $dimensions[1] = intval($dimensions[1]);
+      if ($dimensions[0] && $dimensions[1]) {
+        $width = $dimensions[0];
+        $height = $dimensions[1];
+      }
+    }
+  }
+  
   // define the settings vars and file urls
   if (empty($settings)) {
-    $settings['width'] = variable_get('video_for_everybody_default_player_width', 640);
-    $settings['height'] = variable_get('video_for_everybody_default_player_height', 360);
+    $settings['width'] = $width;
+    $settings['height'] = $height;
     $settings['show_download_links'] = variable_get('video_for_everybody_show_download_links', 0);
     $settings['player'] = _video_for_everybody_get_active_player();
   }
@@ -264,6 +280,12 @@
     $poster_url = file_create_url($node->field_video_for_everybody_poster[0]['filepath']);
   }
   
+  // do some rudimentary browser sniffing
+  $user_agent = $_SERVER['HTTP_USER_AGENT'];
+  // we don't need to check for 0 return value from strpos because our searches will never be at start of string
+  $iOS = strpos($user_agent, 'iPhone') || strpos($user_agent, 'iPad') || strpos($user_agent, 'iPod');
+  $settings['show_poster'] = !($iOS && strpos($user_agent, 'OS 3'));
+  
   $flash_player_url = theme('video_for_everybody_get_flash_player_url', $mp4_url, $ogv_url, $settings, $poster_url);
   
   $urls = array(
Index: video_for_everybody.install
===================================================================
--- video_for_everybody.install	(revision 3031)
+++ video_for_everybody.install	(working copy)
@@ -35,3 +35,13 @@
   variable_del('video_for_everybody_cck_fields_added');
 }
 
+
+/**
+ * This is a heavy-handed way to add the dimensions field
+ */
+function video_for_everybody_update_6000() {
+  $status = array();
+  variable_set('video_for_everybody_cck_fields_added', FALSE);
+  video_for_everybody_init();
+  return $status;
+}
\ No newline at end of file
Index: video_for_everybody.cck_export.inc
===================================================================
--- video_for_everybody.cck_export.inc	(revision 3031)
+++ video_for_everybody.cck_export.inc	(working copy)
@@ -92,11 +92,6 @@
       array (
         'weight' => '-4',
         'parent' => '',
-        4 => 
-        array (
-          'format' => 'hidden',
-          'exclude' => 0,
-        ),
         'label' => 
         array (
           'format' => 'hidden',
@@ -111,6 +106,11 @@
           'format' => 'hidden',
           'exclude' => 0,
         ),
+        4 => 
+        array (
+          'format' => 'hidden',
+          'exclude' => 0,
+        ),
       ),
     ),
     1 => 
@@ -161,11 +161,6 @@
       array (
         'weight' => '-3',
         'parent' => '',
-        4 => 
-        array (
-          'format' => 'hidden',
-          'exclude' => 0,
-        ),
         'label' => 
         array (
           'format' => 'hidden',
@@ -180,6 +175,11 @@
           'format' => 'hidden',
           'exclude' => 0,
         ),
+        4 => 
+        array (
+          'format' => 'hidden',
+          'exclude' => 0,
+        ),
       ),
     ),
     2 => 
@@ -240,11 +240,82 @@
       array (
         'weight' => '-2',
         'parent' => '',
+        'label' => 
+        array (
+          'format' => 'hidden',
+        ),
+        'teaser' => 
+        array (
+          'format' => 'hidden',
+          'exclude' => 0,
+        ),
+        'full' => 
+        array (
+          'format' => 'hidden',
+          'exclude' => 0,
+        ),
         4 => 
         array (
           'format' => 'hidden',
           'exclude' => 0,
         ),
+      ),
+    ),
+    3 => 
+    array (
+      'label' => 'Dimensions',
+      'field_name' => 'field_dimensions',
+      'type' => 'text',
+      'widget_type' => 'text_textfield',
+      'change' => 'Change basic information',
+      'weight' => '31',
+      'rows' => 5,
+      'size' => '15',
+      'description' => '',
+      'default_value' => 
+      array (
+        0 => 
+        array (
+          'value' => '',
+          '_error_element' => 'default_value_widget][field_dimensions][0][value',
+        ),
+      ),
+      'default_value_php' => '',
+      'default_value_widget' => 
+      array (
+        'field_dimensions' => 
+        array (
+          0 => 
+          array (
+            'value' => '',
+            '_error_element' => 'default_value_widget][field_dimensions][0][value',
+          ),
+        ),
+      ),
+      'required' => 0,
+      'multiple' => '0',
+      'text_processing' => '0',
+      'max_length' => '',
+      'allowed_values' => '',
+      'allowed_values_php' => '',
+      'op' => 'Save field settings',
+      'module' => 'text',
+      'widget_module' => 'text',
+      'columns' => 
+      array (
+        'value' => 
+        array (
+          'type' => 'text',
+          'size' => 'big',
+          'not null' => false,
+          'sortable' => true,
+          'views' => true,
+        ),
+      ),
+      'display_settings' => 
+      array (
+        'weight' => '31',
+        'parent' => '',
         'label' => 
         array (
           'format' => 'hidden',
@@ -259,6 +330,26 @@
           'format' => 'hidden',
           'exclude' => 0,
         ),
+        4 => 
+        array (
+          'format' => 'default',
+          'exclude' => 0,
+        ),
+        2 => 
+        array (
+          'format' => 'default',
+          'exclude' => 0,
+        ),
+        3 => 
+        array (
+          'format' => 'default',
+          'exclude' => 0,
+        ),
+        'token' => 
+        array (
+          'format' => 'default',
+          'exclude' => 0,
+        ),
       ),
     ),
   );
Index: video_for_everybody_video.tpl.php
===================================================================
--- video_for_everybody_video.tpl.php	(revision 3031)
+++ video_for_everybody_video.tpl.php	(working copy)
@@ -6,13 +6,12 @@
 
 <div class="video-for-everybody">
   <!-- Poster attribute left off the video tag for iPhone OS 3 support -->
-  <video width="<?php print $width ?>" height="<?php print $height ?>" controls>
+  <video width="<?php print $width ?>" height="<?php print $height ?>"<?php if ($show_poster && $poster_url) { ?> poster="<?php print $poster_url ?>"<?php } ?> controls>
+    <!-- MP4 must be first for iPad! -->
+    <source src="<?php print $mp4_url ?>" type="video/mp4" /><!-- WebKit video    -->
     <?php if ($ogv_url != '') { ?>
       <source src="<?php print $ogv_url ?>" type="video/ogg" /><!-- Firefox / Opera -->
     <?php } ?>
-    <!-- MP4 must be first for iPad! -->
-    <source src="<?php print $mp4_url ?>" type="video/mp4" /><!-- WebKit video    -->
-    <!-- <source src="" type="video/webm" /> WebM/VP8/Vorbis -->
     <!-- fallback to Flash: -->
     <object width="<?php print $width ?>" height="<?php print $height ?>" type="application/x-shockwave-flash" data="<?php print $flash_player_url ?>">
       <!-- Firefox uses the `data` attribute above, IE/Safari uses the param below -->
