--- mythplugins/mythweb/modules/tv/classes/Program.php	2010-11-19 21:39:32.000000000 -0800
+++ mythplugins/mythweb/modules/tv/classes/Program.php	2010-11-19 22:48:24.000000000 -0800
@@ -788,7 +788,17 @@
 
     public function getAspect() {
         global $db;
-        $aspect = $db->query_col('SELECT recordedmarkup.type
+        $sh = $db->query('SELECT recordedmarkup.data FROM recordedmarkup WHERE recordedmarkup.chanid=? AND recordedmarkup.starttime=FROM_UNIXTIME(?) AND (recordedmarkup.type=30 OR recordedmarkup.type=31) AND recordedmarkup.data AND (recordedmarkup.mark=0 OR recordedmarkup.mark=1) IS NOT NULL ORDER BY recordedmarkup.type', $this->chanid, $this->recstartts);
+        $x = $sh->fetch_col();           # type = 30
+        if( $x) $y = $sh->fetch_col();   # type = 31
+
+	if( $x && $y && $x > 720 )
+	{
+	    return $x/$y;
+	}
+	else
+	{
+	    $aspect = $db->query_col('SELECT recordedmarkup.type
                                     FROM recordedmarkup
                                    WHERE recordedmarkup.chanid    = ?
                                      AND recordedmarkup.starttime = FROM_UNIXTIME(?)
@@ -805,20 +815,21 @@
                                    $this->chanid,
                                    $this->recstartts
                                    );
-        switch($aspect) {
-            case 10:
-                return 1;
-            case 11:
-                return 4/3;
-            case 12:
-                return 16/9;
-            case 13:
-                return 2.21/1;
-            case 14:
-                return 4/3;
-            default:
-                return 4/3;
-        }
+	    switch($aspect) {
+		case 10:
+		    return 1;
+		case 11:
+		    return 4/3;
+		case 12:
+		    return 16/9;
+		case 13:
+		    return 2.21/1;
+		case 14:
+		    return 4/3;
+		default:
+		    return 4/3;
+	    }
+	}
     }
 
 }
--- mythplugins/mythweb/modules/stream/stream_flv.pl	2010-11-19 21:39:16.000000000 -0800
+++ mythplugins/mythweb/modules/stream/stream_flv.pl	2010-11-19 22:45:26.000000000 -0800
@@ -55,16 +55,47 @@
     my ($abitrate) = $sh->fetchrow_array;
     $sh->finish();
 # auto-detect height based on aspect ratio
-    $sh = $dbh->prepare('SELECT data FROM recordedmarkup WHERE chanid=? AND starttime=FROM_UNIXTIME(?) AND (type=30 OR type=31) AND mark=0 AND data IS NOT NULL ORDER BY type');
+    $sh = $dbh->prepare('SELECT data FROM recordedmarkup WHERE chanid=? AND starttime=FROM_UNIXTIME(?) AND (type=30 OR type=31)  AND (mark=0 OR mark=1) AND data IS NOT NULL ORDER BY type');
     $sh->execute($chanid,$starttime);
     $x = $sh->fetchrow_array;           # type = 30
     $y = $sh->fetchrow_array if ($x);   # type = 31
     $width = round_even($width);
-    if ($x && $y) {
-        $height = round_even($width * ($y/$x));
-    } else {
-        $height = round_even($width * 3/4);
+
+    if (!$x || !$y || $x <= 720) {	# <=720 means SD
+        $sh->finish();
+        $sh = $dbh->prepare('SELECT recordedmarkup.type
+                                    FROM recordedmarkup
+                                   WHERE recordedmarkup.chanid    = ?
+                                     AND recordedmarkup.starttime = FROM_UNIXTIME(?)
+                                     AND recordedmarkup.type      IN (10, 11, 12, 13, 14)
+                                    GROUP BY recordedmarkup.type
+                                ORDER BY SUM((SELECT IFNULL(rm.mark, recordedmarkup.mark)
+                                                    FROM recordedmarkup AS rm
+                                               WHERE rm.chanid = recordedmarkup.chanid
+                                                     AND rm.starttime = recordedmarkup.starttime
+                                                 AND rm.type IN (10, 11, 12, 13, 14)
+                                                 AND rm.mark > recordedmarkup.mark
+                                            ORDER BY rm.mark ASC LIMIT 1)- recordedmarkup.mark) DESC
+                                   LIMIT 1'
+                                   );
+        $sh->execute($chanid,$starttime);
+        $aspect = $sh->fetchrow_array;
+
+        if( $aspect == 10 ) {
+            $x = $y = 1;
+        } elsif( $aspect == 11 ) {
+            $x = 4; $y = 3;
+        } elsif( $aspect == 12 ) {
+            $x = 16; $y = 9;
+        } elsif( $aspect == 13 ) {
+            $x = 2.21; $y = 1;
+        } elsif( $aspect == 14 ) {
+            $x = 4; $y = 3;
+        } else {
+            $x = 4; $y = 3;
+	}
     }
+    $height = round_even($width * ($y/$x));
     $sh->finish();
 
     $width    = 320 unless ($width    && $width    > 1);
