changeset 958:162a78d3cc08

FreeBSD support by Vladimir Kushnir vkushnir@Alfacom.net
author arpi_esp
date Sun, 03 Jun 2001 00:31:41 +0000
parents 1a8811b0da3b
children 197ae86f68d4
files DOCS/FREEBSD Makefile configure configure.FreeBSD libvo/vo_sdl.c linux/getch2.c loader/dshow/Makefile mplayer.c stream.c vcd_read_fbsd.h
diffstat 10 files changed, 1478 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DOCS/FREEBSD	Sun Jun 03 00:31:41 2001 +0000
@@ -0,0 +1,19 @@
+Notes for FreeBSD users
+=======================
+
+1. To build the package you will need GNU make (gmake, /usr/ports/devel/gmake), 
+native BSD make will not work.
+
+2. Configure script is different for FreeBSD; use configure.FreeBSD instead.
+
+3. To run mplayer you will need to re-compile the kernel with 
+"options USER_LDT" (unless you are running -CURRENT, where this is default).
+
+4. There's no VCD (well, it is not finished) or DVD support for FreeBSD yet. 
+Feel free to add them :-)
+
+Enjoy (as do I)!
+
+--
+Vladimir Kushnir
+
--- a/Makefile	Sun Jun 03 00:30:10 2001 +0000
+++ b/Makefile	Sun Jun 03 00:31:41 2001 +0000
@@ -64,7 +64,7 @@
 	@for a in mp3lib libac3 libmpeg2 libvo opendivx encore loader/DirectShow ; do $(MAKE) -C $$a all ; done
 
 $(PRG):	.depend mplayer.o $(OBJS) loader/libloader.a $(DS_DEP) libmpeg2/libmpeg2.a opendivx/libdecore.a $(COMMONLIBS) encore/libencore.a
-	$(CC) $(CFLAGS) -o $(PRG) mplayer.o $(OBJS) $(XMM_LIBS) $(LIRC_LIBS) $(A_LIBS) -lm $(TERMCAP_LIB) -Lloader -lloader $(DS_LIB) -ldl -Llibmpeg2 -lmpeg2 -Lopendivx -ldecore $(VO_LIBS) -Llibao2 -lao $(CSS_LIB) -Lencore -lencore -lpthread
+	$(CC) $(CFLAGS) -o $(PRG) mplayer.o $(OBJS) $(XMM_LIBS) $(LIRC_LIBS) $(A_LIBS) -lm $(TERMCAP_LIB) -Lloader -lloader $(DS_LIB) -Llibmpeg2 -lmpeg2 -Lopendivx -ldecore $(VO_LIBS) -Llibao2 -lao $(CSS_LIB) -Lencore -lencore $(ARCH_LIBS)
 
 # $(PRG_HQ):	.depend mplayerHQ.o $(OBJS) loader/libloader.a libmpeg2/libmpeg2.a opendivx/libdecore.a $(COMMONLIBS) encore/libencore.a
 # 	$(CC) $(CFLAGS) -o $(PRG_HQ) mplayerHQ.o $(OBJS) $(XMM_LIBS) $(LIRC_LIBS) $(A_LIBS) -lm $(TERMCAP_LIB) -Lloader -lloader -ldl -Llibmpeg2 -lmpeg2 -Lopendivx -ldecore $(VO_LIBS) -Lencore -lencore -lpthread
--- a/configure	Sun Jun 03 00:30:10 2001 +0000
+++ b/configure	Sun Jun 03 00:31:41 2001 +0000
@@ -894,6 +894,7 @@
 DS_DEP = $_dshowdep
 DS_LIB = $_dshowlib
 prefix = $_prefix
+ARCH_LIBS = -ldl -lpthread
 
 EOF
 # echo 'CFLAGS=$(OPTFLAGS) -Wall -DMPG12PLAY' >> config.mak
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configure.FreeBSD	Sun Jun 03 00:31:41 2001 +0000
@@ -0,0 +1,1282 @@
+#!/bin/sh
+
+#
+# MPlayer configurator.   (C) 2000 Pontscho/fresh!mindworkz
+#				   pontscho@makacs.poliod.hu
+#
+# Changes in reversed order:
+#
+# 2001/05/40 by LGB
+#  - added --prefix support
+#
+# 2001/05/22 by Nick Kurshev
+#  - added definition of CPU clone
+#
+# 2001/04/16 by LGB
+#  - added libcss stuffs
+#
+# 2001/04/15 by Pontscho
+#  - added --disable-select option
+#  - added X11DIR variable in config.mak and fix syncfb Makefile -L/usr/X11/lib bug 
+#
+# 2001/03/24 by Mike Graffam:
+#  - added autodetect code for XF86VidMode, along with explicit --enable-vm
+#
+# 2001/03/22 by Bivanbi:
+#  - new option: --cc  (to specify C compiler path+name)
+#
+# 2001/03/08 by LGB:
+#  - DGA detect-o-matic :)
+#  - '--disable-dga' option to force disabling DGA vo driver compiling into mplayer
+#  - line about '--enable-dga' is added to the help message
+#
+# 2001/02/26 by A'rpi:
+#  - added DGA option:  --enable-dga
+#  - no notify if --with-win32libdir used [Tibcu]
+#
+# 2001/02/25 by LGB:
+#  - TMPDIR or TEMPDIR variable is honored during tests for temporary files
+#  - ChangeLog inside configure was reversed ;-)
+#
+# some changes by A'rpi/ESP-team:
+#  - added 'athlon' target for the new athlongcc [Ian Kumlien]
+#  - applied _win32libdir=-L patch by Magnus Pfeffer
+#
+# some changes by LGB:
+#  - Ehhh, AMD K6-2 returns with cpuid 5 ;-) Changing back Arpi's last change :)
+#    More info: AMD K6-2 reports with family 5, duron with 6, so I attached
+#    much finer CPU type detection based on Linux kernel's one :)
+#    (k5: 5, model<6, k6: 5, model>=6, k7: 6, model=any)
+#  - On some exit point (error) temporary files were not deleted. Fixed.
+#  - $TMP and $TMP2 are renamed to $TMPC and $TMPO ;-)
+#  - Some useless { ... } are removed
+#
+# some changes by A'rpi/ESP-team:
+#  - the --with-win32libdir patch by Aaron Hope applied
+#  - some english bugfix again :)
+#  - cpu type selection changed:
+#    ( k7->k6->k5-> ) || (i686->pentiumpro-> ) pentium-> i486 -> i386 -> error!
+#  - cpu type for AMD/family=5 changed k6->k5
+#
+# some changes by LGB (Gábor Lénárt):
+#  - SOME gcc may support 'k7', so I added tests for ALL CPU type optimization
+#    switches with the ability to find out the best optimization for your CPU.
+#  - Help moved to the begining to avoid tests if user only wants help.
+#  - A one lined help to indicate detailed help for users
+#  - Fixed /tmp race (PIDs can be predicted, I added random numbers as well)
+#
+# some changes by A'rpi/ESP-team:
+#  - some english bugfix :)
+#  - removed _??exists flags, _?? is enough...
+#  - creating only config.mak files instead of whole Makefiles
+#
+# --
+
+
+# LGB: Help moved here.
+
+if [ "$1" = "--help" -o "$1" = "-help" -o "$1" = "-h" ]; then
+cat << EOF
+
+usage: $0 [options]
+
+params:
+        --cc                    use this C compiler to build MPlayer [gcc]
+	--prefix=DIR		use this prefix for installing mplayer [/usr/local]
+	--enable-debug[=1-3]	compile debugging information into mplayer [disable]
+	--enable-profile	compile profiling information into mplayer [disable]
+        --enable-mmx            build with mmx support [autodetect]
+        --enable-mmx2           build with mmx2 support (PIII, Athlon) [autodetect]
+        --enable-3dnow          build with 3dnow! support [autodetect]
+        --enable-3dnowex        build with 3dnow-dsp! support (K7) [autodetect]
+        --enable-sse            build with sse support [autodetect]
+        --enable-gl             build with OpenGL render support [autodetect]
+        --enable-dga            build with DGA support [autodetect]
+        --enable-svga           build with SVGAlib support [autodetect]
+        --enable-sdl            build with SDL render support [autodetect]
+        --enable-mga            build with mga_vid support [autodetect, if /dev/mga_vid
+                                is available]
+	--enable-xmga           build with mga_vid X Window support [autodetect,
+				if both /dev/mga_vid and x11 are available]
+        --enable-xv             build with Xv render support for X 4.x [autodetect]
+	--enable-vm		build with XF86VidMode support for x11 driver
+        --enable-x11            build with X11 render support [autodetect]
+	--enable-fbdev		build with FBDev render support [_not_ autodetected]
+	--enable-mlib		build with MLIB support ( only Solaris )
+
+	--enable-termcap	use termcap database for key codes
+	--enable-xmmp	        use XMMP audio drivers
+	--enable-lirc	        enable LIRC (remote control) support
+
+	--disable-select        disable audio select() support ( for example required this
+	                        option ALSA or Vortex2 driver )
+
+	--disable-dshow         disable DirectShow support (if you don't have
+                                C++ compiler&libs, or you've found dshow codecs
+                                slower than old VfW ones)
+
+	--disable-fastmemcpy    disable 3dnow/sse/mmx optimized memcpy()
+
+        --with-x11libdir=DIR    X library files are in DIR
+        --with-win32libdir=DIR  windows codec files
+        --with-csslibdir=DIR    directory contains libcss.so shared library
+        --with-cssincdir=DIR    directory contains libcss header file (css.h)
+				(--with-css* only needed, if libCSS autodetect fails)
+
+	--size-x=SIZE		default screen width
+	--size-y=SIZE		default screen height
+EOF
+exit 0
+fi
+
+# LGB: Some inital help
+
+echo "You can get detailed help on configure with: $0 --help"
+echo "Please wait while ./configure discovers your software and hardware environment!"
+
+# LGB: temporary files
+
+TMPC="mplayer-conf-${RANDOM}-$$-${RANDOM}.c"
+TMPO="mplayer-conf-${RANDOM}-$$-${RANDOM}.o"
+
+if [ ! -z $TMPDIR ]; then
+	TMPC="${TMPDIR}/${TMPC}"
+	TMPO="${TMPDIR}/${TMPO}"
+elif [ ! -z $TEMPDIR ]; then
+	TMPC="${TEMPDIR}/${TMPC}"
+	TMPO="${TEMPDIR}/${TMPO}"
+else
+	TMPC="/tmp/${TMPC}"
+	TMPO="/tmp/${TMPO}"
+fi
+
+# ---
+
+# config files
+CCONF='config.h'
+MCONF='config.mak'
+
+# ---  Check for C compiler:
+
+_cc=gcc
+_x11=auto
+
+_x11libdir=
+if [ -e /usr/X11R6 ]; then
+ _x11libdir=-L/usr/X11R6/lib
+else
+ if [ -e /usr/X11 ]; then
+  _x11libdir=-L/usr/X11/lib
+ fi
+fi
+
+for ac_option
+do
+ case "$ac_option" in
+  --cc=*)
+        _cc=`echo $ac_option | cut -d '=' -f 2`
+        ;;
+  --with-x11libdir=*)
+        _x11libdir=-L`echo $ac_option | cut -d '=' -f 2`
+        ;;
+  --enable-x11)
+        _x11=yes
+        ;;
+  --disable-x11)
+        _x11=no
+        ;;
+ esac
+done
+
+# ---
+
+pname=`sysctl -n hw.model`
+pparam=`cat /var/run/dmesg.boot | grep Features | cut -d '<' -f 2 | cut -d '>' -f 1 | sed 's/,/ /g'`
+pvendor=`cat /var/run/dmesg.boot | grep Origin | cut -d '"' -f 2 | cut -d '"' -f 1`
+pfamily=`cat /var/run/dmesg.boot | grep Origin | cut -d '0x' -f 2 | cut -c 2`
+pmodel=`cat /var/run/dmesg.boot | grep Origin | cut -d '0x' -f 2 | cut -c 3`
+pstepping=`cat /var/run/dmesg.boot | grep Stepping | cut -d 'Stepping' -f 2 | cut -c 11`
+
+_mmx=no
+_mmx2=no
+_3dnow=no
+_3dnowex=no
+_mtrr=no
+_sse=no
+
+_mga=no
+_gl=no
+_sdl=no
+_xv=no
+_vm=no
+_xdpms=no
+_3dfx=no
+_syncfb=no
+_mlib=no
+_mpg123=no
+_xmga=no
+_dga=no
+_dga2=no
+_svga=no
+_fbdev=no
+_lirc=no
+_css=no
+_dshow=yes
+_fastmemcpy=yes
+
+_x=1
+_y=1
+
+_gllib=
+_sdllib=
+_xvlib=
+_x11lib=
+
+_select='#define HAVE_AUDIO_SELECT'
+
+_gui=no;
+
+for i in `echo $pparam`; do
+
+ case "$i" in
+  3DNow!)
+        _3dnow=yes
+        _mpg123=yes
+        ;;
+  DSP)
+        _3dnow=yes
+        _3dnowex=yes
+        _mpg123=yes
+        ;;
+  MMX)
+        _mmx=yes
+        ;;
+  MTRR)
+        _mtrr=yes
+        ;;
+  SSE)
+        _sse=yes
+        _mmx2=yes
+        ;;
+  SSE2)
+        _sse=yes
+        _mmx2=yes
+        ;;
+ esac
+
+done
+
+
+_win32libdirnotify=no
+if [ -e /usr/lib/win32 ]; then
+ _win32libdir=/usr/lib/win32
+else
+ if [ -e /usr/local/lib/win32 ]; then
+  _win32libdir=/usr/local/lib/win32
+ else
+# This is our default:
+  _win32libdir=/usr/lib/win32
+  _win32libdirnotify=yes
+ fi
+fi
+
+
+if [ -e /dev/mga_vid ]; then
+ _mga=yes
+ _syncfb=yes
+fi
+
+proc=pentium
+iproc=586
+
+case "$pvendor" in
+ AuthenticAMD)
+   case "$pfamily" in
+    3)
+      proc=i386
+      iproc=386
+      ;;
+    4)
+      proc=i486
+      iproc=486
+      ;;
+    5)
+      if [ $pmodel -ge 6 ]; then	# LGB: models are: K5/SSA5 K5 K5 K5 ? ? K6 K6 K6-2 K6-3 
+    	    proc=k6
+      else
+    	    proc=k5
+      fi
+      iproc=586
+      ;;
+    6|7)				# LGB: Though it seems Athlon CPUs returns with "6"
+      proc=k7
+      iproc=686
+      ;;
+    *)
+      proc=pentium
+      iproc=586
+      ;;
+   esac
+   ;;
+ GenuineIntel)
+   case "$pfamily" in
+    3)
+      proc=i386
+      iproc=386
+      ;;
+    4)
+      proc=i486
+      iproc=486
+      ;;
+    5)
+      proc=pentium
+      iproc=586
+      ;;
+    6)
+      proc=i686
+      iproc=686
+      ;;
+    *)
+      proc=pentium
+      iproc=586
+      ;;
+   esac
+   ;;
+ unknown)              # added by Gabucino - upon Tibcu's request
+   case "$pfamily" in
+    3)
+      proc=i386
+      iproc=386
+      ;;
+    4)
+      proc=i486
+      iproc=486
+      ;;
+    *)
+      proc=pentium
+      iproc=586
+      ;;
+   esac
+   ;;
+ *)
+   proc=pentium
+   iproc=586
+   ;;
+esac
+
+# ---
+
+cat > $TMPC << EOF
+int main( void ) { return 0; }
+EOF
+
+# check that gcc supports our cpu, if not, fallback to pentium
+# LGB: check -mcpu and -march swithing step by step with enabling
+# to fall back till 386.
+
+#echo -n "Checking your GCC CPU optimalization abilities: "
+if [ "$proc" = "k7" ]; then
+#	echo -n "trying k7  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=athlon
+fi
+if [ "$proc" = "athlon" ]; then
+#	echo -n "trying athlon  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=k6
+fi
+if [ "$proc" = "k6" ]; then
+#	echo -n "trying k6  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=k5
+fi
+if [ "$proc" = "k5" ]; then
+#	echo -n "trying k5  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=pentium
+fi
+if [ "$proc" = "i686" ]; then
+#	echo -n "trying i686  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=pentiumpro
+fi
+if [ "$proc" = "pentiumpro" ]; then
+#	echo -n "trying pentiumpro  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=pentium
+fi
+if [ "$proc" = "pentium" ]; then
+#	echo -n "trying pentium  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=i486
+fi
+if [ "$proc" = "i486" ]; then
+#	echo -n "trying i486  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=i386
+fi
+if [ "$proc" = "i386" ]; then
+#	echo -n "trying i386  "
+	$_cc $TMPC -o $TMPO -march=$proc -mcpu=$proc > /dev/null || proc=error
+fi
+if [ "$proc" = "error" ]; then
+	echo
+	echo "Your gcc does not support even \"i386\" for '-march' and '-mcpu'." >&2
+	rm -f $TMPC $TMPO
+	exit
+fi
+#echo "DONE (${proc})."
+
+
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO -lvgagl -lvga > /dev/null && _svga=yes
+
+$_cc $TMPC -o $TMPO -pthread > /dev/null || \
+ { echo "Lib pthread not found."; rm -f $TMPC $TMPO ; exit 1; }
+
+# Atmosfear: added SDL versioncheck and autodetect; removed warnings.
+_sdl=no
+if $_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO -L/usr/lib/ -L/usr/local/lib/ -lSDL-1.1 -pthread > /dev/null ; then
+	if test `sdl11-config --version | sed s/[=[:punct:]=]//g` -gt 116 ; then
+		if test `sdl11-config --version | sed s/[=[:punct:]=]//g` -lt 121 ; then
+			_sdlbuggy='#define BUGGY_SDL'
+		else	
+			_sdlbuggy='#undef BUGGY_SDL'
+		fi	
+		_sdl=yes
+	else
+		_sdl=outdated
+	fi
+fi	
+
+# Atmosfear: added libcss autodetect
+_css=no
+if test -e "/usr/local/lib/libcss.so" ; then
+	_csslibdir="/usr/local/lib/"
+	if test -e "/usr/local/include/css.h" ; then
+		_cssincdir="/usr/local/include"
+		_css=yes
+	fi	
+else
+	if test -e "/usr/lib/libcss.so" ; then
+		_csslibdir="/usr/lib/"
+		if test -e "/usr/include/css.h" ; then
+			_cssincdir="/usr/include/"
+			_css=yes
+		fi	
+	fi
+fi
+	
+_termcap=no
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO -ltermcap > /dev/null && _termcap=yes
+
+_png=no
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO -lpng -lz> /dev/null && _png=yes
+
+_binutils=no
+as libac3/downmix/downmix_i386.S -o $TMPO > /dev/null && _binutils=yes
+
+# ----------- Check X11 and related libs (GL, Xxf86vm, Xv, DGA) --------------
+
+if [ $_x11 = auto ]; then
+  _x11=no
+  $_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext > /dev/null && _x11=yes
+fi
+
+if [ $_x11 = yes ]; then
+
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXdpms > /dev/null && _xdpms=yes
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXv > /dev/null && _xv=yes
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXxf86vm > /dev/null && _vm=yes
+
+if $_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL > /dev/null; then
+_gl=yes
+elif $_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL -pthread > /dev/null; then
+_gl=yes
+fi
+
+cat > $TMPC << EOF
+#include <GL/gl.h>
+int main( void ) { return 0; }
+EOF
+
+if $_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL > /dev/null; then
+elif $_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL -pthread > /dev/null;then 
+else 
+_gl=no; echo "GL includes not found!"
+fi
+
+cat > $TMPC << EOF
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/xf86dga.h>
+int main (void) { return 0;}
+EOF
+
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm > /dev/null && _dga=yes
+# Note: the -lXxf86vm library is the VideoMode extension and though it's
+# not needed for DGA, AFAIK every distribution packages together with DGA
+# stuffs named 'X extensions' or something similar. This check can be usefull
+# for further mplayer versions to set resolution by mplayer itself.
+# If you run into problems, remove '-lXxf86vm'.
+
+# Check if DGA is 2.0 or greater
+cat > $TMPC << EOF
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/xf86dga.h>
+int main (void) { XDGAMode mode; XDGADevice device; return 0;}
+EOF
+
+_dga2=no
+$_cc -I/usr/local/include -I/usr/X11R6/include -L/usr/local/lib $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm > /dev/null && _dga2=yes
+
+fi
+
+rm -f $TMPC $TMPO
+
+# ---
+
+# check for the parameters.
+
+_prefix="/usr/local"
+
+for ac_option
+do
+ case "$ac_option" in
+  --enable-profile)
+  	_profile='-p'
+	;;
+  --enable-debug)
+  	_debug='-g'
+	;;
+  --enable-debug=*)
+        _debug=`echo -n '-g'; echo $ac_option | cut -d '=' -f 2`
+	;;
+  --enable-css)
+	_css=yes
+	;;
+  --enable-png)
+	_png=yes
+	;;
+  --enable-sse)
+        _sse=yes
+        ;;
+  --enable-3dnow)
+        _3dnow=yes
+        ;;
+  --enable-3dnowex)
+        _3dnow=yes
+        _3dnowex=yes
+        ;;
+  --enable-mmx)
+        _mmx=yes
+        ;;
+  --enable-mmx2)
+        _mmx2=yes
+        ;;
+  --enable-mtrr)
+  	_mtrr=yes
+	;;
+  --enable-gl)
+        _gl=yes
+        ;;
+  --enable-sdl)
+        _sdl=yes
+        ;;
+  --enable-mga)
+        _mga=yes
+        ;;
+  --enable-xmga)
+        _xmga=yes
+        ;;	
+  --enable-svga)
+        _svga=yes
+        ;;
+  --enable-dga)
+        _dga=yes
+        ;;
+  --enable-dga2)
+        _dga2=yes
+        ;;
+  --enable-xv)
+        _xv=yes
+        ;;
+  --enable-vm)
+        _vm=yes
+        ;;
+  --enable-3dfx)
+        _3dfx=yes
+        ;;
+  --enable-syncfb)
+        _syncfb=yes
+        ;;
+  --enable-fbdev)
+  	_fbdev=yes
+	;;
+  --enable-mlib)
+	_mlib=yes
+	;;
+  --enable-termcap)
+	_termcap=yes
+	;;
+  --enable-xmmp)
+	_xmmp=yes
+	;;
+  --enable-lirc)
+	_lirc=yes
+	;;
+  --enable-select)
+        _select='#define HAVE_AUDIO_SELECT'
+	;;
+  --enable-gui)
+  	_gui=yes
+	;;
+  --disable-css)
+	_css=no
+	;;
+  --disable-png)
+	_png=no
+	;;
+  --disable-sse)
+        _sse=no
+        ;;
+  --disable-3dnow)
+        _3dnow=no
+        _3dnowex=no
+        ;;
+  --disable-3dnowex)
+        _3dnowex=no
+        ;;
+  --disable-mmx)
+        _mmx=no
+	_mmx2=no
+        ;;
+  --disable-mmx2)
+	_mmx2=no
+        ;;
+  --disable-mtrr)
+  	_mtrr=no
+	;;
+  --disable-gl)
+        _gl=no
+        ;;
+  --disable-sdl)
+        _sdl=no
+        ;;
+  --disable-mga)
+        _mga=no
+        ;;
+  --disable-xmga)
+        _xmga=no
+        ;;
+  --disable-xv)
+        _xv=no
+        ;;
+  --disable-vm)
+        _vm=no
+        ;;
+  --disable-mlib)
+	_mlib=no
+	;;
+  --disable-svga)
+	_svga=no
+	;;
+  --disable-dga)
+	_dga=no
+	;;
+  --disable-dga2)
+        _dga2=no
+        ;;
+  --disable-fbdev)
+  	_fbdev=no
+	;;
+  --disable-termcap)
+	_termcap=no
+	;;
+  --disable-select)
+        _select='#undef HAVE_AUDIO_SELECT'
+	;;
+  --disable-dshow)
+        _dshow=no
+	;;
+  --disable-fastmemcpy)
+        _fastmemcpy=no
+	;;
+  --disable-gui)
+  	_gui=no
+	;;
+  --with-win32libdir=*)
+        _win32libdir=`echo $ac_option | cut -d '=' -f 2`
+	_win32libdirnotify=no
+        ;;
+  --with-csslibdir=*)
+        _csslibdir=`echo $ac_option | cut -d '=' -f 2`
+	_css='yes';
+	;;
+  --with-cssincdir=*)
+        _cssincdir=`echo $ac_option | cut -d '=' -f 2`
+        _css='yes';
+        ;;
+  --size-x=*)
+	_x=`echo $ac_option | cut -d '=' -f 2`
+	;;
+  --size-y=*)
+	_y=`echo $ac_option | cut -d '=' -f 2`
+	;;
+  --with-x11libdir=*)
+	;;
+  --prefix=*)
+	_prefix=`echo $ac_option | cut -d '=' -f 2`
+        ;;
+  --cc=*)
+	;;
+ esac
+done
+
+if [ $_x11 = 'yes' ]; then
+ if [ $_mga = 'yes' ]; then
+  _xmga=yes
+ fi
+fi
+
+# to screen.
+echo -n "Kernel: "
+uname -a
+echo "Using C compiler: $_cc"
+echo "Install prefix: $_prefix"
+$_cc -v
+as --version | head -n 1
+echo "Checking for cpu vendor ... $pvendor ( $pfamily:$pmodel:$pstepping )"
+echo "Checking for cpu type ... $pname"
+echo "Optimizing to ... $proc"
+echo "Checking for mmx support ... $_mmx"
+echo "Checking for mmx2 support ... $_mmx2"
+echo "Checking for 3dnow support ... $_3dnow"
+echo "Checking for 3dnowex support ... $_3dnowex"
+echo "Checking for sse support ... $_sse"
+echo "Checking for mtrr support ... $_mtrr"
+echo "Screen size ... ${_x}x${_y}"
+echo "Checking for X11 libs ... $_x11libdir"
+echo "Checking mga_vid device ... $_mga"
+echo "Checking for xmga ... $_xmga" 
+echo "Checking for SDL ... $_sdl"
+echo "Checking for OpenGL ... $_gl"
+echo "Checking for Xv ... $_xv"
+echo "Checking for X11 ... $_x11"
+echo "Checking for DGA ... $_dga"
+echo "Checking for DGA 2.0 .. $_dga2"
+echo "Checking for Xf86VM ... $_vm"
+echo "Checking for SVGAlib ... $_svga"
+echo "Checking for FBDev ... $_fbdev"
+echo "Checking for DeCSS support ... $_css"
+echo "Checking for PNG support ... $_png"
+echo "Checking for DirectShow ... $_dshow"
+echo "Checking for fastmemcpy ... $_fastmemcpy"
+# write conf files.
+
+if [ $_gl = yes ]; then
+   if [ -f /usr/X11R6/bin/XFree86 ]; then
+     _gllib='-lGL -pthread'
+   else
+     _gllib='-lGL'
+   fi
+fi
+
+if [ $_css = yes ]; then
+   if [ ! -z $_csslibdir ]; then
+     _csslib="-L${_csslibdir} -lcss"
+   else
+     _csslib='-lcss'
+   fi
+   _css='#define HAVE_LIBCSS'
+   if [ ! -z $_cssincdir ]; then
+     _cssinc="-I${_cssincdir}"
+   else
+     _cssinc=""
+   fi
+else
+   _css='#undef HAVE_LIBCSS'
+   _csslib=''
+   _cssinc=''
+fi
+
+if [ $_dshow = yes ]; then
+   _dshowlib='-Lloader/DirectShow -lDS_Filter -lstdc++'
+   _dshowdep='loader/DirectShow/libDS_Filter.a'
+   _dshow='#define USE_DIRECTSHOW'
+else
+   _dshowlib=''
+   _dshowdep=''
+   _dshow='#undef USE_DIRECTSHOW'
+fi
+
+if [ $_fastmemcpy = yes ]; then
+   _fastmemcpy='#define USE_FASTMEMCPY'
+else
+   _fastmemcpy='#undef USE_FASTMEMCPY'
+fi
+
+if [ $_x11 = yes ]; then
+  if [ $_xdpms = yes ]; then
+    _x11lib='-lX11 -lXext -lXdpms'
+  else
+    _x11lib='-lX11 -lXext'
+  fi
+fi
+
+if [ $_xv = yes ]; then
+  _xvlib='-lXv'
+fi
+
+if [ $_sdl = yes ]; then
+  _sdllib='-L/usr/local/lib -lSDL-1.1 -pthread' 
+fi
+
+if [ $_dga = yes ]; then
+  _dgalib='-lXxf86dga'
+fi
+
+if [ $_svga = yes ]; then
+  _svgalib='-lvgagl -lvga'
+fi
+
+if [ $_vm = yes ]; then
+  _vmlib='-lXxf86vm'
+fi
+
+if [ "$_termcap" = "yes" ]; then
+ _termcap='#define USE_TERMCAP'
+ _libtermcap='-ltermcap'
+else
+ _termcap='#undef USE_TERMCAP'
+ _libtermcap=''
+fi
+
+if [ "$_xmmp" = "yes" ]; then
+ _xmmpaudio='#define USE_XMMP_AUDIO'
+ _xmmplibs='-Llibxmm -lxmm'
+else
+ _xmmpaudio='#undef USE_XMMP_AUDIO'
+fi
+
+if [ "$_lirc" = "yes" ]; then
+ _lircdefs='#define HAVE_LIRC'
+ _lirclibs='-llirc_client'
+else
+ _lircdefs='#undef HAVE_LIRC'
+ _lirclibs=''
+fi
+
+if [ $_png = yes ]; then
+   _libpng='-L/usr/local/lib -lpng -lz'
+fi
+
+# Checking for CFLAGS
+if [ "$_profile" != "" ] || [ "$_debug" != "" ]; then
+ CFLAGS="-O2 -D_THREAD_SAFE -march=$proc -mcpu=$proc $_debug $_profile"
+else
+if test -z "$CFLAGS"; then
+ CFLAGS="-O4 -D_THREAD_SAFE -march=$proc -mcpu=$proc -pipe -ffast-math -fomit-frame-pointer"
+fi
+fi
+echo
+echo "Creating $MCONF"
+cat > $MCONF << EOF
+
+# -------- Generated by ./configure -----------
+
+ARCH=FREEBSD
+AR=ar
+CC=$_cc
+X11DIR=$_x11libdir
+# OPTFLAGS=-O4 -D_THREAD_SAFE $_profile $_debug -march=$proc -mcpu=$proc -pipe -fomit-frame-pointer -ffast-math
+OPTFLAGS=$CFLAGS -I/usr/local/include -I/usr/X11R6/include
+# LIBS=-L/usr/lib -L/usr/local/lib $_x11libdir $_gllib $_sdllib $_dgalib $_x11lib $_xvlib
+X_LIBS=$_x11libdir $_gllib $_sdllib $_dgalib $_x11lib $_xvlib $_vmlib $_svgalib $_libpng
+TERMCAP_LIB=$_libtermcap
+XMM_LIBS = $_xmmplibs
+LIRC_LIBS = $_lirclibs
+CSS_LIB = $_csslib
+CSS_INC = $_cssinc
+WIN32_PATH=-DWIN32_PATH=\"$_win32libdir\"
+DS_DEP = $_dshowdep
+DS_LIB = $_dshowlib
+prefix = $_prefix
+ARCH_LIBS = -rdynamic -pthread
+
+EOF
+# echo 'CFLAGS=$(OPTFLAGS) -Wall -DMPG12PLAY' >> config.mak
+
+echo "Creating $CCONF"
+
+if [ "$_mmx" = "yes" ]; then
+ _mmx='#define HAVE_MMX'
+else
+ _mmx='#undef HAVE_MMX'
+fi
+
+if [ "$_mmx2" = "yes" ]; then
+ _mmx2='#define HAVE_MMX2'
+else
+ _mmx2='#undef HAVE_MMX2'
+fi
+
+if [ $_3dnow = yes ]; then
+ _3dnowm='#define HAVE_3DNOW'
+else
+ _3dnowm='#undef HAVE_3DNOW'
+fi
+
+if [ $_3dnowex = yes ]; then
+ _3dnowexm='#define HAVE_3DNOWEX'
+else
+ _3dnowexm='#undef HAVE_3DNOWEX'
+fi
+
+if [ $_sse = yes ]; then
+ _ssem='#define HAVE_SSE'
+else
+ _ssem='#undef HAVE_SSE'
+fi
+
+# ---
+
+_vosrc=''
+
+if [ $_png = yes ]; then
+ _png='#define HAVE_PNG'
+ _vosrc=$_vosrc' vo_png.c'
+else
+   _png='#undef HAVE_PNG'
+fi
+
+
+if [ $_mlib = yes ]; then
+ _mlib='#define HAVE_MLIB'
+ _vosrc=$_vosrc' yuv2rgb_mlib.c'
+else
+ _mlib='#undef HAVE_MLIB'
+fi
+
+# ---
+
+if [ $_gl = yes ]; then
+ _gl='#define HAVE_GL'
+ _vosrc=$_vosrc' vo_gl.c'
+else
+ _gl='#undef HAVE_GL'
+fi
+
+if [ $_sdl = yes ]; then
+ _sdldef='#define HAVE_SDL'
+ _vosrc=$_vosrc' vo_sdl.c'
+else
+ _sdldef='#undef HAVE_SDL'
+fi
+
+if [ $_x11 = yes ]; then
+ _x11='#define HAVE_X11'
+ _vosrc=$_vosrc' vo_x11.c'
+else
+ _x11='#undef HAVE_X11'
+fi
+
+if [ $_xv = yes ]; then
+ _xv='#define HAVE_XV'
+ _vosrc=$_vosrc' vo_xv.c'
+else
+ _xv='#undef HAVE_XV'
+fi
+
+if [ $_vm = yes ]; then
+ _vm='#define HAVE_XF86VM'
+else
+ _vm='#undef HAVE_XF86VM'
+fi
+
+# ---
+
+if [ $_mga = yes ]; then
+ _mga='#define HAVE_MGA'
+ _vosrc=$_vosrc' vo_mga.c'
+else
+ _mga='#undef HAVE_MGA'
+fi
+if [ $_xmga = yes ]; then
+ _vosrc=$_vosrc' vo_xmga.c'
+fi
+
+if [ $_syncfb = yes ]; then
+ _syncfb='#define HAVE_SYNCFB'
+ _vosrc=$_vosrc' vo_syncfb.c'
+else
+ _syncfb='#undef HAVE_SYNCFB'
+fi
+
+if [ $_3dfx = yes ]; then
+ _3dfx='#define HAVE_3DFX'
+ _vosrc=$_vosrc' vo_3dfx.c'
+else
+ _3dfx='#undef HAVE_3DFX'
+fi
+
+if [ $_svga = yes ]; then
+ _svga='#define HAVE_SVGALIB'
+ _vosrc=$_vosrc' vo_svga.c'
+else
+ _svga='#undef HAVE_SVGALIB'
+fi
+
+if [ $_dga = yes ]; then
+ _dga='#define HAVE_DGA'
+ _vosrc=$_vosrc' vo_dga.c vo_fsdga.c'
+else
+ _dga='#undef HAVE_DGA'
+fi
+
+if [ $_dga2 = yes ]; then
+ _dga2='#define HAVE_DGA2'
+ _vosrc=$_vosrc' vo_dga.c vo_fsdga.c'
+else
+ _dga2='#undef HAVE_DGA2'
+fi
+
+if [ $_fbdev = yes ]; then
+ _fbdev='#define HAVE_FBDEV'
+ _vosrc=$_vosrc' vo_fbdev.c'
+else
+ _fbdev='#undef HAVE_FBDEV'
+fi
+
+if [ $_mpg123 = yes ]; then
+ _mpg123='#define DEFAULT_MPG123'
+else
+ _mpg123='#undef DEFAULT_MPG123'
+fi
+
+if [ $_gui = yes ]; then
+ _gui='#define HAVE_GUI'
+else
+ _gui='#undef HAVE_GUI'
+fi
+
+cat > $CCONF << EOF
+
+/* -------- Generated by ./configure ----------- */
+
+/* Define this to enable avg. byte/sec-based AVI sync method by default:
+   (use -bps or -nobps commandline option for run-time method selection)    */
+#undef AVI_SYNC_BPS
+
+/* Undefine this if you want soundcard-only timing by default:
+   You can still change this with the -alsa or -noalsa command-line option!
+   (This function was originally impemented to solve ALSA driver's big
+   buffer problems, but it seems to be useful for every soundcard drivers) */
+#define ALSA_TIMER
+
+/* Undefine this if you don't want to select mono audio (left or right)
+   with a stereo MPEG layer 2/3 audio stream. The command-line option
+   -stereo has three possible values (0 for stereo, 1 for left-only, 2 for
+   right-only), with 0 being the default.
+   */
+#define USE_FAKE_MONO
+
+/* Undefine this if your soundcard driver has no working select().
+   If you have kernel Oops, player hangups, or just no audio, you should
+   try to recompile MPlayer with this option disabled! */
+$_select
+
+/* You have a choice for MP3 decoding: mp3lib(mpg123) or Win32(l3codeca.acm)
+   #define this if you prefer mpg123 (with 3Dnow! support) than l3codeca.acm
+   (with mmx/sse optimizations)
+   You can still change it runtime using -afm 1 (mpg123) or -afm 4 (l3codeca)*/
+$_mpg123
+
+/* XMMP support: (test code) */
+$_xmmpaudio
+#define LIBDIR "/usr/local/lib"
+#define PLUGINDIR LIBDIR "/xmmp/Plugins"
+#define XMMP_AUDIO_DRIVER PLUGINDIR "/Sound/oss.so"
+
+/* set up max. outburst. use 65536 for ALSA 0.5, for others 16384 is enough */
+#define MAX_OUTBURST 65536
+
+/* set up audio OUTBURST. Do not change this! */
+#ifdef USE_XMMP_AUDIO
+#define OUTBURST 4096
+#else
+//#define OUTBURST 1024
+#define OUTBURST 512
+#endif
+
+/* LIRC (remote control, see www.lirc.org) support: */
+$_lircdefs
+
+/* DeCSS support using libcss */
+$_css
+
+/* Define this to enable MPEG 1/2 image postprocessing (requires FAST cpu!) */
+#define MPEG12_POSTPROC
+
+/* DirectShow support */
+$_dshow
+
+/* Use 3dnow/mmxext/sse/mmx optimized fast memcpy() [maybe buggy... signal 4]*/
+$_fastmemcpy
+
+/* gui support, please do not edit this option */
+$_gui
+
+/* Define if your processor stores words with the most significant
+   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
+/* #define WORDS_BIGENDIAN */
+
+#define ARCH_X86
+
+/* Define this to any prefered value from 386 up to infinity with step 100 */
+#define __CPU__ $iproc
+
+/*----------------------------------------------------------------------------
+**
+** NOTE: Instead of modifying these definitions here, use the
+**       --enable/--disable options of the ./configure script!
+**       See ./configure --help for details.
+**
+*---------------------------------------------------------------------------*/
+
+/* termcap flag for getch2.c */
+$_termcap
+$_png
+
+/* Extension defines */
+$_mlib     // available only on solaris
+$_3dnowm   // only define if you have 3DNOW (AMD k6-2, AMD Athlon, iDT WinChip, etc.)
+$_3dnowexm // only define if you have 3DNOWEX (AMD Athlon, etc.)
+$_mmx      // only define if you have MMX
+$_mmx2     // only define if you have MMX2
+$_ssem     // only define if you have SSE (Intel Pentium III or Celeron II)
+
+/* libvo options */
+#define SCREEN_SIZE_X $_x
+#define SCREEN_SIZE_Y $_y
+$_x11
+$_xv
+$_vm
+$_gl
+$_dga
+$_dga2
+$_sdldef
+/* defined for SDLlib with keyrepeat bugs (before 1.2.1) */
+$_sdlbuggy
+$_3dfx
+$_mga
+$_syncfb
+$_fbdev
+$_svga
+
+#if defined(HAVE_GL)||defined(HAVE_X11)||defined(HAVE_XV)
+#define X11_FULLSCREEN
+#endif
+
+EOF
+
+echo "Creating libvo/config.mak"
+
+_voobj=`echo $_vosrc | sed -e 's/\.c/\.o/g'`
+
+cat > libvo/config.mak << EOF
+
+include ../config.mak
+
+OPTIONAL_SRCS=$_vosrc
+OPTIONAL_OBJS=$_voobj
+
+EOF
+
+echo "Creating libac3/config.mak"
+
+if [ $_sse = yes ]; then
+ _downmixc='downmix/downmix_kni.S'
+ _downmixo='downmix/downmix_kni.o'
+else
+if [ $_3dnow = yes ]; then
+ _downmixc='downmix/downmix_3dnow.S'
+ _downmixo='downmix/downmix_3dnow.o'
+else
+if [ $_binutils = yes ]; then
+ _downmixc='downmix/downmix_i386.S'
+ _downmixo='downmix/downmix_i386.o'
+else
+_downmixc='downmix/downmix.c'
+_downmixo='downmix/downmix.o'
+cat << EOF
+
+!!! Warning! fallback to slow downmix.c due the old binutils.
+!!! Upgrade for better audio decoding performance.
+
+EOF
+fi
+fi
+fi
+cat > libac3/config.mak << EOF
+
+include ../config.mak
+
+OPTIONAL_SRCS    = $_downmixc
+OPTIONAL_OBJS    = $_downmixo
+
+EOF
+
+echo "Creating mp3lib/config.mak"
+
+if [ $_3dnowex = yes ]; then
+ _mp3libobjectsrcs='dct36_k7.s dct64_k7.s decode_k7.s dct36_3dnow.s dct64_3dnow.s decode_3dnow.s'
+ _mp3libobjectobjs='dct36_k7.o dct64_k7.o decode_k7.o dct36_3dnow.o dct64_3dnow.o decode_3dnow.o'
+else
+if [ $_3dnow = yes ]; then
+ _mp3libobjectsrcs='dct36_3dnow.s dct64_3dnow.s decode_3dnow.s'
+ _mp3libobjectobjs='dct36_3dnow.o dct64_3dnow.o decode_3dnow.o'
+else
+if [ $_sse = yes ]; then
+ _mp3libobjectsrcs='decode_sse.s'
+ _mp3libobjectobjs='decode_sse.o'
+else
+ _mp3libobjectsrcs=
+ _mp3libobjectobjs=
+fi
+fi
+fi
+
+cat > mp3lib/config.mak << EOF
+
+include ../config.mak
+
+OPTIONAL_SRCS = $_mp3libobjectsrcs
+OPTIONAL_OBJS = $_mp3libobjectobjs
+
+EOF
+
+cat << EOF
+
+Config files successfully generated by ./configure !
+Please check config.h and config.mak files, tune CPU
+and optimization flags if you don't like these defaults.
+You can compile the program with 'make dep;make' and
+install with  'make install'. Good luck!
+
+EOF
+
+if [ $_mtrr = yes ]; then
+ echo "Please check mtrr settings at /compat/linux/proc/mtrr (see DOCS/MTRR)"
+ echo
+fi
+
+if [ $_sdl = outdated ]; then
+ echo "You have libSDL installed, but your version is outdated (earlier then"
+ echo "v.1.1.7), SDL support has been disabled please update, if you want to"
+ echo "use it (libSDL v1.1.8 and v1.2.0 are tested and known to work, recent"
+ echo "versions are available from http://www.libsdl.org/)."
+ echo "After updating you need to re-run ./configure and recompile to enable SDL."
+ echo
+fi
+
+if [ $_win32libdirnotify = yes ]; then
+ echo "Missing WIN32 codecs dir at $_win32libdir !"
+ echo "Make it and copy DLL files to there! (You can get them from your windows"
+ echo "directory or download ftp://thot.banki.hu/esp-team/linux/MPlayer/w32codec.zip"
+else
+ echo "Ok, Win32 codecs directory at $_win32libdir already exists."
+fi
+
--- a/libvo/vo_sdl.c	Sun Jun 03 00:30:10 2001 +0000
+++ b/libvo/vo_sdl.c	Sun Jun 03 00:31:41 2001 +0000
@@ -136,7 +136,11 @@
 	""
 };
 
+#ifdef __FreeBSD__
+#include <SDL11/SDL.h>
+#else
 #include <SDL/SDL.h>
+#endif
 
 #define FS 0x01
 #define VM 0x02
--- a/linux/getch2.c	Sun Jun 03 00:30:10 2001 +0000
+++ b/linux/getch2.c	Sun Jun 03 00:31:41 2001 +0000
@@ -201,15 +201,27 @@
 
 void getch2_enable(){
 struct termios tio_new;
+#ifdef __FreeBSD__
+    ioctl(0,TIOCGETA,&tio_orig); /*  tcgetattr(0,&tio_orig); */
+#else
     ioctl(0,TCGETS,&tio_orig); /*  tcgetattr(0,&tio_orig); */
+#endif
     tio_new=tio_orig;
     tio_new.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
     tio_new.c_cc[VMIN] = 1;
     tio_new.c_cc[VTIME] = 0;
+#ifdef __FreeBSD__
+    ioctl(0,TIOCSETA,&tio_new); /*   tcsetattr(0,TCSANOW,&tio_new); */
+#else
     ioctl(0,TCSETS,&tio_new); /*   tcsetattr(0,TCSANOW,&tio_new); */
+#endif
 }
 
 void getch2_disable(){
+#ifdef __FreeBSD__
+    ioctl(0,TIOCSETA,&tio_orig); /*   tcsetattr(0,TCSANOW,&tio_orig); */
+#else
     ioctl(0,TCSETS,&tio_orig); /*   tcsetattr(0,TCSANOW,&tio_orig); */
+#endif
 }
 
