Mercurial > libavcodec.hg
comparison vc1dec.c @ 9863:ff0ea87dd64e libavcodec
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.
| author | darkshikari |
|---|---|
| date | Wed, 17 Jun 2009 05:54:42 +0000 |
| parents | 7e82083caab7 |
| children | c69559e9f6c3 |
comparison
equal
deleted
inserted
replaced
| 9862:db929fcaeb9a | 9863:ff0ea87dd64e |
|---|---|
| 2615 //do frame decode | 2615 //do frame decode |
| 2616 s->mb_x = s->mb_y = 0; | 2616 s->mb_x = s->mb_y = 0; |
| 2617 s->mb_intra = 1; | 2617 s->mb_intra = 1; |
| 2618 s->first_slice_line = 1; | 2618 s->first_slice_line = 1; |
| 2619 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { | 2619 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { |
| 2620 for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { | 2620 s->mb_x = 0; |
| 2621 ff_init_block_index(s); | 2621 ff_init_block_index(s); |
| 2622 for(; s->mb_x < s->mb_width; s->mb_x++) { | |
| 2622 ff_update_block_index(s); | 2623 ff_update_block_index(s); |
| 2623 s->dsp.clear_blocks(s->block[0]); | 2624 s->dsp.clear_blocks(s->block[0]); |
| 2624 mb_pos = s->mb_x + s->mb_y * s->mb_width; | 2625 mb_pos = s->mb_x + s->mb_y * s->mb_width; |
| 2625 s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA; | 2626 s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA; |
| 2626 s->current_picture.qscale_table[mb_pos] = v->pq; | 2627 s->current_picture.qscale_table[mb_pos] = v->pq; |
| 2728 //do frame decode | 2729 //do frame decode |
| 2729 s->mb_x = s->mb_y = 0; | 2730 s->mb_x = s->mb_y = 0; |
| 2730 s->mb_intra = 1; | 2731 s->mb_intra = 1; |
| 2731 s->first_slice_line = 1; | 2732 s->first_slice_line = 1; |
| 2732 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { | 2733 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { |
| 2733 for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { | 2734 s->mb_x = 0; |
| 2734 ff_init_block_index(s); | 2735 ff_init_block_index(s); |
| 2736 for(;s->mb_x < s->mb_width; s->mb_x++) { | |
| 2735 ff_update_block_index(s); | 2737 ff_update_block_index(s); |
| 2736 s->dsp.clear_blocks(s->block[0]); | 2738 s->dsp.clear_blocks(s->block[0]); |
| 2737 mb_pos = s->mb_x + s->mb_y * s->mb_stride; | 2739 mb_pos = s->mb_x + s->mb_y * s->mb_stride; |
| 2738 s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA; | 2740 s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA; |
| 2739 s->current_picture.motion_val[1][s->block_index[0]][0] = 0; | 2741 s->current_picture.motion_val[1][s->block_index[0]][0] = 0; |
| 2847 } | 2849 } |
| 2848 | 2850 |
| 2849 s->first_slice_line = 1; | 2851 s->first_slice_line = 1; |
| 2850 memset(v->cbp_base, 0, sizeof(v->cbp_base[0])*2*s->mb_stride); | 2852 memset(v->cbp_base, 0, sizeof(v->cbp_base[0])*2*s->mb_stride); |
| 2851 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { | 2853 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { |
| 2852 for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { | 2854 s->mb_x = 0; |
| 2853 ff_init_block_index(s); | 2855 ff_init_block_index(s); |
| 2856 for(; s->mb_x < s->mb_width; s->mb_x++) { | |
| 2854 ff_update_block_index(s); | 2857 ff_update_block_index(s); |
| 2855 | 2858 |
| 2856 vc1_decode_p_mb(v); | 2859 vc1_decode_p_mb(v); |
| 2857 if(get_bits_count(&s->gb) > v->bits || get_bits_count(&s->gb) < 0) { | 2860 if(get_bits_count(&s->gb) > v->bits || get_bits_count(&s->gb) < 0) { |
| 2858 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); | 2861 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); |
| 2896 break; | 2899 break; |
| 2897 } | 2900 } |
| 2898 | 2901 |
| 2899 s->first_slice_line = 1; | 2902 s->first_slice_line = 1; |
| 2900 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { | 2903 for(s->mb_y = 0; s->mb_y < s->mb_height; s->mb_y++) { |
| 2901 for(s->mb_x = 0; s->mb_x < s->mb_width; s->mb_x++) { | 2904 s->mb_x = 0; |
| 2902 ff_init_block_index(s); | 2905 ff_init_block_index(s); |
| 2906 for(; s->mb_x < s->mb_width; s->mb_x++) { | |
| 2903 ff_update_block_index(s); | 2907 ff_update_block_index(s); |
| 2904 | 2908 |
| 2905 vc1_decode_b_mb(v); | 2909 vc1_decode_b_mb(v); |
| 2906 if(get_bits_count(&s->gb) > v->bits || get_bits_count(&s->gb) < 0) { | 2910 if(get_bits_count(&s->gb) > v->bits || get_bits_count(&s->gb) < 0) { |
| 2907 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); | 2911 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); |
