[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