Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. diff --git a/libavcodec/ppc/vc1dsp_altivec.c b/libavcodec/ppc/vc1dsp_altivec.c
  2. index a2f55f2d..d276fa7 100644
  3. --- a/libavcodec/ppc/vc1dsp_altivec.c
  4. +++ b/libavcodec/ppc/vc1dsp_altivec.c
  5. @@ -129,7 +129,8 @@ do { \
  6.  
  7. /** Do inverse transform on 8x8 block
  8. */
  9. -static void vc1_inv_trans_8x8_altivec(DCTELEM block[64])
  10. +static void vc1_inv_trans_8x8_altivec_generic(DCTELEM block[64],
  11. + int sign, int rangered)
  12. {
  13. vector signed short src0, src1, src2, src3, src4, src5, src6, src7;
  14. vector signed int s0, s1, s2, s3, s4, s5, s6, s7;
  15. @@ -143,7 +144,9 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64])
  16. const vector unsigned int vec_2 = vec_splat_u32(2);
  17. const vector signed int vec_1s = vec_splat_s32(1);
  18. const vector unsigned int vec_1 = vec_splat_u32(1);
  19. -
  20. + const vector unsigned short rangered_shift = vec_splat_u16(1);
  21. + const vector unsigned short unsigned_bias = vec_sl(vec_splat_u16(4),
  22. + vec_splat_u16(4));
  23.  
  24. src0 = vec_ld( 0, block);
  25. src1 = vec_ld( 16, block);
  26. @@ -214,6 +217,27 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64])
  27. src6 = vec_pack(sE, s6);
  28. src7 = vec_pack(sF, s7);
  29.  
  30. + if (rangered) {
  31. + if (!sign) {
  32. + vec_sub(src0, unsigned_bias);
  33. + vec_sub(src1, unsigned_bias);
  34. + vec_sub(src2, unsigned_bias);
  35. + vec_sub(src3, unsigned_bias);
  36. + vec_sub(src4, unsigned_bias);
  37. + vec_sub(src5, unsigned_bias);
  38. + vec_sub(src6, unsigned_bias);
  39. + vec_sub(src7, unsigned_bias);
  40. + }
  41. + vec_sl(src0, rangered_shift);
  42. + vec_sl(src1, rangered_shift);
  43. + vec_sl(src2, rangered_shift);
  44. + vec_sl(src3, rangered_shift);
  45. + vec_sl(src4, rangered_shift);
  46. + vec_sl(src5, rangered_shift);
  47. + vec_sl(src6, rangered_shift);
  48. + vec_sl(src7, rangered_shift);
  49. + }
  50. +
  51. vec_st(src0, 0, block);
  52. vec_st(src1, 16, block);
  53. vec_st(src2, 32, block);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement