comparison h263.c @ 1796:7186712b391e libavcodec

rv10/obmc fixes
author michael
date Mon, 09 Feb 2004 15:23:35 +0000
parents 920e6381e1fe
children 95612d423fde
comparison
equal deleted inserted replaced
1795:920e6381e1fe 1796:7186712b391e
3864 mot_val[0] = mx; 3864 mot_val[0] = mx;
3865 mot_val[1] = my; 3865 mot_val[1] = my;
3866 } 3866 }
3867 } 3867 }
3868 3868
3869 /* decode each block */
3870 for (i = 0; i < 6; i++) {
3871 if (h263_decode_block(s, block[i], i, cbp&32) < 0)
3872 return -1;
3873 cbp+=cbp;
3874 }
3875
3869 if(s->obmc){ 3876 if(s->obmc){
3870 if(s->pict_type == P_TYPE && s->mb_x+1<s->mb_width) 3877 if(s->pict_type == P_TYPE && s->mb_x+1<s->mb_width && s->mb_num_left != 1)
3871 preview_obmc(s); 3878 preview_obmc(s);
3872 } 3879 }
3873 } else if(s->pict_type==B_TYPE) { 3880 } else if(s->pict_type==B_TYPE) {
3874 int mb_type; 3881 int mb_type;
3875 const int stride= s->b8_stride; 3882 const int stride= s->b8_stride;
3955 mot_val[1 ]= mot_val[3 ]= mot_val[1+2*stride]= mot_val[3+2*stride]= my; 3962 mot_val[1 ]= mot_val[3 ]= mot_val[1+2*stride]= mot_val[3+2*stride]= my;
3956 } 3963 }
3957 } 3964 }
3958 3965
3959 s->current_picture.mb_type[xy]= mb_type; 3966 s->current_picture.mb_type[xy]= mb_type;
3967
3968 /* decode each block */
3969 for (i = 0; i < 6; i++) {
3970 if (h263_decode_block(s, block[i], i, cbp&32) < 0)
3971 return -1;
3972 cbp+=cbp;
3973 }
3960 } else { /* I-Frame */ 3974 } else { /* I-Frame */
3961 do{ 3975 do{
3962 cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); 3976 cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2);
3963 if (cbpc < 0){ 3977 if (cbpc < 0){
3964 av_log(s->avctx, AV_LOG_ERROR, "I cbpc damaged at %d %d\n", s->mb_x, s->mb_y); 3978 av_log(s->avctx, AV_LOG_ERROR, "I cbpc damaged at %d %d\n", s->mb_x, s->mb_y);
3987 } 4001 }
3988 cbp = (cbpc & 3) | (cbpy << 2); 4002 cbp = (cbpc & 3) | (cbpy << 2);
3989 if (dquant) { 4003 if (dquant) {
3990 h263_decode_dquant(s); 4004 h263_decode_dquant(s);
3991 } 4005 }
3992 } 4006
3993 4007 /* decode each block */
3994 /* decode each block */ 4008 for (i = 0; i < 6; i++) {
3995 for (i = 0; i < 6; i++) { 4009 if (h263_decode_block(s, block[i], i, cbp&32) < 0)
3996 if (h263_decode_block(s, block[i], i, cbp&32) < 0) 4010 return -1;
3997 return -1; 4011 cbp+=cbp;
3998 cbp+=cbp; 4012 }
3999 } 4013 }
4000 end: 4014 end:
4001 4015
4002 /* per-MB end of slice check */ 4016 /* per-MB end of slice check */
4003 { 4017 {