Mercurial > libavcodec.hg
comparison h263.c @ 661:a0901e38c564 libavcodec
fixing interlaced mpeg4 decoding
author | michaelni |
---|---|
date | Thu, 12 Sep 2002 18:28:17 +0000 |
parents | b8e268337a1d |
children | 5a158f0d1981 |
comparison
equal
deleted
inserted
replaced
660:b8e268337a1d | 661:a0901e38c564 |
---|---|
2720 my = h263_decode_motion(s, pred_y/2, s->f_code); | 2720 my = h263_decode_motion(s, pred_y/2, s->f_code); |
2721 if (my >= 0xffff) | 2721 if (my >= 0xffff) |
2722 return -1; | 2722 return -1; |
2723 | 2723 |
2724 s->mv[0][i][0] = mx; | 2724 s->mv[0][i][0] = mx; |
2725 s->mv[0][i][1] = my*2; | 2725 s->mv[0][i][1] = my; |
2726 } | 2726 } |
2727 }else{ | 2727 }else{ |
2728 PRINT_MB_TYPE("P"); | 2728 PRINT_MB_TYPE("P"); |
2729 /* 16x16 motion prediction */ | 2729 /* 16x16 motion prediction */ |
2730 s->mv_type = MV_TYPE_16X16; | 2730 s->mv_type = MV_TYPE_16X16; |
3192 i = 0; | 3192 i = 0; |
3193 if (!coded) | 3193 if (!coded) |
3194 goto not_coded; | 3194 goto not_coded; |
3195 rl = &rl_intra; | 3195 rl = &rl_intra; |
3196 rl_vlc = rl_intra.rl_vlc[0]; | 3196 rl_vlc = rl_intra.rl_vlc[0]; |
3197 if (s->ac_pred) { | 3197 if(s->alternate_scan) |
3198 scan_table = ff_alternate_vertical_scan; /* left */ | |
3199 else if (s->ac_pred) { | |
3198 if (dc_pred_dir == 0) | 3200 if (dc_pred_dir == 0) |
3199 scan_table = ff_alternate_vertical_scan; /* left */ | 3201 scan_table = ff_alternate_vertical_scan; /* left */ |
3200 else | 3202 else |
3201 scan_table = ff_alternate_horizontal_scan; /* top */ | 3203 scan_table = ff_alternate_horizontal_scan; /* top */ |
3202 } else { | 3204 } else { |
3209 if (!coded) { | 3211 if (!coded) { |
3210 s->block_last_index[n] = i; | 3212 s->block_last_index[n] = i; |
3211 return 0; | 3213 return 0; |
3212 } | 3214 } |
3213 rl = &rl_inter; | 3215 rl = &rl_inter; |
3214 scan_table = zigzag_direct; | 3216 |
3217 if(s->alternate_scan) | |
3218 scan_table = ff_alternate_vertical_scan; /* left */ | |
3219 else | |
3220 scan_table = zigzag_direct; | |
3221 | |
3215 if(s->mpeg_quant){ | 3222 if(s->mpeg_quant){ |
3216 qmul=1; | 3223 qmul=1; |
3217 qadd=0; | 3224 qadd=0; |
3218 rl_vlc = rl_inter.rl_vlc[0]; | 3225 rl_vlc = rl_inter.rl_vlc[0]; |
3219 }else{ | 3226 }else{ |
4052 t=get_bits(&s->gb, 3); /* intra dc VLC threshold */ | 4059 t=get_bits(&s->gb, 3); /* intra dc VLC threshold */ |
4053 //printf("threshold %d\n", t); | 4060 //printf("threshold %d\n", t); |
4054 if(!s->progressive_sequence){ | 4061 if(!s->progressive_sequence){ |
4055 s->top_field_first= get_bits1(&s->gb); | 4062 s->top_field_first= get_bits1(&s->gb); |
4056 s->alternate_scan= get_bits1(&s->gb); | 4063 s->alternate_scan= get_bits1(&s->gb); |
4057 //printf("top:%d alt:%d\n", s->top_field_first, s->alternate_scan); | 4064 }else |
4058 } | 4065 s->alternate_scan= 0; |
4059 } | 4066 } |
4060 | 4067 |
4061 if(s->pict_type == S_TYPE && (s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE)){ | 4068 if(s->pict_type == S_TYPE && (s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE)){ |
4062 if(s->num_sprite_warping_points){ | 4069 if(s->num_sprite_warping_points){ |
4063 mpeg4_decode_sprite_trajectory(s); | 4070 mpeg4_decode_sprite_trajectory(s); |
4088 if (s->pict_type == B_TYPE) { | 4095 if (s->pict_type == B_TYPE) { |
4089 s->b_code = get_bits(&s->gb, 3); | 4096 s->b_code = get_bits(&s->gb, 3); |
4090 }else | 4097 }else |
4091 s->b_code=1; | 4098 s->b_code=1; |
4092 | 4099 |
4093 //printf("quant:%d fcode:%d bcode:%d type:%d size:%d\n", s->qscale, s->f_code, s->b_code, s->pict_type, s->gb.size); | 4100 //printf("qpuant:%d fcode:%d bcode:%d type:%d size:%d pro:%d alt:%d\n", |
4101 // s->qscale, s->f_code, s->b_code, s->pict_type, s->gb.size,s->progressive_sequence, s->alternate_scan); | |
4094 if(!s->scalability){ | 4102 if(!s->scalability){ |
4095 if (s->shape!=RECT_SHAPE && s->pict_type!=I_TYPE) { | 4103 if (s->shape!=RECT_SHAPE && s->pict_type!=I_TYPE) { |
4096 skip_bits1(&s->gb); // vop shape coding type | 4104 skip_bits1(&s->gb); // vop shape coding type |
4097 } | 4105 } |
4098 }else{ | 4106 }else{ |