comparison h263.c @ 660:b8e268337a1d libavcodec

parsing resync header extension support
author michaelni
date Thu, 12 Sep 2002 15:22:14 +0000
parents 9dc53c09d791
children a0901e38c564
comparison
equal deleted inserted replaced
659:9dc53c09d791 660:b8e268337a1d
2046 header_extension= get_bits1(gb); 2046 header_extension= get_bits1(gb);
2047 } 2047 }
2048 if(header_extension){ 2048 if(header_extension){
2049 int time_increment; 2049 int time_increment;
2050 int time_incr=0; 2050 int time_incr=0;
2051 printf("header extension not supported\n");
2052 return -1;
2053 2051
2054 while (get_bits1(gb) != 0) 2052 while (get_bits1(gb) != 0)
2055 time_incr++; 2053 time_incr++;
2056 2054
2057 check_marker(gb, "before time_increment in video packed header"); 2055 check_marker(gb, "before time_increment in video packed header");
2058 time_increment= get_bits(gb, s->time_increment_bits); 2056 time_increment= get_bits(gb, s->time_increment_bits);
2059 if(s->pict_type!=B_TYPE){
2060 s->last_time_base= s->time_base;
2061 s->time_base+= time_incr;
2062 s->time= s->time_base*s->time_increment_resolution + time_increment;
2063 s->pp_time= s->time - s->last_non_b_time;
2064 s->last_non_b_time= s->time;
2065 }else{
2066 s->time= (s->last_time_base + time_incr)*s->time_increment_resolution + time_increment;
2067 s->bp_time= s->last_non_b_time - s->time;
2068 }
2069 check_marker(gb, "before vop_coding_type in video packed header"); 2057 check_marker(gb, "before vop_coding_type in video packed header");
2070 2058
2071 skip_bits(gb, 2); /* vop coding type */ 2059 skip_bits(gb, 2); /* vop coding type */
2072 //FIXME not rect stuff here 2060 //FIXME not rect stuff here
2073 2061
2074 if(s->shape != BIN_ONLY_SHAPE){ 2062 if(s->shape != BIN_ONLY_SHAPE){
2075 skip_bits(gb, 3); /* intra dc vlc threshold */ 2063 skip_bits(gb, 3); /* intra dc vlc threshold */
2076 2064
2077 if(s->pict_type == S_TYPE && s->vol_sprite_usage==GMC_SPRITE && s->num_sprite_warping_points){ 2065 if(s->pict_type == S_TYPE && s->vol_sprite_usage==GMC_SPRITE && s->num_sprite_warping_points){
2078 mpeg4_decode_sprite_trajectory(s); 2066 mpeg4_decode_sprite_trajectory(s);
2067 fprintf(stderr, "untested\n");
2079 } 2068 }
2080 2069
2081 //FIXME reduced res stuff here 2070 //FIXME reduced res stuff here
2082 2071
2083 if (s->pict_type != I_TYPE) { 2072 if (s->pict_type != I_TYPE) {
2084 s->f_code = get_bits(gb, 3); /* fcode_for */ 2073 int f_code = get_bits(gb, 3); /* fcode_for */
2085 if(s->f_code==0){ 2074 if(f_code==0){
2086 printf("Error, video packet header damaged or not MPEG4 header (f_code=0)\n"); 2075 printf("Error, video packet header damaged (f_code=0)\n");
2087 return -1; // makes no sense to continue, as the MV decoding will break very quickly
2088 } 2076 }
2089 } 2077 }
2090 if (s->pict_type == B_TYPE) { 2078 if (s->pict_type == B_TYPE) {
2091 s->b_code = get_bits(gb, 3); 2079 int b_code = get_bits(gb, 3);
2080 if(b_code==0){
2081 printf("Error, video packet header damaged (b_code=0)\n");
2082 }
2092 } 2083 }
2093 } 2084 }
2094 } 2085 }
2095 //FIXME new-pred stuff 2086 //FIXME new-pred stuff
2096 2087