summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2006-07-22 03:54:00 +0000
committerKostya Shishkov <kostya.shishkov@gmail.com>2006-07-22 03:54:00 +0000
commit4b94465927660403d7b5715b34ac5c66e1b17b82 (patch)
tree2d6058a71fca75ebf6a2f92eb36a8d53ad76931a /libavcodec
parentaab771591091fb3de912ccca9ed98d0a443293ab (diff)
Don't do non-uniform quantization on zero coeffs.
Originally committed as revision 5810 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/vc1.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index fa1d9fa351..b6bcd7f104 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -2061,13 +2061,13 @@ not_coded:
if(dc_pred_dir) { //left
for(k = 1; k < 8; k++) {
block[k << 3] = ac_val[k] * scale;
- if(!v->pquantizer)
+ if(!v->pquantizer && block[k << 3])
block[k << 3] += (block[k << 3] < 0) ? -v->pq : v->pq;
}
} else { //top
for(k = 1; k < 8; k++) {
block[k] = ac_val[k + 8] * scale;
- if(!v->pquantizer)
+ if(!v->pquantizer && block[k])
block[k] += (block[k] < 0) ? -v->pq : v->pq;
}
}
@@ -2260,13 +2260,13 @@ static int vc1_decode_intra_block(VC1Context *v, DCTELEM block[64], int n, int c
if(dc_pred_dir) { //left
for(k = 1; k < 8; k++) {
block[k << 3] = ac_val2[k] * scale;
- if(!v->pquantizer)
+ if(!v->pquantizer && block[k << 3])
block[k << 3] += (block[k << 3] < 0) ? -mquant : mquant;
}
} else { //top
for(k = 1; k < 8; k++) {
block[k] = ac_val2[k + 8] * scale;
- if(!v->pquantizer)
+ if(!v->pquantizer && block[k])
block[k] += (block[k] < 0) ? -mquant : mquant;
}
}