]> git.sesse.net Git - vlc/commitdiff
* Borrowed MPlayer's fast memcpy() routines. Best is autodetected, choose
authorSam Hocevar <sam@videolan.org>
Mon, 3 Dec 2001 16:18:37 +0000 (16:18 +0000)
committerSam Hocevar <sam@videolan.org>
Mon, 3 Dec 2001 16:18:37 +0000 (16:18 +0000)
    "--memcpy <whatever>" to choose one from c, mmx, mmxext or 3dn.
    Please test! Especially Athlon users.
  * Added versioned build-dep to libasound2-dev (Closes Debian bug #121057).
  * Updated Gtk/GNOME interfaces to use "udpstream" instead of "ts".
  * Unrolled ChangeLog.

39 files changed:
ChangeLog
ChangeLog.libdvdcss
Makefile
configure
configure.in
debian/changelog
debian/control
debian/libdvdcss1.dirs
debian/rules
doc/developer/decoders.xml
doc/vlc.1
include/common.h
include/config.h.in
include/defs.h.in
include/input_ext-dec.h
include/main.h
include/modules.h
include/modules_export.h
plugins/ac3_adec/ac3_adec.c
plugins/ac3_spdif/ac3_spdif.c
plugins/alsa/aout_alsa.c
plugins/gtk/gtk_open.c
plugins/lpcm_adec/lpcm_adec.c
plugins/memcpy/.cvsignore [new file with mode: 0644]
plugins/memcpy/Makefile [new file with mode: 0644]
plugins/memcpy/fastmemcpy.h [new file with mode: 0644]
plugins/memcpy/memcpy.c [new file with mode: 0644]
plugins/memcpy/memcpy3dn.c [new file with mode: 0644]
plugins/memcpy/memcpymmx.c [new file with mode: 0644]
plugins/memcpy/memcpymmxext.c [new file with mode: 0644]
plugins/mpeg/input_ts.h
plugins/mpeg_adec/mpeg_adec.c
plugins/mpeg_vdec/video_parser.c
plugins/sdl/vout_sdl.c
plugins/spu_dec/spu_decoder.c
plugins/vcd/input_vcd.c
plugins/x11/vout_xvideo.c
src/input/input_dec.c
src/interface/main.c

index 1bce17c0458c6e247763c8f07cba6d68237a1e58..0c1668bcf8e989c5569cbeecce7ec1c285ee331b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,79 @@
 
 HEAD
 
+  * Borrowed MPlayer's fast memcpy() routines. Best is autodetected, choose
+    "--memcpy <whatever>" to choose one from c, mmx, mmxext or 3dn.
+  * Added versioned build-dep to libasound2-dev (Closes Debian bug #121057).
+  * Updated Gtk/GNOME interfaces to use "udpstream" instead of "ts".
+  * More checks for GTK headers.
+  * Fixed a crash when pausing.
+  * Fixed numerous bugs in ES selection.
+  * Fixed stupid bug in vout_Manage. It sometimes called SetDSequenceMatrix
+    when there was no valid sequence.
+  * Hopeless fix for the input netlist corruption bug.
+  * Implemented simple BDirectWindow (DMA) support.
+  * DeleteDecoderConfig wasn't freeing (anymore) the packets left in the
+    decoder fifo. This bug was creating an io_vec starving on title change
+    when playing DVDs.
+  * Removed a bug in the Makefile that made the CVS-snapshots building fail.
+  * Added "#include <string.>" to include/threads.h.
+  * Removed the mutex the vout and intf thread (were supposed to use)
+    for syncronizing acces to the p_vout->p_sys structure.
+  * Added error checking in pthread wrapper; as a result, intf_msg.h must
+    now be included *before* threads.h.
+  * Changed all files to include intf_msg.h before threads.h; while I was
+    at it, I update the copyright notices.
+  * Removed the obsolete darwin plug-in.
+  * Fixed a deadlock (bug reported by marcari).
+  * Various (sometimes hopeless) fixes to try to improve xvideo stability.
+  * Documentation updates.
+  * Updated man page.
+  * dvd:<device>[@<raw device>] to avoid device namespace collision under
+    win32.
+  * Fixed a compilation issue under Win32.
+  * Fixed a potential packet corruption in the DVD input.
+  * Changed the protocol version for communication between vlc and vlcs
+    from 12 to 13 (due to change from ts:// to udpstream://)
+  * Big clean-up to allow compiling every module as plugins.
+  * Added bytes_swap.h to provide ntoh() and htol() on Win32. With this
+    change we don't have to link winsock2 with every plugin anymore. This
+    should also give us a slight speed increase.
+  * Added #define WIN32_LEAN_AND_MEAN in threads.h to speed-up compilation
+    on Win32.
+  * Modified ac_downmix_3dn and sse so they compile with the latest gcc for
+    Win32.
+  * Support for libdvdread.
+  * Added "Video" menu hint to debian/*menu (Closes Debian bug #121036).
+  * Major rewrite of the network layer. only supported syntax is:
+    udp[stream]:[//][serveraddr:[serverport]][@[bindaddr][:bindport]]
+  * Don`t use long long, use u64/s64 (int_types.h).
+  * Fixed a stale pointer in mpeg_vdec_Run().
+  * (Hopefully) fixed the network connect() bug under UNIX.
+  * aRts audio output courtesy of Emmanuel Blindauer <manu@agat.net>.
+  * Fix to the esd plugin when esd-config --cflags is nonempty.
+  * --channels puts gtk/gnome in multi-channel network mode.
+  * The network window of the interface reports the values of the environment
+    variables.
+  * Channels mode excludes vls configuration.
+  * The vlc does not try to bind vls.via.ecp.fr by default when you select
+    channels mode.
+  * Fixed MacOS X 10.1 network input, thanks to Mathias Kretschmer
+    <mathias@research.att.com>.
+  * Fixed a few crashes due to race conditions in the decoder spawning.
+  * Removed unused code here and there.
+  * Fixed a bug in altivec detection on MacOS X.
+  * It seems that the 'focus' bug under WinME is solved.
+  * Updated the INSTALL-win32.txt file.
+  * The ./configure script is more friendly for Win32 users.
+  * Moved warning message to debug message in spdif pass-through plugin.
+  * Changed a bit the wait time. It works better here, please test.
+  * The default file-translation mode was not being set under win32.
+  * Fixed heap corruption issues in ac3dec (thanks reno).
+  * Fixed a crash when using `--input dvd /dev/dvd' instead of `dvd:/dev/dvd'.
+  * configure should no longer assume AltiVec is supported when it actually
+    isn't with buggy compilers and/or pre-set $CFLAGS.
+  * Commited my little release-howto (only useful to core vlc developers).
+  * Closing Debian bug #119369 which was fixed a while ago.
   * Decoder modularization.
 
 0.2.91
index dd0f330b11505230a200f536d50588d05097edb0..8d0e0d98ad533323ad21757d28e720c2ef040ab3 100644 (file)
@@ -4,7 +4,10 @@
 
 HEAD
 
-  * Nothing yet.
+  * Update for libdvdcss documentation.
+  * Reworked Keith Packard's raw device patch. The name of the raw device
+    is in the environment variable DVDCSS_RAW_DEVICE.
+  * Fixed a bug in libdvdcss: the key wasn't searched when it had to.
 
 1.0.0
 Mon, 12 Nov 2001 17:14:29 +0100
index 28590b92b547b1040f395a21bea8bc4a7c7e1e3b..fbac4a235aafa919b9c61e75b915e633fbdc5497 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -34,6 +34,7 @@ PLUGINS_DIR :=        ac3_adec \
                kde \
                lpcm_adec \
                macosx \
+               memcpy \
                mga \
                motion \
                mpeg \
@@ -78,6 +79,10 @@ PLUGINS_TARGETS := ac3_adec/ac3_adec \
                kde/kde \
                lpcm_adec/lpcm_adec \
                macosx/macosx \
+               memcpy/memcpy \
+               memcpy/memcpymmx \
+               memcpy/memcpymmxext \
+               memcpy/memcpy3dn \
                mga/mga \
                motion/motion \
                motion/motionmmx \
index 1e912d7c7ca64c80ba0a82b988ff355816c9960f..39ba5538abe8de30feaf4c9ef088be46589a9a51 100755 (executable)
--- a/configure
+++ b/configure
@@ -2376,15 +2376,12 @@ else
 #include <sys/types.h>
 #include <fcntl.h>
 #include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
 
 /* This mess was copied from the GNU getpagesize.h.  */
 #ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+# endif
 
 /* Assume that all systems that can run configure have sys/param.h.  */
 # ifndef HAVE_SYS_PARAM_H
@@ -2439,7 +2436,7 @@ main()
        /*
         * First, make a file with some known garbage in it.
         */
-       data = (char*)malloc(pagesize);
+       data = malloc(pagesize);
        if (!data)
                exit(1);
        for (i = 0; i < pagesize; ++i)
@@ -2460,7 +2457,7 @@ main()
        fd = open("conftestmmap", O_RDWR);
        if (fd < 0)
                exit(1);
-       data2 = (char*)malloc(2 * pagesize);
+       data2 = malloc(2 * pagesize);
        if (!data2)
                exit(1);
        data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -2478,7 +2475,7 @@ main()
         */
        for (i = 0; i < pagesize; ++i)
                *(data2 + i) = *(data2 + i) + 1;
-       data3 = (char*)malloc(pagesize);
+       data3 = malloc(pagesize);
        if (!data3)
                exit(1);
        if (read(fd, data3, pagesize) != pagesize)
@@ -2492,7 +2489,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:2496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -2515,12 +2512,12 @@ EOF
 fi
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2519: checking return type of signal handlers" >&5
+echo "configure:2516: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2524 "configure"
+#line 2521 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2537,7 +2534,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:2541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -2556,7 +2553,7 @@ EOF
 
 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:2560: checking for dlopen in -ldl" >&5
+echo "configure:2557: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2564,7 +2561,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2568 "configure"
+#line 2565 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2575,7 +2572,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:2579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2596,7 +2593,7 @@ else
 fi
 
 echo $ac_n "checking for pow in -lm""... $ac_c" 1>&6
-echo "configure:2600: checking for pow in -lm" >&5
+echo "configure:2597: checking for pow in -lm" >&5
 ac_lib_var=`echo m'_'pow | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2604,7 +2601,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2608 "configure"
+#line 2605 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2615,7 +2612,7 @@ int main() {
 pow()
 ; return 0; }
 EOF
-if { (eval echo configure:2619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2639,7 +2636,7 @@ fi
 THREAD_LIB=error
 if test "x${THREAD_LIB}" = xerror; then
   echo $ac_n "checking for pthread_attr_init in -lpthread""... $ac_c" 1>&6
-echo "configure:2643: checking for pthread_attr_init in -lpthread" >&5
+echo "configure:2640: checking for pthread_attr_init in -lpthread" >&5
 ac_lib_var=`echo pthread'_'pthread_attr_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2647,7 +2644,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2651 "configure"
+#line 2648 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2658,7 +2655,7 @@ int main() {
 pthread_attr_init()
 ; return 0; }
 EOF
-if { (eval echo configure:2662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2681,7 +2678,7 @@ fi
 fi
 if test "x${THREAD_LIB}" = xerror; then
   echo $ac_n "checking for pthread_attr_init in -lpthreads""... $ac_c" 1>&6
-echo "configure:2685: checking for pthread_attr_init in -lpthreads" >&5
+echo "configure:2682: checking for pthread_attr_init in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'pthread_attr_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2689,7 +2686,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2693 "configure"
+#line 2690 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2700,7 +2697,7 @@ int main() {
 pthread_attr_init()
 ; return 0; }
 EOF
-if { (eval echo configure:2704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2723,7 +2720,7 @@ fi
 fi
 if test "x${THREAD_LIB}" = xerror; then
   echo $ac_n "checking for pthread_attr_init in -lc_r""... $ac_c" 1>&6
-echo "configure:2727: checking for pthread_attr_init in -lc_r" >&5
+echo "configure:2724: checking for pthread_attr_init in -lc_r" >&5
 ac_lib_var=`echo c_r'_'pthread_attr_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2731,7 +2728,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lc_r  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2735 "configure"
+#line 2732 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2742,7 +2739,7 @@ int main() {
 pthread_attr_init()
 ; return 0; }
 EOF
-if { (eval echo configure:2746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2765,12 +2762,12 @@ fi
 fi
 if test "x${THREAD_LIB}" = xerror; then
   echo $ac_n "checking for pthread_attr_init""... $ac_c" 1>&6
-echo "configure:2769: checking for pthread_attr_init" >&5
+echo "configure:2766: checking for pthread_attr_init" >&5
 if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_init'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2774 "configure"
+#line 2771 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pthread_attr_init(); below.  */
@@ -2793,7 +2790,7 @@ pthread_attr_init();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_pthread_attr_init=yes"
 else
@@ -2816,7 +2813,7 @@ fi
 fi
 
 echo $ac_n "checking for cthread_fork in -lthreads""... $ac_c" 1>&6
-echo "configure:2820: checking for cthread_fork in -lthreads" >&5
+echo "configure:2817: checking for cthread_fork in -lthreads" >&5
 ac_lib_var=`echo threads'_'cthread_fork | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2824,7 +2821,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2828 "configure"
+#line 2825 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2835,7 +2832,7 @@ int main() {
 cthread_fork()
 ; return 0; }
 EOF
-if { (eval echo configure:2839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2857,7 +2854,7 @@ fi
 
 
 cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2858 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -2873,7 +2870,7 @@ fi
 rm -f conftest*
 
 cat > conftest.$ac_ext <<EOF
-#line 2877 "configure"
+#line 2874 "configure"
 #include "confdefs.h"
 #include <strings.h>
 EOF
@@ -2893,17 +2890,17 @@ for ac_hdr in stddef.h getopt.h strings.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2897: checking for $ac_hdr" >&5
+echo "configure:2894: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2902 "configure"
+#line 2899 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2904: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2933,17 +2930,17 @@ for ac_hdr in sys/sockio.h fcntl.h sys/time.h sys/times.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2937: checking for $ac_hdr" >&5
+echo "configure:2934: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2942 "configure"
+#line 2939 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2973,17 +2970,17 @@ for ac_hdr in sys/soundcard.h machine/soundcard.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2977: checking for $ac_hdr" >&5
+echo "configure:2974: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2982 "configure"
+#line 2979 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2987: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3013,17 +3010,17 @@ for ac_hdr in dlfcn.h image.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3017: checking for $ac_hdr" >&5
+echo "configure:3014: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3022 "configure"
+#line 3019 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3024: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3053,17 +3050,17 @@ for ac_hdr in arpa/inet.h net/if.h netinet/in.h sys/socket.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3057: checking for $ac_hdr" >&5
+echo "configure:3054: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3062 "configure"
+#line 3059 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3067: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3093,17 +3090,17 @@ for ac_hdr in machine/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3097: checking for $ac_hdr" >&5
+echo "configure:3094: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3102 "configure"
+#line 3099 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3107: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3104: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3134,17 +3131,17 @@ for ac_hdr in cthreads.h pthread.h kernel/scheduler.h kernel/OS.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3138: checking for $ac_hdr" >&5
+echo "configure:3135: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3143 "configure"
+#line 3140 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3148: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3145: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3172,20 +3169,20 @@ done
 
 
 echo $ac_n "checking for ntohl in sys/param.h""... $ac_c" 1>&6
-echo "configure:3176: checking for ntohl in sys/param.h" >&5
+echo "configure:3173: checking for ntohl in sys/param.h" >&5
 if eval "test \"`echo '$''{'ac_cv_c_ntohl_sys_param_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -Wall -Werror"
      cat > conftest.$ac_ext <<EOF
-#line 3182 "configure"
+#line 3179 "configure"
 #include "confdefs.h"
 #include <sys/param.h>
 int main() {
 void foo() { int meuh; ntohl(meuh); }
 ; return 0; }
 EOF
-if { (eval echo configure:3189: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_ntohl_sys_param_h=yes
 else
@@ -3206,20 +3203,20 @@ EOF
 fi
 
 echo $ac_n "checking if \$CC accepts -finline-limit""... $ac_c" 1>&6
-echo "configure:3210: checking if \$CC accepts -finline-limit" >&5
+echo "configure:3207: checking if \$CC accepts -finline-limit" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline_limit'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -finline-limit-30000"
      cat > conftest.$ac_ext <<EOF
-#line 3216 "configure"
+#line 3213 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3223: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3220: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline_limit=yes
 else
@@ -3237,20 +3234,20 @@ if test x"$ac_cv_c_inline_limit" != x"no"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -bundle -undefined error""... $ac_c" 1>&6
-echo "configure:3241: checking if \$CC accepts -bundle -undefined error" >&5
+echo "configure:3238: checking if \$CC accepts -bundle -undefined error" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_darwin'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -bundle -undefined error"
      cat > conftest.$ac_ext <<EOF
-#line 3247 "configure"
+#line 3244 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_ld_darwin=yes
 else
@@ -3268,20 +3265,20 @@ if test x"$ac_cv_ld_darwin" != x"no"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -shared""... $ac_c" 1>&6
-echo "configure:3272: checking if \$CC accepts -shared" >&5
+echo "configure:3269: checking if \$CC accepts -shared" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_plugins'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -shared"
      cat > conftest.$ac_ext <<EOF
-#line 3278 "configure"
+#line 3275 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_ld_plugins=yes
 else
@@ -3300,7 +3297,7 @@ fi
         
 if test x"${SOFLAGS}" = x; then
     echo $ac_n "checking for soname setting""... $ac_c" 1>&6
-echo "configure:3304: checking for soname setting" >&5
+echo "configure:3301: checking for soname setting" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_soname'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3309,14 +3306,14 @@ else
         try_SOFLAGS="-Wl,-soname -Wl,"
         LDFLAGS="${save_LDFLAGS} ${try_SOFLAGS}foo.so.0"
         cat > conftest.$ac_ext <<EOF
-#line 3313 "configure"
+#line 3310 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_ld_soname="${try_SOFLAGS}"
 else
@@ -3328,14 +3325,14 @@ else
             try_SOFLAGS="-Wl,-h -Wl,"
             LDFLAGS="${save_LDFLAGS} ${try_SOFLAGS}foo.so.0"
             cat > conftest.$ac_ext <<EOF
-#line 3332 "configure"
+#line 3329 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_ld_soname="${try_SOFLAGS}"
 else
@@ -3364,7 +3361,7 @@ have problems using libdvdcss.
 fi
 
 echo $ac_n "checking __attribute__ ((aligned ())) support""... $ac_c" 1>&6
-echo "configure:3368: checking __attribute__ ((aligned ())) support" >&5
+echo "configure:3365: checking __attribute__ ((aligned ())) support" >&5
 if eval "test \"`echo '$''{'ac_cv_c_attribute_aligned'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3372,14 +3369,14 @@ else
        CFLAGS="${save_CFLAGS} -Werror"
     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
         cat > conftest.$ac_ext <<EOF
-#line 3376 "configure"
+#line 3373 "configure"
 #include "confdefs.h"
 
 int main() {
 static char c __attribute__ ((aligned($ac_cv_c_attr_align_try))) = 0; return c;
 ; return 0; }
 EOF
-if { (eval echo configure:3383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_attribute_aligned=$ac_cv_c_attr_align_try
 else
@@ -3402,19 +3399,19 @@ CFLAGS="${save_CFLAGS}"
 LDFLAGS="${save_LDFLAGS}"
 
 echo $ac_n "checking for boolean_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3406: checking for boolean_t in sys/types.h" >&5
+echo "configure:3403: checking for boolean_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_c_boolean_t_sys_types_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3411 "configure"
+#line 3408 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
 boolean_t foo;
 ; return 0; }
 EOF
-if { (eval echo configure:3418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_boolean_t_sys_types_h=yes
 else
@@ -3435,19 +3432,19 @@ EOF
 fi
 
 echo $ac_n "checking for boolean_t in pthread.h""... $ac_c" 1>&6
-echo "configure:3439: checking for boolean_t in pthread.h" >&5
+echo "configure:3436: checking for boolean_t in pthread.h" >&5
 if eval "test \"`echo '$''{'ac_cv_c_boolean_t_pthread_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3444 "configure"
+#line 3441 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 int main() {
 boolean_t foo;
 ; return 0; }
 EOF
-if { (eval echo configure:3451: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_boolean_t_pthread_h=yes
 else
@@ -3468,19 +3465,19 @@ EOF
 fi
 
 echo $ac_n "checking for boolean_t in cthreads.h""... $ac_c" 1>&6
-echo "configure:3472: checking for boolean_t in cthreads.h" >&5
+echo "configure:3469: checking for boolean_t in cthreads.h" >&5
 if eval "test \"`echo '$''{'ac_cv_c_boolean_t_cthreads_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3477 "configure"
+#line 3474 "configure"
 #include "confdefs.h"
 #include <cthreads.h>
 int main() {
 boolean_t foo;
 ; return 0; }
 EOF
-if { (eval echo configure:3484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_boolean_t_cthreads_h=yes
 else
@@ -3501,18 +3498,18 @@ EOF
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3505: checking for working const" >&5
+echo "configure:3502: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3510 "configure"
+#line 3507 "configure"
 #include "confdefs.h"
 
 int main() {
 
 /* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x = {0,0};
+typedef int charset[2]; const charset x;
 /* SunOS 4.1.1 cc rejects this.  */
 char const *const *ccp;
 char **p;
@@ -3555,7 +3552,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:3559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -3576,12 +3573,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3580: checking for ANSI C header files" >&5
+echo "configure:3577: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3585 "configure"
+#line 3582 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3589,7 +3586,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3606,7 +3603,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3610 "configure"
+#line 3607 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3624,7 +3621,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3628 "configure"
+#line 3625 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3645,7 +3642,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3649 "configure"
+#line 3646 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3656,7 +3653,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -3680,12 +3677,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3684: checking for size_t" >&5
+echo "configure:3681: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3689 "configure"
+#line 3686 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3713,12 +3710,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3717: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3714: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3722 "configure"
+#line 3719 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3727,7 +3724,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3751,29 +3748,29 @@ fi
 
 ARCH=${target_cpu}
 
-BUILTINS="${BUILTINS} es ps ts yuv idct idctclassic motion imdct downmix mpeg_adec lpcm_adec ac3_adec mpeg_vdec"
+BUILTINS="${BUILTINS} es ps ts memcpy yuv idct idctclassic motion imdct downmix mpeg_adec lpcm_adec ac3_adec mpeg_vdec"
 PLUGINS="${PLUGINS} ac3_spdif spu_dec"
 
-MMX_MODULES="yuvmmx idctmmx motionmmx"
-MMXEXT_MODULES="idctmmxext motionmmxext"
-THREEDNOW_MODULES="imdct3dn downmix3dn"
+MMX_MODULES="memcpymmx yuvmmx idctmmx motionmmx"
+MMXEXT_MODULES="memcpymmxext idctmmxext motionmmxext"
+THREEDNOW_MODULES="memcpy3dn imdct3dn downmix3dn"
 SSE_MODULES="imdctsse downmixsse"
 ALTIVEC_MODULES="idctaltivec motionaltivec"
 
 echo $ac_n "checking if \$CC groks MMX inline assembly""... $ac_c" 1>&6
-echo "configure:3765: checking if \$CC groks MMX inline assembly" >&5
+echo "configure:3762: checking if \$CC groks MMX inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_mmx_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3770 "configure"
+#line 3767 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:3777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mmx_inline=yes
 else
@@ -3791,19 +3788,19 @@ if test x"$ac_cv_mmx_inline" != x"no"; then
 fi
 
 echo $ac_n "checking if \$CC groks MMX EXT inline assembly""... $ac_c" 1>&6
-echo "configure:3795: checking if \$CC groks MMX EXT inline assembly" >&5
+echo "configure:3792: checking if \$CC groks MMX EXT inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_mmxext_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3800 "configure"
+#line 3797 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:3807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3804: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mmxext_inline=yes
 else
@@ -3821,19 +3818,19 @@ if test x"$ac_cv_mmxext_inline" != x"no"; then
 fi
 
 echo $ac_n "checking if \$CC groks 3D Now! inline assembly""... $ac_c" 1>&6
-echo "configure:3825: checking if \$CC groks 3D Now! inline assembly" >&5
+echo "configure:3822: checking if \$CC groks 3D Now! inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_3dnow_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3830 "configure"
+#line 3827 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:3837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_3dnow_inline=yes
 else
@@ -3848,26 +3845,26 @@ fi
 echo "$ac_t""$ac_cv_3dnow_inline" 1>&6
 if test x"$ac_cv_3dnow_inline" != x"no"; then
   cat >> confdefs.h <<\EOF
-#define HAVE_3DNOW 1
+#define CAN_COMPILE_3DNOW 1
 EOF
 
   ACCEL_MODULES="${ACCEL_MODULES} ${THREEDNOW_MODULES}"
 fi
 
 echo $ac_n "checking if \$CC groks SSE inline assembly""... $ac_c" 1>&6
-echo "configure:3859: checking if \$CC groks SSE inline assembly" >&5
+echo "configure:3856: checking if \$CC groks SSE inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_sse_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3864 "configure"
+#line 3861 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:3871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sse_inline=yes
 else
@@ -3882,26 +3879,26 @@ fi
 echo "$ac_t""$ac_cv_sse_inline" 1>&6
 if test x"$ac_cv_sse_inline" != x"no"; then
   cat >> confdefs.h <<\EOF
-#define HAVE_SSE 1
+#define CAN_COMPILE_SSE 1
 EOF
 
   ACCEL_MODULES="${ACCEL_MODULES} ${SSE_MODULES}"
 fi
 
 echo $ac_n "checking if \$CC groks Altivec inline assembly""... $ac_c" 1>&6
-echo "configure:3893: checking if \$CC groks Altivec inline assembly" >&5
+echo "configure:3890: checking if \$CC groks Altivec inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_altivec_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3898 "configure"
+#line 3895 "configure"
 #include "confdefs.h"
 
 int main() {
 asm volatile("vperm 0,1,2,3");
 ; return 0; }
 EOF
-if { (eval echo configure:3905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_altivec_inline=yes
 else
@@ -3911,14 +3908,14 @@ else
   save_CFLAGS=$CFLAGS
           CFLAGS="$CFLAGS -Wa,-m7400"
           cat > conftest.$ac_ext <<EOF
-#line 3915 "configure"
+#line 3912 "configure"
 #include "confdefs.h"
 
 int main() {
 asm volatile("vperm 0,1,2,3");
 ; return 0; }
 EOF
-if { (eval echo configure:3922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_altivec_inline=yes; CFLAGS_ALTIVEC="-Wa,-m7400"
 else
@@ -3937,14 +3934,14 @@ fi
 echo "$ac_t""$ac_cv_altivec_inline" 1>&6
 if test x"$ac_cv_altivec_inline" != x"no"; then
   cat >> confdefs.h <<\EOF
-#define HAVE_ALTIVEC 1
+#define CAN_COMPILE_ALTIVEC 1
 EOF
 
   ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
 fi
 
 echo $ac_n "checking if \$CC groks Altivec C extensions""... $ac_c" 1>&6
-echo "configure:3948: checking if \$CC groks Altivec C extensions" >&5
+echo "configure:3945: checking if \$CC groks Altivec C extensions" >&5
 if eval "test \"`echo '$''{'ac_cv_c_altivec'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3952,14 +3949,14 @@ else
      CFLAGS="$CFLAGS -faltivec"
      # Darwin test
      cat > conftest.$ac_ext <<EOF
-#line 3956 "configure"
+#line 3953 "configure"
 #include "confdefs.h"
 
 int main() {
 vec_mtvscr((vector unsigned int)(0));
 ; return 0; }
 EOF
-if { (eval echo configure:3963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_altivec=-faltivec
 else
@@ -3970,14 +3967,14 @@ else
         # Linux/PPC test
         CFLAGS="$save_CFLAGS $CFLAGS_ALTIVEC -fvec"
         cat > conftest.$ac_ext <<EOF
-#line 3974 "configure"
+#line 3971 "configure"
 #include "confdefs.h"
 
 int main() {
 vec_mtvscr((vector unsigned int)(0));
 ; return 0; }
 EOF
-if { (eval echo configure:3981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_altivec="-fvec"
 else
@@ -3997,7 +3994,7 @@ fi
 echo "$ac_t""$ac_cv_c_altivec" 1>&6
 if test x"$ac_cv_c_altivec" != x"no"; then
   cat >> confdefs.h <<\EOF
-#define HAVE_C_ALTIVEC 1
+#define CAN_COMPILE_C_ALTIVEC 1
 EOF
 
   CFLAGS_ALTIVEC="$CFLAGS_ALTIVEC $ac_cv_c_altivec"
@@ -4005,21 +4002,21 @@ EOF
 fi
 
 echo $ac_n "checking if linker needs -framework vecLib""... $ac_c" 1>&6
-echo "configure:4009: checking if linker needs -framework vecLib" >&5
+echo "configure:4006: checking if linker needs -framework vecLib" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_altivec'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   save_LDFLAGS=$LDFLAGS
      LDFLAGS="$LDFLAGS -framework vecLib"
      cat > conftest.$ac_ext <<EOF
-#line 4016 "configure"
+#line 4013 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_ld_altivec=yes
 else
@@ -4060,7 +4057,7 @@ if test $SYS = mingw32; then
 # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
 set dummy ${ac_tool_prefix}windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4064: checking for $ac_word" >&5
+echo "configure:4061: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4092,7 +4089,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "windres", so it can be a program name with args.
 set dummy windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4096: checking for $ac_word" >&5
+echo "configure:4093: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4135,17 +4132,17 @@ for ac_hdr in winioctl.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4139: checking for $ac_hdr" >&5
+echo "configure:4136: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4144 "configure"
+#line 4141 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4146: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4178,17 +4175,17 @@ for ac_hdr in sys/ioctl.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4182: checking for $ac_hdr" >&5
+echo "configure:4179: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4187 "configure"
+#line 4184 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4214,17 +4211,17 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4218: checking for $ac_hdr" >&5
+echo "configure:4215: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4223 "configure"
+#line 4220 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4225: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4254,7 +4251,7 @@ done
   LINUX_DVD_STRUCT=0
   OPENBSD_DVD_STRUCT=0
         cat > conftest.$ac_ext <<EOF
-#line 4258 "configure"
+#line 4255 "configure"
 #include "confdefs.h"
 #include <sys/cdio.h>
 EOF
@@ -4267,7 +4264,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 EOF
 
     cat > conftest.$ac_ext <<EOF
-#line 4271 "configure"
+#line 4268 "configure"
 #include "confdefs.h"
 #include <sys/cdio.h>
 EOF
@@ -4287,7 +4284,7 @@ fi
 rm -f conftest*
 
         cat > conftest.$ac_ext <<EOF
-#line 4291 "configure"
+#line 4288 "configure"
 #include "confdefs.h"
 #include <sys/dvdio.h>
 EOF
@@ -4300,7 +4297,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 EOF
 
     cat > conftest.$ac_ext <<EOF
-#line 4304 "configure"
+#line 4301 "configure"
 #include "confdefs.h"
 #include <sys/dvdio.h>
 EOF
@@ -4320,7 +4317,7 @@ fi
 rm -f conftest*
 
         cat > conftest.$ac_ext <<EOF
-#line 4324 "configure"
+#line 4321 "configure"
 #include "confdefs.h"
 #include <linux/cdrom.h>
 EOF
@@ -4339,7 +4336,7 @@ rm -f conftest*
 
         NEED_BSDI_LIBDVD=0
   cat > conftest.$ac_ext <<EOF
-#line 4343 "configure"
+#line 4340 "configure"
 #include "confdefs.h"
 #include <dvd.h>
 EOF
@@ -4361,17 +4358,17 @@ else
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4365: checking for $ac_hdr" >&5
+echo "configure:4362: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4370 "configure"
+#line 4367 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4375: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4411,17 +4408,17 @@ rm -f conftest*
 
         ac_safe=`echo "sys/scsi/scsi_types.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/scsi/scsi_types.h""... $ac_c" 1>&6
-echo "configure:4415: checking for sys/scsi/scsi_types.h" >&5
+echo "configure:4412: checking for sys/scsi/scsi_types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4420 "configure"
+#line 4417 "configure"
 #include "confdefs.h"
 #include <sys/scsi/scsi_types.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4440,17 +4437,17 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     ac_safe=`echo "sys/scsi/impl/uscsi.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/scsi/impl/uscsi.h""... $ac_c" 1>&6
-echo "configure:4444: checking for sys/scsi/impl/uscsi.h" >&5
+echo "configure:4441: checking for sys/scsi/impl/uscsi.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4449 "configure"
+#line 4446 "configure"
 #include "confdefs.h"
 #include <sys/scsi/impl/uscsi.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4605,7 +4602,7 @@ if test "${enable_pth+set}" = set; then
   enableval="$enable_pth"
    if test x$enableval = xyes; then
     echo $ac_n "checking for pth_init in -lpth""... $ac_c" 1>&6
-echo "configure:4609: checking for pth_init in -lpth" >&5
+echo "configure:4606: checking for pth_init in -lpth" >&5
 ac_lib_var=`echo pth'_'pth_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4613,7 +4610,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpth  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4617 "configure"
+#line 4614 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4624,7 +4621,7 @@ int main() {
 pth_init()
 ; return 0; }
 EOF
-if { (eval echo configure:4628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4652,7 +4649,7 @@ else
 fi
 
     cat > conftest.$ac_ext <<EOF
-#line 4656 "configure"
+#line 4653 "configure"
 #include "confdefs.h"
 #include <pth.h>
 EOF
@@ -4773,7 +4770,7 @@ fi
 if test x$enable_vcd != xno
 then
   cat > conftest.$ac_ext <<EOF
-#line 4777 "configure"
+#line 4774 "configure"
 #include "confdefs.h"
 #include <linux/cdrom.h>
 EOF
@@ -4861,7 +4858,7 @@ if test "${enable_esd+set}" = set; then
      # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4865: checking for $ac_word" >&5
+echo "configure:4862: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ESD_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4912,7 +4909,7 @@ if test "${enable_arts+set}" = set; then
      # Extract the first word of "artsc-config", so it can be a program name with args.
 set dummy artsc-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4916: checking for $ac_word" >&5
+echo "configure:4913: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ARTS_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4969,17 +4966,17 @@ else
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4973: checking for $ac_hdr" >&5
+echo "configure:4970: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4978 "configure"
+#line 4975 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4983: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5023,17 +5020,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5027: checking for $ac_hdr" >&5
+echo "configure:5024: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5032 "configure"
+#line 5029 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5111,7 +5108,7 @@ fi
   # Extract the first word of "sdl12-config", so it can be a program name with args.
 set dummy sdl12-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5115: checking for $ac_word" >&5
+echo "configure:5112: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDL12_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5151,7 +5148,7 @@ fi
     # Extract the first word of "sdl11-config", so it can be a program name with args.
 set dummy sdl11-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5155: checking for $ac_word" >&5
+echo "configure:5152: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDL11_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5192,7 +5189,7 @@ fi
     # Extract the first word of "sdl-config", so it can be a program name with args.
 set dummy sdl-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5196: checking for $ac_word" >&5
+echo "configure:5193: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDL_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5238,17 +5235,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5242: checking for $ac_hdr" >&5
+echo "configure:5239: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5247 "configure"
+#line 5244 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5318,17 +5315,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5322: checking for $ac_hdr" >&5
+echo "configure:5319: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5327 "configure"
+#line 5324 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5357,7 +5354,7 @@ done
 
     else
       echo $ac_n "checking for directX headers in ${withval}""... $ac_c" 1>&6
-echo "configure:5361: checking for directX headers in ${withval}" >&5
+echo "configure:5358: checking for directX headers in ${withval}" >&5
       if test -f ${withval}/include/directx.h
       then
         PLUGINS="${PLUGINS} directx"
@@ -5440,7 +5437,7 @@ if test "${enable_gnome+set}" = set; then
     # Extract the first word of "gnome-config", so it can be a program name with args.
 set dummy gnome-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5444: checking for $ac_word" >&5
+echo "configure:5441: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GNOME_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5485,17 +5482,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5489: checking for $ac_hdr" >&5
+echo "configure:5486: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5494 "configure"
+#line 5491 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5555,7 +5552,7 @@ fi
   # Extract the first word of "gtk-config", so it can be a program name with args.
 set dummy gtk-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5559: checking for $ac_word" >&5
+echo "configure:5556: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5600,17 +5597,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5604: checking for $ac_hdr" >&5
+echo "configure:5601: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5609 "configure"
+#line 5606 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5662,17 +5659,17 @@ if test x$enable_x11 != xno &&
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5666: checking for $ac_hdr" >&5
+echo "configure:5663: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5671 "configure"
+#line 5668 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5676: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5725,17 +5722,17 @@ if test x$enable_xvideo != xno &&
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5729: checking for $ac_hdr" >&5
+echo "configure:5726: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5734 "configure"
+#line 5731 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5739: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5773,19 +5770,19 @@ if test "${enable_alsa+set}" = set; then
   enableval="$enable_alsa"
   if test x$enable_alsa = xyes
    then
-     ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6
-echo "configure:5779: checking for sys/asoundlib.h" >&5
+     ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
+echo "configure:5776: checking for alsa/asoundlib.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5784 "configure"
+#line 5781 "configure"
 #include "confdefs.h"
-#include <sys/asoundlib.h>
+#include <alsa/asoundlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5802,7 +5799,7 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for main in -lasound""... $ac_c" 1>&6
-echo "configure:5806: checking for main in -lasound" >&5
+echo "configure:5803: checking for main in -lasound" >&5
 ac_lib_var=`echo asound'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5810,14 +5807,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lasound  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5814 "configure"
+#line 5811 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
index 9385cc6a01a71d94a45bcf696cea322497e48df6..94c4c2462d23cfb4b30cbd36ebf1eb1ed306b8ec 100644 (file)
@@ -295,15 +295,15 @@ ARCH=${target_cpu}
 dnl
 dnl  default modules
 dnl
-BUILTINS="${BUILTINS} es ps ts yuv idct idctclassic motion imdct downmix mpeg_adec lpcm_adec ac3_adec mpeg_vdec"
+BUILTINS="${BUILTINS} es ps ts memcpy yuv idct idctclassic motion imdct downmix mpeg_adec lpcm_adec ac3_adec mpeg_vdec"
 PLUGINS="${PLUGINS} ac3_spdif spu_dec"
 
 dnl
 dnl  Accelerated modules
 dnl
-MMX_MODULES="yuvmmx idctmmx motionmmx"
-MMXEXT_MODULES="idctmmxext motionmmxext"
-THREEDNOW_MODULES="imdct3dn downmix3dn"
+MMX_MODULES="memcpymmx yuvmmx idctmmx motionmmx"
+MMXEXT_MODULES="memcpymmxext idctmmxext motionmmxext"
+THREEDNOW_MODULES="memcpy3dn imdct3dn downmix3dn"
 SSE_MODULES="imdctsse downmixsse"
 ALTIVEC_MODULES="idctaltivec motionaltivec"
 
@@ -328,7 +328,7 @@ AC_CACHE_CHECK([if \$CC groks 3D Now! inline assembly],
     [AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
 if test x"$ac_cv_3dnow_inline" != x"no"; then
-  AC_DEFINE(HAVE_3DNOW, 1, Define if \$CC groks 3D Now! inline assembly.)
+  AC_DEFINE(CAN_COMPILE_3DNOW, 1, Define if \$CC groks 3D Now! inline assembly.)
   ACCEL_MODULES="${ACCEL_MODULES} ${THREEDNOW_MODULES}"
 fi
 
@@ -337,7 +337,7 @@ AC_CACHE_CHECK([if \$CC groks SSE inline assembly],
     [AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
 if test x"$ac_cv_sse_inline" != x"no"; then
-  AC_DEFINE(HAVE_SSE, 1, Define if \$CC groks SSE inline assembly.)
+  AC_DEFINE(CAN_COMPILE_SSE, 1, Define if \$CC groks SSE inline assembly.)
   ACCEL_MODULES="${ACCEL_MODULES} ${SSE_MODULES}"
 fi
 
@@ -353,7 +353,7 @@ AC_CACHE_CHECK([if \$CC groks Altivec inline assembly],
           CFLAGS=$save_CFLAGS
          ])])
 if test x"$ac_cv_altivec_inline" != x"no"; then
-  AC_DEFINE(HAVE_ALTIVEC, 1, Define if \$CC groks ALTIVEC inline assembly.)
+  AC_DEFINE(CAN_COMPILE_ALTIVEC, 1, Define if \$CC groks ALTIVEC inline assembly.)
   ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
 fi
 
@@ -372,7 +372,7 @@ AC_CACHE_CHECK([if \$CC groks Altivec C extensions],
      CFLAGS=$save_CFLAGS
     ])
 if test x"$ac_cv_c_altivec" != x"no"; then
-  AC_DEFINE(HAVE_C_ALTIVEC, 1, Define if your compiler groks C altivec extensions.)
+  AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, Define if your compiler groks C altivec extensions.)
   CFLAGS_ALTIVEC="$CFLAGS_ALTIVEC $ac_cv_c_altivec"
   ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
 fi
@@ -1129,7 +1129,7 @@ AC_ARG_ENABLE(alsa,
                           (default disabled)],
   [if test x$enable_alsa = xyes
    then
-     AC_CHECK_HEADER(sys/asoundlib.h, AC_CHECK_LIB(asound, main, have_alsa="true", have_alsa="false"),have_alsa="false")
+     AC_CHECK_HEADER(alsa/asoundlib.h, AC_CHECK_LIB(asound, main, have_alsa="true", have_alsa="false"),have_alsa="false")
      if test x$have_alsa = xtrue
      then
        PLUGINS="${PLUGINS} alsa"
index b8d4e0c2b283185a9f1ac43de5b318298d93bd9a..d8343762b7e95a0c13c21aa7baa19a3965d254f2 100644 (file)
@@ -1,5 +1,6 @@
 vlc (0.2.91-2) unstable; urgency=low
 
+  * Added versioned build-dep to libasound2-dev (Closes: #121057).
   * Added "Video" menu hints (Closes: #121036).
 
  -- Samuel Hocevar <sam@zoy.org>  Sun, 25 Nov 2001 02:25:34 +0100
index 1372f8009a303365141ba4ae28bb08ef1657cd58..e31cf438c7cee3938a9531c30e30e918d13802d2 100644 (file)
@@ -2,7 +2,7 @@ Source: vlc
 Section: graphics
 Priority: optional
 Maintainer: Samuel Hocevar <sam@zoy.org>
-Build-Depends: debhelper (>=2.2.0), xlibs-dev, libgnome-dev, libggi2-dev, libglide2-dev [i386], libesd0-dev, libsdl1.2-dev, libqt-dev, libasound2-dev [alpha i386 ia64 m68k powerpc]
+Build-Depends: debhelper (>=2.2.0), xlibs-dev, libgnome-dev, libggi2-dev, libglide2-dev [i386], libesd0-dev, libsdl1.2-dev, libqt-dev, libasound2-dev [alpha i386 ia64 m68k powerpc] (>=0.9.0beta7)
 Standards-Version: 3.0.1
 
 Package: vlc
index 2ee6b7499dbe922bc2c91fa369644a3f6e936a11..fe6300ca381f77560d51e95953dd8f7e7c629b6c 100644 (file)
@@ -1,2 +1,2 @@
 usr/lib
-usr/share/doc/libdvdcss0
+usr/share/doc/libdvdcss1
index da9721c3b2825902e3d014eead2e08fdd8c4b9c8..6eced2e1f381dceec72645e7ce076762f50425e4 100755 (executable)
@@ -94,8 +94,7 @@ install: build
 # libdvdcss start
        mv debian/vlc/usr/include/videolan/dvdcss.h \
                                debian/libdvdcss$(major)-dev/usr/include/videolan
-       rmdir debian/vlc/usr/include/videolan
-       rmdir debian/vlc/usr/include
+       rm -Rf debian/vlc/usr/include
        mv debian/vlc/usr/lib/*.a debian/libdvdcss$(major)-dev/usr/lib
        mv debian/vlc/usr/lib/*.so debian/libdvdcss$(major)-dev/usr/lib
        mv debian/vlc/usr/lib/*.so.* debian/libdvdcss$(major)/usr/lib
index 157bb0aaa09b71f7434875a10ba80a7796428072..82fc7482f0f2496f296855edbdb2f5995edda1aa 100644 (file)
@@ -27,8 +27,8 @@ The input thread spawns the appropriate decoder modules from <filename>
 src/input/input_dec.c</filename>. The <function>Dec_CreateThread</funcion>
 function selects the more accurate decoder module. Each decoder module 
 looks at decoder_config.i_type and returns a score [ see the modules 
-section ]. It then launches <function> module.pf_RunThread()</function>, 
-with an <type>decoder_config_t</type>, described in <filename> 
+section ]. It then launches <function> module.pf_run()</function>, 
+with a <type>decoder_config_t</type>, described in <filename> 
 include/input_ext-dec.h</filename>.
     </para>
 
index a7d56f19c72718df2be426a8a0869eca0bcb2086..8e3d54de807a358e33d73135035ff0d2fb18d2b6 100644 (file)
--- a/doc/vlc.1
+++ b/doc/vlc.1
@@ -66,6 +66,9 @@ Set
 .B vlc
 verbosity. This command is cumulative, you can use "-vv" or "-vvvv" for increased verbosity.
 .TP
+.B \-\-memcpy <module>
+Specify a module for performing heavy memory copies: "memcpy", "sse" for instance.
+.TP
 .B \-\-noaudio
 Disable audio output.
 .TP
index 5064b4d183d82ddfb5aa8b5cb04d800ca1810270..ee18c48819afbbeafff5f1c933cf28ba5b278219 100644 (file)
@@ -3,7 +3,7 @@
  * Collection of useful common types and macros definitions
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: common.h,v 1.51 2001/11/28 15:08:04 massiot Exp $
+ * $Id: common.h,v 1.52 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@via.ecp.fr>
  *          Vincent Seguin <seguin@via.ecp.fr>
@@ -237,6 +237,8 @@ struct decoder_fifo_s;
 
 #define I64C(x)         x##LL
 
+/* Pointer to the fast memcpy plugin function */
+extern void* ( * pf_fast_memcpy ) ( void *, const void *, size_t );
 
 /* The win32 specific stuff was getting really big so it has been moved */
 #if defined( WIN32 )
@@ -282,6 +284,8 @@ typedef struct module_symbols_s
     void ( * intf_PlaylistJumpto )  ( struct playlist_s *, int );
     void ( * intf_UrlDecode )       ( char * );
 
+    void*   ( * pf_fast_memcpy ) ( void *, const void *, size_t );
+
     void    ( * msleep )         ( mtime_t );
     mtime_t ( * mdate )          ( void );
 
index 9ad4c778df9cb266c4f193fb6f6cdab034f823d0..7bd2a9cd3f320602718a464a51e8e3953b20b5f2 100644 (file)
@@ -90,6 +90,9 @@
  * outputting an error message (in second) */
 #define THREAD_COND_TIMEOUT                            5
 
+/* Environment variable containing the memcpy method */
+#define MEMCPY_METHOD_VAR               "vlc_memcpy"
+
 /*
  * Decoders FIFO configuration
  */
 /* Default dimensions for display window - these dimensions are enough for the
  * standard width and height broadcasted MPEG-2 streams or DVDs */
 #define VOUT_WIDTH_VAR                  "vlc_width"
-#define VOUT_HEIGHT_VAR                 "vlc_height"
 #define VOUT_WIDTH_DEFAULT              720
+#define VOUT_HEIGHT_VAR                 "vlc_height"
 #define VOUT_HEIGHT_DEFAULT             576
-
 #define VOUT_DEPTH_VAR                  "vlc_depth"
 #define VOUT_DEPTH_DEFAULT              15
-
-#define VOUT_FULLSCREEN_VAR             "vlc_fullscreen"
-#define VOUT_FULLSCREEN_DEFAULT         0
-
 #define VOUT_FULLSCREEN_DEPTH_VAR       "vlc_fullscreen_depth"
 #define VOUT_FULLSCREEN_DEPTH_DEFAULT   32
 
index 58810afd139a63f13fa2547cd636887a4c574fa6..f4ba3580590d897f2363bdaa43d2edb4e3aef9aa 100644 (file)
 /* Define if you have the <fcntl.h> header file.  */
 #undef HAVE_FCNTL_H
 
+/* Define if you have the <gdk/gdk.h> header file.  */
+#undef HAVE_GDK_GDK_H
+
 /* Define if you have the <getopt.h> header file.  */
 #undef HAVE_GETOPT_H
 
+/* Define if you have the <glib.h> header file.  */
+#undef HAVE_GLIB_H
+
 /* Define if you have the <gnome.h> header file.  */
 #undef HAVE_GNOME_H
 
 #undef BOOLEAN_T_IN_CTHREADS_H
 
 /* Define if $CC groks 3D Now! inline assembly. */
-#undef HAVE_3DNOW
+#undef CAN_COMPILE_3DNOW
 
 /* Define if $CC groks SSE inline assembly. */
-#undef HAVE_SSE
+#undef CAN_COMPILE_SSE
 
 /* Define if $CC groks ALTIVEC inline assembly. */
-#undef HAVE_ALTIVEC
+#undef CAN_COMPILE_ALTIVEC
 
 /* Define if your compiler groks C altivec extensions. */
-#undef HAVE_C_ALTIVEC
+#undef CAN_COMPILE_C_ALTIVEC
 
 /* Define if <sys/cdio.h> defines dvd_struct. */
 #undef DVD_STRUCT_IN_SYS_CDIO_H
index eea1a0ebc1009860fb9bfbd8e1fe62d6fb906a8a..a16260c4c3d5c5d4b177c62352750559b302ddef 100644 (file)
@@ -2,7 +2,7 @@
  * input_ext-dec.h: structures exported to the VideoLAN decoders
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: input_ext-dec.h,v 1.39 2001/11/15 17:39:12 sam Exp $
+ * $Id: input_ext-dec.h,v 1.40 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Michel Kaempf <maxx@via.ecp.fr>
@@ -479,14 +479,14 @@ static __inline__ void GetChunk( bit_stream_t * p_bit_stream,
     if( (i_available = p_bit_stream->p_end - p_bit_stream->p_byte)
             >= i_buf_len )
     {
-        memcpy( p_buffer, p_bit_stream->p_byte, i_buf_len );
+        pf_fast_memcpy( p_buffer, p_bit_stream->p_byte, i_buf_len );
         p_bit_stream->p_byte += i_buf_len;
     }
     else
     {
         do
         {
-            memcpy( p_buffer, p_bit_stream->p_byte, i_available );
+            pf_fast_memcpy( p_buffer, p_bit_stream->p_byte, i_available );
             p_bit_stream->p_byte = p_bit_stream->p_end;
             p_buffer += i_available;
             i_buf_len -= i_available;
@@ -497,7 +497,7 @@ static __inline__ void GetChunk( bit_stream_t * p_bit_stream,
 
         if( i_buf_len )
         {
-            memcpy( p_buffer, p_bit_stream->p_byte, i_buf_len );
+            pf_fast_memcpy( p_buffer, p_bit_stream->p_byte, i_buf_len );
             p_bit_stream->p_byte += i_buf_len;
         }
     }
index bca8c2c3f45825766f3e6a9e8ce97818d5e04589..4451efd1e6c13bae7c667685edf8692fc79d0e0c 100644 (file)
@@ -3,7 +3,7 @@
  * Declaration and extern access to global program object.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: main.h,v 1.22 2001/10/01 16:18:48 massiot Exp $
+ * $Id: main.h,v 1.23 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -50,6 +50,9 @@ typedef struct main_s
     boolean_t              b_video;             /* is video output allowed ? */
     boolean_t              b_ac3;
 
+    /* memcpy plugin used */
+    struct module_s *      p_memcpy_module;
+
     /* Unique threads */
     p_intf_thread_t        p_intf;                  /* main interface thread */
 
index c44e3d3152483d672d6f0fe8fbe903d359d3d5f4..c45654e2b3669e31ab904929e984671032799f98 100644 (file)
@@ -2,7 +2,7 @@
  * modules.h : Module management functions.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules.h,v 1.32 2001/11/13 18:10:38 sam Exp $
+ * $Id: modules.h,v 1.33 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -67,6 +67,7 @@ typedef void *  module_handle_t;
 #define MODULE_CAPABILITY_YUV      1 <<  9  /* YUV colorspace conversion */
 #define MODULE_CAPABILITY_IMDCT    1 << 10  /* IMDCT transformation */
 #define MODULE_CAPABILITY_DOWNMIX  1 << 11  /* AC3 downmix */
+#define MODULE_CAPABILITY_MEMCPY   1 << 12  /* memcpy */
 
 /* FIXME: kludge */
 struct input_area_s;
@@ -219,9 +220,15 @@ typedef struct function_list_s
         /* Decoder plugins */
         struct
         {
-            int  ( * pf_RunThread ) ( struct decoder_config_s * p_config );
+            int  ( * pf_run ) ( struct decoder_config_s * p_config );
         } dec;
 
+        /* memcpy plugins */
+        struct
+        {
+            void* ( * pf_fast_memcpy ) ( void *, const void *, size_t );
+        } memcpy;
+
     } functions;
 
 } function_list_t;
@@ -241,6 +248,7 @@ typedef struct module_functions_s
     function_list_t yuv;
     function_list_t imdct;
     function_list_t downmix;
+    function_list_t memcpy;
 
 } module_functions_t;
 
index 4317a3215f1dc1d211f64d7498f1ce1002f4a175..08cd54e1919c3564c72e008fdf8c9b6f45aa9bee 100644 (file)
@@ -45,6 +45,7 @@
     (p_symbols)->intf_PlaylistDestroy = intf_PlaylistDestroy; \
     (p_symbols)->intf_PlaylistJumpto = intf_PlaylistJumpto; \
     (p_symbols)->intf_UrlDecode = intf_UrlDecode; \
+    (p_symbols)->pf_fast_memcpy = pf_fast_memcpy; \
     (p_symbols)->msleep = msleep; \
     (p_symbols)->mdate = mdate; \
     (p_symbols)->network_ChannelCreate = network_ChannelCreate; \
 #   define intf_PlaylistJumpto(a,b) p_symbols->intf_PlaylistJumpto(a,b)
 #   define intf_UrlDecode(a) p_symbols->intf_UrlDecode(a)
 
+#   define pf_fast_memcpy p_symbols->pf_fast_memcpy
+
 #   define msleep(a) p_symbols->msleep(a)
 #   define mdate() p_symbols->mdate()
 
index 81dcf870098b75b62d88fadf0c284212ac64153f..0633e762328e8d9ea13bdb5e45476d4cf8417122 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_adec.c: ac3 decoder module main file
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: ac3_adec.c,v 1.4 2001/11/28 15:08:04 massiot Exp $
+ * $Id: ac3_adec.c,v 1.5 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Michel Lespinasse <walken@zoy.org>
  *
@@ -75,7 +75,7 @@ static void     BitstreamCallback    ( bit_stream_t *p_bit_stream,
 void _M( adec_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = ac3_adec_Probe;
-    p_function_list->functions.dec.pf_RunThread = ac3_adec_Run;
+    p_function_list->functions.dec.pf_run = ac3_adec_Run;
 }
 
 /*****************************************************************************
index 466803f419432d4e02922a8564611707082383cd..b6e98bead4907ac516a75b26449e08dbb2621220 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_spdif.c: ac3 pass-through to external decoder with enabled soundcard
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: ac3_spdif.c,v 1.4 2001/11/28 15:08:05 massiot Exp $
+ * $Id: ac3_spdif.c,v 1.5 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: StĂ©phane Borel <stef@via.ecp.fr>
  *          Juha Yrjola <jyrjola@cc.hut.fi>
@@ -75,7 +75,7 @@ static void BitstreamCallback( bit_stream_t *, boolean_t );
 void _M( adec_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = ac3_spdif_Probe;
-    p_function_list->functions.dec.pf_RunThread = ac3_spdif_Run;
+    p_function_list->functions.dec.pf_run = ac3_spdif_Run;
 }
 
 /*****************************************************************************
index 25253fea92e6fb229e87b359c3825efbae9458d8..9b7eecac0a84dd8413db63eac41b5dc4aed2c8e8 100644 (file)
@@ -2,7 +2,7 @@
  * aout_alsa.c : Alsa functions library
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: aout_alsa.c,v 1.20 2001/11/28 15:08:05 massiot Exp $
+ * $Id: aout_alsa.c,v 1.21 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Henri Fallon <henri@videolan.org> - Original Author
  *          Jeffrey Baker <jwbaker@acm.org> - Port to ALSA 1.0 API
@@ -36,7 +36,7 @@
 #include <stdio.h>                                           /* "intf_msg.h" */
 #include <stdlib.h>                            /* calloc(), malloc(), free() */
 
-#include <sys/asoundlib.h>
+#include <alsa/asoundlib.h>
 
 #include "config.h"
 #include "common.h"                                     /* boolean_t, byte_t */
index bbe7cf2485050cc43debd2f8c922e11dc3b7bdf5..9815c28fd331f4e9cafa0778810cadae3b86e9c3 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_open.c : functions to handle file/disc/network open widgets.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_open.c,v 1.9 2001/11/28 15:08:05 massiot Exp $
+ * $Id: gtk_open.c,v 1.10 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          StĂ©phane Borel <stef@via.ecp.fr>
@@ -336,7 +336,7 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
     if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
                                           "network_ts" ) )->active )
     {
-        psz_protocol = "ts";
+        psz_protocol = "udpstream";
     }
     else if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
                                                "network_rtp" ) )->active )
index 3d4afa928a46f3c1730c7cac596995a0721ebec9..4fb641b091496e3e2d01af7a086549badd32e114 100644 (file)
@@ -2,7 +2,7 @@
  * lpcm_decoder_thread.c: lpcm decoder thread
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: lpcm_adec.c,v 1.2 2001/11/28 15:08:05 massiot Exp $
+ * $Id: lpcm_adec.c,v 1.3 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Henri Fallon <henri@videolan.org>
@@ -71,7 +71,7 @@ static void     lpcm_adec_EndThread     ( lpcmdec_thread_t * );
 void _M( adec_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = lpcm_adec_Probe;
-    p_function_list->functions.dec.pf_RunThread = lpcm_adec_Run;
+    p_function_list->functions.dec.pf_run = lpcm_adec_Run;
 }
 
 /*****************************************************************************
diff --git a/plugins/memcpy/.cvsignore b/plugins/memcpy/.cvsignore
new file mode 100644 (file)
index 0000000..63e7180
--- /dev/null
@@ -0,0 +1 @@
+.dep
diff --git a/plugins/memcpy/Makefile b/plugins/memcpy/Makefile
new file mode 100644 (file)
index 0000000..c100890
--- /dev/null
@@ -0,0 +1,61 @@
+###############################################################################
+# vlc (VideoLAN Client) memcpy module makefile
+# (c)2001 VideoLAN
+###############################################################################
+
+#
+# Objects
+#
+
+PLUGIN_MEMCPY = memcpy.o
+PLUGIN_MEMCPYMMX = memcpymmx.o
+PLUGIN_MEMCPYMMXEXT = memcpymmxext.o
+PLUGIN_MEMCPY3DN = memcpy3dn.o
+
+BUILTIN_MEMCPY = $(PLUGIN_MEMCPY:%.o=BUILTIN_%.o)
+BUILTIN_MEMCPYMMX = $(PLUGIN_MEMCPYMMX:%.o=BUILTIN_%.o)
+BUILTIN_MEMCPYMMXEXT = $(PLUGIN_MEMCPYMMXEXT:%.o=BUILTIN_%.o)
+BUILTIN_MEMCPY3DN = $(PLUGIN_MEMCPY3DN:%.o=BUILTIN_%.o)
+
+PLUGIN_C = $(PLUGIN_MEMCPY) $(PLUGIN_MEMCPYMMX) $(PLUGIN_MEMCPYMMXEXT) $(PLUGIN_MEMCPY3DN)
+BUILTIN_C = $(BUILTIN_MEMCPY) $(BUILTIN_MEMCPYMMX) $(BUILTIN_MEMCPYMMXEXT) $(BUILTIN_MEMCPY3DN)
+ALL_OBJ = $(PLUGIN_C) $(BUILTIN_C)
+
+#
+# Virtual targets
+#
+
+include ../../Makefile.modules
+
+#
+# Real targets
+#
+
+../memcpy.so: $(PLUGIN_MEMCPY)
+       $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) 
+
+../memcpy.a: $(BUILTIN_MEMCPY)
+       ar r $@ $^
+       $(RANLIB) $@
+
+../memcpymmx.so: $(PLUGIN_MEMCPYMMX)
+       $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) 
+
+../memcpymmx.a: $(BUILTIN_MEMCPYMMX)
+       ar r $@ $^
+       $(RANLIB) $@
+
+../memcpymmxext.so: $(PLUGIN_MEMCPYMMXEXT)
+       $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) 
+
+../memcpymmxext.a: $(BUILTIN_MEMCPYMMXEXT)
+       ar r $@ $^
+       $(RANLIB) $@
+
+../memcpy3dn.so: $(PLUGIN_MEMCPY3DN)
+       $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) 
+
+../memcpy3dn.a: $(BUILTIN_MEMCPY3DN)
+       ar r $@ $^
+       $(RANLIB) $@
+
diff --git a/plugins/memcpy/fastmemcpy.h b/plugins/memcpy/fastmemcpy.h
new file mode 100644 (file)
index 0000000..2243720
--- /dev/null
@@ -0,0 +1,384 @@
+/*****************************************************************************
+ * fastmemcpy.h : fast memcpy routines
+ *****************************************************************************
+ * $Id: fastmemcpy.h,v 1.1 2001/12/03 16:18:37 sam Exp $
+ *
+ * Authors: various Linux kernel hackers
+ *          various MPlayer hackers
+ *          Nick Kurshev <nickols_k@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+/*
+  aclib - advanced C library ;)
+  This file contains functions which improve and expand standard C-library
+*/
+
+#define BLOCK_SIZE 4096
+#define CONFUSION_FACTOR 0
+//Feel free to fine-tune the above 2, it might be possible to get some speedup with them :)
+
+//#define STATISTICS
+
+#ifndef HAVE_SSE2
+/*
+   P3 processor has only one SSE decoder so can execute only 1 sse insn per
+   cpu clock, but it has 3 mmx decoders (include load/store unit)
+   and executes 3 mmx insns per cpu clock.
+   P4 processor has some chances, but after reading:
+   http://www.emulators.com/pentium4.htm
+   I have doubts. Anyway SSE2 version of this code can be written better.
+*/
+#undef HAVE_SSE
+#endif
+
+
+/*
+ This part of code was taken by me from Linux-2.4.3 and slightly modified
+for MMX, MMX2, SSE instruction set. I have done it since linux uses page aligned
+blocks but mplayer uses weakly ordered data and original sources can not
+speedup them. Only using PREFETCHNTA and MOVNTQ together have effect!
+
+>From IA-32 Intel Architecture Software Developer's Manual Volume 1,
+
+Order Number 245470:
+"10.4.6. Cacheability Control, Prefetch, and Memory Ordering Instructions"
+
+Data referenced by a program can be temporal (data will be used again) or
+non-temporal (data will be referenced once and not reused in the immediate
+future). To make efficient use of the processor's caches, it is generally
+desirable to cache temporal data and not cache non-temporal data. Overloading
+the processor's caches with non-temporal data is sometimes referred to as
+"polluting the caches".
+The non-temporal data is written to memory with Write-Combining semantics.
+
+The PREFETCHh instructions permits a program to load data into the processor
+at a suggested cache level, so that it is closer to the processors load and
+store unit when it is needed. If the data is already present in a level of
+the cache hierarchy that is closer to the processor, the PREFETCHh instruction
+will not result in any data movement.
+But we should you PREFETCHNTA: Non-temporal data fetch data into location
+close to the processor, minimizing cache pollution.
+
+The MOVNTQ (store quadword using non-temporal hint) instruction stores
+packed integer data from an MMX register to memory, using a non-temporal hint.
+The MOVNTPS (store packed single-precision floating-point values using
+non-temporal hint) instruction stores packed floating-point data from an
+XMM register to memory, using a non-temporal hint.
+
+The SFENCE (Store Fence) instruction controls write ordering by creating a
+fence for memory store operations. This instruction guarantees that the results
+of every store instruction that precedes the store fence in program order is
+globally visible before any store instruction that follows the fence. The
+SFENCE instruction provides an efficient way of ensuring ordering between
+procedures that produce weakly-ordered data and procedures that consume that
+data.
+
+If you have questions please contact with me: Nick Kurshev: nickols_k@mail.ru.
+*/
+
+// 3dnow memcpy support from kernel 2.4.2
+//  by Pontscho/fresh!mindworkz
+
+#if defined( HAVE_MMX2 ) || defined( HAVE_3DNOW ) || defined( HAVE_MMX )
+
+#undef HAVE_MMX1
+#if defined(HAVE_MMX) && !defined(HAVE_MMX2) && !defined(HAVE_3DNOW) && !defined(HAVE_SSE)
+/*  means: mmx v.1. Note: Since we added alignment of destinition it speedups
+    of memory copying on PentMMX, Celeron-1 and P2 upto 12% versus
+    standard (non MMX-optimized) version.
+    Note: on K6-2+ it speedups memory copying upto 25% and
+          on K7 and P3 about 500% (5 times). */
+#define HAVE_MMX1
+#endif
+
+
+#undef HAVE_K6_2PLUS
+#if !defined( HAVE_MMX2) && defined( HAVE_3DNOW)
+#define HAVE_K6_2PLUS
+#endif
+
+/* for small memory blocks (<256 bytes) this version is faster */
+#define small_memcpy(to,from,n)\
+{\
+register unsigned long int dummy;\
+__asm__ __volatile__(\
+       "rep; movsb"\
+       :"=&D"(to), "=&S"(from), "=&c"(dummy)\
+/* It's most portable way to notify compiler */\
+/* that edi, esi and ecx are clobbered in asm block. */\
+/* Thanks to A'rpi for hint!!! */\
+        :"0" (to), "1" (from),"2" (n)\
+       : "memory");\
+}
+
+#ifdef HAVE_SSE
+#define MMREG_SIZE 16
+#else
+#define MMREG_SIZE 64 //8
+#endif
+
+/* Small defines (for readability only) ;) */
+#ifdef HAVE_K6_2PLUS
+#define PREFETCH "prefetch"
+/* On K6 femms is faster of emms. On K7 femms is directly mapped on emms. */
+#define EMMS     "femms"
+#else
+#define PREFETCH "prefetchnta"
+#define EMMS     "emms"
+#endif
+
+#ifdef HAVE_MMX2
+#define MOVNTQ "movntq"
+#else
+#define MOVNTQ "movq"
+#endif
+
+#ifdef HAVE_MMX1
+#define MIN_LEN 0x800  /* 2K blocks */
+#else
+#define MIN_LEN 0x40  /* 64-byte blocks */
+#endif
+
+void * _M( fast_memcpy )(void * to, const void * from, size_t len)
+{
+       void *retval;
+       size_t i;
+       retval = to;
+#ifdef STATISTICS
+       {
+               static int freq[33];
+               static int t=0;
+               int i;
+               for(i=0; len>(1<<i); i++);
+               freq[i]++;
+               t++;
+               if(1024*1024*1024 % t == 0)
+                       for(i=0; i<32; i++)
+                               printf("freq < %8d %4d\n", 1<<i, freq[i]);
+       }
+#endif
+#ifndef HAVE_MMX1
+        /* PREFETCH has effect even for MOVSB instruction ;) */
+       __asm__ __volatile__ (
+               PREFETCH" (%0)\n"
+               PREFETCH" 64(%0)\n"
+               PREFETCH" 128(%0)\n"
+               PREFETCH" 192(%0)\n"
+               PREFETCH" 256(%0)\n"
+               : : "r" (from) );
+#endif
+        if(len >= MIN_LEN)
+       {
+         register unsigned long int delta;
+          /* Align destinition to MMREG_SIZE -boundary */
+          delta = ((unsigned long int)to)&(MMREG_SIZE-1);
+          if(delta)
+         {
+           delta=MMREG_SIZE-delta;
+           len -= delta;
+           small_memcpy(to, from, delta);
+         }
+         i = len >> 6; /* len/64 */
+         len&=63;
+        /*
+           This algorithm is top effective when the code consequently
+           reads and writes blocks which have size of cache line.
+           Size of cache line is processor-dependent.
+           It will, however, be a minimum of 32 bytes on any processors.
+           It would be better to have a number of instructions which
+           perform reading and writing to be multiple to a number of
+           processor's decoders, but it's not always possible.
+        */
+#ifdef HAVE_SSE /* Only P3 (may be Cyrix3) */
+       if(((unsigned long)from) & 15)
+       /* if SRC is misaligned */
+       for(; i>0; i--)
+       {
+               __asm__ __volatile__ (
+               PREFETCH" 320(%0)\n"
+               "movups (%0), %%xmm0\n"
+               "movups 16(%0), %%xmm1\n"
+               "movups 32(%0), %%xmm2\n"
+               "movups 48(%0), %%xmm3\n"
+               "movntps %%xmm0, (%1)\n"
+               "movntps %%xmm1, 16(%1)\n"
+               "movntps %%xmm2, 32(%1)\n"
+               "movntps %%xmm3, 48(%1)\n"
+               :: "r" (from), "r" (to) : "memory");
+               ((const unsigned char *)from)+=64;
+               ((unsigned char *)to)+=64;
+       }
+       else
+       /*
+          Only if SRC is aligned on 16-byte boundary.
+          It allows to use movaps instead of movups, which required data
+          to be aligned or a general-protection exception (#GP) is generated.
+       */
+       for(; i>0; i--)
+       {
+               __asm__ __volatile__ (
+               PREFETCH" 320(%0)\n"
+               "movaps (%0), %%xmm0\n"
+               "movaps 16(%0), %%xmm1\n"
+               "movaps 32(%0), %%xmm2\n"
+               "movaps 48(%0), %%xmm3\n"
+               "movntps %%xmm0, (%1)\n"
+               "movntps %%xmm1, 16(%1)\n"
+               "movntps %%xmm2, 32(%1)\n"
+               "movntps %%xmm3, 48(%1)\n"
+               :: "r" (from), "r" (to) : "memory");
+               ((const unsigned char *)from)+=64;
+               ((unsigned char *)to)+=64;
+       }
+#else
+       // Align destination at BLOCK_SIZE boundary
+       for(; ((int)to & (BLOCK_SIZE-1)) && i>0; i--)
+       {
+               __asm__ __volatile__ (
+#ifndef HAVE_MMX1
+               PREFETCH" 320(%0)\n"
+#endif
+               "movq (%0), %%mm0\n"
+               "movq 8(%0), %%mm1\n"
+               "movq 16(%0), %%mm2\n"
+               "movq 24(%0), %%mm3\n"
+               "movq 32(%0), %%mm4\n"
+               "movq 40(%0), %%mm5\n"
+               "movq 48(%0), %%mm6\n"
+               "movq 56(%0), %%mm7\n"
+               MOVNTQ" %%mm0, (%1)\n"
+               MOVNTQ" %%mm1, 8(%1)\n"
+               MOVNTQ" %%mm2, 16(%1)\n"
+               MOVNTQ" %%mm3, 24(%1)\n"
+               MOVNTQ" %%mm4, 32(%1)\n"
+               MOVNTQ" %%mm5, 40(%1)\n"
+               MOVNTQ" %%mm6, 48(%1)\n"
+               MOVNTQ" %%mm7, 56(%1)\n"
+               :: "r" (from), "r" (to) : "memory");
+               ((const unsigned char *)from)+=64;
+               ((unsigned char *)to)+=64;
+       }
+
+//     printf(" %d %d\n", (int)from&1023, (int)to&1023);
+       // Pure Assembly cuz gcc is a bit unpredictable ;)
+       if(i>=BLOCK_SIZE/64)
+               asm volatile(
+                       "xorl %%eax, %%eax      \n\t"
+                       ".balign 16             \n\t"
+                       "1:                     \n\t"
+                               "movl (%0, %%eax), %%ebx        \n\t"
+                               "movl 32(%0, %%eax), %%ebx      \n\t"
+                               "movl 64(%0, %%eax), %%ebx      \n\t"
+                               "movl 96(%0, %%eax), %%ebx      \n\t"
+                               "addl $128, %%eax               \n\t"
+                               "cmpl %3, %%eax                 \n\t"
+                               " jb 1b                         \n\t"
+
+                       "xorl %%eax, %%eax      \n\t"
+
+                               ".balign 16             \n\t"
+                               "2:                     \n\t"
+                               "movq (%0, %%eax), %%mm0\n"
+                               "movq 8(%0, %%eax), %%mm1\n"
+                               "movq 16(%0, %%eax), %%mm2\n"
+                               "movq 24(%0, %%eax), %%mm3\n"
+                               "movq 32(%0, %%eax), %%mm4\n"
+                               "movq 40(%0, %%eax), %%mm5\n"
+                               "movq 48(%0, %%eax), %%mm6\n"
+                               "movq 56(%0, %%eax), %%mm7\n"
+                               MOVNTQ" %%mm0, (%1, %%eax)\n"
+                               MOVNTQ" %%mm1, 8(%1, %%eax)\n"
+                               MOVNTQ" %%mm2, 16(%1, %%eax)\n"
+                               MOVNTQ" %%mm3, 24(%1, %%eax)\n"
+                               MOVNTQ" %%mm4, 32(%1, %%eax)\n"
+                               MOVNTQ" %%mm5, 40(%1, %%eax)\n"
+                               MOVNTQ" %%mm6, 48(%1, %%eax)\n"
+                               MOVNTQ" %%mm7, 56(%1, %%eax)\n"
+                               "addl $64, %%eax                \n\t"
+                               "cmpl %3, %%eax         \n\t"
+                               "jb 2b                          \n\t"
+
+#if CONFUSION_FACTOR > 0
+       // a few percent speedup on out of order executing CPUs
+                       "movl %5, %%eax         \n\t"
+                               "2:                     \n\t"
+                               "movl (%0), %%ebx       \n\t"
+                               "movl (%0), %%ebx       \n\t"
+                               "movl (%0), %%ebx       \n\t"
+                               "movl (%0), %%ebx       \n\t"
+                               "decl %%eax             \n\t"
+                               " jnz 2b                \n\t"
+#endif
+
+                       "xorl %%eax, %%eax      \n\t"
+                       "addl %3, %0            \n\t"
+                       "addl %3, %1            \n\t"
+                       "subl %4, %2            \n\t"
+                       "cmpl %4, %2            \n\t"
+                       " jae 1b                \n\t"
+                               : "+r" (from), "+r" (to), "+r" (i)
+                               : "r" (BLOCK_SIZE), "i" (BLOCK_SIZE/64), "i" (CONFUSION_FACTOR)
+                               : "%eax", "%ebx"
+               );
+
+       for(; i>0; i--)
+       {
+               __asm__ __volatile__ (
+#ifndef HAVE_MMX1
+               PREFETCH" 320(%0)\n"
+#endif
+               "movq (%0), %%mm0\n"
+               "movq 8(%0), %%mm1\n"
+               "movq 16(%0), %%mm2\n"
+               "movq 24(%0), %%mm3\n"
+               "movq 32(%0), %%mm4\n"
+               "movq 40(%0), %%mm5\n"
+               "movq 48(%0), %%mm6\n"
+               "movq 56(%0), %%mm7\n"
+               MOVNTQ" %%mm0, (%1)\n"
+               MOVNTQ" %%mm1, 8(%1)\n"
+               MOVNTQ" %%mm2, 16(%1)\n"
+               MOVNTQ" %%mm3, 24(%1)\n"
+               MOVNTQ" %%mm4, 32(%1)\n"
+               MOVNTQ" %%mm5, 40(%1)\n"
+               MOVNTQ" %%mm6, 48(%1)\n"
+               MOVNTQ" %%mm7, 56(%1)\n"
+               :: "r" (from), "r" (to) : "memory");
+               ((const unsigned char *)from)+=64;
+               ((unsigned char *)to)+=64;
+       }
+
+#endif /* Have SSE */
+#ifdef HAVE_MMX2
+                /* since movntq is weakly-ordered, a "sfence"
+                * is needed to become ordered again. */
+               __asm__ __volatile__ ("sfence":::"memory");
+#endif
+#ifndef HAVE_SSE
+               /* enables to use FPU */
+               __asm__ __volatile__ (EMMS:::"memory");
+#endif
+       }
+       /*
+        *      Now do the tail of the block
+        */
+       if(len) small_memcpy(to, from, len);
+       return retval;
+}
+
+
+#endif /* #if defined( HAVE_MMX2 ) || defined( HAVE_3DNOW ) || defined( HAVE_MMX ) */
diff --git a/plugins/memcpy/memcpy.c b/plugins/memcpy/memcpy.c
new file mode 100644 (file)
index 0000000..3fe9d92
--- /dev/null
@@ -0,0 +1,100 @@
+/*****************************************************************************
+ * memcpy.c : classic memcpy module
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $Id: memcpy.c,v 1.1 2001/12/03 16:18:37 sam Exp $
+ *
+ * Authors: Samuel Hocevar <sam@zoy.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+#define MODULE_NAME memcpy
+#include "modules_inner.h"
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include "defs.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "config.h"
+#include "common.h"
+#include "intf_msg.h"
+#include "threads.h"
+#include "mtime.h"
+#include "tests.h"
+
+#include "modules.h"
+#include "modules_export.h"
+
+/*****************************************************************************
+ * Local and extern prototypes.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list );
+static int  memcpy_Probe       ( probedata_t *p_data );
+
+/*****************************************************************************
+ * Build configuration tree.
+ *****************************************************************************/
+MODULE_CONFIG_START
+ADD_WINDOW( "Configuration for C memcpy module" )
+    ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
+MODULE_CONFIG_STOP
+
+MODULE_INIT_START
+    p_module->i_capabilities = MODULE_CAPABILITY_NULL
+                                | MODULE_CAPABILITY_MEMCPY;
+    p_module->psz_longname = "libc memcpy module";
+MODULE_INIT_STOP
+
+MODULE_ACTIVATE_START
+    memcpy_getfunctions( &p_module->p_functions->memcpy );
+MODULE_ACTIVATE_STOP
+
+MODULE_DEACTIVATE_START
+MODULE_DEACTIVATE_STOP
+
+/* Following functions are local */
+
+/*****************************************************************************
+ * Functions exported as capabilities. They are declared as static so that
+ * we don't pollute the namespace too much.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list )
+{
+    p_function_list->pf_probe = memcpy_Probe;
+#define F p_function_list->functions.memcpy
+    F.pf_fast_memcpy = memcpy;
+#undef F
+}
+
+/*****************************************************************************
+ * memcpy_Probe: returns a preference score
+ *****************************************************************************/
+static int memcpy_Probe( probedata_t *p_data )
+{
+    if( TestMethod( MEMCPY_METHOD_VAR, "memcpy" )
+         || TestMethod( MEMCPY_METHOD_VAR, "c" ) )
+    {
+        return( 999 );
+    }
+
+    /* This plugin always works */
+    return( 50 );
+}
+
diff --git a/plugins/memcpy/memcpy3dn.c b/plugins/memcpy/memcpy3dn.c
new file mode 100644 (file)
index 0000000..d691a9e
--- /dev/null
@@ -0,0 +1,114 @@
+/*****************************************************************************
+ * memcpy3dn.c : 3D Now! memcpy module
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $Id: memcpy3dn.c,v 1.1 2001/12/03 16:18:37 sam Exp $
+ *
+ * Authors: Samuel Hocevar <sam@zoy.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+#define MODULE_NAME memcpy3dn
+#include "modules_inner.h"
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include "defs.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "config.h"
+#include "common.h"
+#include "intf_msg.h"
+#include "threads.h"
+#include "mtime.h"
+#include "tests.h"
+
+#include "modules.h"
+#include "modules_export.h"
+
+/*****************************************************************************
+ * Local and extern prototypes.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list );
+static int  memcpy_Probe       ( probedata_t *p_data );
+void *      _M( fast_memcpy )  ( void * to, const void * from, size_t len );
+
+#undef HAVE_MMX
+#undef HAVE_MMX2
+#undef HAVE_SSE
+#undef HAVE_SSE2
+#define HAVE_3DNOW
+#include "fastmemcpy.h"
+
+/*****************************************************************************
+ * Build configuration tree.
+ *****************************************************************************/
+MODULE_CONFIG_START
+ADD_WINDOW( "Configuration for 3D Now! memcpy module" )
+    ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
+MODULE_CONFIG_STOP
+
+MODULE_INIT_START
+    p_module->i_capabilities = MODULE_CAPABILITY_NULL
+                                | MODULE_CAPABILITY_MEMCPY;
+    p_module->psz_longname = "3D Now! memcpy module";
+MODULE_INIT_STOP
+
+MODULE_ACTIVATE_START
+    memcpy_getfunctions( &p_module->p_functions->memcpy );
+MODULE_ACTIVATE_STOP
+
+MODULE_DEACTIVATE_START
+MODULE_DEACTIVATE_STOP
+
+/* Following functions are local */
+
+/*****************************************************************************
+ * Functions exported as capabilities. They are declared as static so that
+ * we don't pollute the namespace too much.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list )
+{
+    p_function_list->pf_probe = memcpy_Probe;
+#define F p_function_list->functions.memcpy
+    F.pf_fast_memcpy = _M( fast_memcpy );
+#undef F
+}
+
+/*****************************************************************************
+ * memcpy_Probe: returns a preference score
+ *****************************************************************************/
+static int memcpy_Probe( probedata_t *p_data )
+{
+    /* Test for 3D Now! support in the CPU */
+    if( !TestCPU( CPU_CAPABILITY_3DNOW ) )
+    {
+        return( 0 );
+    }
+
+    if( TestMethod( MEMCPY_METHOD_VAR, "memcpy3dn" )
+         || TestMethod( MEMCPY_METHOD_VAR, "3dn" ) )
+    {
+        return( 999 );
+    }
+
+    /* This plugin always works */
+    return( 100 );
+}
+
diff --git a/plugins/memcpy/memcpymmx.c b/plugins/memcpy/memcpymmx.c
new file mode 100644 (file)
index 0000000..67fbba9
--- /dev/null
@@ -0,0 +1,114 @@
+/*****************************************************************************
+ * memcpymmx.c : MMX memcpy module
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $Id: memcpymmx.c,v 1.1 2001/12/03 16:18:37 sam Exp $
+ *
+ * Authors: Samuel Hocevar <sam@zoy.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+#define MODULE_NAME memcpymmx
+#include "modules_inner.h"
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include "defs.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "config.h"
+#include "common.h"
+#include "intf_msg.h"
+#include "threads.h"
+#include "mtime.h"
+#include "tests.h"
+
+#include "modules.h"
+#include "modules_export.h"
+
+/*****************************************************************************
+ * Local and extern prototypes.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list );
+static int  memcpy_Probe       ( probedata_t *p_data );
+void *      _M( fast_memcpy )  ( void * to, const void * from, size_t len );
+
+#define HAVE_MMX
+#undef HAVE_MMX2
+#undef HAVE_SSE
+#undef HAVE_SSE2
+#undef HAVE_3DNOW
+#include "fastmemcpy.h"
+
+/*****************************************************************************
+ * Build configuration tree.
+ *****************************************************************************/
+MODULE_CONFIG_START
+ADD_WINDOW( "Configuration for MMX memcpy module" )
+    ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
+MODULE_CONFIG_STOP
+
+MODULE_INIT_START
+    p_module->i_capabilities = MODULE_CAPABILITY_NULL
+                                | MODULE_CAPABILITY_MEMCPY;
+    p_module->psz_longname = "MMX memcpy module";
+MODULE_INIT_STOP
+
+MODULE_ACTIVATE_START
+    memcpy_getfunctions( &p_module->p_functions->memcpy );
+MODULE_ACTIVATE_STOP
+
+MODULE_DEACTIVATE_START
+MODULE_DEACTIVATE_STOP
+
+/* Following functions are local */
+
+/*****************************************************************************
+ * Functions exported as capabilities. They are declared as static so that
+ * we don't pollute the namespace too much.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list )
+{
+    p_function_list->pf_probe = memcpy_Probe;
+#define F p_function_list->functions.memcpy
+    F.pf_fast_memcpy = _M( fast_memcpy );
+#undef F
+}
+
+/*****************************************************************************
+ * memcpy_Probe: returns a preference score
+ *****************************************************************************/
+static int memcpy_Probe( probedata_t *p_data )
+{
+    /* Test for MMX support in the CPU */
+    if( !TestCPU( CPU_CAPABILITY_MMX ) )
+    {
+        return( 0 );
+    }
+
+    if( TestMethod( MEMCPY_METHOD_VAR, "memcpymmx" )
+         || TestMethod( MEMCPY_METHOD_VAR, "mmx" ) )
+    {
+        return( 999 );
+    }
+
+    /* This plugin always works */
+    return( 100 );
+}
+
diff --git a/plugins/memcpy/memcpymmxext.c b/plugins/memcpy/memcpymmxext.c
new file mode 100644 (file)
index 0000000..6eb1ed5
--- /dev/null
@@ -0,0 +1,114 @@
+/*****************************************************************************
+ * memcpymmxext.c : MMX EXT memcpy module
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $Id: memcpymmxext.c,v 1.1 2001/12/03 16:18:37 sam Exp $
+ *
+ * Authors: Samuel Hocevar <sam@zoy.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+#define MODULE_NAME memcpymmxext
+#include "modules_inner.h"
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include "defs.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "config.h"
+#include "common.h"
+#include "intf_msg.h"
+#include "threads.h"
+#include "mtime.h"
+#include "tests.h"
+
+#include "modules.h"
+#include "modules_export.h"
+
+/*****************************************************************************
+ * Local and extern prototypes.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list );
+static int  memcpy_Probe       ( probedata_t *p_data );
+void *      _M( fast_memcpy )  ( void * to, const void * from, size_t len );
+
+#undef HAVE_MMX
+#define HAVE_MMX2
+#undef HAVE_SSE
+#undef HAVE_SSE2
+#undef HAVE_3DNOW
+#include "fastmemcpy.h"
+
+/*****************************************************************************
+ * Build configuration tree.
+ *****************************************************************************/
+MODULE_CONFIG_START
+ADD_WINDOW( "Configuration for MMX EXT memcpy module" )
+    ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
+MODULE_CONFIG_STOP
+
+MODULE_INIT_START
+    p_module->i_capabilities = MODULE_CAPABILITY_NULL
+                                | MODULE_CAPABILITY_MEMCPY;
+    p_module->psz_longname = "MMX EXT memcpy module";
+MODULE_INIT_STOP
+
+MODULE_ACTIVATE_START
+    memcpy_getfunctions( &p_module->p_functions->memcpy );
+MODULE_ACTIVATE_STOP
+
+MODULE_DEACTIVATE_START
+MODULE_DEACTIVATE_STOP
+
+/* Following functions are local */
+
+/*****************************************************************************
+ * Functions exported as capabilities. They are declared as static so that
+ * we don't pollute the namespace too much.
+ *****************************************************************************/
+static void memcpy_getfunctions( function_list_t * p_function_list )
+{
+    p_function_list->pf_probe = memcpy_Probe;
+#define F p_function_list->functions.memcpy
+    F.pf_fast_memcpy = _M( fast_memcpy );
+#undef F
+}
+
+/*****************************************************************************
+ * memcpy_Probe: returns a preference score
+ *****************************************************************************/
+static int memcpy_Probe( probedata_t *p_data )
+{
+    /* Test for MMX EXT support in the CPU */
+    if( !TestCPU( CPU_CAPABILITY_MMXEXT ) )
+    {
+        return( 0 );
+    }
+
+    if( TestMethod( MEMCPY_METHOD_VAR, "memcpymmxext" )
+         || TestMethod( MEMCPY_METHOD_VAR, "mmxext" ) )
+    {
+        return( 999 );
+    }
+
+    /* This plugin always works */
+    return( 200 );
+}
+
index 0bd8def0beb13c697dd0838540c839046303e704..d58a4eade1e70c3f7efded25d0c7860873ac3ab6 100644 (file)
@@ -2,7 +2,7 @@
  * input_ts.h: structures of the input not exported to other modules
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: input_ts.h,v 1.10 2001/07/12 23:06:54 gbazin Exp $
+ * $Id: input_ts.h,v 1.11 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Henri Fallon <henri@via.ecp.fr>
  *          Boris Dorès <babal@via.ecp.fr>
@@ -71,7 +71,7 @@ static __inline__ int read_network( int i_fd, char * p_base,
          i_bytes = p_sys->i_length - p_sys->i_offset;
     }
 
-    memcpy( p_base, p_sys->p_buffer + p_sys->i_offset, i_bytes );
+    pf_fast_memcpy( p_base, p_sys->p_buffer + p_sys->i_offset, i_bytes );
     p_sys->i_offset += i_bytes;
 
     return i_bytes;
index f530cecdc3a8927d5a4a31392fa4774218600427..3f19e15bb467d7d9fe88cfa566eca30af012426b 100644 (file)
@@ -2,7 +2,7 @@
  * mpeg_adec.c: MPEG audio decoder thread
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: mpeg_adec.c,v 1.3 2001/11/28 15:08:05 massiot Exp $
+ * $Id: mpeg_adec.c,v 1.4 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Michel Lespinasse <walken@via.ecp.fr>
@@ -69,7 +69,7 @@ static void         adec_Decode( adec_thread_t * );
 void _M( adec_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = adec_Probe;
-    p_function_list->functions.dec.pf_RunThread = adec_RunThread;
+    p_function_list->functions.dec.pf_run = adec_RunThread;
 }
 
 /*****************************************************************************
index 1c3d22839ab6fad81890c735777b5e0c1d507c30..33277f828596754f4f353e8da567b0ad97b60799 100644 (file)
@@ -2,7 +2,7 @@
  * video_parser.c : video parser thread
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: video_parser.c,v 1.4 2001/11/28 15:08:05 massiot Exp $
+ * $Id: video_parser.c,v 1.5 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Samuel Hocevar <sam@via.ecp.fr>
@@ -80,7 +80,7 @@ static void     BitstreamCallback       ( bit_stream_t *, boolean_t );
 void _M( vdec_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = mpeg_vdec_Probe;
-    p_function_list->functions.dec.pf_RunThread = mpeg_vdec_Run;
+    p_function_list->functions.dec.pf_run = mpeg_vdec_Run;
 }
 
 /*****************************************************************************
index b1e80cd60d3ef7884567e621d92fa67d5bd09a4b..a509d2378646ca75b31a0e485a2b485ef09cf828 100644 (file)
@@ -2,7 +2,7 @@
  * vout_sdl.c: SDL video output display method
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: vout_sdl.c,v 1.65 2001/11/28 15:08:05 massiot Exp $
+ * $Id: vout_sdl.c,v 1.66 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Pierre Baillet <oct@zoy.org>
@@ -594,20 +594,20 @@ static void vout_Display( vout_thread_t *p_vout )
                 SDL_LockYUVOverlay( p_vout->p_sys->p_overlay );
                 /* copy the data into video buffers */
                 /* Y first */
-                memcpy( p_vout->p_sys->p_overlay->pixels[0],
-                        p_vout->p_rendered_pic->p_y,
-                        p_vout->p_sys->p_overlay->h *
-                        p_vout->p_sys->p_overlay->pitches[0] );
+                pf_fast_memcpy( p_vout->p_sys->p_overlay->pixels[0],
+                                p_vout->p_rendered_pic->p_y,
+                                p_vout->p_sys->p_overlay->h *
+                                p_vout->p_sys->p_overlay->pitches[0] );
                 /* then V */
-                memcpy( p_vout->p_sys->p_overlay->pixels[1],
-                        p_vout->p_rendered_pic->p_v,
-                        p_vout->p_sys->p_overlay->h *
-                        p_vout->p_sys->p_overlay->pitches[1] / 2 );
+                pf_fast_memcpy( p_vout->p_sys->p_overlay->pixels[1],
+                                p_vout->p_rendered_pic->p_v,
+                                p_vout->p_sys->p_overlay->h *
+                                p_vout->p_sys->p_overlay->pitches[1] / 2 );
                 /* and U */
-                memcpy( p_vout->p_sys->p_overlay->pixels[2],
-                        p_vout->p_rendered_pic->p_u,
-                        p_vout->p_sys->p_overlay->h *
-                        p_vout->p_sys->p_overlay->pitches[2] / 2 );
+                pf_fast_memcpy( p_vout->p_sys->p_overlay->pixels[2],
+                                p_vout->p_rendered_pic->p_u,
+                                p_vout->p_sys->p_overlay->h *
+                                p_vout->p_sys->p_overlay->pitches[2] / 2 );
 
                 OutputCoords( p_vout->p_rendered_pic, 1,
                               p_vout->p_sys->i_width,
index 395017447c449dc41f5ecb42ad602775b3ee80c3..8fbafb6282d33abdd8665207ef812b6e20cf5584 100644 (file)
@@ -2,7 +2,7 @@
  * spu_decoder.c : spu decoder thread
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: spu_decoder.c,v 1.4 2001/11/28 15:08:06 massiot Exp $
+ * $Id: spu_decoder.c,v 1.5 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -76,7 +76,7 @@ static int  ParseRLE             ( spudec_thread_t *, subpicture_t *, u8 * );
 void _M( spu_dec_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = spu_dec_Probe;
-    p_function_list->functions.dec.pf_RunThread = spu_dec_Run;
+    p_function_list->functions.dec.pf_run = spu_dec_Run;
 }
 
 /*****************************************************************************
index ad5d1813e1030f7f429916114edc2127a162bdf6..404674ec016286b9c0a914d6f9172278587c1269 100644 (file)
@@ -585,8 +585,8 @@ static int VCDRead( input_thread_t * p_input,
     
             if( U32_AT(p_buffer) != 0x1B9 )
             {
-                memcpy( p_data->p_buffer, p_buffer + i_index,
-                        6 + i_packet_size );
+                pf_fast_memcpy( p_data->p_buffer, p_buffer + i_index,
+                                6 + i_packet_size );
                 i_index += ( 6 + i_packet_size );
     
             }
index a3be45230f6a282f5c2719d6ba1961a2ecd8d570..dc90fd3f4d067cfb17ceffeb600da4da54d23790 100644 (file)
@@ -2,7 +2,7 @@
  * vout_xvideo.c: Xvideo video output display method
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: vout_xvideo.c,v 1.33 2001/12/03 13:58:59 massiot Exp $
+ * $Id: vout_xvideo.c,v 1.34 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Shane Harper <shanegh@optusnet.com.au>
  *          Vincent Seguin <seguin@via.ecp.fr>
@@ -677,12 +677,12 @@ static void vout_Display( vout_thread_t *p_vout )
         break;
 
     case YUV_420_PICTURE:
-        memcpy( p_vout->p_sys->p_xvimage->data,
-                p_vout->p_rendered_pic->p_y, i_size );
-        memcpy( p_vout->p_sys->p_xvimage->data + ( i_size ),
-                p_vout->p_rendered_pic->p_v, i_size / 4 );
-        memcpy( p_vout->p_sys->p_xvimage->data + ( i_size ) + ( i_size / 4 ),
-                p_vout->p_rendered_pic->p_u, i_size / 4 );
+        pf_fast_memcpy( p_vout->p_sys->p_xvimage->data,
+                        p_vout->p_rendered_pic->p_y, i_size );
+        pf_fast_memcpy( p_vout->p_sys->p_xvimage->data + ( i_size ),
+                        p_vout->p_rendered_pic->p_v, i_size / 4 );
+        pf_fast_memcpy( p_vout->p_sys->p_xvimage->data + ( i_size ) + ( i_size / 4 ),
+                        p_vout->p_rendered_pic->p_u, i_size / 4 );
         break;
     }
 
index c983ea57a73430737277946125027e344c27e8d5..c8307c98f1ee83d7fa8e6afdc2277f724a95adc5 100644 (file)
@@ -2,7 +2,7 @@
  * input_dec.c: Functions for the management of decoders
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: input_dec.c,v 1.18 2001/11/30 22:52:40 gbazin Exp $
+ * $Id: input_dec.c,v 1.19 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -80,7 +80,7 @@ vlc_thread_t input_RunDecoder( input_thread_t * p_input,
     /* Spawn the decoder thread */
     if ( vlc_thread_create( &thread_id, "decoder",
          (vlc_thread_func_t)p_es->p_module->
-             p_functions->dec.functions.dec.pf_RunThread,
+             p_functions->dec.functions.dec.pf_run,
          (void *)p_es->p_config) ) 
     {
         intf_ErrMsg( "input error: can't spawn decoder thread \"%s\"",
index e5edc8ed1fb4c0d81607972ab4f982733f3ada26..bb24a2885da8ac8b3b8fa69af0898cd62da02375 100644 (file)
@@ -4,7 +4,7 @@
  * and spawn threads.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: main.c,v 1.127 2001/11/28 15:08:06 massiot Exp $
+ * $Id: main.c,v 1.128 2001/12/03 16:18:37 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
 #define OPT_YUV                 183
 #define OPT_DOWNMIX             184
 #define OPT_IMDCT               185
-#define OPT_DVDCSS_METHOD       186
-#define OPT_DVDCSS_VERBOSE      187
+#define OPT_MEMCPY              186
+#define OPT_DVDCSS_METHOD       187
+#define OPT_DVDCSS_VERBOSE      188
 
 #define OPT_SYNCHRO             190
 #define OPT_WARNING             191
@@ -216,8 +217,9 @@ static const struct option longopts[] =
     {   "channels",         0,          0,      OPT_CHANNELS },
     {   "channelserver",    1,          0,      OPT_CHANNELSERVER },
 
-    /* Synchro options */
+    /* Misc options */
     {   "synchro",          1,          0,      OPT_SYNCHRO },
+    {   "memcpy",           1,          0,      OPT_MEMCPY },
     {   0,                  0,          0,      0 }
 };
 
@@ -225,13 +227,13 @@ static const struct option longopts[] =
 static const char *psz_shortopts = "hHvgt:T:u:a:s:c:I:A:V:";
 
 /*****************************************************************************
- * Global variable program_data - these are the only ones, see main.h and
- * modules.h
+ * Global variables - these are the only ones, see main.h and modules.h
  *****************************************************************************/
 main_t        *p_main;
 module_bank_t *p_module_bank;
 aout_bank_t   *p_aout_bank;
 vout_bank_t   *p_vout_bank;
+void*       ( *pf_fast_memcpy ) ( void *, const void *, size_t );
 
 /*****************************************************************************
  * Local prototypes
@@ -375,6 +377,24 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     aout_InitBank();
     vout_InitBank();
 
+    /*
+     * Choose the best memcpy module
+     */
+    p_main->p_memcpy_module = module_Need( MODULE_CAPABILITY_MEMCPY, NULL );
+
+    if( p_main->p_memcpy_module == NULL )
+    {
+        intf_ErrMsg( "intf error: no suitable memcpy module, "
+                     "using libc default" );
+        pf_fast_memcpy = memcpy;
+    }
+    else
+    {
+#define f p_main->p_memcpy_module->p_functions->memcpy.functions.memcpy
+        pf_fast_memcpy = f.pf_fast_memcpy;
+#undef f
+    }
+
     /*
      * Initialize shared resources and libraries
      */
@@ -423,6 +443,11 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
         }
     }
 
+    /*
+     * Free memcpy module
+     */
+    module_Unneed( p_main->p_memcpy_module );
+
     /*
      * Free module, aout and vout banks
      */
@@ -790,10 +815,13 @@ static int GetConfiguration( int *pi_argc, char *ppsz_argv[], char *ppsz_env[] )
             main_PutPszVariable( INPUT_CHANNEL_SERVER_VAR, optarg );
             break;
 
-        /* Synchro options */
+        /* Misc options */
         case OPT_SYNCHRO:                                      
             main_PutPszVariable( VPAR_SYNCHRO_VAR, optarg );
             break;
+        case OPT_MEMCPY:                                      
+            main_PutPszVariable( MEMCPY_METHOD_VAR, optarg );
+            break;
             
         /* Internal error: unknown option */
         case '?':
@@ -867,6 +895,7 @@ static void Usage( int i_fashion )
           "\n  -I, --intf <module>            \tinterface method"
           "\n  -v, --verbose                  \tverbose mode (cumulative)"
           "\n      --stdout <filename>        \tredirect console stdout"
+          "\n      --memcpy <module>          \tmemcpy method"
           "\n"
           "\n      --noaudio                  \tdisable audio"
           "\n  -A, --aout <module>            \taudio output method"
@@ -916,7 +945,8 @@ static void Usage( int i_fashion )
         "\n  " INTF_METHOD_VAR "=<method name>        \tinterface method"
         "\n  " INTF_INIT_SCRIPT_VAR "=<filename>              \tinitialization script"
         "\n  " INTF_CHANNELS_VAR "=<filename>         \tchannels list"
-        "\n  " INTF_STDOUT_VAR "=<filename>           \tredirect console stdout" );
+        "\n  " INTF_STDOUT_VAR "=<filename>           \tredirect console stdout"
+        "\n  " MEMCPY_METHOD_VAR "=<method name>      \tmemcpy method" );
 
     /* Audio parameters */
     intf_MsgImm( "\nAudio parameters:"
@@ -1164,7 +1194,7 @@ static int CPUCapabilities( void )
     {
         i_capabilities |= CPU_CAPABILITY_MMXEXT;
 
-#ifdef HAVE_SSE
+#ifdef CAN_COMPILE_SSE
         /* We test if OS support the SSE instructions */
         i_illegal = 0;
         if( setjmp( env ) == 0 )
@@ -1201,7 +1231,7 @@ static int CPUCapabilities( void )
     /* list these additional capabilities */
     cpuid( 0x80000001 );
 
-#ifdef HAVE_3DNOW
+#ifdef CAN_COMPILE_3DNOW
     if( i_edx & 0x80000000 )
     {
         i_illegal = 0;
@@ -1231,7 +1261,7 @@ static int CPUCapabilities( void )
     /* Test for Altivec */
     signal( SIGILL, InstructionSignalHandler );
 
-#ifdef HAVE_ALTIVEC
+#ifdef CAN_COMPILE_ALTIVEC
     i_illegal = 0;
     if( setjmp( env ) == 0 )
     {