1
mirror of https://github.com/mpv-player/mpv synced 2024-08-04 14:59:58 +02:00

FreeBSD patch by Vladimir Kushnir <vkushnir@Alfacom.net>

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1178 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
arpi_esp 2001-06-21 00:06:40 +00:00
parent 8238dfaadb
commit 83e2caa277
7 changed files with 116 additions and 1328 deletions

View File

@ -4,12 +4,13 @@ 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
2. 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.
3. If mplayer complains about "CD-ROM Device '/dev/cdrom' not found!" make a
symbolic link : ln -s /dev/<your_cdrom_device> /dev/cdrom
4. There's no DVD support for FreeBSD yet.
Feel free to add them :-)
Enjoy (as do I)!

95
configure vendored
View File

@ -142,13 +142,18 @@ params:
--disable-fastmemcpy disable 3dnow/sse/mmx optimized memcpy()
--with-x11libdir=DIR X library files are in DIR
--with-x11incdir=DIR X headerss are in DIR
(only needed if autodetection fails)
--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)
--with-sdl-config=PATH specify location of sdl-config if it's not in your PATH
(example: --with-sdl-config=/usr/sdl/bin/sdl-config)
--with-extralibdir=DIR extra library files (png, SDL) are in DIR
(only needed if autodetection fails)
--with-extraincdir=DIR extra headers (png, SDL) are in DIR
(only needed if autodetection fails)
--size-x=SIZE default screen width
--size-y=SIZE default screen height
EOF
@ -160,6 +165,15 @@ fi
echo "You can get detailed help on configure with: $0 --help"
echo "Please wait while ./configure discovers your software and hardware environment!"
# Determine our OS name and OS dependent libs
system_name=`uname -s 2>&1`
if [ "$system_name" = "FreeBSD" ]; then
_archlibs="-rdynamic -pthread"
else
_archlibs="-ldl -lpthread"
fi
# LGB: temporary files
TMPC="mplayer-conf-${RANDOM}-$$-${RANDOM}.c"
@ -201,9 +215,27 @@ else
fi
fi
_x11incdir=
if [ -d /usr/include/X11 ]; then
_x11incdir=
elif [ -d /usr/X11R6 ]; then
_x11incdir=-I/usr/X11R6/include
elif [ -d /usr/X11 ]; then
_x11incdir=-I/usr/X11/include
fi
# Lots of stuff are installed under /usr/local
_extralibdir=-L/usr/local/lib
_extraincdir=-I/usr/local/include
_skip_cc_check=no
_skip_as_check=no
if [ "$system_name" = "FreeBSD" ]; then
_sdlconfig='sdl11-config'
else
_sdlconfig='sdl-config'
fi
for ac_option
do
@ -223,6 +255,9 @@ do
--with-x11libdir=*)
_x11libdir=-L`echo $ac_option | cut -d '=' -f 2`
;;
--with-x11incdir=*)
_x11incdir=-I`echo $ac_option | cut -d '=' -f 2`
;;
--enable-x11)
_x11=yes
;;
@ -232,6 +267,12 @@ do
--with-sdl-config=*)
_sdlconfig=`echo $ac_option | cut -d '=' -f 2`
;;
--with-extralibdir=*)
_extralibdir=-L`echo $ac_option | cut -d '=' -f 2`
;;
--with-extraincdir=*)
_extraincdir=-I`echo $ac_option | cut -d '=' -f 2`
;;
esac
done
@ -265,6 +306,10 @@ fi
if [ -r /proc/cpuinfo ]; then
# linux with /proc mounted, extract cpu information from it
_cpuinfo="cat /proc/cpuinfo"
elif [ -r /compat/linux/proc/cpuinfo ]; then
# FreeBSD with linux emulation /proc mounted,
# extract cpu information from it
_cpuinfo="cat /compat/linux/proc/cpuinfo"
else
# all other OS try to extract cpu information from a small helper
# program TOOLS/cpuinfo instead
@ -523,10 +568,15 @@ fi
#echo "DONE (${proc})."
$_cc $TMPC -o $TMPO -lvgagl -lvga > /dev/null 2>&1 && _svga=yes
$_cc $_extraincdir $_extralibdir $TMPC -o $TMPO -lvgagl -lvga > /dev/null 2>&1 && _svga=yes
if [ "$system_name" = "FreeBSD" ]; then
$_cc $TMPC -o $TMPO -pthread > /dev/null 2>&1 || \
{ echo "Lib pthread not found."; rm -f $TMPC $TMPO $TMPS ; exit 1; }
else
$_cc $TMPC -o $TMPO -lpthread > /dev/null 2>&1 || \
{ echo "Lib pthread not found."; rm -f $TMPC $TMPO $TMPS ; exit 1; }
fi
# Atmosfear: added SDL versioncheck and autodetect; removed warnings.
_sdl=no
@ -569,7 +619,7 @@ _termcap=no
$_cc $TMPC -o $TMPO -ltermcap > /dev/null 2>&1 && _termcap=yes
_png=no
$_cc $TMPC -o $TMPO -lpng -lz -lm > /dev/null 2>&1 && _png=yes
$_cc $_extraincdir $_extralibdir $TMPC -o $TMPO -lpng -lz -lm > /dev/null 2>&1 && _png=yes
_ggi=no
$_cc $TMPC -o $TMPO -lggi > /dev/null 2>&1 && _ggi=yes
@ -598,14 +648,23 @@ $_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXdpms $_socklib > /dev/null 2>&1
$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXv $_socklib > /dev/null 2>&1 && _xv=yes
$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXxf86vm $_socklib > /dev/null 2>&1 && _vm=yes
if [ "$system_name" = "FreeBSD" ]; then
$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL -pthread $_socklib > /dev/null 2>&1 && _gl=yes
else
$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL $_socklib > /dev/null 2>&1 && _gl=yes
fi
cat > $TMPC << EOF
#include <GL/gl.h>
int main( void ) { return 0; }
EOF
if [ "$system_name" = "FreeBSD" ]; then
$_cc $_x11incdir $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL -pthread $_socklib > /dev/null 2>&1 || \
{ _gl=no; echo "GL includes not found!";}
else
$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lGL $_socklib > /dev/null 2>&1 || \
{ _gl=no; echo "GL includes not found!";}
fi
cat > $TMPC << EOF
#include <stdio.h>
@ -614,7 +673,7 @@ cat > $TMPC << EOF
int main (void) { return 0;}
EOF
$_cc $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm $_socklib > /dev/null 2>&1 && _dga=yes
$_cc -I/usr/X11R6/unclude $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm $_socklib > /dev/null 2>&1 && _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
@ -630,7 +689,7 @@ int main (void) { XDGAMode mode; XDGADevice device; return 0;}
EOF
_dga2=no
$_cc $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm $_socklib > /dev/null 2>&1 && _dga2=yes
$_cc $_x11incdir $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm $_socklib > /dev/null 2>&1 && _dga2=yes
fi
@ -699,7 +758,7 @@ cat > $TMPC << EOF
int main( void ){ return 0; }
EOF
$_cc -o $TMPO -lesd $TMPC 2> /dev/null || { _esd=no; }
$_cc $_extraincdir $_extralibdir -o $TMPO -lesd $TMPC 2> /dev/null || { _esd=no; }
# ---
@ -920,6 +979,12 @@ do
;;
--with-x11libdir=*)
;;
--with-x11incdir=*)
;;
--with-extralibdir=*)
;;
--with-extraincdir=*)
;;
--prefix=*)
_prefix=`echo $ac_option | cut -d '=' -f 2`
;;
@ -1001,7 +1066,7 @@ fi
# Checking kernel version...
_k_verc_problem=no
system_name=`uname -s 2>&1`
if [ "$system_name" != "FreeBSD" ];then
kernel_version=`uname -r 2>&1`
echo $_echo_n "Checking $system_name kernel version ... $_echo_c"
case $kernel_version in
@ -1018,6 +1083,7 @@ echo "WARNING! You want to run mplayer on this system then be prepared for probl
else
echo "$kernel_version, ok"
fi
fi
if [ $_x11 = 'yes' ]; then
if [ $_mga = 'yes' ]; then
@ -1067,7 +1133,16 @@ if [ $_streaming = yes ]; then
fi
if [ $_gl = yes ]; then
if [ "$system_name" = "FreeBSD" ]; then
# Under XFree86 4.x GL port is poorly designed
if [ -r /usr/X11R6/bin/XFree86 ]; then
_gllib='-lGL -pthread'
else
_gllib='-lGL'
fi
else
_gllib='-lGL'
fi
fi
if [ $_css = yes ]; then
@ -1219,9 +1294,9 @@ AR=ar
CC=$_cc
X11DIR=$_x11libdir
# OPTFLAGS=-O4 $_profile $_debug -march=$proc -mcpu=$proc -pipe -fomit-frame-pointer -ffast-math
OPTFLAGS=$CFLAGS
OPTFLAGS=$CFLAGS $_x11incdir $_extraincdir
# LIBS=-L/usr/lib -L/usr/local/lib $_x11libdir $_gllib $_sdllib $_ggilib $_dgalib $_x11lib $_xvlib
X_LIBS=$_x11libdir $_gllib $_sdllib $_ggilib $_dgalib $_x11lib $_xvlib $_vmlib $_svgalib $_libpng $_socklib
X_LIBS=$_x11libdir $_extralibdir $_gllib $_sdllib $_ggilib $_dgalib $_x11lib $_xvlib $_vmlib $_svgalib $_libpng $_socklib
TERMCAP_LIB=$_libtermcap
XMM_LIBS = $_xmmplibs
LIRC_LIBS = $_lirclibs
@ -1235,7 +1310,7 @@ DS_LIB = $_dshowlib
ALSA_LIB = $_alsalib
ESD_LIB = $_esdlib
prefix = $_prefix
ARCH_LIBS = -ldl -lpthread
ARCH_LIBS = $_archlibs
STREAM_SRCS = $_streamingsrcs
EOF

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@
# include <dvd.h>
# undef OLD_CSS_API
#else
# if defined(__NetBSD__) || defined(__OpenBSD__)
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
# include <sys/dvdio.h>
# elif defined(__linux__)
# include <linux/cdrom.h>

