Mercurial > libavcodec.hg
comparison vc1.c @ 4209:ec6d49d9c19d libavcodec
Overlap filtering was done in reverse order
author | kostya |
---|---|
date | Fri, 17 Nov 2006 06:09:32 +0000 |
parents | 34fdffe98bd0 |
children | aee20d5bd41f |
comparison
equal
deleted
inserted
replaced
4208:45e0102824fb | 4209:ec6d49d9c19d |
---|---|
3338 s->dsp.vc1_inv_trans_8x8(s->block[i]); | 3338 s->dsp.vc1_inv_trans_8x8(s->block[i]); |
3339 if(v->rangeredfrm) for(j = 0; j < 64; j++) s->block[i][j] <<= 1; | 3339 if(v->rangeredfrm) for(j = 0; j < 64; j++) s->block[i][j] <<= 1; |
3340 for(j = 0; j < 64; j++) s->block[i][j] += 128; | 3340 for(j = 0; j < 64; j++) s->block[i][j] += 128; |
3341 s->dsp.put_pixels_clamped(s->block[i], s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2)); | 3341 s->dsp.put_pixels_clamped(s->block[i], s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2)); |
3342 if(v->pq >= 9 && v->overlap) { | 3342 if(v->pq >= 9 && v->overlap) { |
3343 if(v->c_avail) | |
3344 s->dsp.vc1_h_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? (i&1) : (s->mb_x&1)); | |
3343 if(v->a_avail) | 3345 if(v->a_avail) |
3344 s->dsp.vc1_v_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? ((i&1)>>1) : (s->mb_y&1)); | 3346 s->dsp.vc1_v_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? ((i&1)>>1) : (s->mb_y&1)); |
3345 if(v->c_avail) | |
3346 s->dsp.vc1_h_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? (i&1) : (s->mb_x&1)); | |
3347 } | 3347 } |
3348 } else if(val) { | 3348 } else if(val) { |
3349 vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block); | 3349 vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block); |
3350 if(!v->ttmbf && ttmb < 8) ttmb = -1; | 3350 if(!v->ttmbf && ttmb < 8) ttmb = -1; |
3351 first_block = 0; | 3351 first_block = 0; |
3441 s->dsp.vc1_inv_trans_8x8(s->block[i]); | 3441 s->dsp.vc1_inv_trans_8x8(s->block[i]); |
3442 if(v->rangeredfrm) for(j = 0; j < 64; j++) s->block[i][j] <<= 1; | 3442 if(v->rangeredfrm) for(j = 0; j < 64; j++) s->block[i][j] <<= 1; |
3443 for(j = 0; j < 64; j++) s->block[i][j] += 128; | 3443 for(j = 0; j < 64; j++) s->block[i][j] += 128; |
3444 s->dsp.put_pixels_clamped(s->block[i], s->dest[dst_idx] + off, (i&4)?s->uvlinesize:s->linesize); | 3444 s->dsp.put_pixels_clamped(s->block[i], s->dest[dst_idx] + off, (i&4)?s->uvlinesize:s->linesize); |
3445 if(v->pq >= 9 && v->overlap) { | 3445 if(v->pq >= 9 && v->overlap) { |
3446 if(v->c_avail) | |
3447 s->dsp.vc1_h_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? (i&1) : (s->mb_x&1)); | |
3446 if(v->a_avail) | 3448 if(v->a_avail) |
3447 s->dsp.vc1_v_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? ((i&1)>>1) : (s->mb_y&1)); | 3449 s->dsp.vc1_v_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? ((i&1)>>1) : (s->mb_y&1)); |
3448 if(v->c_avail) | |
3449 s->dsp.vc1_h_overlap(s->dest[dst_idx] + off, s->linesize >> ((i & 4) >> 2), (i<4) ? (i&1) : (s->mb_x&1)); | |
3450 } | 3450 } |
3451 } else if(is_coded[i]) { | 3451 } else if(is_coded[i]) { |
3452 status = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block); | 3452 status = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block); |
3453 if(!v->ttmbf && ttmb < 8) ttmb = -1; | 3453 if(!v->ttmbf && ttmb < 8) ttmb = -1; |
3454 first_block = 0; | 3454 first_block = 0; |
3710 } | 3710 } |
3711 } | 3711 } |
3712 | 3712 |
3713 vc1_put_block(v, s->block); | 3713 vc1_put_block(v, s->block); |
3714 if(v->pq >= 9 && v->overlap) { | 3714 if(v->pq >= 9 && v->overlap) { |
3715 if(s->mb_x) { | |
3716 s->dsp.vc1_h_overlap(s->dest[0], s->linesize, 0); | |
3717 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 0); | |
3718 if(!(s->flags & CODEC_FLAG_GRAY)) { | |
3719 s->dsp.vc1_h_overlap(s->dest[1], s->uvlinesize, s->mb_x&1); | |
3720 s->dsp.vc1_h_overlap(s->dest[2], s->uvlinesize, s->mb_x&1); | |
3721 } | |
3722 } | |
3723 s->dsp.vc1_h_overlap(s->dest[0] + 8, s->linesize, 1); | |
3724 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); | |
3715 if(!s->first_slice_line) { | 3725 if(!s->first_slice_line) { |
3716 s->dsp.vc1_v_overlap(s->dest[0], s->linesize, 0); | 3726 s->dsp.vc1_v_overlap(s->dest[0], s->linesize, 0); |
3717 s->dsp.vc1_v_overlap(s->dest[0] + 8, s->linesize, 0); | 3727 s->dsp.vc1_v_overlap(s->dest[0] + 8, s->linesize, 0); |
3718 if(!(s->flags & CODEC_FLAG_GRAY)) { | 3728 if(!(s->flags & CODEC_FLAG_GRAY)) { |
3719 s->dsp.vc1_v_overlap(s->dest[1], s->uvlinesize, s->mb_y&1); | 3729 s->dsp.vc1_v_overlap(s->dest[1], s->uvlinesize, s->mb_y&1); |
3720 s->dsp.vc1_v_overlap(s->dest[2], s->uvlinesize, s->mb_y&1); | 3730 s->dsp.vc1_v_overlap(s->dest[2], s->uvlinesize, s->mb_y&1); |
3721 } | 3731 } |
3722 } | 3732 } |
3723 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 1); | 3733 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 1); |
3724 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); | 3734 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); |
3725 if(s->mb_x) { | |
3726 s->dsp.vc1_h_overlap(s->dest[0], s->linesize, 0); | |
3727 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 0); | |
3728 if(!(s->flags & CODEC_FLAG_GRAY)) { | |
3729 s->dsp.vc1_h_overlap(s->dest[1], s->uvlinesize, s->mb_x&1); | |
3730 s->dsp.vc1_h_overlap(s->dest[2], s->uvlinesize, s->mb_x&1); | |
3731 } | |
3732 } | |
3733 s->dsp.vc1_h_overlap(s->dest[0] + 8, s->linesize, 1); | |
3734 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); | |
3735 } | 3735 } |
3736 | 3736 |
3737 if(get_bits_count(&s->gb) > v->bits) { | 3737 if(get_bits_count(&s->gb) > v->bits) { |
3738 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); | 3738 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); |
3739 return; | 3739 return; |
3840 for(j = 0; j < 64; j++) s->block[k][j] += 128; | 3840 for(j = 0; j < 64; j++) s->block[k][j] += 128; |
3841 } | 3841 } |
3842 | 3842 |
3843 vc1_put_block(v, s->block); | 3843 vc1_put_block(v, s->block); |
3844 if(overlap) { | 3844 if(overlap) { |
3845 if(s->mb_x) { | |
3846 s->dsp.vc1_h_overlap(s->dest[0], s->linesize, 0); | |
3847 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 0); | |
3848 if(!(s->flags & CODEC_FLAG_GRAY)) { | |
3849 s->dsp.vc1_h_overlap(s->dest[1], s->uvlinesize, s->mb_x&1); | |
3850 s->dsp.vc1_h_overlap(s->dest[2], s->uvlinesize, s->mb_x&1); | |
3851 } | |
3852 } | |
3853 s->dsp.vc1_h_overlap(s->dest[0] + 8, s->linesize, 1); | |
3854 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); | |
3845 if(!s->first_slice_line) { | 3855 if(!s->first_slice_line) { |
3846 s->dsp.vc1_v_overlap(s->dest[0], s->linesize, 0); | 3856 s->dsp.vc1_v_overlap(s->dest[0], s->linesize, 0); |
3847 s->dsp.vc1_v_overlap(s->dest[0] + 8, s->linesize, 0); | 3857 s->dsp.vc1_v_overlap(s->dest[0] + 8, s->linesize, 0); |
3848 if(!(s->flags & CODEC_FLAG_GRAY)) { | 3858 if(!(s->flags & CODEC_FLAG_GRAY)) { |
3849 s->dsp.vc1_v_overlap(s->dest[1], s->uvlinesize, s->mb_y&1); | 3859 s->dsp.vc1_v_overlap(s->dest[1], s->uvlinesize, s->mb_y&1); |
3850 s->dsp.vc1_v_overlap(s->dest[2], s->uvlinesize, s->mb_y&1); | 3860 s->dsp.vc1_v_overlap(s->dest[2], s->uvlinesize, s->mb_y&1); |
3851 } | 3861 } |
3852 } | 3862 } |
3853 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 1); | 3863 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 1); |
3854 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); | 3864 s->dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); |
3855 if(s->mb_x) { | |
3856 s->dsp.vc1_h_overlap(s->dest[0], s->linesize, 0); | |
3857 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize, 0); | |
3858 if(!(s->flags & CODEC_FLAG_GRAY)) { | |
3859 s->dsp.vc1_h_overlap(s->dest[1], s->uvlinesize, s->mb_x&1); | |
3860 s->dsp.vc1_h_overlap(s->dest[2], s->uvlinesize, s->mb_x&1); | |
3861 } | |
3862 } | |
3863 s->dsp.vc1_h_overlap(s->dest[0] + 8, s->linesize, 1); | |
3864 s->dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize, 1); | |
3865 } | 3865 } |
3866 | 3866 |
3867 if(get_bits_count(&s->gb) > v->bits) { | 3867 if(get_bits_count(&s->gb) > v->bits) { |
3868 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); | 3868 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n", get_bits_count(&s->gb), v->bits); |
3869 return; | 3869 return; |