Mercurial > mplayer.hg
changeset 14935:b3274e6b88ef
Convert vo_aa suboption parser to using the subopt-helper.
This obsoletes all -aa* commandline options. Use -vo aa:* instead.
author | ivo |
---|---|
date | Fri, 11 Mar 2005 02:09:24 +0000 |
parents | 89031188b7b2 |
children | 5ce1e49b84fe |
files | DOCS/man/en/mplayer.1 cfg-mplayer.h help/help_mp-en.h libvo/vo_aa.c |
diffstat | 4 files changed, 107 insertions(+), 104 deletions(-) [+] |
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1 Wed Mar 09 20:29:50 2005 +0000 +++ b/DOCS/man/en/mplayer.1 Fri Mar 11 02:09:24 2005 +0000 @@ -1912,11 +1912,6 @@ .SH "VIDEO OUTPUT OPTIONS (MPLAYER ONLY)" . .TP -.B \-aa* (\-vo aa only) -You can get a list and an explanation of available options executing -.I mplayer \-aahelp -. -.TP .B \-adapter <value> Set the graphics card that will receive the image. Needs the \-vm option to work. @@ -2637,8 +2632,10 @@ Useful for benchmarking. . .TP -.B aa (also see \-aa*) +.B aa\ \ \ \ \ ASCII art video output driver that works on a text console. +You can get a list and an explanation of available suboptions executing +.I mplayer \-vo aa:help . .TP .B caca\ \ \
--- a/cfg-mplayer.h Wed Mar 09 20:29:50 2005 +0000 +++ b/cfg-mplayer.h Fri Mar 11 02:09:24 2005 +0000 @@ -73,11 +73,6 @@ extern int menu_startup; #endif -#ifdef HAVE_AA -extern int vo_aa_parseoption(m_option_t* conf, char *opt, char * param); -extern void vo_aa_revertoption(m_option_t* opt,char* param); -#endif - #ifdef HAVE_ZR extern int vo_zr_parseoption(m_option_t* conf, char *opt, char * param); extern void vo_zr_revertoption(m_option_t* opt,char* pram); @@ -284,7 +279,7 @@ #ifdef HAVE_AA // -vo aa - {"aa*", vo_aa_parseoption, CONF_TYPE_FUNC_FULL, 0, 0, 0 , &vo_aa_revertoption}, + {"aa*", "-aa* is deprecated. Use -vo aa:suboption instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL}, #endif #ifdef HAVE_ZR
--- a/help/help_mp-en.h Wed Mar 09 20:29:50 2005 +0000 +++ b/help/help_mp-en.h Fri Mar 11 02:09:24 2005 +0000 @@ -897,6 +897,16 @@ #define MSGTR_VO_NoValueSpecified "No value specified." #define MSGTR_VO_UnknownSuboptions "Unknown suboption(s)" +// vo_aa.c + +#define MSGTR_VO_AA_HelpHeader "\n\nHere are the aalib vo_aa suboptions:\n" +#define MSGTR_VO_AA_AdditionalOptions "Additional options vo_aa provides:\n" \ +" help print this help message\n" \ +" osdcolor set osd color\n subcolor set subtitle color\n" \ +" the color parameters are:\n 0 : normal\n" \ +" 1 : dim\n 2 : bold\n 3 : boldfont\n" \ +" 4 : reverse\n 5 : special\n\n\n" + // vo_jpeg.c #define MSGTR_VO_JPEG_ProgressiveJPEG "Progressive JPEG enabled." #define MSGTR_VO_JPEG_NoProgressiveJPEG "Progressive JPEG disabled."
--- a/libvo/vo_aa.c Wed Mar 09 20:29:50 2005 +0000 +++ b/libvo/vo_aa.c Fri Mar 11 02:09:24 2005 +0000 @@ -34,7 +34,8 @@ #include "osdep/keycodes.h" #include <aalib.h> -#include "m_option.h" +#include "subopt-helper.h" +#include "help_mp.h" #include "mp_msg.h" @@ -288,11 +289,11 @@ mp_msg(MSGT_VO,MSGL_INFO, "\n" - "Important Options\n" - "\t-aaextended use use all 256 characters\n" - "\t-aaeight use eight bit ascii\n" - "\t-aadriver set recommended aalib driver (X11,curses,linux)\n" - "\t-aahelp to see all options provided by aalib\n" + "Important suboptions\n" + "\textended use use all 256 characters\n" + "\teight use eight bit ascii\n" + "\tdriver set recommended aalib driver (X11,curses,linux)\n" + "\thelp to see all options provided by aalib\n" "\n" "AA-MPlayer Keys\n" "\t1 : contrast -\n" @@ -588,94 +589,94 @@ else return -1; } -int -vo_aa_parseoption(m_option_t * conf, char *opt, char *param){ - /* got an option starting with aa */ - char *pseudoargv[4]; - int pseudoargc; - char * x, *help; - int i; - /* do WE need it ? */ - if (!strcasecmp(opt, "aaosdcolor")){ - if (param==NULL) return M_OPT_MISSING_PARAM; - if ((i=getcolor(param))==-1) return M_OPT_OUT_OF_RANGE; - aaopt_osdcolor=i; - return 1; - }else if (!strcasecmp(opt, "aasubcolor")){ - if ((i=getcolor(param))==-1) return M_OPT_OUT_OF_RANGE; - aaopt_subcolor=i; - return 1; - }else if (!strcasecmp(opt, "aahelp")){ - printf("Here are the aalib options:\n"); - help=strdup(aa_help); /* aa_help is const :( */ - x=strtok(help,"-"); - printf(x); - while ((x=strtok(NULL, "-"))){ - if (*(x-2)==' ') printf("-aa"); - else printf("-"); - printf("%s", x); - } - printf( - "\n" - "\n" - "Additional options vo_aa provides:\n" - " -aaosdcolor set osd color\n" - " -aasubcolor set subtitle color\n" - " the color parameters are:\n" - " 0 : normal\n" - " 1 : dim\n" - " 2 : bold\n" - " 3 : boldfont\n" - " 4 : reverse\n" - " 5 : special\n" - "\n\n" - " dT8 8Tb\n" - " dT 8 8 Tb\n" - " dT 8 8 Tb\n" - " <PROJECT><PROJECT>\n" - " dT 8 8 Tb\n" - " dT 8 8 Tb\n" - "\n" +static int parse_suboptions(const char *arg) { + char *pseudoargv[4], *osdcolor = NULL, *subcolor = NULL, **strings, + *helpmsg = NULL; + int pseudoargc, displayhelp = 0, *booleans; + opt_t extra_opts[] = { + {"osdcolor", OPT_ARG_MSTRZ, &osdcolor, NULL, 0}, + {"subcolor", OPT_ARG_MSTRZ, &subcolor, NULL, 0}, + {"help", OPT_ARG_BOOL, &displayhelp, NULL, 0} }; + opt_t *subopts = NULL, *p; + char *strings_list[] = {"-driver", "-kbddriver", "-mousedriver", "-font", + "-width", "-height", "-minwidth", "-minheight", "-maxwidth", + "-maxheight", "-recwidth", "-recheight", "-bright", "-contrast", + "-gamma", "-dimmul", "-boldmul", "-random" }; + char *booleans_list[] = {"-dim", "-bold", "-reverse", "-normal", + "-boldfont", "-inverse", "-extended", "-eight", "-dither", + "-floyd_steinberg", "-error_distribution"}; + char *nobooleans_list[] = {"-nodim", "-nobold", "-noreverse", "-nonormal", + "-noboldfont", "-noinverse", "-noextended", "-noeight", "-nodither", + "-nofloyd_steinberg", "-noerror_distribution"}; + const int nstrings = sizeof(strings_list) / sizeof(char*); + const int nbooleans = sizeof(booleans_list) / sizeof(int); + const int nextra_opts = sizeof(extra_opts) / sizeof(opt_t); + const int nsubopts = nstrings + nbooleans + nextra_opts; + int i, retval = 0; + + subopts = calloc(nsubopts + 1, sizeof(opt_t)); + strings = calloc(nstrings, sizeof(char*)); + booleans = calloc(nbooleans, sizeof(int)); + + p = subopts; + for (i=0; i<nstrings; i++, p++) { + p->name = strings_list[i] + 1; // skip '-' + p->type = OPT_ARG_MSTRZ; + p->valp = &strings[i]; + } + for (i=0; i<nbooleans; i++, p++) { + p->name = booleans_list[i] + 1; + p->type = OPT_ARG_BOOL; + p->valp = &booleans[i]; + } + memcpy(p, extra_opts, sizeof(extra_opts)); + + retval = subopt_parse(arg, subopts); - ); - exit(0); - - }else{ - /* parse param to aalib */ - pseudoargv[1]=malloc(strlen(opt)); - pseudoargv[3]=NULL; - sprintf(pseudoargv[1], "-%s", opt+2); - if (param!=NULL){ - pseudoargv[2]=param; - pseudoargc=3; - }else{ - pseudoargv[2]=NULL; - pseudoargc=2; - } - fprintf(stderr,"VO: [aa] "); - i=aa_parseoptions(&aa_defparams, &aa_defrenderparams, &pseudoargc, pseudoargv); - if (i!=1){ - return M_OPT_MISSING_PARAM; - } - if (pseudoargv[1]!=NULL){ - /* aalib has given param back */ - fprintf(stderr," Parameter -%s accepted\n", opt); - return 0; /* param could be the filename */ - } - fprintf(stderr," Parameter -%s %s accepted\n", opt, ((param==NULL) ? "" : param) ); - return 1; /* all opt & params accepted */ + if (retval == 0 && displayhelp) { + helpmsg = strdup(aa_help); + for (i=0; i<(signed)strlen(helpmsg); i++) + if (helpmsg[i] == '-') helpmsg[i] = ' '; + mp_msg(MSGT_VO, MSGL_INFO, MSGTR_VO_AA_HelpHeader); + mp_msg(MSGT_VO, MSGL_INFO, "%s\n\n", helpmsg); + mp_msg(MSGT_VO, MSGL_INFO, MSGTR_VO_AA_AdditionalOptions); + retval = -1; + } + if (retval == 0) { + pseudoargv[3] = NULL; + for (i=0; i<nstrings; i++) { + pseudoargc = 3; // inside loop because aalib changes it + if (strings[i] != NULL) { + pseudoargv[1] = strings_list[i]; + pseudoargv[2] = strings[i]; + aa_parseoptions(&aa_defparams, &aa_defrenderparams, + &pseudoargc, pseudoargv) != 1; + } + } + pseudoargv[2] = NULL; + for (i=0; i<nbooleans; i++) { + pseudoargc = 2; + if (booleans[i]) pseudoargv[1] = booleans_list[i]; + else pseudoargv[1] = nobooleans_list[i]; + aa_parseoptions(&aa_defparams, &aa_defrenderparams, + &pseudoargc, pseudoargv) != 1; + } + if (osdcolor) aaopt_osdcolor = getcolor(osdcolor); + if (subcolor) aaopt_subcolor = getcolor(subcolor); + } + if (subopts) free(subopts); + if (booleans) free(booleans); + if (strings) { + for (i=0; i<nstrings; i++) + if (strings[i]) + free(strings[i]); + free(strings); } - return M_OPT_UNKNOWN; - -} - -void -vo_aa_revertoption(m_option_t* opt,char* param) { - if (!strcasecmp(param, "aaosdcolor")) - aaopt_osdcolor= AA_SPECIAL; - else if (!strcasecmp(param, "aasubcolor")) - aaopt_subcolor= AA_SPECIAL; + if (osdcolor) free(osdcolor); + if (subcolor) free(subcolor); + if (helpmsg) free(helpmsg); + return retval; } static uint32_t preinit(const char *arg) @@ -689,7 +690,7 @@ if(arg) { - mp_msg(MSGT_VO,MSGL_ERR,"vo_aa: Unknown subdevice: %s\n",arg); + if (parse_suboptions(arg) != 0) return ENOSYS; }