Mercurial > mplayer.hg
changeset 607:4407bb4741c9
added html generation
author | arpi_esp |
---|---|
date | Tue, 24 Apr 2001 02:14:14 +0000 |
parents | 0b1f9eda1ea6 |
children | 10eb21c47cbc |
files | codec-cfg.c |
diffstat | 1 files changed, 174 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/codec-cfg.c Tue Apr 24 00:02:20 2001 +0000 +++ b/codec-cfg.c Tue Apr 24 02:14:14 2001 +0000 @@ -99,10 +99,6 @@ return 1; } - -static int add_to_out(char *sfmt, char *sflags, unsigned int *outfmt, - unsigned char *outflags) -{ static struct { const char *name; const unsigned int num; @@ -128,6 +124,11 @@ {NULL, 0} }; + +static int add_to_out(char *sfmt, char *sflags, unsigned int *outfmt, + unsigned char *outflags) +{ + static char *flagstr[] = { "flip", "noflip", @@ -623,6 +624,175 @@ return NULL; } +#ifdef CODECS2HTML + +void wrapline(FILE *f2,char *s){ + int c; + if(!s){ + fprintf(f2,"-"); + return; + } + while((c=*s++)){ + if(c==',') fprintf(f2,"<br>"); else fputc(c,f2); + } +} + +void parsehtml(FILE *f1,FILE *f2,codecs_t *codec,int section,int dshow){ + int c,d; + while((c=fgetc(f1))>=0){ + if(c!='%'){ + fputc(c,f2); + continue; + } + d=fgetc(f1); + if(d=='.') return; // end of section + + switch(d){ + case '.': + return; + case 'n': + wrapline(f2,codec->name); break; + case 'i': + wrapline(f2,codec->info); break; + case 'c': + wrapline(f2,codec->comment); break; + case 'd': + wrapline(f2,codec->dll); break; + case 'D': + fprintf(f2,"%c",codec->driver==dshow?'+':'-'); break; + case 'F': + for(d=0;d<CODECS_MAX_FOURCC;d++) + if(codec->fourcc[d]!=0xFFFFFFFF) + fprintf(f2,"%s%.4s",d?"<br>":"",codec->fourcc[d]<0x20202020?"-":(char*) &codec->fourcc[d]); + break; + case 'f': + for(d=0;d<CODECS_MAX_FOURCC;d++) + if(codec->fourcc[d]!=0xFFFFFFFF) + fprintf(f2,"%s0x%X",d?"<br>":"",codec->fourcc[d]); + break; + case 'Y': + for(d=0;d<CODECS_MAX_OUTFMT;d++) + if(codec->outfmt[d]!=0xFFFFFFFF){ + for (c=0; fmt_table[c].name; c++) + if(fmt_table[c].num==codec->outfmt[d]) break; + if(fmt_table[c].name) + fprintf(f2,"%s%s",d?"<br>":"",fmt_table[c].name); + } + break; + default: + fputc(c,f2); + fputc(d,f2); + } + } + +} + +void skiphtml(FILE *f1){ + int c,d; + while((c=fgetc(f1))>=0){ + if(c!='%'){ + continue; + } + d=fgetc(f1); + if(d=='.') return; // end of section + } +} + +int main(void) +{ + codecs_t **codecs, *cl; + FILE *f1; + FILE *f2; + int c,d,i; + int pos; + int section=-1; + int nr_codecs; + int win32=-1; + int dshow=-1; + + if (!(codecs = parse_codec_cfg("DOCS/codecs.conf"))) + return 0; + if (!codecs[0]) + printf("no videoconfig.\n"); + if (!codecs[1]) + printf("no audioconfig.\n"); + + f1=fopen("DOCS/codecs-in.html","rb"); if(!f1) exit(1); + f2=fopen("DOCS/codecs.html","wb"); if(!f2) exit(1); + + while((c=fgetc(f1))>=0){ + if(c!='%'){ + fputc(c,f2); + continue; + } + d=fgetc(f1); + if(d>='0' && d<='9'){ + // begin section + section=d-'0'; + printf("BEGIN %d\n",section); + if(section>=5){ + // audio + cl = codecs[1]; + nr_codecs = nr_acodecs; + dshow=7;win32=4; + } else { + // video + cl = codecs[0]; + nr_codecs = nr_vcodecs; + dshow=4;win32=2; + } + pos=ftell(f1); + for(i=0;i<nr_codecs;i++){ + fseek(f1,pos,SEEK_SET); + switch(section){ + case 0: + case 5: + if(cl[i].status==CODECS_STATUS_WORKING) + if(!(cl[i].driver==win32 || cl[i].driver==dshow)) + parsehtml(f1,f2,&cl[i],section,dshow); + break; + case 1: + case 6: + if(cl[i].status==CODECS_STATUS_WORKING) + if(cl[i].driver==win32 || cl[i].driver==dshow) + parsehtml(f1,f2,&cl[i],section,dshow); + break; + case 2: + case 7: + if(cl[i].status==CODECS_STATUS_PROBLEMS) + parsehtml(f1,f2,&cl[i],section,dshow); + break; + case 3: + case 8: + if(cl[i].status==CODECS_STATUS_NOT_WORKING) + parsehtml(f1,f2,&cl[i],section,dshow); + break; + case 4: + case 9: + if(cl[i].status==CODECS_STATUS_UNTESTED) + parsehtml(f1,f2,&cl[i],section,dshow); + break; + default: + printf("Warning! unimplemented section: %d\n",section); + } + } + fseek(f1,pos,SEEK_SET); + skiphtml(f1); +//void parsehtml(FILE *f1,FILE *f2,codecs_t *codec,int section,int dshow){ + + continue; + } + fputc(c,f2); + fputc(d,f2); + } + + fclose(f2); + fclose(f1); + return 0; +} + +#endif + #ifdef TESTING int main(void) {