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