Mercurial > libavcodec.hg
comparison vc1dec.c @ 12141:c3682c0606e3 libavcodec
vc1: ff_draw_horiz_band needs a one row delay when the loop filter is active
author | conrad |
---|---|
date | Sun, 11 Jul 2010 22:52:47 +0000 |
parents | 9ba7d2a5b20a |
children | 7e93f85e48bf |
comparison
equal
deleted
inserted
replaced
12140:3d186eff2224 | 12141:c3682c0606e3 |
---|---|
2678 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); | 2678 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); |
2679 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); | 2679 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); |
2680 return; | 2680 return; |
2681 } | 2681 } |
2682 } | 2682 } |
2683 ff_draw_horiz_band(s, s->mb_y * 16, 16); | 2683 if (!v->s.loop_filter) |
2684 ff_draw_horiz_band(s, s->mb_y * 16, 16); | |
2685 else if (s->mb_y) | |
2686 ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); | |
2687 | |
2684 s->first_slice_line = 0; | 2688 s->first_slice_line = 0; |
2685 } | 2689 } |
2690 if (v->s.loop_filter) | |
2691 ff_draw_horiz_band(s, (s->mb_height-1)*16, 16); | |
2686 ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); | 2692 ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); |
2687 } | 2693 } |
2688 | 2694 |
2689 /** Decode blocks of I-frame for advanced profile | 2695 /** Decode blocks of I-frame for advanced profile |
2690 */ | 2696 */ |
2810 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); | 2816 ff_er_add_slice(s, 0, 0, s->mb_x, s->mb_y, (AC_END|DC_END|MV_END)); |
2811 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); | 2817 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); |
2812 return; | 2818 return; |
2813 } | 2819 } |
2814 } | 2820 } |
2815 ff_draw_horiz_band(s, s->mb_y * 16, 16); | 2821 if (!v->s.loop_filter) |
2822 ff_draw_horiz_band(s, s->mb_y * 16, 16); | |
2823 else if (s->mb_y) | |
2824 ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); | |
2816 s->first_slice_line = 0; | 2825 s->first_slice_line = 0; |
2817 } | 2826 } |
2827 if (v->s.loop_filter) | |
2828 ff_draw_horiz_band(s, (s->mb_height-1)*16, 16); | |
2818 ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); | 2829 ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); |
2819 } | 2830 } |
2820 | 2831 |
2821 static void vc1_decode_p_blocks(VC1Context *v) | 2832 static void vc1_decode_p_blocks(VC1Context *v) |
2822 { | 2833 { |
2911 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i at %ix%i\n", get_bits_count(&s->gb), v->bits,s->mb_x,s->mb_y); | 2922 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i at %ix%i\n", get_bits_count(&s->gb), v->bits,s->mb_x,s->mb_y); |
2912 return; | 2923 return; |
2913 } | 2924 } |
2914 if(v->s.loop_filter) vc1_loop_filter_iblk(s, v->pq); | 2925 if(v->s.loop_filter) vc1_loop_filter_iblk(s, v->pq); |
2915 } | 2926 } |
2916 ff_draw_horiz_band(s, s->mb_y * 16, 16); | 2927 if (!v->s.loop_filter) |
2928 ff_draw_horiz_band(s, s->mb_y * 16, 16); | |
2929 else if (s->mb_y) | |
2930 ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); | |
2917 s->first_slice_line = 0; | 2931 s->first_slice_line = 0; |
2918 } | 2932 } |
2933 if (v->s.loop_filter) | |
2934 ff_draw_horiz_band(s, (s->mb_height-1)*16, 16); | |
2919 ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); | 2935 ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); |
2920 } | 2936 } |
2921 | 2937 |
2922 static void vc1_decode_skip_blocks(VC1Context *v) | 2938 static void vc1_decode_skip_blocks(VC1Context *v) |
2923 { | 2939 { |