sad.h
Upload User: mxl78930
Upload Date: 2019-02-02
Package Size: 875k
Code Size: 5k
Development Platform:

C/C++

  1. /*****************************************************************************
  2.  *
  3.  *  XVID MPEG-4 VIDEO CODEC
  4.  *  - Sum Of Absolute Difference header  -
  5.  *
  6.  *  Copyright(C) 2001-2003 Peter Ross <pross@xvid.org>
  7.  *
  8.  *  This program is free software ; you can redistribute it and/or modify
  9.  *  it under the terms of the GNU General Public License as published by
  10.  *  the Free Software Foundation ; either version 2 of the License, or
  11.  *  (at your option) any later version.
  12.  *
  13.  *  This program is distributed in the hope that it will be useful,
  14.  *  but WITHOUT ANY WARRANTY ; without even the implied warranty of
  15.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  *  GNU General Public License for more details.
  17.  *
  18.  *  You should have received a copy of the GNU General Public License
  19.  *  along with this program ; if not, write to the Free Software
  20.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  21.  *
  22.  * $Id: sad.h,v 1.24 2008/11/26 01:04:34 Isibaar Exp $
  23.  *
  24.  ****************************************************************************/
  25. #ifndef _ENCODER_SAD_H_
  26. #define _ENCODER_SAD_H_
  27. #include "../portab.h"
  28. typedef void (sadInitFunc) (void);
  29. typedef sadInitFunc *sadInitFuncPtr;
  30. extern sadInitFuncPtr sadInit;
  31. sadInitFunc sadInit_altivec;
  32. typedef uint32_t(sad16Func) (const uint8_t * const cur,
  33.  const uint8_t * const ref,
  34.  const uint32_t stride,
  35.  const uint32_t best_sad);
  36. typedef sad16Func *sad16FuncPtr;
  37. extern sad16FuncPtr sad16;
  38. sad16Func sad16_c;
  39. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  40. sad16Func sad16_mmx;
  41. sad16Func sad16_xmm;
  42. sad16Func sad16_3dne;
  43. sad16Func sad16_sse2;
  44. sad16Func sad16_sse3;
  45. #endif
  46. #ifdef ARCH_IS_IA64
  47. sad16Func sad16_ia64;
  48. #endif
  49. #ifdef ARCH_IS_PPC
  50. sad16Func sad16_altivec_c;
  51. #endif
  52. sad16Func mrsad16_c;
  53. typedef uint32_t(sad8Func) (const uint8_t * const cur,
  54. const uint8_t * const ref,
  55. const uint32_t stride);
  56. typedef sad8Func *sad8FuncPtr;
  57. extern sad8FuncPtr sad8;
  58. sad8Func sad8_c;
  59. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  60. sad8Func sad8_mmx;
  61. sad8Func sad8_xmm;
  62. sad8Func sad8_3dne;
  63. #endif
  64. #ifdef ARCH_IS_IA64
  65. sad8Func sad8_ia64;
  66. #endif
  67. #ifdef ARCH_IS_PPC
  68. sad8Func sad8_altivec_c;
  69. #endif
  70. typedef uint32_t(sad16biFunc) (const uint8_t * const cur,
  71.    const uint8_t * const ref1,
  72.    const uint8_t * const ref2,
  73.    const uint32_t stride);
  74. typedef sad16biFunc *sad16biFuncPtr;
  75. extern sad16biFuncPtr sad16bi;
  76. sad16biFunc sad16bi_c;
  77. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  78. sad16biFunc sad16bi_mmx;
  79. sad16biFunc sad16bi_xmm;
  80. sad16biFunc sad16bi_3dne;
  81. sad16biFunc sad16bi_3dn;
  82. #endif
  83. #ifdef ARCH_IS_IA64
  84. sad16biFunc sad16bi_ia64;
  85. #endif
  86. #ifdef ARCH_IS_PPC
  87. sad16biFunc sad16bi_altivec_c;
  88. #endif
  89. typedef uint32_t(sad8biFunc) (const uint8_t * const cur,
  90.    const uint8_t * const ref1,
  91.    const uint8_t * const ref2,
  92.    const uint32_t stride);
  93. typedef sad8biFunc *sad8biFuncPtr;
  94. extern sad8biFuncPtr sad8bi;
  95. sad8biFunc sad8bi_c;
  96. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  97. sad8biFunc sad8bi_mmx;
  98. sad8biFunc sad8bi_xmm;
  99. sad8biFunc sad8bi_3dne;
  100. sad8biFunc sad8bi_3dn;
  101. #endif
  102. typedef uint32_t(dev16Func) (const uint8_t * const cur,
  103.  const uint32_t stride);
  104. typedef dev16Func *dev16FuncPtr;
  105. extern dev16FuncPtr dev16;
  106. dev16Func dev16_c;
  107. typedef uint32_t (sad16vFunc)( const uint8_t * const cur,
  108. const uint8_t * const ref,
  109. const uint32_t stride, int32_t *sad8);
  110. typedef sad16vFunc *sad16vFuncPtr;
  111. extern sad16vFuncPtr sad16v;
  112. sad16vFunc sad16v_c;
  113. sad16vFunc sad32v_c;
  114. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  115. dev16Func dev16_mmx;
  116. dev16Func dev16_xmm;
  117. dev16Func dev16_3dne;
  118. dev16Func dev16_sse2;
  119. dev16Func dev16_sse3;
  120. sad16vFunc sad16v_xmm;
  121. sad16vFunc sad16v_mmx;
  122. #endif
  123. #ifdef ARCH_IS_IA64
  124. dev16Func dev16_ia64;
  125. #endif
  126. #ifdef ARCH_IS_PPC
  127. dev16Func dev16_altivec_c;
  128. #endif
  129. /* This function assumes blocks use 16bit signed elements */
  130. typedef uint32_t (sse8Func_16bit)(const int16_t * cur,
  131.   const int16_t * ref,
  132.   const uint32_t stride);
  133. typedef sse8Func_16bit *sse8Func_16bitPtr;
  134. extern sse8Func_16bitPtr sse8_16bit;
  135. sse8Func_16bit sse8_16bit_c;
  136. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  137. sse8Func_16bit sse8_16bit_mmx;
  138. #endif
  139. #ifdef ARCH_IS_PPC
  140. sse8Func_16bit sse8_16bit_altivec_c;
  141. #endif
  142. /* This function assumes blocks use 8bit *un*signed elements */
  143. typedef uint32_t (sse8Func_8bit)(const uint8_t * cur,
  144.  const uint8_t * ref,
  145.  const uint32_t stride);
  146. typedef sse8Func_8bit *sse8Func_8bitPtr;
  147. extern sse8Func_8bitPtr sse8_8bit;
  148. sse8Func_8bit sse8_8bit_c;
  149. #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
  150. sse8Func_8bit sse8_8bit_mmx;
  151. #endif
  152. #endif /* _ENCODER_SAD_H_ */