changeset 29532:99b8d8d5c2d4

Move aspect change handling from vo_quartz to osx_common. This could probably be even moved to video_out, though the names should be improved.
author reimar
date Fri, 28 Aug 2009 13:25:30 +0000
parents 6bd4c0c77eab
children 9c8f8e375823
files libvo/osx_common.c libvo/osx_common.h libvo/vo_quartz.c
diffstat 3 files changed, 34 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/osx_common.c	Fri Aug 28 12:54:33 2009 +0000
+++ b/libvo/osx_common.c	Fri Aug 28 13:25:30 2009 +0000
@@ -43,3 +43,31 @@
         return mpkey;
     return charcode;
 }
+
+static int our_aspect_change;
+static float old_movie_aspect;
+
+/**
+ * Sends MPlayer a command to change aspect to the requested value.
+ * @param new_aspect desired new aspect, < 0 means restore original.
+ */
+void change_movie_aspect(float new_aspect)
+{
+    char cmd_str[64];
+    if (new_aspect < 0)
+        new_aspect = old_movie_aspect;
+    our_aspect_change = 1;
+    snprintf(cmd_str, 64, "switch_ratio %f", old_movie_aspect);
+    mp_input_queue_cmd(mp_input_parse_cmd(cmd_str));
+}
+
+/**
+ * Call in config to save the original movie aspect.
+ * This will ignore config calls caused by change_movie_aspect.
+ */
+void config_movie_aspect(float config_aspect)
+{
+    if (!our_aspect_change)
+        old_movie_aspect = config_aspect;
+    our_aspect_change = 0;
+}
--- a/libvo/osx_common.h	Fri Aug 28 12:54:33 2009 +0000
+++ b/libvo/osx_common.h	Fri Aug 28 13:25:30 2009 +0000
@@ -1,1 +1,3 @@
 int convert_key(unsigned key, unsigned charcode);
+void change_movie_aspect(float new_aspect);
+void config_movie_aspect(float config_aspect);
--- a/libvo/vo_quartz.c	Fri Aug 28 12:54:33 2009 +0000
+++ b/libvo/vo_quartz.c	Fri Aug 28 13:25:30 2009 +0000
@@ -87,8 +87,6 @@
 static int get_image_done = 0;
 
 static int vo_quartz_fs; // we are in fullscreen
-static int our_aspect_change;
-static float old_movie_aspect;
 
 static int winLevel = 1;
 int levelList[] =
@@ -420,19 +418,15 @@
             break;
 
         case kAspectOrgCmd:
-            our_aspect_change = 1;
-            sprintf(cmd_str, "switch_ratio %f", old_movie_aspect);
-            mp_input_queue_cmd(mp_input_parse_cmd(cmd_str));
+            change_movie_aspect(-1);
             break;
 
         case kAspectFullCmd:
-            our_aspect_change = 1;
-            mp_input_queue_cmd(mp_input_parse_cmd("switch_ratio 1.6667"));
+            change_movie_aspect(4.0 / 3.0);
             break;
 
         case kAspectWideCmd:
-            our_aspect_change = 1;
-            mp_input_queue_cmd(mp_input_parse_cmd("switch_ratio 1.7778"));
+            change_movie_aspect(16.0 / 9.0);
             break;
 
         case kPanScanCmd:
@@ -615,9 +609,7 @@
     OSErr qterr;
     CGRect tmpBounds;
 
-    if (!our_aspect_change)
-        old_movie_aspect = (float)d_width / d_height;
-    our_aspect_change = 0;
+    config_movie_aspect((float)d_width / d_height);
 
     // misc mplayer setup/////////////////////////////////////////////////////
     SetRect(&imgRect, 0, 0, width, height);