Mercurial > mplayer.hg
changeset 6087:8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
Also add a testapp for the aspect code.
author | atmos4 |
---|---|
date | Tue, 14 May 2002 00:22:03 +0000 |
parents | ad794ccafc55 |
children | 99d7f3e033ae |
files | libvo/aspect.c libvo/aspecttest.c |
diffstat | 2 files changed, 55 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/aspect.c Mon May 13 22:10:11 2002 +0000 +++ b/libvo/aspect.c Tue May 14 00:22:03 2002 +0000 @@ -1,9 +1,12 @@ /* Stuff for correct aspect scaling. */ #include "aspect.h" +#ifndef ASPECT_TEST +#include "../mp_msg.h" +#endif //#define ASPECT_DEBUG -#ifdef ASPECT_DEBUG +#if defined(ASPECT_DEBUG) || defined(ASPECT_TEST) #include <stdio.h> #endif @@ -64,10 +67,16 @@ else tmpw = (int)((float)aspdat.prew * ((float)aspdat.scrw / ((float)aspdat.scrh / (1.0/monitor_aspect)))); - if(tmpw<=aspdat.scrw && tmpw>=aspdat.orgw){ + tmpw+= tmpw%2; // round + if(tmpw<=aspdat.scrw /*&& tmpw>=aspdat.orgw*/){ *srch = zoom?aspdat.scrh:aspdat.preh; *srcw = tmpw; - *srcw+= *srcw%2; // round + }else{ +#ifndef ASPECT_TEST + mp_msg(MSGT_VO,MSGL_WARN,"aspect: Warning: no suitable new res found!\n"); +#else + printf("error: no new size found that fits into res!\n"); +#endif } } #ifdef ASPECT_DEBUG
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libvo/aspecttest.c Tue May 14 00:22:03 2002 +0000 @@ -0,0 +1,43 @@ +/* testapp for aspect.[ch] by Atmos + * gcc aspecttest.c aspect.c -o aspecttest -DASPECT_TEST [-DASPECT_DEBUG] + */ + +#include <stdio.h> + +#include "aspect.h" + +/* default zoom state 0 off, 1 on */ +#define DEF_ZOOM 1 + +extern float monitor_aspect; + +int main(int argc, char *argv[]) { + int w,h,z=DEF_ZOOM; + //printf("argc: %d\n",argc); + switch(argc) { + case 10: + z = atoi(argv[9]); + case 9: + monitor_aspect = (float)atoi(argv[7])/(float)atoi(argv[8]); + case 7: + aspect_save_prescale(atoi(argv[5]),atoi(argv[6])); + printf("prescale size: %sx%s\n",argv[5],argv[6]); + case 5: + aspect_save_screenres(atoi(argv[1]),atoi(argv[2])); + printf("screenres: %sx%s\n",argv[1],argv[2]); + aspect_save_orig(atoi(argv[3]),atoi(argv[4])); + printf("original size: %sx%s\n",argv[3],argv[4]); + w=atoi(argv[3]); h=atoi(argv[4]); + break; + default: + printf("USAGE: %s <screenw> <screenh> <origw> <origh>\n[<prescalew> " + "<prescaleh>] [<screenaspectw> <screenaspecth>] [<zoom 0/1>]\n", + argv[0]); + return 1; + } + printf("monitor_aspect: %f\n",monitor_aspect); + aspect(&w,&h,z); + printf("new size: %dx%d\n",w,h); + return 0; +} +