diff options
-rw-r--r-- | DOCS/LIRC | 4 | ||||
-rw-r--r-- | DOCS/SOUNDCARDS | 11 | ||||
-rw-r--r-- | Makefile | 20 | ||||
-rw-r--r-- | cfg-mplayer.h | 118 | ||||
-rwxr-xr-x | configure | 126 | ||||
-rw-r--r-- | help_mp.h | 6 | ||||
-rw-r--r-- | libvo/wskeys.h | 2 | ||||
-rw-r--r-- | libvo/x11_common.c | 94 | ||||
-rw-r--r-- | lirc_mp.c | 6 | ||||
-rw-r--r-- | mplayer.c | 394 |
10 files changed, 387 insertions, 394 deletions
@@ -29,6 +29,10 @@ o MPlayer and LIRC FRWND - 60 secs back FWD - skip 10 secs FFWD - skip 60 secs + INCVOL - increase volume one percent + DECVOL - decrease volmue one percent + MASTER - use master mixer channel + PCM - use pcm mixer channel Don't forget to enable the repeat flag for RWND/FWD in .lircrc. Here's an excerpt from my .lircrc: diff --git a/DOCS/SOUNDCARDS b/DOCS/SOUNDCARDS index 0cbde947b0..5ae42ea32e 100644 --- a/DOCS/SOUNDCARDS +++ b/DOCS/SOUNDCARDS @@ -2,12 +2,11 @@ Recommendations for misc. soundcards ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Aureal Vortex 2: (Pontscho) - In config.h, change #define HAVE_AUDIO_SELECT to - #undef HAVE_AUDIO_SELECT - OSS : With MPEG files : defaults are ok - With AVI files : -delay -0.5 - ALSA : same +Aureal Vortex 2: In config.h, change #define HAVE_AUDIO_SELECT to + #undef HAVE_AUDIO_SELECT or run + ./configure script with --disable-select option + +ALSA with GUS PnP: see Aureal Vortex2 SB Live!: OSS : OK @@ -22,8 +22,8 @@ PRG_CFG = codec-cfg prefix = /usr/local BINDIR = ${prefix}/bin # BINDIR = /usr/local/bin -SRCS = codec-cfg.c subreader.c linux/getch2.c linux/timer-lx.c linux/shmem.c xa/xa_gsm.c lirc_mp.c cfgparser.c -OBJS = codec-cfg.o subreader.o linux/getch2.o linux/timer-lx.o linux/shmem.o xa/xa_gsm.o lirc_mp.o cfgparser.o +SRCS = codec-cfg.c subreader.c linux/getch2.c linux/timer-lx.c linux/shmem.c xa/xa_gsm.c lirc_mp.c cfgparser.c mixer.c +OBJS = codec-cfg.o subreader.o linux/getch2.o linux/timer-lx.o linux/shmem.o xa/xa_gsm.o lirc_mp.o cfgparser.o mixer.o CFLAGS = $(OPTFLAGS) -Iloader -Ilibvo # -Wall A_LIBS = -Lmp3lib -lMP3 -Llibac3 -lac3 VO_LIBS = -Llibvo -lvo $(X_LIBS) @@ -32,7 +32,7 @@ VO_LIBS = -Llibvo -lvo $(X_LIBS) # .PHONY: all clean -all: version.h $(PRG) $(PRG_CFG) +all: $(PRG) $(PRG_CFG) # $(PRG_AVIP) .c.o: @@ -65,6 +65,7 @@ encore/libencore.a: $(MAKE) -C encore $(PRG): .depend mplayer.o $(OBJS) loader/libloader.a loader/DirectShow/libDS_Filter.a libmpeg2/libmpeg2.a opendivx/libdecore.a $(COMMONLIBS) encore/libencore.a + @for a in mp3lib libac3 libmpeg2 opendivx encore libvo loader loader/DirectShow drivers drivers/syncfb ; do $(MAKE) -C $$a; done $(CC) $(CFLAGS) -o $(PRG) mplayer.o $(OBJS) $(XMM_LIBS) $(LIRC_LIBS) $(A_LIBS) -lm $(TERMCAP_LIB) -Lloader -lloader -Lloader/DirectShow -lDS_Filter -ldl -Llibmpeg2 -lmpeg2 -Lopendivx -ldecore $(VO_LIBS) -Lencore -lencore -lpthread -lstdc++ $(PRG_HQ): .depend mplayerHQ.o $(OBJS) loader/libloader.a libmpeg2/libmpeg2.a opendivx/libdecore.a $(COMMONLIBS) encore/libencore.a @@ -76,7 +77,7 @@ $(PRG_AVIP): .depend aviparse.o $(OBJS) loader/libloader.a $(COMMONLIBS) $(PRG_TV): .depend tvision.o $(OBJS) $(COMMONLIBS) $(CC) $(CFLAGS) -o $(PRG_TV) tvision.o $(OBJS) -lm $(TERMCAP_LIB) $(VO_LIBS) -$(PRG_CFG): .depend codec-cfg.c codec-cfg.h +$(PRG_CFG): codec-cfg.c codec-cfg.h $(CC) $(CFLAGS) -g codec-cfg.c -o $(PRG_CFG) -DTESTING install: $(PRG) @@ -98,20 +99,9 @@ depend: .depend .depend: Makefile config.mak config.h makedepend -f- -- $(CFLAGS) -- mplayer.c mplayerHQ.c aviparse.c tvision.c $(SRCS) 1>.depend 2>/dev/null -# rebuild at every config.h/config.mak change: -version.h: config.h config.mak Makefile - $(MAKE) distclean - ./version.sh - -# rebuild at every CVS update: -ifneq ($(wildcard CVS/Entries),) -version.h: CVS/Entries -endif - # # include dependency files if they exist # ifneq ($(wildcard .depend),) include .depend endif - diff --git a/cfg-mplayer.h b/cfg-mplayer.h index d3b376adb4..9b149a37b9 100644 --- a/cfg-mplayer.h +++ b/cfg-mplayer.h @@ -6,78 +6,76 @@ extern char *fb_dev_name; extern char *fb_mode_cfgfile; extern char *fb_mode_name; -extern char *monitor_hfreq_str; -extern char *monitor_vfreq_str; -extern char *monitor_dotclock_str; +extern int fb_mode_depth; #endif struct config conf[]={ - /* name, pointer, type, flags, min, max */ - {"include", cfg_include, CONF_TYPE_FUNC_PARAM, 0, 0, 0}, /* this must be the first!!! */ - {"o", "Option -o has been renamed to -vo (video-out), use -vo !\n", + /* name, pointer, type, flags, min, max */ + {"include", cfg_include, CONF_TYPE_FUNC_PARAM, 0, 0, 0}, /* this must be the first!!! */ + {"o", "Option -o has been renamed to -vo (video-out), use -vo !\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, - {"vo", &video_driver, CONF_TYPE_STRING, 0, 0, 0}, - {"dsp", &dsp, CONF_TYPE_STRING, 0, 0, 0}, + {"vo", &video_driver, CONF_TYPE_STRING, 0, 0, 0}, + {"dsp", &dsp, CONF_TYPE_STRING, 0, 0, 0}, + {"mixer", &mixer_device, CONF_TYPE_STRING, 0, 0, 0}, + {"master", &mixer_usemaster, CONF_TYPE_FLAG, 0, 0, 1}, #ifdef HAVE_FBDEV - {"fb", &fb_dev_name, CONF_TYPE_STRING, 0, 0, 0}, - {"fbmode", &fb_mode_name, CONF_TYPE_STRING, 0, 0, 0}, - {"fbmodeconfig", &fb_mode_cfgfile, CONF_TYPE_STRING, 0, 0, 0}, - {"monitor_hfreq", &monitor_hfreq_str, CONF_TYPE_STRING, 0, 0, 0}, - {"monitor_vfreq", &monitor_vfreq_str, CONF_TYPE_STRING, 0, 0, 0}, - {"monitor_dotclock", &monitor_dotclock_str, CONF_TYPE_STRING, 0, 0, 0}, + {"fb", &fb_dev_name, CONF_TYPE_STRING, 0, 0, 0}, + {"fbmode", &fb_mode_name, CONF_TYPE_STRING, 0, 0, 0}, + {"fbmodeconfig", &fb_mode_cfgfile, CONF_TYPE_STRING, 0, 0, 0}, + {"fbdepth", &fb_mode_depth, CONF_TYPE_INT, CONF_RANGE, 15, 32}, #endif - {"encode", &encode_name, CONF_TYPE_STRING, 0, 0, 0}, - {"sub", &sub_name, CONF_TYPE_STRING, 0, 0, 0}, - {"subdelay", &sub_delay, CONF_TYPE_FLOAT, 0, 0.0, 10.0}, - {"subfps", &sub_fps, CONF_TYPE_FLOAT, 0, 0.0, 10.0}, - {"font", &font_name, CONF_TYPE_STRING, 0, 0, 0}, - {"ffactor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0}, - {"bg", &play_in_bg, CONF_TYPE_FLAG, 0, 0, 1}, - {"nobg", &play_in_bg, CONF_TYPE_FLAG, 0, 1, 0}, - {"sb", &seek_to_byte, CONF_TYPE_INT, CONF_MIN, 0, 0}, -// {"ss", &seek_to_sec, CONF_TYPE_INT, CONF_MIN, 0, 0}, - {"sound", &has_audio, CONF_TYPE_FLAG, 0, 0, 1}, - {"nosound", &has_audio, CONF_TYPE_FLAG, 0, 1, 0}, - {"abs", &audio_buffer_size, CONF_TYPE_INT, CONF_MIN, 0, 0}, - {"delay", &audio_delay, CONF_TYPE_FLOAT, CONF_RANGE, -10.0, 10.0}, - {"bps", &pts_from_bps, CONF_TYPE_FLAG, 0, 0, 1}, - {"nobps", &pts_from_bps, CONF_TYPE_FLAG, 0, 1, 0}, - {"alsa", &alsa, CONF_TYPE_FLAG, 0, 0, 1}, - {"noalsa", &alsa, CONF_TYPE_FLAG, 0, 1, 0}, - {"ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1}, - {"noni", &force_ni, CONF_TYPE_FLAG, 0, 1, 0}, - {"aid", &audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 256}, - {"vid", &video_id, CONF_TYPE_INT, CONF_RANGE, 0, 256}, -// {"auds", &avi_header.audio_codec, CONF_TYPE_STRING, 0, 0, 0}, -// {"vids", &avi_header.video_codec, CONF_TYPE_STRING, 0, 0, 0}, - {"mc", &default_max_pts_correction, CONF_TYPE_FLOAT, CONF_RANGE, 0, 10}, - {"fps", &force_fps, CONF_TYPE_FLOAT, CONF_MIN, 0, 0}, - {"afm", &audio_format, CONF_TYPE_INT, CONF_RANGE, 1, 6}, - {"vcd", &vcd_track, CONF_TYPE_INT, CONF_RANGE, 1, 99}, - {"divxq", "Option -divxq has been renamed to -pp (postprocessing), use -pp !\n", + {"encode", &encode_name, CONF_TYPE_STRING, 0, 0, 0}, + {"sub", &sub_name, CONF_TYPE_STRING, 0, 0, 0}, + {"subdelay", &sub_delay, CONF_TYPE_FLOAT, 0, 0.0, 10.0}, + {"subfps", &sub_fps, CONF_TYPE_FLOAT, 0, 0.0, 10.0}, + {"font", &font_name, CONF_TYPE_STRING, 0, 0, 0}, + {"ffactor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0}, + {"bg", &play_in_bg, CONF_TYPE_FLAG, 0, 0, 1}, + {"nobg", &play_in_bg, CONF_TYPE_FLAG, 0, 1, 0}, + {"sb", &seek_to_byte, CONF_TYPE_INT, CONF_MIN, 0, 0}, +// {"ss", &seek_to_sec, CONF_TYPE_INT, CONF_MIN, 0, 0}, + {"sound", &has_audio, CONF_TYPE_FLAG, 0, 0, 1}, + {"nosound", &has_audio, CONF_TYPE_FLAG, 0, 1, 0}, + {"abs", &audio_buffer_size, CONF_TYPE_INT, CONF_MIN, 0, 0}, + {"delay", &audio_delay, CONF_TYPE_FLOAT, CONF_RANGE, -10.0, 10.0}, + {"bps", &pts_from_bps, CONF_TYPE_FLAG, 0, 0, 1}, + {"nobps", &pts_from_bps, CONF_TYPE_FLAG, 0, 1, 0}, + {"alsa", &alsa, CONF_TYPE_FLAG, 0, 0, 1}, + {"noalsa", &alsa, CONF_TYPE_FLAG, 0, 1, 0}, + {"ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1}, + {"noni", &force_ni, CONF_TYPE_FLAG, 0, 1, 0}, + {"aid", &audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 256}, + {"vid", &video_id, CONF_TYPE_INT, CONF_RANGE, 0, 256}, +// {"auds", &avi_header.audio_codec, CONF_TYPE_STRING, 0, 0, 0}, +// {"vids", &avi_header.video_codec, CONF_TYPE_STRING, 0, 0, 0}, + {"mc", &default_max_pts_correction, CONF_TYPE_FLOAT, CONF_RANGE, 0, 10}, + {"fps", &force_fps, CONF_TYPE_FLOAT, CONF_MIN, 0, 0}, + {"afm", &audio_format, CONF_TYPE_INT, CONF_RANGE, 1, 6}, + {"vcd", &vcd_track, CONF_TYPE_INT, CONF_RANGE, 1, 99}, + {"divxq", "Option -divxq has been renamed to -pp (postprocessing), use -pp !\n", CONF_TYPE_PRINT, 0, 0, 0}, - {"pp", &divx_quality, CONF_TYPE_INT, CONF_RANGE, 0, 63}, - {"br", &encode_bitrate, CONF_TYPE_INT, CONF_RANGE, 10000, 10000000}, + {"pp", &divx_quality, CONF_TYPE_INT, CONF_RANGE, 0, 63}, + {"br", &encode_bitrate, CONF_TYPE_INT, CONF_RANGE, 10000, 10000000}, - {"x", &screen_size_x, CONF_TYPE_INT, CONF_RANGE, 1, 4096}, - {"y", &screen_size_y, CONF_TYPE_INT, CONF_RANGE, 1, 4096}, - {"xy", &screen_size_xy, CONF_TYPE_INT, CONF_RANGE, 1, 4096}, + {"x", &screen_size_x, CONF_TYPE_INT, CONF_RANGE, 1, 4096}, + {"y", &screen_size_y, CONF_TYPE_INT, CONF_RANGE, 1, 4096}, + {"xy", &screen_size_xy, CONF_TYPE_INT, CONF_RANGE, 1, 4096}, {"vm", &vidmode, CONF_TYPE_FLAG, 0, 0, 1}, {"novm", &vidmode, CONF_TYPE_FLAG, 0, 1, 0}, - {"fs", &fullscreen, CONF_TYPE_FLAG, 0, 0, 1}, - {"nofs", &fullscreen, CONF_TYPE_FLAG, 0, 1, 0}, + {"fs", &fullscreen, CONF_TYPE_FLAG, 0, 0, 1}, + {"nofs", &fullscreen, CONF_TYPE_FLAG, 0, 1, 0}, {"zoom", &softzoom, CONF_TYPE_FLAG, 0, 0, 1}, {"nozoom", &softzoom, CONF_TYPE_FLAG, 0, 1, 0}, - + {"bpp", &vo_dbpp, CONF_TYPE_INT, CONF_RANGE, 0, 32}, - - {"idx", &no_index, CONF_TYPE_FLAG, 0, 1, 0}, - {"noidx", &no_index, CONF_TYPE_FLAG, 0, 0, 1}, - {"verbose", &verbose, CONF_TYPE_INT, CONF_RANGE, 0, 100}, - {"v", cfg_inc_verbose, CONF_TYPE_FUNC, 0, 0, 0}, - {"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, - {"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, - {"h", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, - {NULL, NULL, 0, 0, 0, 0} + + {"idx", &no_index, CONF_TYPE_FLAG, 0, 1, 0}, + {"noidx", &no_index, CONF_TYPE_FLAG, 0, 0, 1}, + {"verbose", &verbose, CONF_TYPE_INT, CONF_RANGE, 0, 100}, + {"v", cfg_inc_verbose, CONF_TYPE_FUNC, 0, 0, 0}, + {"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, + {"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, + {"h", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, + {NULL, NULL, 0, 0, 0, 0} }; @@ -6,6 +6,10 @@ # # Changes in reversed order: # +# 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 # @@ -89,7 +93,10 @@ params: --enable-termcap use termcap database for key codes --enable-xmmp use XMMP audio drivers - --enable-lirc enable LIRC (remote control) support + --enable-lirc enable LIRC ( remote control ) support + + --disable-select disable audio select() support ( for example required this + option ALSA or Vortex2 driver ) --with-x11libdir=DIR X library files are in DIR --with-win32libdir=DIR windows codec files @@ -130,16 +137,6 @@ 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 @@ -147,15 +144,6 @@ do --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 @@ -182,6 +170,7 @@ _gl=no _sdl=no _xv=no _vm=no +_x11=no _3dfx=no _syncfb=no _mlib=no @@ -190,7 +179,7 @@ _xmga=no _dga=no _dga2=no _svga=no -_fbdev=yes +_fbdev=no _lirc=no _xdpms=no @@ -199,8 +188,11 @@ _y=1 _gllib= _sdllib= -_xvlib= _x11lib= +_xvlib= +_xlibdir= + +_select='#define HAVE_AUDIO_SELECT' for i in `echo $pparam`; do @@ -237,6 +229,13 @@ for i in `echo $pparam`; do done +if [ -e /usr/X11R6 ]; then + _x11libdir=-L/usr/X11R6/lib +else + if [ -e /usr/X11 ]; then + _x11libdir=-L/usr/X11/lib + fi +fi _win32libdirnotify=no if [ -e /usr/lib/win32 ]; then @@ -376,15 +375,21 @@ fi #echo "DONE (${proc})." -$_cc $TMPC -o $TMPO -lvgagl -lvga &> /dev/null && _svga=yes +# check GL & X11 & Xext & Xv & SDL & termcap libs -$_cc $TMPC -o $TMPO -lpthread &> /dev/null || \ +$_cc $TMPC -o $TMPO $_x11libdir/ -lGL &> /dev/null && _gl=yes +$_cc $TMPC -o $TMPO $_x11libdir/ -lXxf86vm &> /dev/null && _vm=yes +$_cc $TMPC -o $TMPO -lvgagl -lvga &> /dev/null && _svga=yes +$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext &> /dev/null && _x11=yes +$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXdpms &> /dev/null && _xdpms=yes +$_cc $TMPC -o $TMPO $_x11libdir -lXv &> /dev/null && _xv=yes +$_cc $TMPC -o $TMPO $_x11libdir -L/usr/local/lib/ -lpthread &> /dev/null || \ { echo "Lib pthread not found."; rm -f $TMPC $TMPO ; exit 1; } # SDL disabled by default (0.11pre22-) because of the compilation problems # this is very buggy & experimental code, use it only if you really need it!! _have_sdl=no -$_cc $TMPC -o $TMPO -L/usr/local/lib/ -lSDL -lpthread &> /dev/null && _have_sdl=yes +$_cc $TMPC -o $TMPO $_x11libdir -L/usr/local/lib/ -lSDL -lpthread &> /dev/null && _have_sdl=yes _termcap=no $_cc $TMPC -o $TMPO -ltermcap &> /dev/null && _termcap=yes @@ -392,28 +397,7 @@ $_cc $TMPC -o $TMPO -ltermcap &> /dev/null && _termcap=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 $TMPC -o $TMPO $_x11libdir -lX11 -lXext &> /dev/null && _x11=yes -fi - -if [ $_x11 = yes ]; then - -$_cc $TMPC -o $TMPO $_x11libdir -lX11 -lXext -lXdpms &> /dev/null && _xdpms=yes -$_cc $TMPC -o $TMPO $_x11libdir -lXv &> /dev/null && _xv=yes - -$_cc $TMPC -o $TMPO $_x11libdir -lGL &> /dev/null && _gl=yes - -cat > $TMPC << EOF -#include <GL/gl.h> -int main( void ) { return 0; } -EOF -$_cc $TMPC -o $TMPO $_x11libdir -lGL &> /dev/null || \ - { _gl=no; echo "GL includes not found!";} - -$_cc $TMPC -o $TMPO $_x11libdir -lXxf86vm &> /dev/null && _vm=yes +# LGB: Check DGA cat > $TMPC << EOF #include <stdio.h> @@ -422,6 +406,7 @@ cat > $TMPC << EOF int main (void) { return 0;} EOF +_dga=no $_cc $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 @@ -429,6 +414,8 @@ $_cc $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXx # 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> @@ -440,10 +427,24 @@ EOF _dga2=no $_cc $TMPC -o $TMPO -L/usr/X11R6/lib -L/usr/X11/lib -lX11 -lXext -lXxf86dga -lXxf86vm &> /dev/null && _dga2=yes -fi + +cat > $TMPC << EOF +#include <GL/gl.h> +int main( void ) { return 0; } +EOF + +$_cc $TMPC -o $TMPO $_x11libdir/ -lGL &> /dev/null || \ + { _gl=no; echo "GL includes not found!";} rm -f $TMPC $TMPO + +if [ $_x11 = 'yes' ]; then + if [ $_mga = 'yes' ]; then + _xmga=yes + fi +fi + # --- # check for the parameters. @@ -493,6 +494,9 @@ do --enable-vm) _vm=yes ;; + --enable-x11) + _x11=yes + ;; --enable-3dfx) _3dfx=yes ;; @@ -514,6 +518,9 @@ do --enable-lirc) _lirc=yes ;; + --enable-select) + _select='#define HAVE_AUDIO_SELECT' + ;; --disable-sse) _sse=no ;; @@ -545,6 +552,9 @@ do --disable-vm) _vm=no ;; + --disable-x11) + _x11=no + ;; --disable-mlib) _mlib=no ;; @@ -563,6 +573,12 @@ do --disable-termcap) _termcap=no ;; + --disable-select) + _select='#undef HAVE_AUDIO_SELECT' + ;; + --with-x11libdir=*) + _x11libdir=-L`echo $ac_option | cut -d '=' -f 2` + ;; --with-win32libdir=*) _win32libdir=`echo $ac_option | cut -d '=' -f 2` _win32libdirnotify=no @@ -573,19 +589,11 @@ do --size-y=*) _y=`echo $ac_option | cut -d '=' -f 2` ;; - --with-x11libdir=*) - ;; --cc=*) ;; esac done -if [ $_x11 = 'yes' ]; then - if [ $_mga = 'yes' ]; then - _xmga=yes - fi -fi - # to screen. echo "Using C compiler: $_cc" echo "Checking for cpu vendor ... $pvendor ( $pfamily:$pmodel:$pstepping )" @@ -675,10 +683,12 @@ cat > $MCONF << EOF AR=ar CC=$_cc +X11DIR=$_x11libdir # OPTFLAGS=-O4 -march=$proc -mcpu=$proc -pipe -fomit-frame-pointer -ffast-math OPTFLAGS=-O4 -march=$proc -mcpu=$proc -pipe -ffast-math # LIBS=-L/usr/lib -L/usr/local/lib $_x11libdir $_gllib $_sdllib $_dgalib $_x11lib $_xvlib -X_LIBS=$_x11libdir $_gllib $_sdllib $_dgalib $_x11lib $_xvlib $_vmlib $_svgalib +# X_LIBS=$_x11libdir $_gllib $_sdllib $_dgalib $_x11lib $_xvlib $_vmlib $_svgalib +X_LIBS=\$(X11DIR) $_gllib $_sdllib $_dgalib $_x11lib $_xvlib $_vmlib $_svgalib TERMCAP_LIB=$_libtermcap XMM_LIBS = $_xmmplibs LIRC_LIBS = $_lirclibs @@ -837,7 +847,7 @@ cat > $CCONF << EOF /* 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! */ -#define HAVE_AUDIO_SELECT +$_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 @@ -1,10 +1,10 @@ static char* banner_text= "\n\n" -"MPlayer " VERSION " (C) 2000-2001 Arpad Gereoffy <arpi@thot.banki.hu>\n" +"MPlayer " VERSION " (C) 2000-2001 Arpad Gereoffy <arpi@esp-team.scene.hu>\n" "\n"; static char* help_text= -"\nUsage: mplayer [options] [path/]name\n" +"Usage: mplayer [options] [path/]name\n" "\n" " Options:\n" " -vo <driver> select output driver (see '-vo help' for driver list)\n" @@ -40,4 +40,6 @@ static char* help_text= " q or ESC stop playing and quit program\n" " + or - adjust audio delay by +/- 0.1 second\n" " o toggle OSD: none / seek / seek+timer\n" +" * or / increase or decrease volume\n" +" m or c use mixer master or pcm channel\n" "\n"; diff --git a/libvo/wskeys.h b/libvo/wskeys.h index e624abc34f..e3643ca09f 100644 --- a/libvo/wskeys.h +++ b/libvo/wskeys.h @@ -60,6 +60,8 @@ #define wsSpace ' ' #define wsMinus '-' #define wsPlus '+' +#define wsMul '*' +#define wsDiv '/' #define wsUp 0x52 + 256 #define wsDown 0x54 + 256 diff --git a/libvo/x11_common.c b/libvo/x11_common.c index 0379797f81..9c72b16732 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -1,41 +1,37 @@ - #include <stdio.h> #include <stdlib.h> - -#include "config.h" - -#ifdef X11_FULLSCREEN - #include <string.h> + #include <unistd.h> #include <sys/mman.h> +#include "config.h" #include "video_out.h" +#ifdef X11_FULLSCREEN + #include <X11/Xmd.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> -#include <X11/extensions/dpms.h> - static int dpms_disabled=0; static int timeout_save=0; void vo_hidecursor ( Display *disp , Window win ) { - Cursor no_ptr; - Pixmap bm_no; - XColor black,dummy; - Colormap colormap; - static unsigned char bm_no_data[] = { 0,0,0,0, 0,0,0,0 }; - - colormap = DefaultColormap(disp,DefaultScreen(disp)); - XAllocNamedColor(disp,colormap,"black",&black,&dummy); - bm_no = XCreateBitmapFromData(disp, win, bm_no_data, 8,8); - no_ptr=XCreatePixmapCursor(disp, bm_no, bm_no,&black, &black,0, 0); - XDefineCursor(disp,win,no_ptr); + Cursor no_ptr; + Pixmap bm_no; + XColor black,dummy; + Colormap colormap; + static unsigned char bm_no_data[] = { 0,0,0,0, 0,0,0,0 }; + + colormap = DefaultColormap(disp,DefaultScreen(disp)); + XAllocNamedColor(disp,colormap,"black",&black,&dummy); + bm_no = XCreateBitmapFromData(disp, win, bm_no_data, 8,8); + no_ptr=XCreatePixmapCursor(disp, bm_no, bm_no,&black, &black,0, 0); + XDefineCursor(disp,win,no_ptr); } @@ -100,6 +96,10 @@ void vo_x11_putkey(int key){ case wsGrayMinus: mplayer_put_key('-'); break; case wsPlus: case wsGrayPlus: mplayer_put_key('+'); break; + case wsGrayMul: + case wsMul: mplayer_put_key('*'); break; + case wsGrayDiv: + case wsDiv: mplayer_put_key('/'); break; default: if((key>='a' && key<='z')||(key>='A' && key<='Z')) mplayer_put_key(key); } @@ -153,17 +153,17 @@ int vo_x11_check_events(Display *mydisplay){ switch( Event.type ) { case Expose: - ret|=VO_EVENT_EXPOSE; + ret|=VO_EVENT_EXPOSE; break; case ConfigureNotify: vo_dwidth=Event.xconfigure.width; - vo_dheight=Event.xconfigure.height; - ret|=VO_EVENT_RESIZE; + vo_dheight=Event.xconfigure.height; + ret|=VO_EVENT_RESIZE; break; case KeyPress: XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat ); vo_x11_putkey( ( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ) ); - ret|=VO_EVENT_KEYPRESS; + ret|=VO_EVENT_KEYPRESS; break; } } @@ -171,25 +171,27 @@ int vo_x11_check_events(Display *mydisplay){ return ret; } +#endif + void saver_on(Display *mDisplay) { int nothing; if (dpms_disabled) { - if (DPMSQueryExtension(mDisplay, ¬hing, ¬hing)) - { - printf ("Enabling DPMS\n"); - DPMSEnable(mDisplay); // restoring power saving settings - DPMSQueryExtension(mDisplay, ¬hing, ¬hing); - } + if (DPMSQueryExtension(mDisplay, ¬hing, ¬hing)) + { + printf ("Enabling DPMS\n"); + DPMSEnable(mDisplay); // restoring power saving settings + DPMSQueryExtension(mDisplay, ¬hing, ¬hing); + } } - + if (timeout_save) { - int dummy, interval, prefer_blank, allow_exp; - XGetScreenSaver(mDisplay, &dummy, &interval, &prefer_blank, &allow_exp); - XSetScreenSaver(mDisplay, timeout_save, interval, prefer_blank, allow_exp); - XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp); + int dummy, interval, prefer_blank, allow_exp; + XGetScreenSaver(mDisplay, &dummy, &interval, &prefer_blank, &allow_exp); + XSetScreenSaver(mDisplay, timeout_save, interval, prefer_blank, allow_exp); + XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp); } } @@ -200,20 +202,18 @@ void saver_off(Display *mDisplay) { if (DPMSQueryExtension(mDisplay, ¬hing, ¬hing)) { - BOOL onoff; - CARD16 state; - DPMSInfo(mDisplay, &state, &onoff); - if (onoff) - { - printf ("Disabling DPMS\n"); - dpms_disabled=1; - DPMSDisable(mDisplay); // monitor powersave off - } + BOOL onoff; + CARD16 state; + DPMSInfo(mDisplay, &state, &onoff); + if (onoff) + { + printf ("Disabling DPMS\n"); + dpms_disabled=1; + DPMSDisable(mDisplay); // monitor powersave off + } } XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp); if (timeout_save) - XSetScreenSaver(mDisplay, 0, interval, prefer_blank, allow_exp); - // turning off screensaver + XSetScreenSaver(mDisplay, 0, interval, prefer_blank, allow_exp); + // turning off screensaver } - -#endif @@ -95,7 +95,11 @@ int lirc_mp_getinput(){ {"FFWD" , KEY_UP}, {"RWND" , KEY_LEFT}, {"FRWND" , KEY_DOWN}, - {"PAUSE", 'p'} + {"PAUSE", 'p'}, + {"INCVOL", '*'}, + {"DECVOL", '/'}, + {"MASTER", 'm'}, + {"PCM", 'c'} }; char *code; @@ -88,7 +88,7 @@ int verbose=0; #define ABS(x) (((x)>=0)?(x):(-(x))) //**************************************************************************// -// .SUB +// .SUB //**************************************************************************// static current_sub=0; @@ -127,47 +127,39 @@ static int cfg_inc_verbose(struct config *conf){ } static int cfg_include(struct config *conf, char *filename){ - return parse_config_file(conf, filename); + return parse_config_file(conf, filename); } char *get_path(char *filename){ - char *homedir; - char *buff; - static char *config_dir = "/.mplayer"; - int len; - - if ((homedir = getenv("HOME")) == NULL) - return NULL; - len = strlen(homedir) + strlen(config_dir) + 1; - if (filename == NULL) { - if ((buff = (char *) malloc(len)) == NULL) - return NULL; - sprintf(buff, "%s%s", homedir, config_dir); - } else { - len += strlen(filename) + 1; - if ((buff = (char *) malloc(len)) == NULL) - return NULL; - sprintf(buff, "%s%s/%s", homedir, config_dir, filename); - } - return buff; + char *homedir; + char *buff; + static char *config_dir = "/.mplayer"; + int len; + + if ((homedir = getenv("HOME")) == NULL) + return NULL; + len = strlen(homedir) + strlen(config_dir) + 1; + if (filename == NULL) { + if ((buff = (char *) malloc(len)) == NULL) + return NULL; + sprintf(buff, "%s%s", homedir, config_dir); + } else { + len += strlen(filename) + 1; + if ((buff = (char *) malloc(len)) == NULL) + return NULL; + sprintf(buff, "%s%s/%s", homedir, config_dir, filename); + } + return buff; } static int max_framesize=0; -//static int dbg_es_sent=0; -//static int dbg_es_rcvd=0; +static int dbg_es_sent=0; +static int dbg_es_rcvd=0; //static int show_packets=0; //**************************************************************************// -//**************************************************************************// -// Input media streaming & demultiplexer: -//**************************************************************************// - -#include "stream.c" -#include "demuxer.c" - -#include "stheader.h" typedef struct { // file: @@ -181,9 +173,6 @@ typedef struct { int idx_pos_a; int idx_pos_v; int idx_offset; // ennyit kell hozzaadni az index offset ertekekhez - // streams: - sh_audio_t* a_streams[256]; - sh_video_t* v_streams[256]; // video: unsigned int bitrate; } avi_header_t; @@ -192,28 +181,20 @@ avi_header_t avi_header; #include "aviprint.c" -sh_audio_t* new_sh_audio(int id){ - if(avi_header.a_streams[id]){ - printf("Warning! Audio stream header %d redefined!\n",id); - } else { - if(verbose) printf("Found audio stream: %d\n",id); - avi_header.a_streams[id]=malloc(sizeof(sh_audio_t)); - memset(avi_header.a_streams[id],0,sizeof(sh_audio_t)); - } - return avi_header.a_streams[id]; -} +extern picture_t *picture; -sh_video_t* new_sh_video(int id){ - if(avi_header.v_streams[id]){ - printf("Warning! video stream header %d redefined!\n",id); - } else { - if(verbose) printf("Found video stream: %d\n",id); - avi_header.v_streams[id]=malloc(sizeof(sh_video_t)); - memset(avi_header.v_streams[id],0,sizeof(sh_video_t)); - } - return avi_header.v_streams[id]; -} +char* encode_name=NULL; +char* encode_index_name=NULL; +int encode_bitrate=0; + +//**************************************************************************// +// Input media streaming & demultiplexer: +//**************************************************************************// +#include "stream.c" +#include "demuxer.c" + +#include "stheader.h" #include "demux_avi.c" #include "demux_mpg.c" @@ -222,18 +203,14 @@ demuxer_t *demuxer=NULL; demux_stream_t *d_audio=NULL; demux_stream_t *d_video=NULL; -sh_audio_t *sh_audio=NULL;//&sh_audio_i; -sh_video_t *sh_video=NULL;//&sh_video_i; - -char* encode_name=NULL; -char* encode_index_name=NULL; -int encode_bitrate=0; +sh_audio_t sh_audio_i; // FIXME later! +sh_video_t sh_video_i; +sh_audio_t *sh_audio=&sh_audio_i; +sh_video_t *sh_video=&sh_video_i; // MPEG video stream parser: #include "parse_es.c" -extern picture_t *picture; - static const int frameratecode2framerate[16] = { 0, 24000*10000/1001, 24*10000,25*10000, 30000*10000/1001, 30*10000,50*10000,60000*10000/1001, 60*10000, 0,0,0,0,0,0,0 @@ -274,15 +251,15 @@ int opendivx_stride[3]; // callback, the opendivx decoder calls this for each frame: void convert_linux(unsigned char *puc_y, int stride_y, - unsigned char *puc_u, unsigned char *puc_v, int stride_uv, - unsigned char *bmp, int width_y, int height_y){ + unsigned char *puc_u, unsigned char *puc_v, int stride_uv, + unsigned char *bmp, int width_y, int height_y){ // printf("convert_yuv called %dx%d stride: %d,%d\n",width_y,height_y,stride_y,stride_uv); opendivx_src[0]=puc_y; opendivx_src[1]=puc_u; opendivx_src[2]=puc_v; - + opendivx_stride[0]=stride_y; opendivx_stride[1]=stride_uv; opendivx_stride[2]=stride_uv; @@ -372,7 +349,6 @@ void exit_sighandler(int x){ } int divx_quality=0; -extern int vo_dbpp; int main(int argc,char* argv[], char *envp[]){ char* filename=NULL; //"MI2-Trailer.avi"; @@ -383,8 +359,8 @@ int f; // filedes int stream_type; stream_t* stream=NULL; int file_format=DEMUXER_TYPE_UNKNOWN; -int has_audio=1; -//int has_video=1; +int has_audio=1; // audio 0=no 1=mpeg 2=pcm 3=ac3 4=ACM 5=alaw 6=msgsm 7=DShow +int has_video=1; // video 0=no 1=mpeg 2=win32/VfW 3=OpenDivX 4=w32/DShow // int audio_format=0; // override #ifdef ALSA_TIMER @@ -430,7 +406,10 @@ char *sub_name=NULL; float sub_delay=0; float sub_fps=0; //int user_bpp=0; - +extern int vo_dbpp; +// --- NEW +#include "mixer.h" +// --- #include "cfg-mplayer.h" printf("%s",banner_text); @@ -470,18 +449,30 @@ if(video_driver && strcmp(video_driver,"help")==0){ i=0; while (video_out_drivers[i]) { const vo_info_t *info = video_out_drivers[i++]->get_info (); - printf("\t%s\t%s\n", info->short_name, info->name); + printf("\t%s\t%s\n", info- |