--- a/loader/dshow/Makefile	Sun Jun 03 00:30:10 2001 +0000
+++ b/loader/dshow/Makefile	Sun Jun 03 00:31:41 2001 +0000
@@ -22,7 +22,7 @@
 	$(AR) r $(LIBNAME) $(OBJS)
 
 test:   test.c $(LIBNAME)
-	$(CC) test.c -Wall $(CFLAGS) -o test -L. -lDS_Filter -L.. -lloader -ldl -lpthread -lstdc++
+	$(CC) test.c -Wall $(CFLAGS) -o test -L. -lDS_Filter -L.. -lloader $(ARCH_LIBS) -lstdc++
 
 all:	$(LIBNAME)
 
--- a/mplayer.c	Sun Jun 03 00:30:10 2001 +0000
+++ b/mplayer.c	Sun Jun 03 00:31:41 2001 +0000
@@ -17,7 +17,11 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <sys/soundcard.h>
+#ifdef __FreeBSD__
+#include <sys/cdio.h>
+#else
 #include <linux/cdrom.h>
+#endif
 
 #include "version.h"
 #include "config.h"
@@ -444,7 +448,7 @@
 int screen_size_xy=0;
 // movie info:
 int out_fmt=0;
-char *dsp="/dev/dsp";
+char *dsp=NULL;
 int force_ni=0;
 char *conffile;
 int conffile_fd;
