Commit 95a333bf authored by Sam Hocevar's avatar Sam Hocevar

  * Borrowed MPlayer's fast memcpy() routines. Best is autodetected, choose
    "--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.
parent c4535c4c
......@@ -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
......
......@@ -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
......
......@@ -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 \
......
This diff is collapsed.
......@@ -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"
......
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
......
......@@ -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
......
usr/lib
usr/share/doc/libdvdcss0
usr/share/doc/libdvdcss1
......@@ -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
......
......@@ -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>
......
......@@ -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
......
......@@ -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 );
......
......@@ -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
*/
......@@ -326,16 +329,11 @@
/* 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
......
......@@ -97,9 +97,15 @@
/* 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
......@@ -203,16 +209,16 @@
#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
......
......@@ -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;
}
}
......
......@@ -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 */
......
......@@ -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;
......
......@@ -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; \
......@@ -149,6 +150,8 @@
# 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()
......
......@@ -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;
}
/*****************************************************************************
......
......@@ -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: Stphane 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;
}
/*****************************************************************************
......
......@@ -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 */
......
......@@ -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>
* Stphane 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 )
......
......@@ -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;
}
/*****************************************************************************
......
###############################################################################
# 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) $@
/*****************************************************************************
* 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.