summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authoratmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-01 17:12:04 +0000
committeratmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-01 17:12:04 +0000
commit88fc938bd926a34adc508eea09a779e0d2606fb4 (patch)
tree38f31c53a254595caea8376e8ba7b3918b4f82f6 /mplayer.c
parent1b6f28523c567763980b846bddd85b54ef4e9215 (diff)
downloadmpv-88fc938bd926a34adc508eea09a779e0d2606fb4.tar.bz2
mpv-88fc938bd926a34adc508eea09a779e0d2606fb4.tar.xz
New aspect prescale code, parses aspect value from mpeg sequence header or commandline.
Removed X11_FULLSCREEN hack from mplayer.c and moved it to libvo/vo_xv.c. Added support for nominator[:/]denominator float values in cfg-parser, thanks for the code by Steve Davies. All around thanks to Steve for helping me understanding the whole stuff :) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2035 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/mplayer.c b/mplayer.c
index a8f3e59c1f..a8aa61f304 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -44,6 +44,11 @@ void* mDisplay; // Display* mDisplay;
#include "libvo/sub.h"
//#endif
+#ifdef HAVE_NEW_GUI
+#define COMPILE_GMPLAYER
+#include "Gui/mplayer/play.h"
+#endif
+
#include "libao2/audio_out.h"
#include "libmpeg2/mpeg2.h"
@@ -70,10 +75,6 @@ void* mDisplay; // Display* mDisplay;
#include "lirc_mp.h"
#endif
-#ifdef HAVE_NEW_GUI
-#include "Gui/mplayer/play.h"
-#endif
-
#define DEBUG if(0)
int verbose=0;
int quiet=0;
@@ -262,6 +263,7 @@ static int flip=-1;
static int screen_size_x=0;//SCREEN_SIZE_X;
static int screen_size_y=0;//SCREEN_SIZE_Y;
static int screen_size_xy=0;
+static float movie_aspect=0.0;
// sub:
char *font_name=NULL;
@@ -995,7 +997,7 @@ if(auto_quality>0){
current_module="init_libvo";
-#ifdef X11_FULLSCREEN
+#if 0 /* was X11_FULLSCREEN hack -> moved to libvo/vo_xv.c where it belongs ::atmos */
if(fullscreen){
if(vo_init()){
//if(verbose) printf("X11 running at %dx%d depth: %d\n",vo_screenwidth,vo_screenheight,vo_depthonscreen);
@@ -1003,7 +1005,11 @@ current_module="init_libvo";
if(!screen_size_xy) screen_size_xy=vo_screenwidth; // scale with asp.ratio
}
#endif
+ // Set default VGA 1:1 aspect as fallback ::atmos
+ if(movie_aspect) sh_video->aspect = movie_aspect;
+ if(!sh_video->aspect) sh_video->aspect=1.0;
+ if(screen_size_xy||screen_size_x||screen_size_y){
if(screen_size_xy>0){
if(screen_size_xy<=8){
screen_size_x=screen_size_xy*sh_video->disp_w;
@@ -1018,6 +1024,24 @@ current_module="init_libvo";
if(screen_size_x<=8) screen_size_x*=sh_video->disp_w;
if(screen_size_y<=8) screen_size_y*=sh_video->disp_h;
}
+ } else {
+ // check source format aspect, calculate prescale ::atmos
+ screen_size_x=sh_video->disp_w;
+ screen_size_y=sh_video->disp_h;
+ if(sh_video->aspect!=1.0){
+ mp_msg(MSGT_CPLAYER,MSGL_INFO,"Movie-Aspect is %.2f:1 - prescaling to correct movie aspect.\n",
+ sh_video->aspect);
+ screen_size_x=(int)((float)sh_video->disp_h*sh_video->aspect);
+ screen_size_x+=screen_size_x%2; // round
+ if(screen_size_x<sh_video->disp_w){
+ screen_size_x=sh_video->disp_w;
+ screen_size_y=(int)((float)sh_video->disp_w*(1.0/sh_video->aspect));
+ screen_size_y+=screen_size_y%2; // round
+ }
+ } else {
+ mp_msg(MSGT_CPLAYER,MSGL_INFO,"Movie-Aspect is 1:1 - no prescaling applied.\n");
+ }
+ }
#ifndef USE_LIBVO2
{ const vo_info_t *info = video_out->get_info();