memcpy.c
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:3k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * memcpy.c : classic memcpy module
  3.  *****************************************************************************
  4.  * Copyright (C) 2001 the VideoLAN team
  5.  * $Id: cae7f2fb7e511e2a7954e4af7c3d9578d4675539 $
  6.  *
  7.  * Authors: Samuel Hocevar <sam@zoy.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. /*****************************************************************************
  24.  * Preamble
  25.  *****************************************************************************/
  26. #ifdef HAVE_CONFIG_H
  27. # include "config.h"
  28. #endif
  29. #include <vlc_common.h>
  30. #include <vlc_plugin.h>
  31. #undef HAVE_MMX
  32. #undef HAVE_MMX2
  33. #undef HAVE_SSE
  34. #undef HAVE_SSE2
  35. #undef HAVE_3DNOW
  36. #undef HAVE_ALTIVEC
  37. #if defined( MODULE_NAME_IS_memcpy3dn )
  38. #   define PRIORITY 100
  39. #   define HAVE_3DNOW
  40. #elif defined( MODULE_NAME_IS_memcpymmx )
  41. #   define PRIORITY 100
  42. #   define HAVE_MMX
  43. #elif defined( MODULE_NAME_IS_memcpymmxext )
  44. #   define PRIORITY 200
  45. #   define HAVE_MMX2
  46. #else
  47. #   define PRIORITY 50
  48. #endif
  49. /*****************************************************************************
  50.  * Extern prototype
  51.  *****************************************************************************/
  52. #ifndef MODULE_NAME_IS_memcpy
  53. #   define fast_memcpy fast_memcpy
  54. #   include "fastmemcpy.h"
  55. #endif
  56. /*****************************************************************************
  57.  * Module initializer
  58.  *****************************************************************************/
  59. static int Activate ( vlc_object_t *p_this )
  60. {
  61. #ifndef MODULE_NAME_IS_memcpy
  62.     vlc_fastmem_register( fast_memcpy, NULL );
  63. #endif
  64.     return VLC_SUCCESS;
  65. }
  66. /*****************************************************************************
  67.  * Module descriptor
  68.  *****************************************************************************/
  69. vlc_module_begin ()
  70.     set_category( CAT_ADVANCED )
  71.     set_subcategory( SUBCAT_ADVANCED_MISC )
  72. #ifdef MODULE_NAME_IS_memcpy
  73.     set_description( N_("libc memcpy") )
  74.     add_shortcut( "c" )
  75.     add_shortcut( "libc" )
  76. #elif defined( MODULE_NAME_IS_memcpy3dn )
  77.     set_description( N_("3D Now! memcpy") )
  78.     add_requirement( 3DNOW )
  79.     add_shortcut( "3dn" )
  80.     add_shortcut( "3dnow" )
  81.     add_shortcut( "memcpy3dn" )
  82.     add_shortcut( "memcpy3dnow" )
  83. #elif defined( MODULE_NAME_IS_memcpymmx )
  84.     set_description( N_("MMX memcpy") )
  85.     add_requirement( MMX )
  86.     add_shortcut( "mmx" )
  87.     add_shortcut( "memcpymmx" )
  88. #elif defined( MODULE_NAME_IS_memcpymmxext )
  89.     set_description( N_("MMX EXT memcpy") )
  90.     add_requirement( MMXEXT )
  91.     add_shortcut( "mmxext" )
  92.     add_shortcut( "memcpymmxext" )
  93. #endif
  94.     set_capability( "memcpy", PRIORITY )
  95.     set_callbacks( Activate, NULL )
  96. vlc_module_end ()