# HG changeset patch # User atmos4 # Date 1021335723 0 # Node ID 8be92a9b30a46455f4dc00ba06e197f50768b1dd # Parent ad794ccafc5539fa31df7df6c86d878b2862f5c6 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. diff -r ad794ccafc55 -r 8be92a9b30a4 libvo/aspect.c --- 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 #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 diff -r ad794ccafc55 -r 8be92a9b30a4 libvo/aspecttest.c --- /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 + +#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 \n[ " + "] [ ] []\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; +} +