# HG changeset patch # User darkshikari # Date 1245218082 0 # Node ID ff0ea87dd64e281886baa22e623f3fcf1b336685 # Parent db929fcaeb9aed0ecca1f53f6277d9af58c2fe55 VC-1/WMV: Remove redundant ff_init_block_index() calls. These are only supposed to be called once per row, not once per macroblock. ~1.5% faster according to oprofile. diff -r db929fcaeb9a -r ff0ea87dd64e vc1dec.c --- a/vc1dec.c Tue Jun 16 21:50:36 2009 +0000 +++ b/vc1dec.c Wed Jun 17 05:54:42 2009 +0000 @@ -2617,8 +2617,9 @@ s->mb_intra = 1; s->first_slice_line = 1; for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { - for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { - ff_init_block_index(s); + s->mb_x = 0; + ff_init_block_index(s); + for(; s->mb_x < s->mb_width; s->mb_x++) { ff_update_block_index(s); s->dsp.clear_blocks(s->block[0]); mb_pos = s->mb_x + s->mb_y * s->mb_width; @@ -2730,8 +2731,9 @@ s->mb_intra = 1; s->first_slice_line = 1; for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { - for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { - ff_init_block_index(s); + s->mb_x = 0; + ff_init_block_index(s); + for(;s->mb_x < s->mb_width; s->mb_x++) { ff_update_block_index(s); s->dsp.clear_blocks(s->block[0]); mb_pos = s->mb_x + s->mb_y * s->mb_stride; @@ -2849,8 +2851,9 @@ s->first_slice_line = 1; memset(v->cbp_base, 0, sizeof(v->cbp_base[0])*2*s->mb_stride); for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { - for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { - ff_init_block_index(s); + s->mb_x = 0; + ff_init_block_index(s); + for(; s->mb_x < s->mb_width; s->mb_x++) { ff_update_block_index(s); vc1_decode_p_mb(v); @@ -2898,8 +2901,9 @@ s->first_slice_line = 1; for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { - for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { - ff_init_block_index(s); + s->mb_x = 0; + ff_init_block_index(s); + for(; s->mb_x < s->mb_width; s->mb_x++) { ff_update_block_index(s); vc1_decode_b_mb(v);