comparison vc1dsp.c @ 11926:43e39953f4f9 libavcodec

Improve some uses of ff_cropTbl with constant offset
author mru
date Tue, 22 Jun 2010 23:12:48 +0000
parents 7dd2a45249a9
children 4269ae88366b
comparison
equal deleted inserted replaced
11925:c5e03082fd94 11926:43e39953f4f9
180 */ 180 */
181 static void vc1_inv_trans_8x8_dc_c(uint8_t *dest, int linesize, DCTELEM *block) 181 static void vc1_inv_trans_8x8_dc_c(uint8_t *dest, int linesize, DCTELEM *block)
182 { 182 {
183 int i; 183 int i;
184 int dc = block[0]; 184 int dc = block[0];
185 const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; 185 const uint8_t *cm;
186 dc = (3 * dc + 1) >> 1; 186 dc = (3 * dc + 1) >> 1;
187 dc = (3 * dc + 16) >> 5; 187 dc = (3 * dc + 16) >> 5;
188 cm = ff_cropTbl + MAX_NEG_CROP + dc;
188 for(i = 0; i < 8; i++){ 189 for(i = 0; i < 8; i++){
189 dest[0] = cm[dest[0]+dc]; 190 dest[0] = cm[dest[0]];
190 dest[1] = cm[dest[1]+dc]; 191 dest[1] = cm[dest[1]];
191 dest[2] = cm[dest[2]+dc]; 192 dest[2] = cm[dest[2]];
192 dest[3] = cm[dest[3]+dc]; 193 dest[3] = cm[dest[3]];
193 dest[4] = cm[dest[4]+dc]; 194 dest[4] = cm[dest[4]];
194 dest[5] = cm[dest[5]+dc]; 195 dest[5] = cm[dest[5]];
195 dest[6] = cm[dest[6]+dc]; 196 dest[6] = cm[dest[6]];
196 dest[7] = cm[dest[7]+dc]; 197 dest[7] = cm[dest[7]];
197 dest += linesize; 198 dest += linesize;
198 } 199 }
199 } 200 }
200 201
201 static void vc1_inv_trans_8x8_c(DCTELEM block[64]) 202 static void vc1_inv_trans_8x8_c(DCTELEM block[64])
271 */ 272 */
272 static void vc1_inv_trans_8x4_dc_c(uint8_t *dest, int linesize, DCTELEM *block) 273 static void vc1_inv_trans_8x4_dc_c(uint8_t *dest, int linesize, DCTELEM *block)
273 { 274 {
274 int i; 275 int i;
275 int dc = block[0]; 276 int dc = block[0];
276 const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; 277 const uint8_t *cm;
277 dc = ( 3 * dc + 1) >> 1; 278 dc = ( 3 * dc + 1) >> 1;
278 dc = (17 * dc + 64) >> 7; 279 dc = (17 * dc + 64) >> 7;
280 cm = ff_cropTbl + MAX_NEG_CROP + dc;
279 for(i = 0; i < 4; i++){ 281 for(i = 0; i < 4; i++){
280 dest[0] = cm[dest[0]+dc]; 282 dest[0] = cm[dest[0]];
281 dest[1] = cm[dest[1]+dc]; 283 dest[1] = cm[dest[1]];
282 dest[2] = cm[dest[2]+dc]; 284 dest[2] = cm[dest[2]];
283 dest[3] = cm[dest[3]+dc]; 285 dest[3] = cm[dest[3]];
284 dest[4] = cm[dest[4]+dc]; 286 dest[4] = cm[dest[4]];
285 dest[5] = cm[dest[5]+dc]; 287 dest[5] = cm[dest[5]];
286 dest[6] = cm[dest[6]+dc]; 288 dest[6] = cm[dest[6]];
287 dest[7] = cm[dest[7]+dc]; 289 dest[7] = cm[dest[7]];
288 dest += linesize; 290 dest += linesize;
289 } 291 }
290 } 292 }
291 293
292 static void vc1_inv_trans_8x4_c(uint8_t *dest, int linesize, DCTELEM *block) 294 static void vc1_inv_trans_8x4_c(uint8_t *dest, int linesize, DCTELEM *block)
348 */ 350 */
349 static void vc1_inv_trans_4x8_dc_c(uint8_t *dest, int linesize, DCTELEM *block) 351 static void vc1_inv_trans_4x8_dc_c(uint8_t *dest, int linesize, DCTELEM *block)
350 { 352 {
351 int i; 353 int i;
352 int dc = block[0]; 354 int dc = block[0];
353 const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; 355 const uint8_t *cm;
354 dc = (17 * dc + 4) >> 3; 356 dc = (17 * dc + 4) >> 3;
355 dc = (12 * dc + 64) >> 7; 357 dc = (12 * dc + 64) >> 7;
358 cm = ff_cropTbl + MAX_NEG_CROP + dc;
356 for(i = 0; i < 8; i++){ 359 for(i = 0; i < 8; i++){
357 dest[0] = cm[dest[0]+dc]; 360 dest[0] = cm[dest[0]];
358 dest[1] = cm[dest[1]+dc]; 361 dest[1] = cm[dest[1]];
359 dest[2] = cm[dest[2]+dc]; 362 dest[2] = cm[dest[2]];
360 dest[3] = cm[dest[3]+dc]; 363 dest[3] = cm[dest[3]];
361 dest += linesize; 364 dest += linesize;
362 } 365 }
363 } 366 }
364 367
365 static void vc1_inv_trans_4x8_c(uint8_t *dest, int linesize, DCTELEM *block) 368 static void vc1_inv_trans_4x8_c(uint8_t *dest, int linesize, DCTELEM *block)
421 */ 424 */
422 static void vc1_inv_trans_4x4_dc_c(uint8_t *dest, int linesize, DCTELEM *block) 425 static void vc1_inv_trans_4x4_dc_c(uint8_t *dest, int linesize, DCTELEM *block)
423 { 426 {
424 int i; 427 int i;
425 int dc = block[0]; 428 int dc = block[0];
426 const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; 429 const uint8_t *cm;
427 dc = (17 * dc + 4) >> 3; 430 dc = (17 * dc + 4) >> 3;
428 dc = (17 * dc + 64) >> 7; 431 dc = (17 * dc + 64) >> 7;
432 cm = ff_cropTbl + MAX_NEG_CROP + dc;
429 for(i = 0; i < 4; i++){ 433 for(i = 0; i < 4; i++){
430 dest[0] = cm[dest[0]+dc]; 434 dest[0] = cm[dest[0]];
431 dest[1] = cm[dest[1]+dc]; 435 dest[1] = cm[dest[1]];
432 dest[2] = cm[dest[2]+dc]; 436 dest[2] = cm[dest[2]];
433 dest[3] = cm[dest[3]+dc]; 437 dest[3] = cm[dest[3]];
434 dest += linesize; 438 dest += linesize;
435 } 439 }
436 } 440 }
437 441
438 static void vc1_inv_trans_4x4_c(uint8_t *dest, int linesize, DCTELEM *block) 442 static void vc1_inv_trans_4x4_c(uint8_t *dest, int linesize, DCTELEM *block)