diff options
-rw-r--r-- | libvo/aspect.c | 31 | ||||
-rw-r--r-- | libvo/aspect.h | 9 | ||||
-rw-r--r-- | libvo/vo_xv.c | 14 |
3 files changed, 19 insertions, 35 deletions
diff --git a/libvo/aspect.c b/libvo/aspect.c index b9302614e0..59e0992944 100644 --- a/libvo/aspect.c +++ b/libvo/aspect.c @@ -1,5 +1,4 @@ /* Stuff for correct aspect scaling. */ -#include "aspect.h" float monitor_aspect=4.0/3.0; @@ -7,26 +6,20 @@ float monitor_aspect=4.0/3.0; * resolution, that the scaled image should fit into */ -rect_t aspect(int srcw, int srch, int fitinw, int fitinh){ - rect_t r,z; - r.w=fitinw; - r.x=0; - r.h=(int)(((float)fitinw / (float)srcw * (float)srch) +void aspect(int *srcw, int *srch, int fitinw, int fitinh){ + int srcwcp, srchcp; + srcwcp=*srcw; srchcp=*srch; + *srcw=fitinw; + *srch=(int)(((float)fitinw / (float)srcwcp * (float)srchcp) * ((float)fitinh/((float)fitinw/monitor_aspect))); - r.h+=r.h%2; // round - r.y=(fitinh-r.h)/2; - z=r; - //printf("aspect rez x: %d y: %d wh: %dx%d\n",r.x,r.y,r.w,r.h); - if(r.h>fitinh || r.h<srch){ - r.h=fitinh; - r.y=0; - r.w=(int)(((float)fitinh / (float)srch * (float)srcw) + *srch+=*srch%2; // round + //printf("aspect rez wh: %dx%d\n",*srcw,*srch); + if(*srch>fitinh || *srch<srchcp){ + *srch=fitinh; + *srcw=(int)(((float)fitinh / (float)srchcp * (float)srcwcp) * ((float)fitinw/((float)fitinh/(1/monitor_aspect)))); - r.w+=r.w%2; // round - r.x=(fitinw-r.w)/2; + *srcw+=*srcw%2; // round } - if(r.w>fitinw) r=z; - //printf("aspect ret x: %d y: %d wh: %dx%d\n",r.x,r.y,r.w,r.h); - return r; + //printf("aspect ret wh: %dx%d\n",*srcw,*srch); } diff --git a/libvo/aspect.h b/libvo/aspect.h index c10d1ab41b..d16f196afd 100644 --- a/libvo/aspect.h +++ b/libvo/aspect.h @@ -2,14 +2,7 @@ #define __ASPECT_H /* Stuff for correct aspect scaling. */ -typedef struct { - int x; /* x,y starting coordinate */ - int y; /* of upper left corner */ - int w; /* width */ - int h; /* height */ -} rect_t; - -rect_t aspect(int srcw, int srch, int fitinw, int fitinh); +void aspect(int *srcw, int *srch, int fitinw, int fitinh); #endif diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c index 62560c0be9..840b227a87 100644 --- a/libvo/vo_xv.c +++ b/libvo/vo_xv.c @@ -121,7 +121,6 @@ static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsi static uint32_t init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) { // int screen; -// int myx,myy; char *hello = (title == NULL) ? "Xv render" : title; // char *name = ":0.0"; XSizeHints hint; @@ -169,9 +168,8 @@ static uint32_t init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t */ { - rect_t newres = aspect(d_width,d_height,vo_screenwidth,vo_screenheight); - dwidth=d_width=newres.w; dheight=d_height=newres.h; - //myx=newres.x; myy=newres.y; + aspect(&d_width,&d_height,vo_screenwidth,vo_screenheight); + dwidth=d_width; dheight=d_height; } #endif @@ -286,12 +284,12 @@ static uint32_t init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t if ( mFullscreen ) { - drwX=( vo_screenwidth - (dwidth > vo_screenwidth?vo_screenwidth:dwidth) ) / 2; /* =myx; */ + drwX=( vo_screenwidth - (dwidth > vo_screenwidth?vo_screenwidth:dwidth) ) / 2; drwcX+=drwX; - drwY=( vo_screenheight - (dheight > vo_screenheight?vo_screenheight:dheight) ) / 2; /* =myy; */ + drwY=( vo_screenheight - (dheight > vo_screenheight?vo_screenheight:dheight) ) / 2; drwcY+=drwY; - drwWidth=(dwidth > vo_screenwidth?vo_screenwidth:dwidth); /* =dwidth */ - drwHeight=(dheight > vo_screenheight?vo_screenheight:dheight); /* =dheight */ + drwWidth=(dwidth > vo_screenwidth?vo_screenwidth:dwidth); + drwHeight=(dheight > vo_screenheight?vo_screenheight:dheight); printf( "[xv-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); } #ifdef HAVE_NEW_GUI |