[MPlayer-dev-eng] mplayer is running on sgi/irix machines
Arpi
arpi at thot.banki.hu
Wed Oct 24 13:38:22 CEST 2001
Hi,
great! but please re-send your patch, as your mailerd wrapped long lines
so this patch can't be applied :(
patch says it's malformed diff.
also check Makefile in CVS, it seems to changed.
> hi,
>
> with this patch mplayer should be running on sgi/irix machines.
> (with gcc 2.95.2 and gmake - from freeware.sgi.com)
>
> i tested it with a few files and it seems to work fine, but
> is very very slow (i made absolutely no optimizations)
>
> i changed the order of the libs in the main makefile
> (the irix linker is quite pedantic). all other changes should
> not affect non-sgi systems.
>
> divx ;-) playback works only with ffmpeg. opendivx just produces
> garbage with my divx-files, but it doesnt work on my
> redhat-box (ahem... gcc2.96) neither. (my fault???)
>
> greetings
>
> - oliver
>
> oliver at zappit % diff -rN -C5 MPlayer-20011024 MPlayer-20011024.sgi
> diff -rN -C5 MPlayer-20011024/Makefile MPlayer-20011024.sgi//Makefile
> *** MPlayer-20011024/Makefile Tue Oct 23 16:01:13 2001
> --- MPlayer-20011024.sgi//Makefile Wed Oct 24 11:05:10 2001
> ***************
> *** 17,27 ****
> BINDIR = ${prefix}/bin
> # BINDIR = /usr/local/bin
> SRCS = ima4.c xacodec.c cpudetect.c postproc/swscale.c
> postproc/postprocess.c mp_msg.c ac3-iec958.c find_sub.c dec_audio.c
> dec_video.c codec-cfg.c subreader.c linux/getch2.c linux/timer-lx.c
> linux/shmem.c xa/xa_gsm.c xa/rle8.c lirc_mp.c cfgparser.c mixer.c
> spudec.c
> OBJS = $(SRCS:.c=.o)
> CFLAGS = $(OPTFLAGS) -Ilibmpdemux -Iloader -Ilibvo $(CSS_INC)
> $(EXTRA_INC) $(MADLIB_INC) # -Wall
> ! A_LIBS = -Lmp3lib -lMP3 -Llibac3 -lac3 $(ALSA_LIB) $(ESD_LIB)
> $(MADLIB_LIB)
> VO_LIBS = -Llibvo -lvo $(MLIB_LIB) $(X_LIBS)
>
> PARTS = libmpdemux mp3lib libac3 libmpeg2 opendivx libavcodec encore
> libvo libao2 drivers drivers/syncfb
> ifeq ($(GUI),yes)
> PARTS += Gui
> --- 17,27 ----
> BINDIR = ${prefix}/bin
> # BINDIR = /usr/local/bin
> SRCS = ima4.c xacodec.c cpudetect.c postproc/swscale.c
> postproc/postprocess.c mp_msg.c ac3-iec958.c find_sub.c dec_audio.c
> dec_video.c codec-cfg.c subreader.c linux/getch2.c linux/timer-lx.c
> linux/shmem.c xa/xa_gsm.c xa/rle8.c lirc_mp.c cfgparser.c mixer.c
> spudec.c
> OBJS = $(SRCS:.c=.o)
> CFLAGS = $(OPTFLAGS) -Ilibmpdemux -Iloader -Ilibvo $(CSS_INC)
> $(EXTRA_INC) $(MADLIB_INC) # -Wall
> ! A_LIBS = -Lmp3lib -lMP3 -Llibac3 -lac3 $(ALSA_LIB) $(ESD_LIB)
> $(MADLIB_LIB) $(SGI_AUDIO_LIB)
> VO_LIBS = -Llibvo -lvo $(MLIB_LIB) $(X_LIBS)
>
> PARTS = libmpdemux mp3lib libac3 libmpeg2 opendivx libavcodec encore
> libvo libao2 drivers drivers/syncfb
> ifeq ($(GUI),yes)
> PARTS += Gui
> ***************
> *** 94,104 ****
> endif
> mplayerwithoutlink: $(MPLAYER_DEP)
> @for a in $(PARTS); do $(MAKE) -C $$a all ; done
>
> $(PRG): $(MPLAYER_DEP)
> ! $(CC) -rdynamic $(CFLAGS) -o $(PRG) mplayer.o -Llibmpdemux -lmpdemux
> $(OBJS) $(XMM_LIBS) $(LIRC_LIBS) $(A_LIBS) -lm $(TERMCAP_LIB)
> $(LIB_LOADER) $(AV_LIB) -Llibmpeg2 -lmpeg2 -Llibao2 -lao2 $(VO_LIBS)
> $(CSS_LIB) -Lencore -lencore $(DECORE_LIBS) $(GUI_LIBS) $(ARCH_LIBS)
>
> $(PRG_FIBMAP): fibmap_mplayer.o
> $(CC) -o $(PRG_FIBMAP) fibmap_mplayer.o
>
> # $(PRG_HQ): depfile mplayerHQ.o $(OBJS) loader/libloader.a
> libmpeg2/libmpeg2.a opendivx/libdecore.a $(COMMONLIBS)
> encore/libencore.a
> --- 94,104 ----
> endif
> mplayerwithoutlink: $(MPLAYER_DEP)
> @for a in $(PARTS); do $(MAKE) -C $$a all ; done
>
> $(PRG): $(MPLAYER_DEP)
> ! $(CC) -rdynamic $(CFLAGS) -o $(PRG) mplayer.o -Llibmpdemux -lmpdemux
> $(OBJS) $(XMM_LIBS) $(LIRC_LIBS) $(TERMCAP_LIB) $(LIB_LOADER) $(AV_LIB)
> -Llibmpeg2 -lmpeg2 -Llibao2 -lao2 $(A_LIBS) $(VO_LIBS) $(CSS_LIB)
> -Lencore -lencore $(DECORE_LIBS) $(GUI_LIBS) $(ARCH_LIBS) -lm
>
> $(PRG_FIBMAP): fibmap_mplayer.o
> $(CC) -o $(PRG_FIBMAP) fibmap_mplayer.o
>
> # $(PRG_HQ): depfile mplayerHQ.o $(OBJS) loader/libloader.a
> libmpeg2/libmpeg2.a opendivx/libdecore.a $(COMMONLIBS)
> encore/libencore.a
> diff -rN -C5 MPlayer-20011024/configure MPlayer-20011024.sgi//configure
> *** MPlayer-20011024/configure Wed Oct 24 05:09:23 2001
> --- MPlayer-20011024.sgi//configure Wed Oct 24 11:12:37 2001
> ***************
> *** 802,811 ****
> --- 802,824 ----
> proc=
> _march=""
> _mcpu="-mcpu=ev56"
> ;;
>
> + mips)
> + _arch="#define ARCH_SGI_MIPS 1"
> + _target_arch="TARGET_ARCH_SGI_MIPS=yes"
> + _words_endian="#define WORDS_BIGENDIAN 1"
> + iproc=sgi-mips
> + proc=default
> + _march=""
> + _mcpu="-mcpu=$proc"
> + _skip_as_check=yes
> + # _png=no
> + # CFLAGS="-O4 $_march $_mcpu -ffast-math -fomit-frame-pointer"
> + ;;
> +
> *)
> echo "The architecture of your CPU ($host_arch) is not supported
> by this configure script"
> echo "It seems noone has ported MPlayer to your OS or CPU type
> yet."
> die "unsupported architecture $host_arch"
> ;;
> ***************
> *** 1180,1189 ****
> --- 1193,1210 ----
> #include <esd.h>
> int main( void ){ return 0; }
> EOF
> cc_check $_extraincdir $_extralibdir -lesd || _esd=no
>
> + # check for SGI audio
> + cat > $TMPC << EOF
> + #include <dmedia/audio.h>
> + int main( void ) { return 0; }
> + EOF
> +
> + _sgi_audio=no
> + $_cc -o $TMPO $TMPC 2> /dev/null && _sgi_audio=yes
>
> # check for mad library
> cat > $TMPC << EOF
> #include <mad.h>
> int main(void) { return 0; }
> ***************
> *** 1654,1663 ****
> --- 1675,1685 ----
> echo "Checking for OSS Audio ... $_oss_audio"
> echo "Checking for ALSA Audio ... $_alsaver"
> echo "Checking for ESD Audio ... $_esd"
> echo "Checking for Sun Audio ... $_sun_audio"
> echo "Checking for Sun mediaLib ... $_mlib"
> + echo "Checking for SGI Audio ... $_sgi_audio"
> echo "Checking for DeCSS support ... $_css"
> echo "Checking for DVDread support ... $_dvdread"
> echo "Checking for PNG support ... $_png"
> echo "Checking for mad support ... $_mad"
> echo "Checking for OggVorbis support ... $_vorbis"
> ***************
> *** 1993,2002 ****
> --- 2015,2032 ----
> _aosrc="$_aosrc ao_sun.c"
> else
> _sunaudio='#undef USE_SUN_AUDIO'
> fi
>
> + if [ "$_sgi_audio" = "yes" ]; then
> + _sgiaudio='#define USE_SGI_AUDIO'
> + _aosrc="$_aosrc ao_sgi.c"
> + _sgi_audio_lib='-laudio'
> + else
> + _sgiaudio='#undef USE_SGI_AUDIO'
> + fi
> +
> if test "$_sys_soundcard_h" = yes ; then
> _have_soundcard_h='#define HAVE_SYS_SOUNDCARD_H 1'
> else
> _have_soundcard_h='#undef HAVE_SYS_SOUNDCARD_H'
> fi
> ***************
> *** 2034,2045 ****
>
>
> # Checking for CFLAGS
> if test "$_profile" || test "$_debug" ; then
> CFLAGS="-W -Wall -O2 $_march $_mcpu $_debug $_profile"
> ! elif test -z "$CFLAGS" ; then
> ! CFLAGS="-O4 $_march $_mcpu -pipe -ffast-math -fomit-frame-pointer"
> else
> cat <<EOF
> MPlayer is using custom CFLAGS set by you, it is strongly recommended
> that you
> let MPlayer choose the correct CFLAGS!
> To do so execute CFLAGS= ./configure <your options>
> --- 2064,2079 ----
>
>
> # Checking for CFLAGS
> if test "$_profile" || test "$_debug" ; then
> CFLAGS="-W -Wall -O2 $_march $_mcpu $_debug $_profile"
> ! elif test -z "$CFLAGS" ; then
> ! if [ "$host_arch" != "mips" ]; then
> ! CFLAGS="-O4 $_march $_mcpu -pipe -ffast-math -fomit-frame-pointer"
> ! else
> ! CFLAGS="-O4 $_march $_mcpu -ffast-math -fomit-frame-pointer"
> ! fi
> else
> cat <<EOF
> MPlayer is using custom CFLAGS set by you, it is strongly recommended
> that you
> let MPlayer choose the correct CFLAGS!
> To do so execute CFLAGS= ./configure <your options>
> ***************
> *** 2328,2337 ****
> --- 2362,2372 ----
> DS_LIB = $_dshowlib
> AV_DEP = $_lavcdep
> AV_LIB = $_lavclib
> ALSA_LIB = $_alsalib
> ESD_LIB = $_esdlib
> + SGI_AUDIO_LIB = $_sgi_audio_lib
> ARCH_LIBS = $_archlibs $_iconvlib
> STREAMING=$_streaming
> DECORE_LIBS = $_decorelibs
> DIVX4LINUX=$_divx4linux
> MLIB_INC = $_mlibinc
> ***************
> *** 2484,2493 ****
> --- 2519,2529 ----
> $_ossaudio
> $_alsa5
> $_alsa9
> $_esdd
> $_sunaudio
> + $_sgiaudio
>
> /* Enable fast OSD/SUB renderer (looks ugly, but uses less CPU power)
> */
> #undef FAST_OSD
> #undef FAST_OSD_TABLE
>
> diff -rN -C5 MPlayer-20011024/libao2/ao_sgi.c
> MPlayer-20011024.sgi//libao2/ao_sgi.c
> *** MPlayer-20011024/libao2/ao_sgi.c
> --- MPlayer-20011024.sgi//libao2/ao_sgi.c Wed Oct 24 11:15:27 2001
> ***************
> *** 0 ****
> --- 1,199 ----
> + /*
> + ao_sgi - sgi/irix output plugin for MPlayer
> +
> + 22oct2001 oliver.schoenbrunner at jku.at
> +
> + */
> +
> + #include <stdio.h>
> + #include <stdlib.h>
> + #include <dmedia/audio.h>
> +
> + #include "audio_out.h"
> + #include "audio_out_internal.h"
> +
> + static ao_info_t info =
> + {
> + "sgi audio output",
> + "sgi",
> + "kopflos",
> + ""
> + };
> +
> + LIBAO_EXTERN(sgi)
> +
> + // there are some globals:
> + // ao_samplerate
> + // ao_channels
> + // ao_format
> + // ao_bps
> + // ao_outburst
> + // ao_buffersize
> +
> + static ALconfig ao_config;
> + static ALport ao_port;
> +
> + // to set/get/query special features/parameters
> + static int control(int cmd, int arg){
> +
> + printf("ao_sgi, control\n");
> +
> + return -1;
> + }
> +
> + // open & setup audio device
> + // return: 1=success 0=fail
> + static int init(int rate, int channels, int format, int flags) {
> +
> + printf("ao_sgi, init: Samplerate: %iHz Channels: %s Format %s\n",
> rate, (channels > 1) ? "Stereo" : "Mono",
> audio_out_format_name(format));
> +
> + { /* from /usr/share/src/dmedia/audio/setrate.c */
> +
> + int fd;
> + int rv;
> + double frate;
> + ALpv x[2];
> +
> + rv = alGetResourceByName(AL_SYSTEM, "out.analog", AL_DEVICE_TYPE);
> + if (!rv) {
> + printf("ao_sgi, play: invalid device\n");
> + return 0;
> + }
> +
> + frate = rate;
> +
> + x[0].param = AL_RATE;
> + x[0].value.ll = alDoubleToFixed(rate);
> + x[1].param = AL_MASTER_CLOCK;
> + x[1].value.i = AL_CRYSTAL_MCLK_TYPE;
> +
> + if (alSetParams(rv,x, 2)<0) {
> + printf("ao_sgi, init: setparams failed: %s\n",
> alGetErrorString(oserror()));
> + printf("ao_sgi, init: could not set desired samplerate\n");
> + }
> +
> + if (x[0].sizeOut < 0) {
> + printf("ao_sgi, init: AL_RATE was not accepted on the given
> resource\n");
> + }
> +
> + if (alGetParams(rv,x, 1)<0) {
> + printf("ao_sgi, init: getparams failed: %s\n",
> alGetErrorString(oserror()));
> + }
> +
> + if (frate != alFixedToDouble(x[0].value.ll)) {
> + printf("ao_sgi, init: samplerate is now %lf (desired rate is
> %lf)\n", alFixedToDouble(x[0].value.ll), frate);
> + }
> +
> + }
> +
> + ao_buffersize=131072;
> + ao_outburst = ao_buffersize/16;
> + ao_channels = channels;
> +
> + ao_config = alNewConfig();
> +
> + if (!ao_config) {
> + printf("ao_sgi, init: %s\n", alGetErrorString(oserror()));
> + return 0;
> + }
> +
> + if(channels == 2) alSetChannels(ao_config, AL_STEREO);
> + else alSetChannels(ao_config, AL_MONO);
> +
> + alSetWidth(ao_config, AL_SAMPLE_16);
> + alSetSampFmt(ao_config, AL_SAMPFMT_TWOSCOMP);
> + alSetQueueSize(ao_config, 48000);
> +
> + if (alSetDevice(ao_config, AL_DEFAULT_OUTPUT) < 0) {
> + printf("ao_sgi, init: %s\n", alGetErrorString(oserror()));
> + return 0;
> + }
> +
> + ao_port = alOpenPort("mplayer", "w", ao_config);
> +
> + if (!ao_port) {
> + printf("ao_sgi, init: Unable to open audio channel: %s\n",
> alGetErrorString(oserror()));
> + return 0;
> + }
> +
> + // printf("ao_sgi, init: port %d config %d\n", ao_port, ao_config);
> +
> + return 1;
> +
> + }
> +
> + // close audio device
> + static void uninit() {
> +
> + /* TODO: samplerate should be set back to the value before mplayer
> was started! */
> +
> + printf("ao_sgi, uninit: ...\n");
> +
> + if (ao_port) {
> + while(alGetFilled(ao_port) > 0) sginap(1);
> + alClosePort(ao_port);
> + alFreeConfig(ao_config);
> + }
> +
> + }
> +
> + // stop playing and empty buffers (for seeking/pause)
> + static void reset() {
> +
> + printf("ao_sgi, reset: ...\n");
> +
> + }
> +
> + // stop playing, keep buffers (for pause)
> + static void audio_pause() {
> +
> + printf("ao_sgi, audio_pause: ...\n");
> +
> + }
> +
> + // resume playing, after audio_pause()
> + static void audio_resume() {
> +
> + printf("ao_sgi, audio_resume: ...\n");
> +
> + }
> +
> + // return: how many bytes can be played without blocking
> + static int get_space() {
> +
> + // printf("ao_sgi, get_space: (ao_outburst %d)\n", ao_outburst);
> + // printf("ao_sgi, get_space: alGetFillable [%d] \n",
> alGetFillable(ao_port));
> +
> + return alGetFillable(ao_port)*(2*ao_channels);
> +
> + }
> +
> +
> + // plays 'len' bytes of 'data'
> + // it should round it down to outburst*n
> + // return: number of bytes played
> + static int play(void* data, int len, int flags) {
> +
> + // printf("ao_sgi, play: len %d flags %d (%d %d)\n", len, flags,
> ao_port, ao_config);
> + // printf("channels %d\n", ao_channels);
> +
> + alWriteFrames(ao_port, data, len/(2*ao_channels));
> +
> + return len;
> +
> + }
> +
> + // return: how many unplayed bytes are in the buffer
> + static int get_delay(){
> +
> + // printf("ao_sgi, get_delay: (ao_buffersize %d)\n", ao_buffersize);
> +
> + return 0;
> +
> + }
> +
> +
> +
> +
> +
> +
> diff -rN -C5 MPlayer-20011024/libao2/audio_out.c
> MPlayer-20011024.sgi//libao2/audio_out.c
> *** MPlayer-20011024/libao2/audio_out.c Tue Aug 28 12:54:31 2001
> --- MPlayer-20011024.sgi//libao2/audio_out.c Wed Oct 24 11:16:02 2001
> ***************
> *** 32,41 ****
> --- 32,44 ----
> extern ao_functions_t audio_out_sdl;
> #endif
> #ifdef USE_SUN_AUDIO
> extern ao_functions_t audio_out_sun;
> #endif
> + #ifdef USE_SGI_AUDIO
> + extern ao_functions_t audio_out_sgi;
> + #endif
> extern ao_functions_t audio_out_pcm;
> extern ao_functions_t audio_out_pss;
>
> ao_functions_t* audio_out_drivers[] =
> {
> ***************
> *** 43,52 ****
> --- 46,58 ----
> &audio_out_oss,
> #endif
> #ifdef USE_SUN_AUDIO
> &audio_out_sun,
> #endif
> + #ifdef USE_SGI_AUDIO
> + &audio_out_sgi,
> + #endif
> &audio_out_null,
> #ifdef HAVE_ALSA5
> &audio_out_alsa5,
> #endif
> #ifdef HAVE_ALSA9
> ***************
> *** 82,92 ****
> case AFMT_U16_BE:
> return("Unsigned 16-bit (Big-Endian)");
> case AFMT_S16_LE:
> return("Signed 16-bit (Little-Endian)");
> case AFMT_S16_BE:
> ! return("Unsigned 16-bit (Big-Endian)");
> case AFMT_MPEG:
> return("MPEG (2) audio");
> case AFMT_AC3:
> return("AC3");
> /*
> --- 88,98 ----
> case AFMT_U16_BE:
> return("Unsigned 16-bit (Big-Endian)");
> case AFMT_S16_LE:
> return("Signed 16-bit (Little-Endian)");
> case AFMT_S16_BE:
> ! return("Signed 16-bit (Big-Endian)");
> case AFMT_MPEG:
> return("MPEG (2) audio");
> case AFMT_AC3:
> return("AC3");
> /*
> diff -rN -C5 MPlayer-20011024/libmpdemux/vcd_read.h
> MPlayer-20011024.sgi//libmpdemux/vcd_read.h
> *** MPlayer-20011024/libmpdemux/vcd_read.h Fri Oct 5 02:39:38 2001
> --- MPlayer-20011024.sgi//libmpdemux/vcd_read.h Wed Oct 24 11:03:11 2001
> ***************
> *** 275,280 ****
> --- 275,284 ----
> static int vcd_read(int fd,char *mem)
> {
> return -1;
> }
>
> + static inline void vcd_set_msf(unsigned int sect)
> + {
> + }
> +
> #endif /* !linux && !sun */
> diff -rN -C5 MPlayer-20011024/mp3lib/Makefile
> MPlayer-20011024.sgi//mp3lib/Makefile
> *** MPlayer-20011024/mp3lib/Makefile Wed Aug 8 08:58:12 2001
> --- MPlayer-20011024.sgi//mp3lib/Makefile Wed Oct 24 11:25:48 2001
> ***************
> *** 2,11 ****
> --- 2,14 ----
> include ../config.mak
>
> SRCS = sr1.c
> OBJS = sr1.o
> # OBJS = $(SRCS:.c,.s=.o)
> + ifeq ($(TARGET_ARCH_SGI_MIPS),yes)
> + OPTFLAGS := $(OPTFLAGS:-O4=-O0)
> + endif
> CFLAGS = $(OPTFLAGS) $(EXTRA_INC)
> ifeq ($(TARGET_ARCH_X86),yes)
> SRCS += d_cpu.s decode_i586.s
> OBJS += d_cpu.o decode_i586.o
> ifeq ($(TARGET_MMX),yes)
> _______________________________________________
> MPlayer-dev-eng mailing list
> MPlayer-dev-eng at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng
>
>
A'rpi / Astral & ESP-team
--
mailto:arpi at thot.banki.hu
http://esp-team.scene.hu
More information about the MPlayer-dev-eng
mailing list