Revision 8a322796 libswscale/swscale_altivec_template.c
libswscale/swscale_altivec_template.c | ||
---|---|---|
245 | 245 |
src_v = vec_mergeh(src_v, (vector signed short)vzero); |
246 | 246 |
|
247 | 247 |
filter_v = vec_ld(i << 3, filter); |
248 |
// the 3 above is 2 (filterSize == 4) + 1 (sizeof(short) == 2)
|
|
248 |
// The 3 above is 2 (filterSize == 4) + 1 (sizeof(short) == 2).
|
|
249 | 249 |
|
250 |
// the neat trick : we only care for half the elements,
|
|
250 |
// The neat trick: We only care for half the elements,
|
|
251 | 251 |
// high or low depending on (i<<3)%16 (it's 0 or 8 here), |
252 |
// and we're going to use vec_mule, so we chose |
|
253 |
// carefully how to "unpack" the elements into the even slots |
|
252 |
// and we're going to use vec_mule, so we choose
|
|
253 |
// carefully how to "unpack" the elements into the even slots.
|
|
254 | 254 |
if ((i << 3) % 16) |
255 | 255 |
filter_v = vec_mergel(filter_v, (vector signed short)vzero); |
256 | 256 |
else |
... | ... | |
405 | 405 |
return srcSliceH; |
406 | 406 |
} |
407 | 407 |
|
408 |
/* this code assume:
|
|
408 |
/* This code assumes:
|
|
409 | 409 |
|
410 | 410 |
1) dst is 16 bytes-aligned |
411 | 411 |
2) dstStride is a multiple of 16 |
412 | 412 |
3) width is a multiple of 16 |
413 |
4) lum&chrom stride are multiple of 8
|
|
413 |
4) lum & chrom stride are multiples of 8
|
|
414 | 414 |
*/ |
415 | 415 |
|
416 | 416 |
for (y=0; y<height; y++) { |
... | ... | |
482 | 482 |
return srcSliceH; |
483 | 483 |
} |
484 | 484 |
|
485 |
/* this code assume:
|
|
485 |
/* This code assumes:
|
|
486 | 486 |
|
487 | 487 |
1) dst is 16 bytes-aligned |
488 | 488 |
2) dstStride is a multiple of 16 |
489 | 489 |
3) width is a multiple of 16 |
490 |
4) lum&chrom stride are multiple of 8
|
|
490 |
4) lum & chrom stride are multiples of 8
|
|
491 | 491 |
*/ |
492 | 492 |
|
493 | 493 |
for (y=0; y<height; y++) { |
Also available in: Unified diff