Mercurial > libavcodec.hg
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) |