Mercurial > mplayer.hg
comparison libmpcodecs/vf_spp.c @ 11298:14dbc88adaf0
change offsets (quality 2-4 looks better now)
author | michael |
---|---|
date | Mon, 27 Oct 2003 22:25:28 +0000 |
parents | 86916e46d445 |
children | 66bdf2002aab |
comparison
equal
deleted
inserted
replaced
11297:b4c7de4cfbf2 | 11298:14dbc88adaf0 |
---|---|
56 { 34, 18, 46, 30, 33, 17, 45, 29, }, | 56 { 34, 18, 46, 30, 33, 17, 45, 29, }, |
57 { 10, 58, 6, 54, 9, 57, 5, 53, }, | 57 { 10, 58, 6, 54, 9, 57, 5, 53, }, |
58 { 42, 26, 38, 22, 41, 25, 37, 21, }, | 58 { 42, 26, 38, 22, 41, 25, 37, 21, }, |
59 }; | 59 }; |
60 | 60 |
61 const uint8_t offset[64][2]= { | 61 const uint8_t offset[127][2]= { |
62 {0,0}, | |
63 {0,0}, {4,4}, | |
64 {0,0}, {2,2}, {6,4}, {4,6}, | |
65 {0,0}, {5,1}, {2,2}, {7,3}, {4,4}, {1,5}, {6,6}, {3,7}, | |
66 | |
67 {0,0}, {4,0}, {1,1}, {5,1}, {3,2}, {7,2}, {2,3}, {6,3}, | |
68 {0,4}, {4,4}, {1,5}, {5,5}, {3,6}, {7,6}, {2,7}, {6,7}, | |
69 | |
70 {0,0}, {0,2}, {0,4}, {0,6}, {1,1}, {1,3}, {1,5}, {1,7}, | |
71 {2,0}, {2,2}, {2,4}, {2,6}, {3,1}, {3,3}, {3,5}, {3,7}, | |
72 {4,0}, {4,2}, {4,4}, {4,6}, {5,1}, {5,3}, {5,5}, {5,7}, | |
73 {6,0}, {6,2}, {6,4}, {6,6}, {7,1}, {7,3}, {7,5}, {7,7}, | |
74 | |
62 {0,0}, {4,4}, {0,4}, {4,0}, {2,2}, {6,6}, {2,6}, {6,2}, | 75 {0,0}, {4,4}, {0,4}, {4,0}, {2,2}, {6,6}, {2,6}, {6,2}, |
63 {0,2}, {4,6}, {0,6}, {4,2}, {2,0}, {6,4}, {2,4}, {6,0}, | 76 {0,2}, {4,6}, {0,6}, {4,2}, {2,0}, {6,4}, {2,4}, {6,0}, |
64 {1,1}, {5,5}, {1,5}, {5,1}, {3,3}, {7,7}, {3,7}, {7,3}, | 77 {1,1}, {5,5}, {1,5}, {5,1}, {3,3}, {7,7}, {3,7}, {7,3}, |
65 {1,3}, {5,7}, {1,7}, {5,3}, {3,1}, {7,5}, {3,5}, {7,1}, | 78 {1,3}, {5,7}, {1,7}, {5,3}, {3,1}, {7,5}, {3,5}, {7,1}, |
66 {0,1}, {4,5}, {0,5}, {4,1}, {2,3}, {6,7}, {2,7}, {6,3}, | 79 {0,1}, {4,5}, {0,5}, {4,1}, {2,3}, {6,7}, {2,7}, {6,3}, |
149 else{ | 162 else{ |
150 qp= qp_store[ (XMIN(x, width-1)>>qps) + (XMIN(y, height-1)>>qps) * qp_stride]; | 163 qp= qp_store[ (XMIN(x, width-1)>>qps) + (XMIN(y, height-1)>>qps) * qp_stride]; |
151 if(p->mpeg2) qp>>=1; | 164 if(p->mpeg2) qp>>=1; |
152 } | 165 } |
153 for(i=0; i<count; i++){ | 166 for(i=0; i<count; i++){ |
154 const int x1= x + offset[i][0]; | 167 const int x1= x + offset[i+count-1][0]; |
155 const int y1= y + offset[i][1]; | 168 const int y1= y + offset[i+count-1][1]; |
156 const int index= x1 + y1*stride; | 169 const int index= x1 + y1*stride; |
157 p->dsp.get_pixels(block, p->src + index, stride); | 170 p->dsp.get_pixels(block, p->src + index, stride); |
158 p->dsp.fdct(block); | 171 p->dsp.fdct(block); |
159 requantize(block2, block, qp, p->dsp.idct_permutation); | 172 requantize(block2, block, qp, p->dsp.idct_permutation); |
160 p->dsp.idct(block2); | 173 p->dsp.idct(block2); |
161 add_block(p->temp + index, stride, block2); | 174 add_block(p->temp + index, stride, block2); |
162 } | 175 } |
163 } | 176 } |
164 } | 177 } |
165 | 178 |
166 #define STORE(pos) \ | 179 #define STORE(pos) \ |
167 temp= ((p->temp[index + pos]<<log2_scale) + d[pos])>>6;\ | 180 temp= ((p->temp[index + pos]<<log2_scale) + d[pos])>>6;\ |
168 if(temp & 0x100) temp= ~(temp>>31);\ | 181 if(temp & 0x100) temp= ~(temp>>31);\ |
169 dst[x + y*dst_stride + pos]= temp; | 182 dst[x + y*dst_stride + pos]= temp; |
170 | 183 |