Mercurial > libavcodec.hg
diff msmpeg4.c @ 311:ac677a84d5df libavcodec
wmv1 header parser (unfinished)
author | michaelni |
---|---|
date | Sat, 06 Apr 2002 22:29:37 +0000 |
parents | 49e73229a5e6 |
children | 3c5266cda02d |
line wrap: on
line diff
--- a/msmpeg4.c Fri Apr 05 21:04:09 2002 +0000 +++ b/msmpeg4.c Sat Apr 06 22:29:37 2002 +0000 @@ -802,8 +802,18 @@ int msmpeg4_decode_picture_header(MpegEncContext * s) { - int code; + int code, code2; +#if 0 +{ +int i; +for(i=0; i<s->gb.size*8; i++) + printf("%d", get_bits1(&s->gb)); +// get_bits1(&s->gb); +printf("END\n"); +return -1; +} +#endif s->pict_type = get_bits(&s->gb, 2) + 1; if (s->pict_type != I_TYPE && s->pict_type != P_TYPE) @@ -817,16 +827,34 @@ if (code < 0x17) return -1; s->slice_height = s->mb_height / (code - 0x16); - if(s->msmpeg4_version==2){ + + switch(s->msmpeg4_version){ + case 2: s->rl_chroma_table_index = 2; s->rl_table_index = 2; s->dc_table_index = 0; //not used - }else{ + break; + case 3: s->rl_chroma_table_index = decode012(&s->gb); s->rl_table_index = decode012(&s->gb); s->dc_table_index = get_bits1(&s->gb); + break; + case 4: + msmpeg4_decode_ext_header(s, 999 /* bufer size (useless here) */); + printf("%X\n", show_bits(&s->gb, 24)); + code= get_bits(&s->gb, 2); + if(code==1){ + code2= get_bits(&s->gb, 3); + if(code2==7) skip_bits(&s->gb, 1); + } + printf("%X\n", show_bits(&s->gb, 24)); + s->rl_chroma_table_index = 2; + s->rl_table_index = 2; + + s->dc_table_index = 0; + break; } s->no_rounding = 1; /* printf(" %d %d %d %d \n", @@ -864,6 +892,7 @@ s->no_rounding = 0; } // printf("%d", s->no_rounding); +//return -1; } #if 0 @@ -1250,6 +1279,7 @@ i += run; if (i >= 64) return -1; +//printf("RL:%d %d %d ", run, level, last); j = scan_table[i]; block[j] = level; i++;