summaryrefslogtreecommitdiffstats
path: root/codec-cfg.c
diff options
context:
space:
mode:
authorarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-04-24 02:14:14 +0000
committerarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-04-24 02:14:14 +0000
commitad738d10eb9ffe8a70b66d4cd59f213314a2dc02 (patch)
treec4203fc308842d11b8917772245054f46a4f2a7f /codec-cfg.c
parent18f38c036889c014df853bfb299a87bb2c77b65f (diff)
downloadmpv-ad738d10eb9ffe8a70b66d4cd59f213314a2dc02.tar.bz2
mpv-ad738d10eb9ffe8a70b66d4cd59f213314a2dc02.tar.xz
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.c178
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)
{