@@ -575,7 +579,8 @@
   }
 
 // check audio_out
-//audio_out=audio_out_drivers[0];
+audio_out=audio_out_drivers[0];
+if(dsp) audio_out->control(AOCONTROL_SET_DEVICE,dsp);
 
 // check codec.conf
 if(!parse_codec_cfg(get_path("codecs.conf"))){
--- a/stream.c	Sun Jun 03 00:30:10 2001 +0000
+++ b/stream.c	Sun Jun 03 00:31:41 2001 +0000
@@ -9,13 +9,23 @@
 //#include <sys/stat.h>
 //#include <fcntl.h>
 
+#ifdef __FreeBSD__
+#include <sys/cdio.h>
+#include <sys/cdrio.h>
+#else
 #include <linux/cdrom.h>
+#endif
 
 #include "stream.h"
 
 extern int verbose; // defined in mplayer.c
 
+#ifdef __FreeBSD__
+#warning "VCD support under FreeBSD not implemented yet"
+#include "vcd_read_fbsd.c" 
+#else
 #include "vcd_read.c"
+#endif
 
 //=================== STREAMER =========================
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vcd_read_fbsd.h	Sun Jun 03 00:31:41 2001 +0000
@@ -0,0 +1,141 @@
+//=================== VideoCD ==========================
+#define	CDROM_LEADOUT	0xAA
+
+typedef	struct {
+	unsigned char   unused;
+	unsigned char   minute;
+	unsigned char   second;
+	unsigned char   frame;
+} cdrom_msf;
+
+static struct ioc_read_toc_single_entry vcd_entry;
+
+static inline void vcd_set_msf(unsigned int sect){
+  vcd_entry.entry.addr.msf.frame=sect%75;
+  sect=sect/75;
+  vcd_entry.entry.addr.msf.second=sect%60;
+  sect=sect/60;
+  vcd_entry.entry.addr.msf.minute=sect;
+}
+
+static inline unsigned int vcd_get_msf(){
+  return vcd_entry.entry.addr.msf.frame +
+        (vcd_entry.entry.addr.msf.second+
+         vcd_entry.entry.addr.msf.minute*60)*75;
+}
+
+int vcd_seek_to_track(int fd,int track){
+  vcd_entry.address_format = CD_MSF_FORMAT;
+  vcd_entry.track  = track;
+  if (ioctl(fd, CDIOREADTOCENTRY, &vcd_entry)) {
+    perror("ioctl dif1");
+    return -1;
+  }
+  return VCD_SECTOR_DATA*vcd_get_msf();
+}
+
+int vcd_get_track_end(int fd,int track){
+  struct ioc_toc_header tochdr;
+  if (ioctl(fd,CDIOREADTOCHEADER,&tochdr)==-1)
+    { perror("read CDROM toc header: "); return -1; }
+  vcd_entry.address_format = CD_MSF_FORMAT;
+  vcd_entry.track  = track<tochdr.ending_track?(track+1):CDROM_LEADOUT;
+  if (ioctl(fd, CDIOREADTOCENTRY, &vcd_entry)) {
+    perror("ioctl dif2");
+    return -1;
+  }
+  return VCD_SECTOR_DATA*vcd_get_msf();
+}
+
+void vcd_read_toc(int fd){
+  struct ioc_toc_header tochdr;
+  int i;
+  if (ioctl(fd,CDIOREADTOCHEADER,&tochdr)==-1)
+    { perror("read CDROM toc header: "); return; }
+  for (i=tochdr.starting_track ; i<=tochdr.ending_track ; i++){
+      struct ioc_read_toc_single_entry tocentry;
+
+      tocentry.track  = i;
+      tocentry.address_format = CD_MSF_FORMAT;
+
+      if (ioctl(fd,CDIOREADTOCENTRY,&tocentry)==-1)
+	{ perror("read CDROM toc entry: "); return; }
+        
+      printf("track %02d:  adr=%d  ctrl=%d  format=%d  %02d:%02d:%02d\n",
+          (int)tocentry.track,
+          (int)tocentry.entry.addr_type,
+          (int)tocentry.entry.control,
+          (int)tocentry.address_format,
+          (int)tocentry.entry.addr.msf.minute,
+          (int)tocentry.entry.addr.msf.second,
+          (int)tocentry.entry.addr.msf.frame
+      );
+    }
+}
+
+static char vcd_buf[VCD_SECTOR_SIZE];
+
+static int vcd_read(int fd,char *mem){
+      memcpy(vcd_buf,&vcd_entry.entry.addr.msf,sizeof(cdrom_msf));
+/*      if(ioctl(fd,CDROMREADRAW,vcd_buf)==-1) return 0; */ // EOF?
+/*      if(ioctl(fd,CDRIOCSETBLOCKSIZE,VCD_SECTOR_SIZE)==-1) return 0;
+      if (pread(fd,vcd_buf,VCD_SECTOR_SIZE,ntohl(vcd_entry.entry.addr.lba)*VCD_SECTOR_SIZE) != VCD_SECTOR_SIZE) return 0; */ // EOF?
+      vcd_entry.entry.addr.msf.frame++;
+      if (vcd_entry.entry.addr.msf.frame==75){
+        vcd_entry.entry.addr.msf.frame=0;
+        vcd_entry.entry.addr.msf.second++;
+        if (vcd_entry.entry.addr.msf.second==60){
+          vcd_entry.entry.addr.msf.second=0;
+          vcd_entry.entry.addr.msf.minute++;
+        }
+      }
+
+      memcpy(mem,&vcd_buf[VCD_SECTOR_OFFS],VCD_SECTOR_DATA);
+      return VCD_SECTOR_DATA;
+}
+
+//================== VCD CACHE =======================
+#ifdef VCD_CACHE
+
+static int vcd_cache_size=0;
+static char *vcd_cache_data=NULL;
+static int *vcd_cache_sectors=NULL;
+static int vcd_cache_index=0; // index to first free (or oldest) cache sector
+static int vcd_cache_current=-1;
+
+void vcd_cache_init(int s){
+  vcd_cache_size=s;
+  vcd_cache_sectors=malloc(s*sizeof(int));
+  vcd_cache_data=malloc(s*VCD_SECTOR_SIZE);
+  memset(vcd_cache_sectors,255,s*sizeof(int));
+}
+
+static inline void vcd_cache_seek(int sect){
+  vcd_cache_current=sect;
+}
+
+int vcd_cache_read(int fd,char* mem){
+int i;
+char* vcd_buf;
+  for(i=0;i<vcd_cache_size;i++)
+    if(vcd_cache_sectors[i]==vcd_cache_current){
+      // found in the cache! :)
+      vcd_buf=&vcd_cache_data[i*VCD_SECTOR_SIZE];
+      ++vcd_cache_current;
+      memcpy(mem,&vcd_buf[VCD_SECTOR_OFFS],VCD_SECTOR_DATA);
+      return VCD_SECTOR_DATA;
+    }
+  // NEW cache entry:
+  vcd_buf=&vcd_cache_data[vcd_cache_index*VCD_SECTOR_SIZE];
+  vcd_cache_sectors[vcd_cache_index]=vcd_cache_current;
+  ++vcd_cache_index;if(vcd_cache_index>=vcd_cache_size)vcd_cache_index=0;
+  // read data!
+  vcd_set_msf(vcd_cache_current);
+  memcpy(vcd_buf,&vcd_entry.entry.addr.msf,sizeof(struct cdrom_msf));
+/*  if(ioctl(fd,CDROMREADRAW,vcd_buf)==-1) return 0; */ // EOF?
+  ++vcd_cache_current;
+  memcpy(mem,&vcd_buf[VCD_SECTOR_OFFS],VCD_SECTOR_DATA);
+  return VCD_SECTOR_DATA;
+}
+
+#endif