View File

@ -22,6 +22,9 @@
#if defined(sun)
#define DEFAULT_CDROM_DEVICE "/vol/dev/aliases/cdrom0"
#elif defined(__FreeBSD__)
#define DEFAULT_CDROM_DEVICE "/dev/cdrom"
#include <sys/cdrio.h>
#else
#define DEFAULT_CDROM_DEVICE "/dev/cdrom"
#endif
@ -491,6 +494,9 @@ float initial_pts_delay=0;
#ifdef VCD_CACHE
int vcd_cache_size=128;
#endif
#ifdef __FreeBSD__
int bsize = VCD_SECTOR_SIZE;
#endif
char* title="MPlayer";
// movie info:
@ -630,6 +636,11 @@ if(vcd_track){
if(verbose) printf("VCD start byte position: 0x%X end: 0x%X\n",seek_to_byte,ret2);
#ifdef VCD_CACHE
vcd_cache_init(vcd_cache_size);
#endif
#ifdef __FreeBSD__
if (ioctl (f, CDRIOCSETBLOCKSIZE, &bsize) == -1) {
perror ( "Error in CDRIOCSETBLOCKSIZE");
}
#endif
stream=new_stream(f,STREAMTYPE_VCD);
stream->start_pos=ret;

View File

@ -10,7 +10,6 @@
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"

View File

@ -4,12 +4,13 @@
//=================== VideoCD ==========================
#define CDROM_LEADOUT 0xAA
typedef struct {
unsigned char unused;
unsigned char minute;
unsigned char second;
unsigned char frame;
} cdrom_msf;
typedef struct {
uint8_t sync [12];
uint8_t header [4];
uint8_t subheader [8];
uint8_t data [2324];
uint8_t spare [4];
} cdsector_t;
static struct ioc_read_toc_single_entry vcd_entry;
@ -76,13 +77,14 @@ void vcd_read_toc(int fd){
}
}
static char vcd_buf[VCD_SECTOR_SIZE];
static cdsector_t vcd_buf;
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?
off_t offset = 0;
if (pread(fd,&vcd_buf,VCD_SECTOR_SIZE,vcd_get_msf()*VCD_SECTOR_SIZE)
!= VCD_SECTOR_SIZE) return 0; // EOF?
offset++;
vcd_entry.entry.addr.msf.frame++;
if (vcd_entry.entry.addr.msf.frame==75){
vcd_entry.entry.addr.msf.frame=0;
@ -92,8 +94,7 @@ static int vcd_read(int fd,char *mem){
vcd_entry.entry.addr.msf.minute++;
}
}
memcpy(mem,&vcd_buf[VCD_SECTOR_OFFS],VCD_SECTOR_DATA);
memcpy(mem,vcd_buf.data,VCD_SECTOR_DATA);
return VCD_SECTOR_DATA;
}