deblock_horiz_default_filter.c
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:1k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #include "postprocess_mmx.h"
  2. INLINE void deblock_horiz_default_filter(uint8_t *v, int stride, int QP) {
  3. int a3_0, a3_1, a3_2, d;
  4. int q1, q;
  5. int y;
  6. for (y=0; y<4; y++) {
  7. q1 = v[4] - v[5];
  8. q = q1 / 2;
  9. if (q) {
  10. a3_0  = q1;
  11. a3_0 += a3_0 << 2;
  12. a3_0 = 2*(v[3]-v[6]) - a3_0;
  13. if (ABS(a3_0) < 8*QP) {
  14. a3_1  = v[3]-v[2];
  15. a3_2  = v[7]-v[8];
  16. a3_1 += a3_1 << 2;
  17. a3_2 += a3_2 << 2;
  18. a3_1 += (v[1]-v[4]) << 1;
  19. a3_2 += (v[5]-v[8]) << 1;
  20. d = ABS(a3_0) - MIN(ABS(a3_1), ABS(a3_2));
  21. if (d > 0) { 
  22. d += d<<2;
  23. d = (d + 32) >> 6; 
  24. if (d > 0) {
  25. if (q > 0) {
  26. if (a3_0 < 0) {
  27. d = d>q ? q : d;
  28. v[4] -= d;
  29. v[5] += d;
  30. }
  31. } else {
  32. if (a3_0 > 0) {
  33. //d = d>0 ? 0 : d;
  34. d = (-d)<q ? q : (-d);
  35. v[4] -= d;
  36. v[5] += d;
  37. }
  38. }
  39. }
  40. }
  41. }
  42. }
  43. #ifdef PP_SELF_CHECK
  44. #endif;
  45. v += stride;
  46. }
  47. }