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

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.    Header definitions for the MMX routines for the HERMES library
  3.    Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk)
  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_MMX__
  10. #define __HERMES_HEAD_MMX__
  11. /* If you cannot stand ifdefs, then please do not look into this file, it's
  12.    going to end your life :) */
  13. #ifdef X86_ASSEMBLER
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. void STACKCALL ConvertMMX(HermesConverterInterface *);
  18. void STACKCALL ClearMMX_32(HermesClearInterface *);
  19. void STACKCALL ClearMMX_24(HermesClearInterface *);
  20. void STACKCALL ClearMMX_16(HermesClearInterface *);
  21. void STACKCALL ClearMMX_8(HermesClearInterface *);
  22. void ConvertMMXpII32_24RGB888();
  23. void ConvertMMXpII32_16RGB565();
  24. void ConvertMMXpII32_16BGR565();
  25. void ConvertMMXpII32_16RGB555();
  26. void ConvertMMXpII32_16BGR565();
  27. void ConvertMMXpII32_16BGR555();
  28. void ConvertMMXp32_16RGB555();
  29. #ifdef __cplusplus
  30. }
  31. #endif
  32. /* Fix the underscore business with ELF compilers */
  33. #if defined(__ELF__) && defined(__GNUC__)
  34.   #ifdef __cplusplus 
  35.   extern "C" {   
  36.   #endif
  37.   void ConvertMMX(HermesConverterInterface *) __attribute__ ((alias ("_ConvertMMX")));
  38. #if 0
  39.   void ClearMMX_32(HermesClearInterface *) __attribute__ ((alias ("_ClearMMX_32")));
  40.   void ClearMMX_24(HermesClearInterface *)  __attribute__ ((alias ("_ClearMMX_24")));
  41.   void ClearMMX_16(HermesClearInterface *)  __attribute__ ((alias ("_ClearMMX_16")));
  42.   void ClearMMX_8(HermesClearInterface *)  __attribute__ ((alias ("_ClearMMX_8")));
  43.   void ConvertMMXp32_16RGB555() __attribute__ ((alias ("_ConvertMMXp32_16RGB555")));
  44. #endif
  45.   void ConvertMMXpII32_24RGB888() __attribute__ ((alias ("_ConvertMMXpII32_24RGB888")));
  46.   void ConvertMMXpII32_16RGB565() __attribute__ ((alias ("_ConvertMMXpII32_16RGB565")));
  47.   void ConvertMMXpII32_16BGR565() __attribute__ ((alias ("_ConvertMMXpII32_16BGR565")));
  48.   void ConvertMMXpII32_16RGB555() __attribute__ ((alias ("_ConvertMMXpII32_16RGB555")));
  49.   void ConvertMMXpII32_16BGR555() __attribute__ ((alias ("_ConvertMMXpII32_16BGR555")));
  50.   #ifdef __cplusplus
  51.   }
  52.   #endif
  53. #endif /* ELF and GNUC */
  54. /* Make it work with Watcom */
  55. #ifdef __WATCOMC__
  56. #pragma warning 601 9
  57. #pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI]
  58. #pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
  59. #pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
  60. #pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
  61. #pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
  62. #pragma aux ConvertMMXpII32_24RGB888 "_*"
  63. #pragma aux ConvertMMXpII32_16RGB565 "_*"
  64. #pragma aux ConvertMMXpII32_16BGR565 "_*"
  65. #pragma aux ConvertMMXpII32_16RGB555 "_*"
  66. #pragma aux ConvertMMXpII32_16BGR555 "_*"
  67. #pragma aux ConvertMMXp32_16RGB555 "_*"
  68. #endif /* WATCOM */
  69. #endif /* X86_ASSEMBLER */
  70. #endif