HeadX86.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:7k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.    Header definitions for the x86 routines for the HERMES library
  3.    Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at)
  4.    This source code is licensed under the GNU LGPL
  5.   
  6.    Please refer to the file COPYING.LIB contained in the distribution for
  7.    licensing conditions
  8. */
  9. #ifndef __HERMES_HEAD_X86__
  10. #define __HERMES_HEAD_X86__
  11. #ifdef X86_ASSEMBLER
  12. /* If you can't stand IFDEFS, then close your eyes now, please :) */
  13. /* Ok, we start with normal function definitions */
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. void STACKCALL ConvertX86(HermesConverterInterface *);
  18. void STACKCALL ClearX86_32(HermesClearInterface *);
  19. void STACKCALL ClearX86_24(HermesClearInterface *);
  20. void STACKCALL ClearX86_16(HermesClearInterface *);
  21. void STACKCALL ClearX86_8(HermesClearInterface *);
  22. int STACKCALL Hermes_X86_CPU();
  23. void ConvertX86p32_32BGR888();
  24. void ConvertX86p32_32RGBA888();
  25. void ConvertX86p32_32BGRA888();
  26. void ConvertX86p32_24RGB888();
  27. void ConvertX86p32_24BGR888();
  28. void ConvertX86p32_16RGB565();
  29. void ConvertX86p32_16BGR565();
  30. void ConvertX86p32_16RGB555();
  31. void ConvertX86p32_16BGR555();
  32. void ConvertX86p32_8RGB332();
  33. void ConvertX86p16_32RGB888();
  34. void ConvertX86p16_32BGR888();
  35. void ConvertX86p16_32RGBA888();
  36. void ConvertX86p16_32BGRA888();
  37. void ConvertX86p16_24RGB888();
  38. void ConvertX86p16_24BGR888();
  39. void ConvertX86p16_16BGR565();
  40. void ConvertX86p16_16RGB555();
  41. void ConvertX86p16_16BGR555();
  42. void ConvertX86p16_8RGB332();
  43. void CopyX86p_4byte();
  44. void CopyX86p_3byte();
  45. void CopyX86p_2byte();
  46. void CopyX86p_1byte();
  47. void ConvertX86pI8_32();
  48. void ConvertX86pI8_24();
  49. void ConvertX86pI8_16();
  50. extern int32 ConvertX86p16_32RGB888_LUT_X86[512];
  51. extern int32 ConvertX86p16_32BGR888_LUT_X86[512];
  52. extern int32 ConvertX86p16_32RGBA888_LUT_X86[512];
  53. extern int32 ConvertX86p16_32BGRA888_LUT_X86[512];
  54.   
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58. /* Now fix up the ELF underscore problem */
  59. #if defined(__ELF__) && defined(__GNUC__)
  60.   #ifdef __cplusplus
  61.   extern "C" {
  62.   #endif
  63.   int Hermes_X86_CPU() __attribute__ ((alias ("_Hermes_X86_CPU")));
  64.   void ConvertX86(HermesConverterInterface *) __attribute__ ((alias ("_ConvertX86")));
  65. #if 0
  66.   void ClearX86_32(HermesClearInterface *) __attribute__ ((alias ("_ClearX86_32")));
  67.   void ClearX86_24(HermesClearInterface *)  __attribute__ ((alias ("_ClearX86_24")));
  68.   void ClearX86_16(HermesClearInterface *)  __attribute__ ((alias ("_ClearX86_16")));
  69.   void ClearX86_8(HermesClearInterface *)  __attribute__ ((alias ("_ClearX86_8")));
  70. #endif
  71.   void ConvertX86p32_32BGR888() __attribute__ ((alias ("_ConvertX86p32_32BGR888")));
  72.   void ConvertX86p32_32RGBA888() __attribute__ ((alias ("_ConvertX86p32_32RGBA888")));
  73.   void ConvertX86p32_32BGRA888() __attribute__ ((alias ("_ConvertX86p32_32BGRA888")));
  74.   void ConvertX86p32_24RGB888() __attribute__ ((alias ("_ConvertX86p32_24RGB888")));
  75.   void ConvertX86p32_24BGR888() __attribute__ ((alias ("_ConvertX86p32_24BGR888")));
  76.   void ConvertX86p32_16RGB565() __attribute__ ((alias ("_ConvertX86p32_16RGB565")));
  77.   void ConvertX86p32_16BGR565() __attribute__ ((alias ("_ConvertX86p32_16BGR565")));
  78.   void ConvertX86p32_16RGB555() __attribute__ ((alias ("_ConvertX86p32_16RGB555")));
  79.   void ConvertX86p32_16BGR555() __attribute__ ((alias ("_ConvertX86p32_16BGR555")));
  80.   void ConvertX86p32_8RGB332() __attribute__ ((alias ("_ConvertX86p32_8RGB332")));
  81. #if 0
  82.   void ConvertX86p16_32RGB888() __attribute__ ((alias ("_ConvertX86p16_32RGB888")));
  83.   void ConvertX86p16_32BGR888() __attribute__ ((alias ("_ConvertX86p16_32BGR888")));
  84.   void ConvertX86p16_32RGBA888() __attribute__ ((alias ("_ConvertX86p16_32RGBA888")));
  85.   void ConvertX86p16_32BGRA888() __attribute__ ((alias ("_ConvertX86p16_32BGRA888")));
  86.   void ConvertX86p16_24RGB888() __attribute__ ((alias ("_ConvertX86p16_24RGB888")));
  87.   void ConvertX86p16_24BGR888() __attribute__ ((alias ("_ConvertX86p16_24BGR888")));
  88. #endif
  89.   void ConvertX86p16_16BGR565() __attribute__ ((alias ("_ConvertX86p16_16BGR565")));
  90.   void ConvertX86p16_16RGB555() __attribute__ ((alias ("_ConvertX86p16_16RGB555")));
  91.   void ConvertX86p16_16BGR555() __attribute__ ((alias ("_ConvertX86p16_16BGR555")));
  92.   void ConvertX86p16_8RGB332() __attribute__ ((alias ("_ConvertX86p16_8RGB332")));
  93. #if 0
  94.   void CopyX86p_4byte() __attribute__ ((alias ("_CopyX86p_4byte")));
  95.   void CopyX86p_3byte() __attribute__ ((alias ("_CopyX86p_3byte")));
  96.   void CopyX86p_2byte() __attribute__ ((alias ("_CopyX86p_2byte")));
  97.   void CopyX86p_1byte() __attribute__ ((alias ("_CopyX86p_1byte")));
  98.   void ConvertX86pI8_32() __attribute__ ((alias ("_ConvertX86pI8_32")));
  99.   void ConvertX86pI8_24() __attribute__ ((alias ("_ConvertX86pI8_24")));
  100.   void ConvertX86pI8_16() __attribute__ ((alias ("_ConvertX86pI8_16")));
  101.   extern int32 ConvertX86p16_32RGB888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32RGB888_LUT_X86")));
  102.   extern int32 ConvertX86p16_32BGR888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32BGR888_LUT_X86")));
  103.   extern int32 ConvertX86p16_32RGBA888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32RGBA888_LUT_X86")));
  104.   extern int32 ConvertX86p16_32BGRA888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32BGRA888_LUT_X86")));
  105. #endif
  106.   #ifdef __cplusplus
  107.   }
  108.   #endif
  109. #endif /* ELF & GNU */
  110. /* Make it run with WATCOM C */
  111. #ifdef __WATCOMC__
  112. #pragma warning 601 9
  113. #pragma aux Hermes_X86_CPU "_*"
  114. #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI]
  115. #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
  116. #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
  117. #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
  118. #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
  119. #pragma aux ConvertX86p32_32BGR888 "_*"
  120. #pragma aux ConvertX86p32_32RGBA888 "_*"
  121. #pragma aux ConvertX86p32_32BGRA888 "_*"
  122. #pragma aux ConvertX86p32_24RGB888 "_*"
  123. #pragma aux ConvertX86p32_24BGR888 "_*"
  124. #pragma aux ConvertX86p32_16RGB565 "_*"
  125. #pragma aux ConvertX86p32_16BGR565 "_*"
  126. #pragma aux ConvertX86p32_16RGB555 "_*"
  127. #pragma aux ConvertX86p32_16BGR555 "_*"
  128. #pragma aux ConvertX86p32_8RGB332 "_*"
  129. #pragma aux ConvertX86p16_32RGB888 "_*"
  130. #pragma aux ConvertX86p16_32BGR888 "_*"
  131. #pragma aux ConvertX86p16_32RGBA888 "_*"
  132. #pragma aux ConvertX86p16_32BGRA888 "_*"
  133. #pragma aux ConvertX86p16_24RGB888 "_*"
  134. #pragma aux ConvertX86p16_24BGR888 "_*"
  135. #pragma aux ConvertX86p16_16BGR565 "_*"
  136. #pragma aux ConvertX86p16_16RGB555 "_*"
  137. #pragma aux ConvertX86p16_16BGR555 "_*"
  138. #pragma aux ConvertX86p16_8RGB332 "_*"
  139. #pragma aux CopyX86p_4byte "_*"
  140. #pragma aux CopyX86p_3byte "_*"
  141. #pragma aux CopyX86p_2byte "_*"
  142. #pragma aux CopyX86p_1byte "_*"
  143. #pragma aux ConvertX86pI8_32 "_*"
  144. #pragma aux ConvertX86pI8_24 "_*"
  145. #pragma aux ConvertX86pI8_16 "_*"
  146. #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*"
  147. #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*"
  148. #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*"
  149. #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*"
  150. #endif /* __WATCOMC__ */
  151. #endif /* X86_ASSEMBLER */
  152. #endif