# HG changeset patch # User kostya # Date 1236014329 0 # Node ID e9ba8210d4951d41dcdc308dbf9e4c8988e957c9 # Parent 65f47b345904c71b11b28d6d62458a72709ebe51 Factor out block decoding in ff_h263_decode_mb() diff -r 65f47b345904 -r e9ba8210d495 h263.c --- a/h263.c Mon Mar 02 15:13:58 2009 +0000 +++ b/h263.c Mon Mar 02 17:18:49 2009 +0000 @@ -4005,18 +4005,6 @@ mot_val[1] = my; } } - - /* decode each block */ - for (i = 0; i < 6; i++) { - if (h263_decode_block(s, block[i], i, cbp&32) < 0) - return -1; - cbp+=cbp; - } - - if(s->obmc){ - if(s->pict_type == FF_P_TYPE && s->mb_x+1mb_width && s->mb_num_left != 1) - preview_obmc(s); - } } else if(s->pict_type==FF_B_TYPE) { int mb_type; const int stride= s->b8_stride; @@ -4105,13 +4093,6 @@ } s->current_picture.mb_type[xy]= mb_type; - - /* decode each block */ - for (i = 0; i < 6; i++) { - if (h263_decode_block(s, block[i], i, cbp&32) < 0) - return -1; - cbp+=cbp; - } } else { /* I-Frame */ do{ cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); @@ -4146,13 +4127,18 @@ if (dquant) { h263_decode_dquant(s); } - - /* decode each block */ - for (i = 0; i < 6; i++) { - if (h263_decode_block(s, block[i], i, cbp&32) < 0) - return -1; - cbp+=cbp; - } + } + + /* decode each block */ + for (i = 0; i < 6; i++) { + if (h263_decode_block(s, block[i], i, cbp&32) < 0) + return -1; + cbp+=cbp; + } + + if(s->obmc && !s->mb_intra){ + if(s->pict_type == FF_P_TYPE && s->mb_x+1mb_width && s->mb_num_left != 1) + preview_obmc(s); } end: