diff options
author | 2001-04-24 02:14:14 +0000 | |
---|---|---|
committer | 2001-04-24 02:14:14 +0000 | |
commit | ad738d10eb9ffe8a70b66d4cd59f213314a2dc02 (patch) | |
tree | c4203fc308842d11b8917772245054f46a4f2a7f /codec-cfg.c | |
parent | 18f38c036889c014df853bfb299a87bb2c77b65f (diff) |
added html generation
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@608 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'codec-cfg.c')
-rw-r--r-- | codec-cfg.c | 178 |
1 files changed, 174 insertions, 4 deletions
diff --git a/codec-cfg.c b/codec-cfg.c index 0bab064b6c..9bc8c2ef99 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -99,10 +99,6 @@ static int add_to_format(char *s, unsigned int *fourcc, unsigned int *fourccmap) 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 @@ static int add_to_out(char *sfmt, char *sflags, unsigned int *outfmt, {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 @@ codecs_t* find_codec(unsigned int fourcc,unsigned int *fourccmap, 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) { |