Commit ddec0b93 authored by Sam Hocevar's avatar Sam Hocevar

  * ./plugins/win32: skeleton for the win32 interface Ipkiss is developing.
  * ./config.guess ./config.sub: latest GNU versions.
  * ./configure.in: when possible, xvideo is compiled as a plugin.
  * ./vlc.spec: fixed a few minor inaccuracies.
  * ./debian/control: vlc-gui is no longer depended on, but rather recommended.
  * ./src/interface/main.c: --spumargin flag; use this to force displaying
    subtitles at the bottom of the screen instead of putting them in the
    middle, for instance: `--spumargin 5'.
parent 85523bcf
List of known vlc bugs List of known vlc bugs
$Id: BUGS,v 1.4 2002/01/09 02:01:14 sam Exp $ $Id: BUGS,v 1.5 2002/01/21 00:52:06 sam Exp $
Please try to keep this file up to date. Also, grep for FIXME in the Please try to keep this file up to date. Also, grep for FIXME in the
source files for more and more bugs to fix. source files for more and more bugs to fix.
...@@ -41,6 +41,9 @@ Video output: ...@@ -41,6 +41,9 @@ Video output:
* The MGA video output plugin makes the picture stutter when MGA_NUM_FRAMES * The MGA video output plugin makes the picture stutter when MGA_NUM_FRAMES
is set to a value higher than 1. is set to a value higher than 1.
* The SPU decoder doesn't detect when the video output failed to launch
itself, and we segfault.
Chroma transformations: Chroma transformations:
* The only working YUV2RGB transformation function is the MMX version * The only working YUV2RGB transformation function is the MMX version
......
List of vlc plugins List of vlc plugins
$Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $ $Id: MODULES,v 1.2 2002/01/21 00:52:06 sam Exp $
* ac3_adec: software AC3 decoder. * ac3_adec: software AC3 decoder.
...@@ -25,12 +25,16 @@ $Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $ ...@@ -25,12 +25,16 @@ $Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $
* directx: audio output and video output module using the DirectX API. * directx: audio output and video output module using the DirectX API.
* downmix: downmix module, used by the AC3 decoder.
* downmixsse: SSE accelerated version of downmix.
* downmix3dn: 3D Now! accelerated version of downmix.
* dsp: audio output module using the OSS /dev/dsp interface. * dsp: audio output module using the OSS /dev/dsp interface.
* dummy: dummy audio output, video output, interface and input modules. * dummy: dummy audio output, video output, interface and input modules.
* null: a module with no capabilities.
* dvd: input module for accessing DVDs. * dvd: input module for accessing DVDs.
* dvdread: input module for accessing DVDs, uses libdvdread. * dvdread: input module for accessing DVDs, uses libdvdread.
...@@ -58,12 +62,6 @@ $Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $ ...@@ -58,12 +62,6 @@ $Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $
* gtk: interface using the Gtk+ widget set. * gtk: interface using the Gtk+ widget set.
* downmix: downmix module, used by the AC3 decoder.
* downmixsse: SSE accelerated version of downmix.
* downmix3dn: 3D Now! accelerated version of downmix.
* idct: inverse DCT module, used by the video decoder. * idct: inverse DCT module, used by the video decoder.
* idctclassic: another version of idct. * idctclassic: another version of idct.
...@@ -119,16 +117,18 @@ $Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $ ...@@ -119,16 +117,18 @@ $Id: MODULES,v 1.1 2002/01/04 14:01:34 sam Exp $
* mpeg_vdec: MPEG and MPEG2 video decoder. * mpeg_vdec: MPEG and MPEG2 video decoder.
* ncurses: interface module using the ncurses library.
* null: a module with no capabilities.
* qt: interface module using the Qt widget set. * qt: interface module using the Qt widget set.
* rc: interface module using stdio.
* sdl: audio output and video output module using the SDL library. * sdl: audio output and video output module using the SDL library.
* spudec: DVD subtitles decoder. * spudec: DVD subtitles decoder.
* ncurses: interface module using the ncurses library.
* rc: interface module using stdio.
* vcd: input module for accessing Video CDs. * vcd: input module for accessing Video CDs.
* x11: video output module using the X11 API. * x11: video output module using the X11 API.
......
...@@ -48,6 +48,7 @@ PLUGINS_DIR := ac3_adec \ ...@@ -48,6 +48,7 @@ PLUGINS_DIR := ac3_adec \
spudec \ spudec \
text \ text \
vcd \ vcd \
win32 \
x11 x11
PLUGINS_TARGETS := ac3_adec/ac3_adec \ PLUGINS_TARGETS := ac3_adec/ac3_adec \
...@@ -117,6 +118,7 @@ PLUGINS_TARGETS := ac3_adec/ac3_adec \ ...@@ -117,6 +118,7 @@ PLUGINS_TARGETS := ac3_adec/ac3_adec \
text/ncurses \ text/ncurses \
text/rc \ text/rc \
vcd/vcd \ vcd/vcd \
win32/win32 \
x11/x11 \ x11/x11 \
x11/xvideo x11/xvideo
...@@ -142,6 +144,10 @@ ifeq ($(NEED_GETOPT),1) ...@@ -142,6 +144,10 @@ ifeq ($(NEED_GETOPT),1)
C_OBJ += extras/GNUgetopt/getopt.o extras/GNUgetopt/getopt1.o C_OBJ += extras/GNUgetopt/getopt.o extras/GNUgetopt/getopt1.o
endif endif
ifeq ($(NEED_SYMBOLS),1)
C_OBJ += src/misc/symbols.o
endif
ifeq ($(SYS),beos) ifeq ($(SYS),beos)
CPP_OBJ := src/misc/beos_specific.o CPP_OBJ := src/misc/beos_specific.o
endif endif
......
...@@ -74,7 +74,7 @@ $(SRC_CPP:%.cpp=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.cpp ...@@ -74,7 +74,7 @@ $(SRC_CPP:%.cpp=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.cpp
$(CC) $(CFLAGS) $(CFLAGS_EXTRA) -c $< -o $@ $(CC) $(CFLAGS) $(CFLAGS_EXTRA) -c $< -o $@
../$(module_name).so: $(EXTRA_DEP) $(OBJ_ALL) ../$(module_name).so: $(EXTRA_DEP) $(OBJ_ALL)
$(CC) $(OBJ_ALL) $(PLDFLAGS) $(LIB_$(MODULE_NAME)) -o $@ $(CC) $(OBJ_ALL) $(PLDFLAGS) $(LIB_$(MODULE_NAME)) -o $@ && chmod -x $@
../$(module_name).a: $(EXTRA_DEP) $(OBJ_ALL) ../$(module_name).a: $(EXTRA_DEP) $(OBJ_ALL)
rm -f $@ && ar rc $@ $(OBJ_ALL) && $(RANLIB) $@ rm -f $@ && ar rc $@ $(OBJ_ALL) && $(RANLIB) $@
......
...@@ -97,6 +97,7 @@ LIB_QNX = @LIB_QNX@ ...@@ -97,6 +97,7 @@ LIB_QNX = @LIB_QNX@
LIB_QT = @LIB_QT@ LIB_QT = @LIB_QT@
LIB_RC = @LIB_RC@ LIB_RC = @LIB_RC@
LIB_SDL = @LIB_SDL@ LIB_SDL = @LIB_SDL@
LIB_WIN32 = @LIB_WIN32@
LIB_X11 = @LIB_X11@ LIB_X11 = @LIB_X11@
LIB_XVIDEO = @LIB_XVIDEO@ LIB_XVIDEO = @LIB_XVIDEO@
...@@ -119,6 +120,7 @@ CFLAGS_MAD = @CFLAGS_MAD@ ...@@ -119,6 +120,7 @@ CFLAGS_MAD = @CFLAGS_MAD@
CFLAGS_MOTIONALTIVEC = @CFLAGS_MOTIONALTIVEC@ CFLAGS_MOTIONALTIVEC = @CFLAGS_MOTIONALTIVEC@
CFLAGS_QT = @CFLAGS_QT@ CFLAGS_QT = @CFLAGS_QT@
CFLAGS_SDL = @CFLAGS_SDL@ CFLAGS_SDL = @CFLAGS_SDL@
CFLAGS_WIN32 = @CFLAGS_WIN32@
CFLAGS_X11 = @CFLAGS_X11@ CFLAGS_X11 = @CFLAGS_X11@
CFLAGS_XVIDEO = @CFLAGS_XVIDEO@ CFLAGS_XVIDEO = @CFLAGS_XVIDEO@
......
#! /bin/sh #! /bin/sh
# Attempt to guess a canonical system name. # Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# Free Software Foundation, Inc. # 2000, 2001, 2002 Free Software Foundation, Inc.
timestamp='2001-11-26' timestamp='2002-01-02'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
...@@ -135,23 +135,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ...@@ -135,23 +135,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# object file format. This provides both forward # object file format. This provides both forward
# compatibility and a consistent mechanism for selecting the # compatibility and a consistent mechanism for selecting the
# object file format. # object file format.
# Determine the machine/vendor (is the vendor relevant). #
case "${UNAME_MACHINE}" in # Note: NetBSD doesn't particularly care about the vendor
amiga) machine=m68k-unknown ;; # portion of the name. We always set it to "unknown".
arm32) machine=arm-unknown ;; UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \
atari*) machine=m68k-atari ;; UNAME_MACHINE_ARCH=unknown
sun3*) machine=m68k-sun ;; case "${UNAME_MACHINE_ARCH}" in
mac68k) machine=m68k-apple ;; arm*) machine=arm-unknown ;;
macppc) machine=powerpc-apple ;; sh3el) machine=shl-unknown ;;
hp3[0-9][05]) machine=m68k-hp ;; sh3eb) machine=sh-unknown ;;
ibmrt|romp-ibm) machine=romp-ibm ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
sparc*) machine=`uname -p`-unknown ;;
*) machine=${UNAME_MACHINE}-unknown ;;
esac esac
# The Operating System including object format, if it has switched # The Operating System including object format, if it has switched
# to ELF recently, or will in the future. # to ELF recently, or will in the future.
case "${UNAME_MACHINE}" in case "${UNAME_MACHINE_ARCH}" in
i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep __ELF__ >/dev/null | grep __ELF__ >/dev/null
...@@ -291,6 +289,9 @@ EOF ...@@ -291,6 +289,9 @@ EOF
*:[Aa]miga[Oo][Ss]:*:*) *:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos echo ${UNAME_MACHINE}-unknown-amigaos
exit 0 ;; exit 0 ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
exit 0 ;;
*:OS/390:*:*) *:OS/390:*:*)
echo i370-ibm-openedition echo i370-ibm-openedition
exit 0 ;; exit 0 ;;
...@@ -736,6 +737,9 @@ EOF ...@@ -736,6 +737,9 @@ EOF
i*:PW*:*) i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32 echo ${UNAME_MACHINE}-pc-pw32
exit 0 ;; exit 0 ;;
x86:Interix*:3*)
echo i386-pc-interix3
exit 0 ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*) i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem? # How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
...@@ -767,10 +771,24 @@ EOF ...@@ -767,10 +771,24 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;; exit 0 ;;
mips:Linux:*:*) mips:Linux:*:*)
case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in eval $set_cc_for_build
big) echo mips-unknown-linux-gnu && exit 0 ;; sed 's/^ //' << EOF >$dummy.c
little) echo mipsel-unknown-linux-gnu && exit 0 ;; #undef CPU
esac #undef mips
#undef mipsel
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=mipsel
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=mips
#else
CPU=
#endif
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
rm -f $dummy.c
test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
;; ;;
ppc:Linux:*:*) ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu echo powerpc-unknown-linux-gnu
...@@ -843,32 +861,25 @@ EOF ...@@ -843,32 +861,25 @@ EOF
esac esac
# Determine whether the default compiler is a.out or elf # Determine whether the default compiler is a.out or elf
eval $set_cc_for_build eval $set_cc_for_build
cat >$dummy.c <<EOF sed 's/^ //' << EOF >$dummy.c
#include <features.h> #include <features.h>
#ifdef __cplusplus #ifdef __ELF__
#include <stdio.h> /* for printf() prototype */ # ifdef __GLIBC__
int main (int argc, char *argv[]) { # if __GLIBC__ >= 2
#else LIBC=gnu
int main (argc, argv) int argc; char *argv[]; { # else
#endif LIBC=gnulibc1
#ifdef __ELF__ # endif
# ifdef __GLIBC__ # else
# if __GLIBC__ >= 2 LIBC=gnulibc1
printf ("%s-pc-linux-gnu\n", argv[1]); # endif
# else #else
printf ("%s-pc-linux-gnulibc1\n", argv[1]); LIBC=gnuaout
# endif #endif
# else
printf ("%s-pc-linux-gnulibc1\n", argv[1]);
# endif
#else
printf ("%s-pc-linux-gnuaout\n", argv[1]);
#endif
return 0;
}
EOF EOF
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
rm -f $dummy.c $dummy rm -f $dummy.c
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;; ;;
i*86:DYNIX/ptx:4*:*) i*86:DYNIX/ptx:4*:*)
......
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# Free Software Foundation, Inc. # 2000, 2001, 2002 Free Software Foundation, Inc.
timestamp='2001-12-03' timestamp='2002-01-02'
# This file is (in principle) common to ALL GNU software. # This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software # The presence of a machine in this file suggests that SOME GNU software
...@@ -227,6 +227,7 @@ case $basic_machine in ...@@ -227,6 +227,7 @@ case $basic_machine in
1750a | 580 \ 1750a | 580 \
| a29k \ | a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| c4x | clipper \ | c4x | clipper \
| d10v | d30v | dsp16xx \ | d10v | d30v | dsp16xx \
...@@ -278,7 +279,8 @@ case $basic_machine in ...@@ -278,7 +279,8 @@ case $basic_machine in
580-* \ 580-* \
| a29k-* \ | a29k-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alphapca5[67]-* | arc-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armv*-* \ | arm-* | armbe-* | armle-* | armv*-* \
| avr-* \ | avr-* \
| bs2000-* \ | bs2000-* \
...@@ -419,6 +421,14 @@ case $basic_machine in ...@@ -419,6 +421,14 @@ case $basic_machine in
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec basic_machine=mips-dec
;; ;;
decsystem10* | dec10*)
basic_machine=pdp10-dec
os=-tops10
;;
decsystem20* | dec20*)
basic_machine=pdp10-dec
os=-tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \ delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola) | 3300-motorola | delta-motorola)
basic_machine=m68k-motorola basic_machine=m68k-motorola
...@@ -621,6 +631,10 @@ case $basic_machine in ...@@ -621,6 +631,10 @@ case $basic_machine in
basic_machine=m68k-rom68k basic_machine=m68k-rom68k
os=-coff os=-coff
;; ;;
morphos)
basic_machine=powerpc-unknown
os=-morphos
;;
msdos) msdos)
basic_machine=i386-pc basic_machine=i386-pc
os=-msdos os=-msdos
...@@ -882,6 +896,10 @@ case $basic_machine in ...@@ -882,6 +896,10 @@ case $basic_machine in
tx39el) tx39el)
basic_machine=mipstx39el-unknown basic_machine=mipstx39el-unknown
;; ;;
toad1)
basic_machine=pdp10-xkl
os=-tops20
;;
tower | tower-32) tower | tower-32)
basic_machine=m68k-ncr basic_machine=m68k-ncr
;; ;;
...@@ -1075,7 +1093,7 @@ case $os in ...@@ -1075,7 +1093,7 @@ case $os in
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus*) | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* | -morphos*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
...@@ -1210,6 +1228,7 @@ case $basic_machine in ...@@ -1210,6 +1228,7 @@ case $basic_machine in
arm*-semi) arm*-semi)
os=-aout os=-aout
;; ;;
# This must come before the *-dec entry.
pdp10-*) pdp10-*)
os=-tops20 os=-tops20
;; ;;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -310,8 +310,8 @@ esac ...@@ -310,8 +310,8 @@ esac
dnl dnl
dnl default modules dnl default modules
dnl dnl
BUILTINS="${BUILTINS} mpeg_es mpeg_ps mpeg_ts memcpy idct idctclassic motion imdct downmix chroma_i420_rgb chroma_i420_yuy2 chroma_i422_yuy2 chroma_i420_ymga mpeg_adec lpcm_adec ac3_adec mpeg_vdec" BUILTINS="${BUILTINS} mpeg_es mpeg_ps mpeg_ts memcpy idct idctclassic motion imdct downmix chroma_i420_rgb chroma_i420_yuy2 chroma_i422_yuy2 chroma_i420_ymga mpeg_adec ac3_adec mpeg_vdec"
PLUGINS="${PLUGINS} ac3_spdif spudec filter_deinterlace filter_invert filter_wall filter_transform filter_distort" PLUGINS="${PLUGINS} lpcm_adec ac3_spdif spudec filter_deinterlace filter_invert filter_wall filter_transform filter_distort"
dnl dnl
dnl Accelerated modules dnl Accelerated modules
...@@ -431,8 +431,8 @@ case x"${target_os}" in ...@@ -431,8 +431,8 @@ case x"${target_os}" in
x*mingw32*) x*mingw32*)
SYS=mingw32 SYS=mingw32
AC_CHECK_TOOL(WINDRES, windres, :) AC_CHECK_TOOL(WINDRES, windres, :)
LIB_MPEG_TS="-lws2_32" LIB_MPEG_TS="${LIB_MPEG_TS} -lws2_32"
LIB_RC="-lws2_32" LIB_RC="${LIB_RC} -lws2_32"
;; ;;
x*nto*) x*nto*)
SYS=nto SYS=nto
...@@ -824,10 +824,10 @@ AC_ARG_WITH(mad, ...@@ -824,10 +824,10 @@ AC_ARG_WITH(mad,
[ --with-mad[=PATH] libmad module (default disabled)], [ --with-mad[=PATH] libmad module (default disabled)],
[ if test "x$with_val" != "xno"; then [ if test "x$with_val" != "xno"; then
if test -n $with_val; then if test -n $with_val; then
CFLAGS_MAD="-I$with_val/include" CFLAGS_MAD="${CFLAGS_MAD} -I$with_val/include"
LIB_MAD="-L$with_val/lib -lmad" LIB_MAD="${LIB_MAD} -L$with_val/lib -lmad"
else else
LIB_MAD="-lmad" LIB_MAD="${LIB_MAD} -lmad"
fi fi
save_CFLAGS=$CFLAGS save_CFLAGS=$CFLAGS
save_LDFLAGS=$LDFLAGS save_LDFLAGS=$LDFLAGS
...@@ -881,8 +881,8 @@ AC_ARG_ENABLE(esd, ...@@ -881,8 +881,8 @@ AC_ARG_ENABLE(esd,
if test x${ESD_CONFIG} != xno if test x${ESD_CONFIG} != xno
then then
PLUGINS="${PLUGINS} esd" PLUGINS="${PLUGINS} esd"
CFLAGS_ESD="`${ESD_CONFIG} --cflags`" CFLAGS_ESD="${CFLAGS_ESD} `${ESD_CONFIG} --cflags`"
LIB_ESD="`${ESD_CONFIG} --libs`" LIB_ESD="${LIB_ESD} `${ESD_CONFIG} --libs`"
fi fi
fi]) fi])
...@@ -897,8 +897,8 @@ AC_ARG_ENABLE(arts, ...@@ -897,8 +897,8 @@ AC_ARG_ENABLE(arts,
if test x${ARTS_CONFIG} != xno if test x${ARTS_CONFIG} != xno
then then
PLUGINS="${PLUGINS} arts" PLUGINS="${PLUGINS} arts"
CFLAGS_ARTS="`${ARTS_CONFIG} --cflags`" CFLAGS_ARTS="${CFLAGS_ARTS} `${ARTS_CONFIG} --cflags`"
LIB_ARTS="`${ARTS_CONFIG} --libs `" LIB_ARTS="${LIB_ARTS} `${ARTS_CONFIG} --libs `"
fi fi
fi]) fi])
...@@ -910,14 +910,14 @@ AC_ARG_ENABLE(macosx, ...@@ -910,14 +910,14 @@ AC_ARG_ENABLE(macosx,
[if test x$enable_macosx = xyes [if test x$enable_macosx = xyes
then then
BUILTINS="${BUILTINS} macosx" BUILTINS="${BUILTINS} macosx"
LIB_MACOSX="-framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime -lobjc" LIB_MACOSX="${LIB_MACOSX} -framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime -lobjc"
CFLAGS_MACOSX="-ObjC" CFLAGS_MACOSX="${CFLAGS_MACOSX} -ObjC"
LIB="${LIB} -ObjC" LIB="${LIB} -ObjC"
fi], fi],
[AC_CHECK_HEADERS(Cocoa/Cocoa.h, [AC_CHECK_HEADERS(Cocoa/Cocoa.h,
BUILTINS="${BUILTINS} macosx" BUILTINS="${BUILTINS} macosx"
LIB_MACOSX="-framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime -lobjc" LIB_MACOSX="${LIB_MACOSX} -framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime -lobjc"
CFLAGS_MACOSX="-ObjC" CFLAGS_MACOSX="${CFLAGS_MACOSX} -ObjC"
LIB="${LIB} -ObjC" LIB="${LIB} -ObjC"
)]) )])
...@@ -930,7 +930,7 @@ AC_ARG_ENABLE(qnx, ...@@ -930,7 +930,7 @@ AC_ARG_ENABLE(qnx,
then then
AC_CHECK_HEADERS(Ph.h, [ AC_CHECK_HEADERS(Ph.h, [
PLUGINS="${PLUGINS} qnx" PLUGINS="${PLUGINS} qnx"
LIB_QNX="-lasound -lph" LIB_QNX="${LIB_QNX} -lasound -lph"
]) ])
fi fi
...@@ -964,9 +964,9 @@ AC_ARG_WITH(ggi, ...@@ -964,9 +964,9 @@ AC_ARG_WITH(ggi,
PLUGINS="${PLUGINS} ggi" PLUGINS="${PLUGINS} ggi"
if test "x$withval" != "xyes" if test "x$withval" != "xyes"
then then
LIB_GGI="-l"$withval LIB_GGI="${LIB_GGI} -l$withval"
else else
LIB_GGI="-lggi" LIB_GGI="${LIB_GGI} -lggi"
fi fi
fi ]) fi ])
...@@ -1001,8 +1001,8 @@ then ...@@ -1001,8 +1001,8 @@ then
if test x${SDL_CONFIG} != xno if test x${SDL_CONFIG} != xno
then then
PLUGINS="${PLUGINS} sdl" PLUGINS="${PLUGINS} sdl"
CFLAGS_SDL="`${SDL_CONFIG} --cflags`" CFLAGS_SDL="${CFLAGS_SDL} `${SDL_CONFIG} --cflags`"
LIB_SDL="`${SDL_CONFIG} --libs | sed 's,-rdynamic,,'`" LIB_SDL="${LIB_SDL} `${SDL_CONFIG} --libs | sed 's,-rdynamic,,'`"
save_CPPFLAGS=$CPPFLAGS save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CFLAGS_SDL" CPPFLAGS="$CPPFLAGS $CFLAGS_SDL"
AC_CHECK_HEADERS(${SDL_HEADER}, AC_DEFINE_UNQUOTED(SDL_INCLUDE_FILE, AC_CHECK_HEADERS(${SDL_HEADER}, AC_DEFINE_UNQUOTED(SDL_INCLUDE_FILE,
...@@ -1041,13 +1041,13 @@ then ...@@ -1041,13 +1041,13 @@ then
then then
AC_CHECK_HEADERS(directx.h, AC_CHECK_HEADERS(directx.h,
[ PLUGINS="${PLUGINS} directx" [ PLUGINS="${PLUGINS} directx"
LIB_DIRECTX="-lgdi32" ]) LIB_DIRECTX="${LIB_DIRECTX} -lgdi32" ])
else else
AC_MSG_CHECKING(for directX headers in ${withval}) AC_MSG_CHECKING(for directX headers in ${withval})
if test -f ${withval}/include/directx.h if test -f ${withval}/include/directx.h
then then
PLUGINS="${PLUGINS} directx" PLUGINS="${PLUGINS} directx"
LIB_DIRECTX="-L${withval}/lib -lgdi32" LIB_DIRECTX="${LIB_DIRECTX} -L${withval}/lib -lgdi32"
INCLUDE="${INCLUDE} -I${withval}/include" INCLUDE="${INCLUDE} -I${withval}/include"
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
else else
...@@ -1058,6 +1058,16 @@ then ...@@ -1058,6 +1058,16 @@ then
fi fi
fi fi
dnl
dnl Windows MFC interface module
dnl
AC_ARG_ENABLE(win32,
[ --enable-win32 Windows DirectX support (default disabled)])
if test "x$enableval" = "xyes"
then
PLUGINS="${PLUGINS} win32"
fi
dnl dnl
dnl Glide module dnl Glide module
dnl dnl
...@@ -1068,11 +1078,11 @@ AC_ARG_WITH(glide, ...@@ -1068,11 +1078,11 @@ AC_ARG_WITH(glide,
PLUGINS="${PLUGINS} glide" PLUGINS="${PLUGINS} glide"
if test "x$withval" != "xyes" if test "x$withval" != "xyes"
then then
LIB_GLIDE="-l"$withval" -lm" LIB_GLIDE="${LIB_GLIDE} -l$withval -lm"
else else
LIB_GLIDE="-lglide2x -lm" LIB_GLIDE="${LIB_GLIDE} -lglide2x -lm"
fi fi
CFLAGS_GLIDE="-I/usr/include/glide" CFLAGS_GLIDE="${CFLAGS_GLIDE} -I/usr/include/glide"
fi ]) fi ])
dnl dnl
...@@ -1082,7 +1092,7 @@ AC_ARG_ENABLE(ncurses, ...@@ -1082,7 +1092,7 @@ AC_ARG_ENABLE(ncurses,
[ --enable-ncurses ncurses interface support (default disabled)], [ --enable-ncurses ncurses interface support (default disabled)],
[if test x$enable_ncurses = xyes; then [if test x$enable_ncurses = xyes; then
PLUGINS="${PLUGINS} ncurses" PLUGINS="${PLUGINS} ncurses"
LIB_NCURSES="-lncurses" LIB_NCURSES="${LIB_NCURSES} -lncurses"
fi]) fi])
dnl dnl
...@@ -1093,8 +1103,8 @@ AC_ARG_ENABLE(qt, ...@@ -1093,8 +1103,8 @@ AC_ARG_ENABLE(qt,
[if test x$enable_qt = xyes; then [if test x$enable_qt = xyes; then
PLUGINS="${PLUGINS} qt" PLUGINS="${PLUGINS} qt"
ALIASES="${ALIASES} qvlc" ALIASES="${ALIASES} qvlc"
LIB_QT="-lqt -L${QTDIR}/lib" LIB_QT="${LIB_QT} -lqt -L${QTDIR}/lib"
CFLAGS_QT="-I/usr/include/qt -I${QTDIR}/include" CFLAGS_QT="${CFLAGS_QT} -I/usr/include/qt -I${QTDIR}/include"
if test -x ${QTDIR}/bin/moc if test -x ${QTDIR}/bin/moc
then then
MOC=${QTDIR}/bin/moc MOC=${QTDIR}/bin/moc
...@@ -1132,8 +1142,8 @@ AC_ARG_ENABLE(gnome, ...@@ -1132,8 +1142,8 @@ AC_ARG_ENABLE(gnome,
AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) AC_PATH_PROG(GNOME_CONFIG, gnome-config, no)
if test -x ${GNOME_CONFIG} if test -x ${GNOME_CONFIG}
then then
CFLAGS_GNOME="`${GNOME_CONFIG} --cflags gtk gnomeui`" CFLAGS_GNOME="${CFLAGS_GNOME} `${GNOME_CONFIG} --cflags gtk gnomeui`"
LIB_GNOME="`${GNOME_CONFIG} --libs gnomeui | sed 's,-rdynamic,,'`" LIB_GNOME="${LIB_GNOME} `${GNOME_CONFIG} --libs gnomeui | sed 's,-rdynamic,,'`"
fi fi
# now look for the gnome.h header # now look for the gnome.h header
saved_CPPFLAGS=$CPPFLAGS saved_CPPFLAGS=$CPPFLAGS
...@@ -1171,8 +1181,8 @@ then ...@@ -1171,8 +1181,8 @@ then
then then
AC_MSG_ERROR([Your development package for Gtk+ is too old, you need at least version 1.2.0. Please upgrade and try again. Alternatively you can also configure with --disable-gtk.]) AC_MSG_ERROR([Your development package for Gtk+ is too old, you need at least version 1.2.0. Please upgrade and try again. Alternatively you can also configure with --disable-gtk.])
fi fi
CFLAGS_GTK="`${GTK_CONFIG} --cflags gtk`" CFLAGS_GTK="${CFLAGS_GTK} `${GTK_CONFIG} --cflags gtk`"
LIB_GTK="`${GTK_CONFIG} --libs gtk | sed 's,-rdynamic,,'`" LIB_GTK="${LIB_GTK} `${GTK_CONFIG} --libs gtk | sed 's,-rdynamic,,'`"
fi fi
# now look for the gtk.h header # now look for the gtk.h header
saved_CPPFLAGS=$CPPFLAGS saved_CPPFLAGS=$CPPFLAGS
...@@ -1231,9 +1241,18 @@ if test x$enable_xvideo != xno && ...@@ -1231,9 +1241,18 @@ if test x$enable_xvideo != xno &&
saved_CPPFLAGS=$CPPFLAGS saved_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$x_includes" CPPFLAGS="$CPPFLAGS -I$x_includes"
AC_CHECK_HEADERS(X11/extensions/Xv.h, [ AC_CHECK_HEADERS(X11/extensions/Xv.h, [
saved_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -L$x_libraries -lX11 -lXext"
AC_CHECK_LIB(Xv_pic,XvSetPortAttribute,
# We have Xv_pic, that's good, we can build an xvideo.so plugin !
PLUGINS="${PLUGINS} xvideo"
LIB_XVIDEO="${LIB_XVIDEO} -L$x_libraries -lX11 -lXext -lXv_pic"
CFLAGS_XVIDEO="${CFLAGS_XVIDEO} -I$x_includes",
# We don't have Xv_pic, let's make xvideo.a as builtin
BUILTINS="${BUILTINS} xvideo" BUILTINS="${BUILTINS} xvideo"
LIB_XVIDEO="${LIB_XVIDEO} -L$x_libraries -lX11 -lXext -lXv" LIB_XVIDEO="${LIB_XVIDEO} -L$x_libraries -lX11 -lXext -lXv"
CFLAGS_XVIDEO="${CFLAGS_XVIDEO} -I$x_includes" CFLAGS_XVIDEO="${CFLAGS_XVIDEO} -I$x_includes")
CFLAGS=$saved_CFLAGS
] ]
CPPFLAGS=$saved_CPPFLAGS) CPPFLAGS=$saved_CPPFLAGS)
fi fi
...@@ -1250,7 +1269,7 @@ AC_ARG_ENABLE(alsa, ...@@ -1250,7 +1269,7 @@ AC_ARG_ENABLE(alsa,
if test x$have_alsa = xtrue if test x$have_alsa = xtrue
then then
PLUGINS="${PLUGINS} alsa" PLUGINS="${PLUGINS} alsa"
LIB_ALSA="-lasound -lm -ldl" LIB_ALSA="${LIB_ALSA} -lasound -lm -ldl"
fi fi
fi]) fi])
...@@ -1355,6 +1374,7 @@ AC_SUBST(LIB_QNX) ...@@ -1355,6 +1374,7 @@ AC_SUBST(LIB_QNX)
AC_SUBST(LIB_QT) AC_SUBST(LIB_QT)
AC_SUBST(LIB_RC) AC_SUBST(LIB_RC)
AC_SUBST(LIB_SDL) AC_SUBST(LIB_SDL)
AC_SUBST(LIB_WIN32)
AC_SUBST(LIB_X11) AC_SUBST(LIB_X11)
AC_SUBST(LIB_XVIDEO) AC_SUBST(LIB_XVIDEO)
...@@ -1374,6 +1394,7 @@ AC_SUBST(CFLAGS_MAD) ...@@ -1374,6 +1394,7 @@ AC_SUBST(CFLAGS_MAD)
AC_SUBST(CFLAGS_MOTIONALTIVEC) AC_SUBST(CFLAGS_MOTIONALTIVEC)
AC_SUBST(CFLAGS_QT) AC_SUBST(CFLAGS_QT)
AC_SUBST(CFLAGS_SDL) AC_SUBST(CFLAGS_SDL)
AC_SUBST(CFLAGS_WIN32)
AC_SUBST(CFLAGS_X11) AC_SUBST(CFLAGS_X11)
AC_SUBST(CFLAGS_XVIDEO) AC_SUBST(CFLAGS_XVIDEO)
......
...@@ -17,7 +17,8 @@ Standards-Version: 3.5.6 ...@@ -17,7 +17,8 @@ Standards-Version: 3.5.6
Package: vlc Package: vlc
Architecture: any Architecture: any
Depends: ${shlibs:Depends}, vlc-gui Depends: ${shlibs:Depends}
Recommends: vlc-gui
Suggests: vlc-gnome Suggests: vlc-gnome
Description: a free MPEG and DVD player Description: a free MPEG and DVD player
VideoLAN is a free MPEG, MPEG2 and DVD software solution. VideoLAN is a free MPEG, MPEG2 and DVD software solution.
......
...@@ -321,6 +321,10 @@ ...@@ -321,6 +321,10 @@
#define VOUT_DEPTH_VAR "vlc_depth" #define VOUT_DEPTH_VAR "vlc_depth"
#define VOUT_DEPTH_DEFAULT 15 #define VOUT_DEPTH_DEFAULT 15
/* Default SPU margin is -1, which means we don't force their position */
#define VOUT_SPUMARGIN_VAR "vlc_spumargin"
#define VOUT_SPUMARGIN_DEFAULT -1
/* Multiplier value for aspect ratio calculation (2^7 * 3^3 * 5^3) */ /* Multiplier value for aspect ratio calculation (2^7 * 3^3 * 5^3) */
#define VOUT_ASPECT_FACTOR 432000 #define VOUT_ASPECT_FACTOR 432000
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* macosx.c : MacOS X plugin for vlc * macosx.c : MacOS X plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: macosx.c,v 1.11 2002/01/19 19:54:01 gbazin Exp $ * $Id: macosx.c,v 1.12 2002/01/21 00:52:07 sam Exp $
* *
* Authors: Colin Delacroix <colin@zoy.org> * Authors: Colin Delacroix <colin@zoy.org>
* Eugenio Jarosiewicz <ej0@cise.ufl.edu> * Eugenio Jarosiewicz <ej0@cise.ufl.edu>
...@@ -42,8 +42,6 @@ void _M( intf_getfunctions )( function_list_t * p_function_list ); ...@@ -42,8 +42,6 @@ void _M( intf_getfunctions )( function_list_t * p_function_list );
* Build configuration tree. * Build configuration tree.
*****************************************************************************/ *****************************************************************************/
MODULE_CONFIG_START MODULE_CONFIG_START
ADD_WINDOW( "Configuration for MacOS X module" )
ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
MODULE_CONFIG_STOP MODULE_CONFIG_STOP
MODULE_INIT_START MODULE_INIT_START
......
...@@ -182,11 +182,15 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -182,11 +182,15 @@ static int vout_Create( vout_thread_t *p_vout )
*****************************************************************************/ *****************************************************************************/
static int vout_Init( vout_thread_t *p_vout ) static int vout_Init( vout_thread_t *p_vout )
{ {
if( p_vout->p_sys->i_mode == MODE_NORMAL_MEM || /* These variables are only used if we are in overlay mode */
p_vout->p_sys->i_mode == MODE_SHARED_MEM ) int i_ret;
PgScalerProps_t props;
switch( p_vout->p_sys->i_mode )
{ {
case MODE_NORMAL_MEM:
case MODE_SHARED_MEM:
/* create images for [shared] memory blit */ /* create images for [shared] memory blit */
if( !( p_vout->p_sys->p_image[0] = PhCreateImage( NULL, if( !( p_vout->p_sys->p_image[0] = PhCreateImage( NULL,
p_vout->p_sys->dim.w, p_vout->p_sys->dim.h, p_vout->p_sys->dim.w, p_vout->p_sys->dim.h,
p_vout->p_sys->i_img_type, NULL, 0, p_vout->p_sys->i_img_type, NULL, 0,
...@@ -210,11 +214,10 @@ static int vout_Init( vout_thread_t *p_vout ) ...@@ -210,11 +214,10 @@ static int vout_Init( vout_thread_t *p_vout )
p_vout->i_bytes_per_line = p_vout->p_sys->p_image[0]->bpl; p_vout->i_bytes_per_line = p_vout->p_sys->p_image[0]->bpl;
p_vout->pf_setbuffers( p_vout, p_vout->p_sys->p_image[0]->image, p_vout->pf_setbuffers( p_vout, p_vout->p_sys->p_image[0]->image,
p_vout->p_sys->p_image[1]->image ); p_vout->p_sys->p_image[1]->image );
} break;
else if( p_vout->p_sys->i_mode == MODE_VIDEO_MEM )
{
/* create offscreen contexts for video memory blit */
case MODE_VIDEO_MEM:
/* create offscreen contexts for video memory blit */
if( ( p_vout->p_sys->p_ctx[0] = PdCreateOffscreenContext( 0, if( ( p_vout->p_sys->p_ctx[0] = PdCreateOffscreenContext( 0,
p_vout->p_sys->dim.w, p_vout->p_sys->dim.h, p_vout->p_sys->dim.w, p_vout->p_sys->dim.h,
Pg_OSC_MEM_PAGE_ALIGN ) ) == NULL ) Pg_OSC_MEM_PAGE_ALIGN ) ) == NULL )
...@@ -255,12 +258,8 @@ static int vout_Init( vout_thread_t *p_vout ) ...@@ -255,12 +258,8 @@ static int vout_Init( vout_thread_t *p_vout )
p_vout->i_bytes_per_line * p_vout->p_sys->dim.h ); p_vout->i_bytes_per_line * p_vout->p_sys->dim.h );
p_vout->pf_setbuffers( p_vout, p_vout->p_sys->p_buf[0], p_vout->pf_setbuffers( p_vout, p_vout->p_sys->p_buf[0],
p_vout->p_sys->p_buf[1] ); p_vout->p_sys->p_buf[1] );
}
else if( p_vout->p_sys->i_mode == MODE_VIDEO_OVERLAY )
{
int i_ret;
PgScalerProps_t props;
case MODE_VIDEO_OVERLAY:
props.size = sizeof( props ); props.size = sizeof( props );
props.format = p_vout->p_sys->i_vc_format; props.format = p_vout->p_sys->i_vc_format;
props.flags = Pg_SCALER_PROP_SCALER_ENABLE | props.flags = Pg_SCALER_PROP_SCALER_ENABLE |
...@@ -346,6 +345,11 @@ static int vout_Init( vout_thread_t *p_vout ) ...@@ -346,6 +345,11 @@ static int vout_Init( vout_thread_t *p_vout )
p_vout->pf_setbuffers( p_vout, p_vout->pf_setbuffers( p_vout,
p_vout->p_sys->p_vc_y[0], p_vout->p_sys->p_vc_y[1] ); p_vout->p_sys->p_vc_y[0], p_vout->p_sys->p_vc_y[1] );
} }
break;
default:
/* This shouldn't happen ! */
break;
} }
return( 0 ); return( 0 );
......
.dep
*.lo
*.o.*
*.lo.*
win32_SRC = win32.cpp
/*****************************************************************************
* win32.cpp : Win32 interface plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: win32.cpp,v 1.1 2002/01/21 00:52:07 sam Exp $
*
* Authors:
*
* 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.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <string.h>
extern "C"
{
#include <videolan/vlc.h>
/*****************************************************************************
* Capabilities defined in the other files.
*****************************************************************************/
void _M( intf_getfunctions )( function_list_t * p_function_list );
/*****************************************************************************
* Build configuration tree.
*****************************************************************************/
MODULE_CONFIG_START
MODULE_CONFIG_STOP
MODULE_INIT_START
SET_DESCRIPTION( "Win32 interface" )
ADD_CAPABILITY( INTF, 100 )
ADD_SHORTCUT( "win32" )
MODULE_INIT_STOP
MODULE_ACTIVATE_START
_M( intf_getfunctions )( &p_module->p_functions->intf );
MODULE_ACTIVATE_STOP
MODULE_DEACTIVATE_START
MODULE_DEACTIVATE_STOP
} /* extern "C" */
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* xcommon.c: Functions common to the X11 and XVideo plugins * xcommon.c: Functions common to the X11 and XVideo plugins
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2001 VideoLAN * Copyright (C) 1998-2001 VideoLAN
* $Id: xcommon.c,v 1.12 2002/01/13 15:07:55 gbazin Exp $ * $Id: xcommon.c,v 1.13 2002/01/21 00:52:07 sam Exp $
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -1899,10 +1899,13 @@ static int XVideoGetPort( Display *dpy, u32 i_chroma, u32 *pi_newchroma ) ...@@ -1899,10 +1899,13 @@ static int XVideoGetPort( Display *dpy, u32 i_chroma, u32 *pi_newchroma )
i_format < i_num_formats && ( i_selected_port == -1 ); i_format < i_num_formats && ( i_selected_port == -1 );
i_format++ ) i_format++ )
{ {
/* Code removed, we can get this through xvinfo anyway */
#if 0
XvEncodingInfo *p_enc; XvEncodingInfo *p_enc;
int i_enc, i_num_encodings; int i_enc, i_num_encodings;
XvAttribute *p_attr; XvAttribute *p_attr;
int i_attr, i_num_attributes; int i_attr, i_num_attributes;
#endif
/* If this is not the format we want, or at least a /* If this is not the format we want, or at least a
* similar one, forget it */ * similar one, forget it */
...@@ -1940,6 +1943,7 @@ static int XVideoGetPort( Display *dpy, u32 i_chroma, u32 *pi_newchroma ) ...@@ -1940,6 +1943,7 @@ static int XVideoGetPort( Display *dpy, u32 i_chroma, u32 *pi_newchroma )
( p_formats[ i_format ].format ( p_formats[ i_format ].format
== XvPacked ) ? "packed" : "planar" ); == XvPacked ) ? "packed" : "planar" );
#if 0
intf_WarnMsg( 10, " encoding list:" ); intf_WarnMsg( 10, " encoding list:" );
if( XvQueryEncodings( dpy, i_selected_port, if( XvQueryEncodings( dpy, i_selected_port,
...@@ -1982,6 +1986,7 @@ static int XVideoGetPort( Display *dpy, u32 i_chroma, u32 *pi_newchroma ) ...@@ -1982,6 +1986,7 @@ static int XVideoGetPort( Display *dpy, u32 i_chroma, u32 *pi_newchroma )
{ {
XFree( p_attr ); XFree( p_attr );
} }
#endif
} }
if( p_formats != NULL ) if( p_formats != NULL )
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* and spawn threads. * and spawn threads.
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2001 VideoLAN * Copyright (C) 1998-2001 VideoLAN
* $Id: main.c,v 1.145 2002/01/17 23:02:45 gbazin Exp $ * $Id: main.c,v 1.146 2002/01/21 00:52:07 sam Exp $
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
#define OPT_NOOVERLAY 166 #define OPT_NOOVERLAY 166
#define OPT_XVADAPTOR 167 #define OPT_XVADAPTOR 167
#define OPT_SMP 168 #define OPT_SMP 168
#define OPT_FILTER 169 #define OPT_SPUMARGIN 169
#define OPT_CHANNELS 170 #define OPT_CHANNELS 170
#define OPT_SERVER 171 #define OPT_SERVER 171
...@@ -121,8 +121,9 @@ ...@@ -121,8 +121,9 @@
#define OPT_DOWNMIX 184 #define OPT_DOWNMIX 184
#define OPT_IMDCT 185 #define OPT_IMDCT 185
#define OPT_MEMCPY 186 #define OPT_MEMCPY 186
#define OPT_DVDCSS_METHOD 187 #define OPT_FILTER 187
#define OPT_DVDCSS_VERBOSE 188 #define OPT_DVDCSS_METHOD 188
#define OPT_DVDCSS_VERBOSE 189
#define OPT_SYNCHRO 190 #define OPT_SYNCHRO 190
#define OPT_WARNING 191 #define OPT_WARNING 191
...@@ -185,7 +186,7 @@ static const struct option longopts[] = ...@@ -185,7 +186,7 @@ static const struct option longopts[] =
{ "nooverlay", 0, 0, OPT_NOOVERLAY }, { "nooverlay", 0, 0, OPT_NOOVERLAY },
{ "xvadaptor", 1, 0, OPT_XVADAPTOR }, { "xvadaptor", 1, 0, OPT_XVADAPTOR },
{ "smp", 1, 0, OPT_SMP }, { "smp", 1, 0, OPT_SMP },
{ "filter", 1, 0, OPT_FILTER }, { "spumargin", 1, 0, OPT_SPUMARGIN },
/* DVD options */ /* DVD options */
{ "dvdtitle", 1, 0, 't' }, { "dvdtitle", 1, 0, 't' },
...@@ -205,6 +206,7 @@ static const struct option longopts[] = ...@@ -205,6 +206,7 @@ static const struct option longopts[] =
/* Misc options */ /* Misc options */
{ "synchro", 1, 0, OPT_SYNCHRO }, { "synchro", 1, 0, OPT_SYNCHRO },
{ "memcpy", 1, 0, OPT_MEMCPY }, { "memcpy", 1, 0, OPT_MEMCPY },
{ "filter", 1, 0, OPT_FILTER },
/* Decoder options */ /* Decoder options */
{ "mpeg_adec", 1, 0, OPT_MPEG_ADEC }, { "mpeg_adec", 1, 0, OPT_MPEG_ADEC },
...@@ -795,8 +797,8 @@ static int GetConfiguration( int *pi_argc, char *ppsz_argv[], char *ppsz_env[] ) ...@@ -795,8 +797,8 @@ static int GetConfiguration( int *pi_argc, char *ppsz_argv[], char *ppsz_env[] )
case OPT_SMP: /* --smp */ case OPT_SMP: /* --smp */
main_PutIntVariable( VDEC_SMP_VAR, atoi(optarg) ); main_PutIntVariable( VDEC_SMP_VAR, atoi(optarg) );
break; break;
case OPT_FILTER: /* --filter */ case OPT_SPUMARGIN: /* --spumargin */
main_PutPszVariable( VOUT_FILTER_VAR, optarg ); main_PutIntVariable( VOUT_SPUMARGIN_VAR, atoi(optarg) );
break; break;
/* DVD options */ /* DVD options */
...@@ -850,6 +852,9 @@ static int GetConfiguration( int *pi_argc, char *ppsz_argv[], char *ppsz_env[] ) ...@@ -850,6 +852,9 @@ static int GetConfiguration( int *pi_argc, char *ppsz_argv[], char *ppsz_env[] )
case OPT_MEMCPY: case OPT_MEMCPY:
main_PutPszVariable( MEMCPY_METHOD_VAR, optarg ); main_PutPszVariable( MEMCPY_METHOD_VAR, optarg );
break; break;
case OPT_FILTER: /* --filter */
main_PutPszVariable( VOUT_FILTER_VAR, optarg );
break;
/* Decoder options */ /* Decoder options */
case OPT_MPEG_ADEC: case OPT_MPEG_ADEC:
...@@ -974,6 +979,7 @@ static void Usage( int i_fashion ) ...@@ -974,6 +979,7 @@ static void Usage( int i_fashion )
"\n --yuv <module> \tYUV method" "\n --yuv <module> \tYUV method"
"\n --synchro <type> \tforce synchro algorithm" "\n --synchro <type> \tforce synchro algorithm"
"\n --smp <number of threads> \tuse several processors" "\n --smp <number of threads> \tuse several processors"
"\n --spumargin <m> \tforce SPU position"
"\n --filter <module> \tvideo filter module" "\n --filter <module> \tvideo filter module"
"\n" "\n"
"\n -t, --dvdtitle <num> \tchoose DVD title" "\n -t, --dvdtitle <num> \tchoose DVD title"
...@@ -1048,7 +1054,8 @@ static void Usage( int i_fashion ) ...@@ -1048,7 +1054,8 @@ static void Usage( int i_fashion )
"\n " YUV_METHOD_VAR "=<method name> \tYUV method" "\n " YUV_METHOD_VAR "=<method name> \tYUV method"
"\n " VPAR_SYNCHRO_VAR "={I|I+|IP|IP+|IPB} \tsynchro algorithm" "\n " VPAR_SYNCHRO_VAR "={I|I+|IP|IP+|IPB} \tsynchro algorithm"
"\n " VDEC_SMP_VAR "=<number of threads> \tuse several processors" "\n " VDEC_SMP_VAR "=<number of threads> \tuse several processors"
"\n " VOUT_FILTER_VAR "=<method name> \tvideo filter method" ); "\n " VOUT_FILTER_VAR "=<method name> \tvideo filter method"
"\n " VOUT_SPUMARGIN_VAR "=<margin> \tforce SPU margin" );
/* DVD parameters */ /* DVD parameters */
intf_MsgImm( "\nDVD parameters:" intf_MsgImm( "\nDVD parameters:"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* modules.c : Built-in and plugin modules management functions * modules.c : Built-in and plugin modules management functions
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: modules.c,v 1.48 2002/01/12 21:58:56 jlj Exp $ * $Id: modules.c,v 1.49 2002/01/21 00:52:07 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* Ethan C. Baldridge <BaldridgeE@cadmus.com> * Ethan C. Baldridge <BaldridgeE@cadmus.com>
...@@ -274,10 +274,23 @@ module_t * module_Need( int i_capability, char *psz_name, probedata_t *p_data ) ...@@ -274,10 +274,23 @@ module_t * module_Need( int i_capability, char *psz_name, probedata_t *p_data )
if( psz_name != NULL && *psz_name ) if( psz_name != NULL && *psz_name )
{ {
#define MAX_PLUGIN_NAME 128
/* A module name was requested. Use the first matching one. */ /* A module name was requested. Use the first matching one. */
char psz_realname[ MAX_PLUGIN_NAME + 1 ];
int i_index; int i_index;
boolean_t b_ok = 0; boolean_t b_ok = 0;
for( i_index = 0;
i_index < MAX_PLUGIN_NAME
&& psz_name[ i_index ]
&& psz_name[ i_index ] != ':';
i_index++ )
{
psz_realname[ i_index ] = psz_name[ i_index ];
}
psz_realname[ i_index ] = '\0';
for( p_module = p_module_bank->first; for( p_module = p_module_bank->first;
p_module != NULL; p_module != NULL;
p_module = p_module->next ) p_module = p_module->next )
...@@ -300,7 +313,8 @@ module_t * module_Need( int i_capability, char *psz_name, probedata_t *p_data ) ...@@ -300,7 +313,8 @@ module_t * module_Need( int i_capability, char *psz_name, probedata_t *p_data )
!b_ok && p_module->pp_shortcuts[i_index]; !b_ok && p_module->pp_shortcuts[i_index];
i_index++ ) i_index++ )
{ {
b_ok = !strcmp( psz_name, p_module->pp_shortcuts[i_index] ); b_ok = !strcmp( psz_realname,
p_module->pp_shortcuts[i_index] );
} }
if( b_ok ) if( b_ok )
...@@ -317,7 +331,7 @@ module_t * module_Need( int i_capability, char *psz_name, probedata_t *p_data ) ...@@ -317,7 +331,7 @@ module_t * module_Need( int i_capability, char *psz_name, probedata_t *p_data )
else else
{ {
intf_ErrMsg( "module error: requested %s module `%s' not found", intf_ErrMsg( "module error: requested %s module `%s' not found",
GetCapabilityName( i_capability ), psz_name ); GetCapabilityName( i_capability ), psz_realname );
} }
} }
else else
......
/*****************************************************************************
* symbols.c : Extra file used to force linking with some shared symbols
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: symbols.c,v 1.1 2002/01/21 00:52:07 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.
*****************************************************************************/
/*****************************************************************************
* Rationale for this file:
*
* On certain architectures, such as IA64 or HPPA, it is forbidden to link
* static objects with objects which have relocation information. This
* basically means that if you are building libfoo.so, you cannot add libbar.a
* to the link process. To bypass this restriction, we link the main app with
* libbar.a, but then we need to tell the compiler that we will need symbols
* from libbar.a, this is why this file is here.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <videolan/vlc.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/extensions/XShm.h>
#include <X11/extensions/Xv.h>
#include <X11/extensions/Xvlib.h>
#include <X11/extensions/dpms.h>
#include <X11/extensions/xf86dga.h>
#include <X11/extensions/xf86dgastr.h>
#include <X11/extensions/xf86vmode.h>
#include <X11/extensions/xf86vmstr.h>
/*****************************************************************************
* Local prototypes
*****************************************************************************/
void _Use ( int, ... );
void _Beurk ( void );
/*****************************************************************************
*
*****************************************************************************/
void _Use( int i_dummy, ... )
{
;
}
/*****************************************************************************
*
*****************************************************************************/
void _Beurk( void )
{
/* for i in Xxf86dga Xxf86vm Xv
* do nm /usr/X11R6/lib/lib$i.a | grep ' T ' | awk '{ print $3 }'
* done
*/
_Use( 0, XF86DGADirectVideo, XF86DGADirectVideoLL, XF86DGAForkApp,
XF86DGAGetVidPage, XF86DGAGetVideo, XF86DGAGetVideoLL,
XF86DGAGetViewPortSize, XF86DGAInstallColormap,
XF86DGAQueryDirectVideo, XF86DGAQueryExtension,
XF86DGAQueryVersion, XF86DGASetVidPage, XF86DGASetViewPort,
XF86DGAViewPortChanged );
_Use( 0, XDGAChangePixmapMode, XDGACloseFramebuffer, XDGACopyArea,
XDGACopyTransparentArea, XDGACreateColormap, XDGAFillRectangle,
/* XDGAGetMappedMemory, */ XDGAGetViewportStatus,
XDGAInstallColormap, XDGAKeyEventToXKeyEvent,
/* XDGAMapFramebuffer, */ XDGAOpenFramebuffer, XDGAQueryExtension,
XDGAQueryModes, XDGAQueryVersion, XDGASelectInput,
XDGASetClientVersion, XDGASetMode, XDGASetViewport, XDGASync
/* XDGAUnmapFramebuffer, */ /* xdga_find_display */ );
_Use( 0, XF86VidModeAddModeLine, XF86VidModeDeleteModeLine,
XF86VidModeGetAllModeLines, XF86VidModeGetDotClocks,
XF86VidModeGetGamma, XF86VidModeGetGammaRamp,
XF86VidModeGetGammaRampSize, XF86VidModeGetModeLine,
XF86VidModeGetMonitor, XF86VidModeGetViewPort,
XF86VidModeLockModeSwitch, XF86VidModeModModeLine,
XF86VidModeQueryExtension, XF86VidModeQueryVersion,
XF86VidModeSetClientVersion, XF86VidModeSetGamma,
XF86VidModeSetGammaRamp, XF86VidModeSetViewPort,
XF86VidModeSwitchMode, XF86VidModeSwitchToMode,
XF86VidModeValidateModeLine );
_Use( 0, XvCreateImage, XvFreeAdaptorInfo, XvFreeEncodingInfo,
XvGetPortAttribute, XvGetStill, XvGetVideo, XvGrabPort,
XvListImageFormats, XvPutImage, XvPutStill, XvPutVideo,
XvQueryAdaptors, XvQueryBestSize, XvQueryEncodings,
XvQueryExtension, XvQueryPortAttributes, XvSelectPortNotify,
XvSelectVideoNotify, XvSetPortAttribute, XvShmCreateImage,
XvShmPutImage, XvStopVideo, XvUngrabPort );
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* vout_subpictures.c : subpicture management functions * vout_subpictures.c : subpicture management functions
***************************************************************************** *****************************************************************************
* Copyright (C) 2000 VideoLAN * Copyright (C) 2000 VideoLAN
* $Id: vout_subpictures.c,v 1.5 2002/01/04 14:01:35 sam Exp $ * $Id: vout_subpictures.c,v 1.6 2002/01/21 00:52:07 sam Exp $
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -59,16 +59,31 @@ void vout_DisplaySubPicture( vout_thread_t *p_vout, subpicture_t *p_subpic ) ...@@ -59,16 +59,31 @@ void vout_DisplaySubPicture( vout_thread_t *p_vout, subpicture_t *p_subpic )
char psz_start[ MSTRTIME_MAX_SIZE ]; /* buffer for date string */ char psz_start[ MSTRTIME_MAX_SIZE ]; /* buffer for date string */
char psz_stop[ MSTRTIME_MAX_SIZE ]; /* buffer for date string */ char psz_stop[ MSTRTIME_MAX_SIZE ]; /* buffer for date string */
#endif #endif
int i_margin;
#ifdef DEBUG #ifdef DEBUG
/* Check if status is valid */ /* Check if status is valid */
if( p_subpic->i_status != RESERVED_SUBPICTURE ) if( p_subpic->i_status != RESERVED_SUBPICTURE )
{ {
intf_ErrMsg("error: subpicture %p has invalid status #%d", p_subpic, intf_ErrMsg( "error: subpicture %p has invalid status #%d",
p_subpic->i_status ); p_subpic, p_subpic->i_status );
} }
#endif #endif
/* If the user requested an SPU margin, we force the position after
* having checked that it was a valid value. */
i_margin = main_GetIntVariable( VOUT_SPUMARGIN_VAR,
VOUT_SPUMARGIN_DEFAULT );
if( i_margin >= 0 )
{
if( p_subpic->i_height + i_margin <= p_vout->output.i_height )
{
p_subpic->i_y = p_vout->output.i_height
- i_margin - p_subpic->i_height;
}
}
/* Remove reservation flag */ /* Remove reservation flag */
p_subpic->i_status = READY_SUBPICTURE; p_subpic->i_status = READY_SUBPICTURE;
......
...@@ -65,7 +65,7 @@ This package contains no deCSS functionality. ...@@ -65,7 +65,7 @@ This package contains no deCSS functionality.
You need the decss library available from http://www.videolan.org You need the decss library available from http://www.videolan.org
%package gtk %package gtk
Summary: Gtk plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Gtk plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description gtk %description gtk
...@@ -75,7 +75,7 @@ install vlc-gtk. ...@@ -75,7 +75,7 @@ install vlc-gtk.
%package gnome %package gnome
Summary: Gnome plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Gnome plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description gnome %description gnome
...@@ -84,7 +84,7 @@ If you are going to watch DVD with the Gnome front-end, you should ...@@ -84,7 +84,7 @@ If you are going to watch DVD with the Gnome front-end, you should
install vlc-gnome. install vlc-gnome.
%package qt %package qt
Summary: Qt2 plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Qt2 plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description qt %description qt
...@@ -93,7 +93,7 @@ If you are going to watch DVD with the Qt2 front-end, you should ...@@ -93,7 +93,7 @@ If you are going to watch DVD with the Qt2 front-end, you should
install vlc-qt install vlc-qt
%package ncurses %package ncurses
Summary: Ncurses console-based plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Ncurses console-based plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description ncurses %description ncurses
...@@ -102,7 +102,7 @@ If you are going to watch DVD with the ncurses front-end, you should ...@@ -102,7 +102,7 @@ If you are going to watch DVD with the ncurses front-end, you should
install vlc-ncurses install vlc-ncurses
%package sdl %package sdl
Summary: Simple DirectMedia Layer plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Simple DirectMedia Layer plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description sdl %description sdl
...@@ -112,7 +112,7 @@ If you are going to watch DVD with the sdl plugin, you should ...@@ -112,7 +112,7 @@ If you are going to watch DVD with the sdl plugin, you should
install vlc-sdl install vlc-sdl
%package ggi %package ggi
Summary: GGI plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: GGI plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description ggi %description ggi
...@@ -121,7 +121,7 @@ If you are going to watch DVD with the GGI plugin, you should ...@@ -121,7 +121,7 @@ If you are going to watch DVD with the GGI plugin, you should
install vlc-ggi install vlc-ggi
%package esd %package esd
Summary: Enlightened Sound Daemon plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Enlightened Sound Daemon plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description esd %description esd
...@@ -131,22 +131,22 @@ If you are going to watch DVD with the esd plugin, you should ...@@ -131,22 +131,22 @@ If you are going to watch DVD with the esd plugin, you should
install vlc-esd install vlc-esd
%package alsa %package alsa
Summary: Advanced Linux Sound Architecture plug-in for VideoLAN, a DVD and Mpeg-2 player Summary: Advanced Linux Sound Architecture plug-in for VideoLAN, a DVD and MPEG2 player
Group: Video Group: Video
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description alsa %description alsa
The vlc-alsa packages includes the Advanced Linux Sound Architecture plug-in for the VideoLAN client. The vlc-alsa packages includes the Advanced Linux Sound Architecture plug-in for the VideoLAN client.
If you are going to watch DVD with the esd plugin, you should install vlc-alsa If you are going to watch DVD with the ALSA plugin, you should install vlc-alsa
%package -n %{css_lib_name} %package -n %{css_lib_name}
Summary: A library for accessing DVDs like block device usind deCSS if needed. Summary: A library for accessing a DVD like a block device using CSS decryption if needed.
Version: %{css_version} Version: %{css_version}
Release: %{css_release} Release: %{css_release}
Group: System/Libraries Group: System/Libraries
Provides: %{css_name} = %{css_version}-%{css_release} Provides: %{css_name} = %{css_version}-%{css_release}
%description -n %{css_lib_name} %description -n %{css_lib_name}
libdvdcss is a simple library designed for accessing DVDs like a block device libdvdcss is a simple library designed for accessing a DVD like a block device
without having to bother about the decryption. The important features are: without having to bother about the decryption. The important features are:
* Portability. Currently supported platforms are GNU/Linux, FreeBSD, BeOS * Portability. Currently supported platforms are GNU/Linux, FreeBSD, BeOS
and Windows. The MacOS X version is being worked on as well. and Windows. The MacOS X version is being worked on as well.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment