Thread: [Mplayerxp-cvslog] SF.net SVN: mplayerxp:[304] mplayerxp (Page 5)
Brought to you by:
olov
From: <nic...@us...> - 2012-11-08 13:41:25
|
Revision: 304 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=304&view=rev Author: nickols_k Date: 2012-11-08 13:41:11 +0000 (Thu, 08 Nov 2012) Log Message: ----------- use mp_aframe_t instead of af_data_t Modified Paths: -------------- mplayerxp/dump.c mplayerxp/libao2/Makefile mplayerxp/libao2/afmt.h mplayerxp/libao2/ao_arts.c mplayerxp/libao2/ao_esd.c mplayerxp/libao2/ao_jack.c mplayerxp/libao2/ao_nas.c mplayerxp/libao2/ao_openal.c mplayerxp/libao2/ao_wav.c mplayerxp/libmpcodecs/ad_a52.c mplayerxp/libmpcodecs/ad_dca.c mplayerxp/libmpcodecs/ad_dvdpcm.c mplayerxp/libmpcodecs/ad_faad.c mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/ad_hwac3.c mplayerxp/libmpcodecs/ad_libdv.c mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/ad_pcm.c mplayerxp/libmpcodecs/ad_real.c mplayerxp/libmpcodecs/ad_vorbis.c mplayerxp/libmpcodecs/dec_audio.c mplayerxp/libmpcodecs/dec_audio.h mplayerxp/libmpdemux/demux_aiff.c mplayerxp/libmpdemux/demux_audio.c mplayerxp/libmpdemux/demux_avi.c mplayerxp/libmpdemux/demux_lavf.c mplayerxp/libmpdemux/demux_mkv.c mplayerxp/libmpdemux/demux_mov.c mplayerxp/libmpdemux/demux_nuv.c mplayerxp/libmpdemux/demux_ogg.c mplayerxp/libmpdemux/demux_ra.c mplayerxp/libmpdemux/demux_rawaudio.c mplayerxp/libmpdemux/demux_real.c mplayerxp/libmpdemux/demux_smjpeg.c mplayerxp/libmpdemux/demux_vqf.c mplayerxp/libmpdemux/demuxer.c mplayerxp/libmpdemux/mp3_hdr.c mplayerxp/libmpdemux/mp3_hdr.h mplayerxp/libmpdemux/s_oss.c mplayerxp/libmpdemux/s_tv.c mplayerxp/libmpdemux/stheader.h mplayerxp/libmpdemux/tvi_v4l.c mplayerxp/mplayer.c mplayerxp/postproc/Makefile mplayerxp/postproc/af.c mplayerxp/postproc/af.h mplayerxp/postproc/af_ao2.c mplayerxp/postproc/af_center.c mplayerxp/postproc/af_channels.c mplayerxp/postproc/af_comp.c mplayerxp/postproc/af_control.h mplayerxp/postproc/af_crystality.c mplayerxp/postproc/af_delay.c mplayerxp/postproc/af_dummy.c mplayerxp/postproc/af_dyn.c mplayerxp/postproc/af_echo3d.c mplayerxp/postproc/af_equalizer.c mplayerxp/postproc/af_export.c mplayerxp/postproc/af_extrastereo.c mplayerxp/postproc/af_ffenc.c mplayerxp/postproc/af_format.c mplayerxp/postproc/af_format_alaw.c mplayerxp/postproc/af_format_ulaw.c mplayerxp/postproc/af_gate.c mplayerxp/postproc/af_hrtf.c mplayerxp/postproc/af_karaoke.c mplayerxp/postproc/af_lp.c mplayerxp/postproc/af_pan.c mplayerxp/postproc/af_raw.c mplayerxp/postproc/af_resample.c mplayerxp/postproc/af_scaletempo.c mplayerxp/postproc/af_sinesuppress.c mplayerxp/postproc/af_sub.c mplayerxp/postproc/af_surround.c mplayerxp/postproc/af_tools.c mplayerxp/postproc/af_volnorm.c mplayerxp/postproc/af_volume.c mplayerxp/xmpcore/mp_aframe.c mplayerxp/xmpcore/mp_aframe.h Added Paths: ----------- mplayerxp/libao2/afmt.c Removed Paths: ------------- mplayerxp/postproc/af_format.h mplayerxp/postproc/af_mp.c mplayerxp/postproc/af_mp.h Modified: mplayerxp/dump.c =================================================================== --- mplayerxp/dump.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/dump.c 2012-11-08 13:41:11 UTC (rev 304) @@ -165,8 +165,8 @@ sha->wf=mp_malloc(sizeof(WAVEFORMATEX)); sha->wf->nBlockAlign = 1; //mux_a->h.dwSampleSize; sha->wf->wFormatTag = sha->wtag; - sha->wf->nChannels = sha->channels; - sha->wf->nSamplesPerSec = sha->samplerate; + sha->wf->nChannels = sha->nch; + sha->wf->nSamplesPerSec = sha->rate; sha->wf->nAvgBytesPerSec=sha->i_bps; //mux_a->h.dwSampleSize*mux_a->wf->nSamplesPerSec; sha->wf->wBitsPerSample = 16; // FIXME sha->wf->cbSize=0; // FIXME for l3codeca.acm Modified: mplayerxp/libao2/Makefile =================================================================== --- mplayerxp/libao2/Makefile 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/Makefile 2012-11-08 13:41:11 UTC (rev 304) @@ -4,7 +4,7 @@ LIBNAME = libao2.a # TODO: moveout ao_sdl.c so it's only used when SDL is detected -SRCS= audio_out.c ao_null.c ao_wav.c +SRCS= audio_out.c afmt.c ao_null.c ao_wav.c ifeq ($(HAVE_SDL),yes) SRCS+=ao_sdl.c endif Added: mplayerxp/libao2/afmt.c =================================================================== --- mplayerxp/libao2/afmt.c (rev 0) +++ mplayerxp/libao2/afmt.c 2012-11-08 13:41:11 UTC (rev 304) @@ -0,0 +1,37 @@ +#include "afmt.h" + +unsigned afmt2bps(unsigned fmt) { + unsigned rc; + switch (fmt) { + default: + case AFMT_U8: + case AFMT_S8: rc = 1; break; + case AFMT_S16_LE: + case AFMT_S16_BE: + case AFMT_U16_LE: + case AFMT_U16_BE: return 2; + case AFMT_S24_LE: + case AFMT_S24_BE: + case AFMT_U24_LE: + case AFMT_U24_BE: return 3; + case AFMT_FLOAT32: + case AFMT_S32_LE: + case AFMT_S32_BE: + case AFMT_U32_LE: + case AFMT_U32_BE: return 4; + } + return rc; +} + +/* very approximate prediction */ +unsigned bps2afmt(unsigned bps) { + unsigned rc; + switch (bps) { + default: + case 1: rc = AFMT_S8; break; + case 2: return AFMT_S16_LE; break; + case 3: return AFMT_S24_LE; break; + case 4: return AFMT_S32_LE; break; + } + return rc; +} \ No newline at end of file Property changes on: mplayerxp/libao2/afmt.c ___________________________________________________________________ Added: svn:eol-style + native Modified: mplayerxp/libao2/afmt.h =================================================================== --- mplayerxp/libao2/afmt.h 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/afmt.h 2012-11-08 13:41:11 UTC (rev 304) @@ -1,5 +1,6 @@ - /* Defines that AFMT_ stuff */ +#ifndef __AFMT_H_INCLUDED +#define __AFMT_H_INCLUDED 1 #ifdef HAVE_SYS_SOUNDCARD_H #include <sys/soundcard.h> /* For AFMT_* on linux */ @@ -8,6 +9,7 @@ #include <soundcard.h> /* OpenBSD have this instead of <sys/soundcard> */ #endif #endif +#include "mp_config.h" /* standard, old OSS audio formats */ #ifndef AFMT_MU_LAW @@ -32,14 +34,19 @@ /* 32 bit formats (MSB aligned) formats */ #ifndef AFMT_S32_LE -# define AFMT_S24_LE 0x00000800 -# define AFMT_S24_BE 0x00001000 -# define AFMT_U24_LE 0x00002000 -# define AFMT_U24_BE 0x00004000 -# define AFMT_S32_LE 0x00008000 -# define AFMT_S32_BE 0x00010000 -# define AFMT_U32_LE 0x00020000 -# define AFMT_U32_BE 0x00040000 +# define AFMT_S24_LE 0x00000800 +# define AFMT_S24_BE 0x00001000 +# define AFMT_U24_LE 0x00002000 +# define AFMT_U24_BE 0x00004000 +# define AFMT_S32_LE 0x00008000 +# define AFMT_S32_BE 0x00010000 +# define AFMT_U32_LE 0x00020000 +# define AFMT_U32_BE 0x00040000 #endif -# define AFMT_FLOAT32 0x00100000 +# define AFMT_FLOAT32 0x00100000 + +extern unsigned __FASTCALL__ afmt2bps(unsigned fmt); +extern unsigned __FASTCALL__ bps2afmt(unsigned bps); /**< very approximate prediction */ + +#endif Modified: mplayerxp/libao2/ao_arts.c =================================================================== --- mplayerxp/libao2/ao_arts.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/ao_arts.c 2012-11-08 13:41:11 UTC (rev 304) @@ -26,7 +26,7 @@ #include "mp_config.h" #include "audio_out.h" #include "audio_out_internal.h" -#include "postproc/af_format.h" +#include "postproc/af.h" #include "afmt.h" #include "ao_msg.h" Modified: mplayerxp/libao2/ao_esd.c =================================================================== --- mplayerxp/libao2/ao_esd.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/ao_esd.c 2012-11-08 13:41:11 UTC (rev 304) @@ -50,7 +50,7 @@ #include "mp_config.h" #include "audio_out.h" #include "audio_out_internal.h" -#include "postproc/af_format.h" +#include "postproc/af.h" #include "afmt.h" #include "ao_msg.h" #include "osdep/mplib.h" Modified: mplayerxp/libao2/ao_jack.c =================================================================== --- mplayerxp/libao2/ao_jack.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/ao_jack.c 2012-11-08 13:41:11 UTC (rev 304) @@ -30,7 +30,7 @@ #include "audio_out.h" #include "audio_out_internal.h" -#include "postproc/af_format.h" +#include "postproc/af.h" #include "afmt.h" #include "osdep/timer.h" #include "osdep/mplib.h" @@ -142,9 +142,9 @@ static ControlCodes control(ao_data_t* ao,int cmd, long arg) { UNUSED(ao); - UNUSED(cmd); - UNUSED(arg); - return CONTROL_UNKNOWN; + UNUSED(cmd); + UNUSED(arg); + return CONTROL_UNKNOWN; } /** Modified: mplayerxp/libao2/ao_nas.c =================================================================== --- mplayerxp/libao2/ao_nas.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/ao_nas.c 2012-11-08 13:41:11 UTC (rev 304) @@ -57,7 +57,7 @@ #include "audio_out.h" #include "audio_out_internal.h" -#include "postproc/af_format.h" +#include "postproc/af.h" #include "osdep/mplib.h" #include "afmt.h" #include "ao_msg.h" @@ -442,7 +442,7 @@ buffer_size = ao->bps; /* buffer 1 second */ MSG_V("ao2: %d Hz %d chans %s\n",rate,channels, - fmt2str(format,ao->bps,str,256)); + mpaf_fmt2str(format,str,256)); /* * round up to multiple of NAS_FRAG_SIZE Modified: mplayerxp/libao2/ao_openal.c =================================================================== --- mplayerxp/libao2/ao_openal.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/ao_openal.c 2012-11-08 13:41:11 UTC (rev 304) @@ -31,7 +31,7 @@ #include "audio_out.h" #include "audio_out_internal.h" -#include "postproc/af_format.h" +#include "postproc/af.h" #include "afmt.h" #include "osdep/timer.h" #include "osdep/mplib.h" Modified: mplayerxp/libao2/ao_wav.c =================================================================== --- mplayerxp/libao2/ao_wav.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libao2/ao_wav.c 2012-11-08 13:41:11 UTC (rev 304) @@ -26,7 +26,7 @@ #include "xmpcore/xmp_core.h" #include "osdep/bswap.h" -#include "postproc/af_format.h" +#include "postproc/af.h" #include "afmt.h" #include "audio_out.h" #include "audio_out_internal.h" @@ -160,7 +160,9 @@ MSG_INFO("ao_wav: %s %d-%s %s\n" ,priv->out_filename - ,rate, (channels > 1) ? "Stereo" : "Mono", fmt2str(format,ao->bps,str,sizeof(str))); + ,rate + ,(channels > 1) ? "Stereo" : "Mono" + ,mpaf_fmt2str(format,str,sizeof(str))); priv->fp = fopen(priv->out_filename, "wb"); if(priv->fp) { Modified: mplayerxp/libmpcodecs/ad_a52.c =================================================================== --- mplayerxp/libmpcodecs/ad_a52.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_a52.c 2012-11-08 13:41:11 UTC (rev 304) @@ -71,7 +71,7 @@ apts=0; } MSG_DBG2("a52: len=%d flags=0x%X %d Hz %d bit/s\n",length,flags,sample_rate,bit_rate); - sh_audio->samplerate=sample_rate; + sh_audio->rate=sample_rate; sh_audio->i_bps=bit_rate/8; demux_read_data_r(sh_audio->ds,sh_audio->a_in_buffer+8,length-8,apts?&null_pts:&apts); if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer+8,sh_audio->a_in_buffer+8,length-8); @@ -104,7 +104,7 @@ channels, (flags&A52_LFE)?1:0, mode, (flags&A52_LFE)?"+lfe":"", sample_rate, bit_rate*0.001f, - sh_audio->samplesize*8); + afmt2bps(sh_audio->afmt)*8); return (flags&A52_LFE) ? (channels+1) : channels; } @@ -120,15 +120,14 @@ #define A52_FMT32 AFMT_S32_LE #define A52_FMT24 AFMT_S24_LE #endif - sh->samplesize=2; + sh->afmt=bps2afmt(2); if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == CONTROL_OK|| af_query_fmt(sh->afilter,A52_FMT32) == CONTROL_OK || af_query_fmt(sh->afilter,A52_FMT24) == CONTROL_OK) { - sh->samplesize=4; - sh->sample_format=AFMT_FLOAT32; + sh->afmt=AFMT_FLOAT32; } - sh->audio_out_minsize=mp_conf.ao_channels*sh->samplesize*256*6; + sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*6; sh->audio_in_minsize=MAX_AC3_FRAME; sh->context=mp_malloc(sizeof(priv_t)); return 1; @@ -152,9 +151,9 @@ } /* 'a52 cannot upmix' hotfix:*/ a52_printinfo(sh_audio); - sh_audio->channels=mp_conf.ao_channels; -while(sh_audio->channels>0){ - switch(sh_audio->channels){ + sh_audio->nch=mp_conf.ao_channels; +while(sh_audio->nch>0){ + switch(sh_audio->nch){ case 1: mpxp_a52_flags=A52_MONO; break; /* case 2: mpxp_a52_flags=A52_STEREO; break; */ case 2: mpxp_a52_flags=A52_DOLBY; break; @@ -173,17 +172,14 @@ } MSG_V("A52 flags after a52_frame: 0x%X\n",flags); /* frame decoded, let's init resampler:*/ - if(sh_audio->samplesize==4) - { - if(a52_resample_init_float(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->channels)) break; + if(afmt2bps(sh_audio->afmt)==4) { + if(a52_resample_init_float(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->nch)) break; + } else { + if(a52_resample_init(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->nch)) break; } - else - { - if(a52_resample_init(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->channels)) break; - } - --sh_audio->channels; /* try to decrease no. of channels*/ + --sh_audio->nch; /* try to decrease no. of channels*/ } - if(sh_audio->channels<=0){ + if(sh_audio->nch<=0){ MSG_ERR("a52: no resampler. try different channel setup!\n"); return 0; } @@ -241,7 +237,7 @@ MSG_WARN("a52: error at resampling\n"); break; } - if(sh_audio->samplesize==4) + if(afmt2bps(sh_audio->afmt)==4) len+=4*a52_resample32(a52_samples(mpxp_a52_state),(float *)&buf[len]); else len+=2*a52_resample(a52_samples(mpxp_a52_state),(int16_t *)&buf[len]); Modified: mplayerxp/libmpcodecs/ad_dca.c =================================================================== --- mplayerxp/libmpcodecs/ad_dca.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_dca.c 2012-11-08 13:41:11 UTC (rev 304) @@ -71,7 +71,7 @@ apts=0; } MSG_DBG2("dca[%08X]: len=%d flags=0x%X %d Hz %d bit/s frame=%u\n",*((long *)sh_audio->a_in_buffer),length,flags,sample_rate,bit_rate,flen); - sh_audio->samplerate=sample_rate; + sh_audio->rate=sample_rate; sh_audio->i_bps=bit_rate/8; demux_read_data_r(sh_audio->ds,sh_audio->a_in_buffer+16,length-16,apts?&null_pts:&apts); priv->last_pts=*pts=apts; @@ -102,7 +102,7 @@ channels, (flags&DCA_LFE)?1:0, mode, (flags&DCA_LFE)?"+lfe":"", sample_rate, bit_rate*0.001f, - sh_audio->samplesize*8); + afmt2bps(sh_audio->afmt)*8); return (flags&DCA_LFE) ? (channels+1) : channels; } @@ -118,15 +118,14 @@ #define DCA_FMT32 AFMT_S32_LE #define DCA_FMT24 AFMT_S24_LE #endif - sh->samplesize=2; + sh->afmt=bps2afmt(2); if( af_query_fmt(sh->afilter,AFMT_FLOAT32) == CONTROL_OK|| af_query_fmt(sh->afilter,DCA_FMT32) == CONTROL_OK || af_query_fmt(sh->afilter,DCA_FMT24) == CONTROL_OK) { - sh->samplesize=4; - sh->sample_format=AFMT_FLOAT32; + sh->afmt=AFMT_FLOAT32; } - sh->audio_out_minsize=mp_conf.ao_channels*sh->samplesize*256*8; + sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*8; sh->audio_in_minsize=MAX_AC5_FRAME; sh->context=mp_malloc(sizeof(priv_t)); return 1; @@ -150,9 +149,9 @@ } /* 'dca cannot upmix' hotfix:*/ dca_printinfo(sh_audio); - sh_audio->channels=mp_conf.ao_channels; -while(sh_audio->channels>0){ - switch(sh_audio->channels){ + sh_audio->nch=mp_conf.ao_channels; +while(sh_audio->nch>0){ + switch(sh_audio->nch){ case 1: mpxp_dca_flags=DCA_MONO; break; case 2: mpxp_dca_flags=DCA_STEREO; break; /* case 2: mpxp_dca_flags=DCA_DOLBY; break; */ @@ -170,17 +169,14 @@ return 0; } MSG_V("dca flags after dca_frame: 0x%X\n",flags); - if(sh_audio->samplesize==4) - { - if(dca_resample_init_float(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->channels)) break; + if(afmt2bps(sh_audio->afmt)==4) { + if(dca_resample_init_float(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->nch)) break; + } else { + if(dca_resample_init(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->nch)) break; } - else - { - if(dca_resample_init(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->channels)) break; - } - --sh_audio->channels; /* try to decrease no. of channels*/ + --sh_audio->nch; /* try to decrease no. of channels*/ } - if(sh_audio->channels<=0){ + if(sh_audio->nch<=0){ MSG_ERR("dca: no resampler. try different channel setup!\n"); return 0; } @@ -220,8 +216,7 @@ priv_t *priv=sh_audio->context; UNUSED(minlen); UNUSED(maxlen); - if(!sh_audio->a_in_buffer_len) - { + if(!sh_audio->a_in_buffer_len) { if(dca_fillbuff(sh_audio,pts)<0) return len; /* EOF */ } else *pts=priv->last_pts; @@ -238,7 +233,7 @@ MSG_WARN("dca: error at deblock\n"); break; } - if(sh_audio->samplesize==4) + if(afmt2bps(sh_audio->afmt)==4) len+=4*dca_resample32(dca_samples(mpxp_dca_state),(float *)&buf[len]); else len+=2*dca_resample(dca_samples(mpxp_dca_state),(int16_t *)&buf[len]); Modified: mplayerxp/libmpcodecs/ad_dvdpcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-08 13:41:11 UTC (rev 304) @@ -26,38 +26,34 @@ if(sh->codecdata_len==3){ // we have LPCM header: unsigned char h=sh->codecdata[1]; - sh->channels=1+(h&7); + sh->nch=1+(h&7); switch((h>>4)&3){ - case 0: sh->samplerate=48000;break; - case 1: sh->samplerate=96000;break; - case 2: sh->samplerate=44100;break; - case 3: sh->samplerate=32000;break; + case 0: sh->rate=48000;break; + case 1: sh->rate=96000;break; + case 2: sh->rate=44100;break; + case 3: sh->rate=32000;break; } switch ((h >> 6) & 3) { case 0: - sh->sample_format = AFMT_S16_BE; - sh->samplesize = 2; + sh->afmt = AFMT_S16_BE; break; case 1: - //sh->sample_format = AFMT_S20_BE; - sh->i_bps = sh->channels * sh->samplerate * 5 / 2; - case 2: - sh->sample_format = AFMT_S24_BE; - sh->samplesize = 3; + //sh->afmt = AFMT_S20_BE; + sh->i_bps = sh->nch * sh->rate * 5 / 2; + case 2: + sh->afmt = AFMT_S24_BE; break; default: - sh->sample_format = AFMT_S16_BE; - sh->samplesize = 2; + sh->afmt = AFMT_S16_BE; } } else { // use defaults: - sh->channels=2; - sh->samplerate=48000; - sh->sample_format = AFMT_S16_BE; - sh->samplesize = 2; + sh->nch=2; + sh->rate=48000; + sh->afmt = AFMT_S16_BE; } if (!sh->i_bps) - sh->i_bps = sh->samplesize * sh->channels * sh->samplerate; + sh->i_bps = afmt2bps(sh->afmt) * sh->nch * sh->rate; return 1; } @@ -98,7 +94,7 @@ unsigned len; float null_pts; UNUSED(maxlen); - if (sh_audio->samplesize == 3) { + if (afmt2bps(sh_audio->afmt) == 3) { if (((sh_audio->codecdata[1] >> 6) & 3) == 1) { // 20 bit // not sure if the "& 0xf0" and "<< 4" are the right way around Modified: mplayerxp/libmpcodecs/ad_faad.c =================================================================== --- mplayerxp/libmpcodecs/ad_faad.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_faad.c 2012-11-08 13:41:11 UTC (rev 304) @@ -183,7 +183,7 @@ MSG_DBG2("FAAD: codecdata extracted from WAVEFORMATEX\n"); } NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); - if(sh->samplerate) NeAAC_conf->defSampleRate = sh->samplerate; + if(sh->rate) NeAAC_conf->defSampleRate = sh->rate; #ifdef WORDS_BIGENDIAN #define NeAAC_FMT32 AFMT_S32_BE #define NeAAC_FMT24 AFMT_S24_BE @@ -199,14 +199,12 @@ af_query_fmt(sh->afilter,NeAAC_FMT32) == CONTROL_OK || af_query_fmt(sh->afilter,NeAAC_FMT24) == CONTROL_OK) { - sh->samplesize=4; - sh->sample_format=AFMT_FLOAT32; + sh->afmt=AFMT_FLOAT32; NeAAC_conf->outputFormat=FAAD_FMT_FLOAT; } else { - sh->samplesize=2; - sh->sample_format=NeAAC_FMT16; + sh->afmt=NeAAC_FMT16; NeAAC_conf->outputFormat=FAAD_FMT_16BIT; } /* Set the default object type and samplerate */ @@ -223,12 +221,6 @@ // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi } else { // We have ES DS in codecdata -#if 0 - int i; - for(i = 0; i < sh->codecdata_len; i++) - printf("codecdata_dump[%d]=0x%02X\n", i, sh->codecdata[i]); -#endif - NeAAC_init = NeAACDecInit2(NeAAC_hdec, sh->codecdata, sh->codecdata_len, &NeAAC_samplerate, &NeAAC_channels); } @@ -239,18 +231,17 @@ return 0; } else { NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); - sh->channels = NeAAC_channels; - sh->samplerate = NeAAC_samplerate; + sh->nch = NeAAC_channels; + sh->rate = NeAAC_samplerate; switch(NeAAC_conf->outputFormat){ default: - case FAAD_FMT_16BIT: sh->samplesize=2; break; - case FAAD_FMT_24BIT: sh->samplesize=3; break; + case FAAD_FMT_16BIT: sh->afmt=bps2afmt(2); break; + case FAAD_FMT_24BIT: sh->afmt=bps2afmt(3); break; case FAAD_FMT_FLOAT: - case FAAD_FMT_32BIT: sh->samplesize=4; break; - case FAAD_FMT_DOUBLE: sh->samplesize=8; break; + case FAAD_FMT_32BIT: sh->afmt=bps2afmt(4); break; } MSG_V("FAAD: Decoder init done (%dBytes)!\n", sh->a_in_buffer_len); // XXX: remove or move to debug! - MSG_V("FAAD: Negotiated samplerate: %dHz channels: %d bps: %d\n", NeAAC_samplerate, NeAAC_channels,sh->samplesize); + MSG_V("FAAD: Negotiated samplerate: %dHz channels: %d bps: %d\n", NeAAC_samplerate, NeAAC_channels,afmt2bps(sh->afmt)); //sh->o_bps = sh->samplesize*NeAAC_channels*NeAAC_samplerate; if(!sh->i_bps) { MSG_WARN("FAAD: compressed input bitrate missing, assuming 128kbit/s!\n"); @@ -342,8 +333,8 @@ /* XXX: samples already multiplied by channels! */ MSG_DBG2("FAAD: Successfully decoded frame (%d Bytes)!\n", sh->samplesize*NeAAC_finfo.samples); - memcpy(buf+len,NeAAC_sample_buffer, sh->samplesize*NeAAC_finfo.samples); - len += sh->samplesize*NeAAC_finfo.samples; + memcpy(buf+len,NeAAC_sample_buffer, afmt2bps(sh->afmt)*NeAAC_finfo.samples); + len += afmt2bps(sh->afmt)*NeAAC_finfo.samples; //printf("FAAD: buffer: %d bytes consumed: %d \n", k, NeAAC_finfo.bytesconsumed); } } Modified: mplayerxp/libmpcodecs/ad_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-08 13:41:11 UTC (rev 304) @@ -133,30 +133,22 @@ x=decode(sh_audio,sh_audio->a_buffer,1,sh_audio->a_buffer_size,&pts); if(x>0) sh_audio->a_buffer_len=x; - sh_audio->channels=lavc_context->channels; - sh_audio->samplerate=lavc_context->sample_rate; + sh_audio->nch=lavc_context->channels; + sh_audio->rate=lavc_context->sample_rate; switch(lavc_context->sample_fmt) { case AV_SAMPLE_FMT_U8: ///< unsigned 8 bits - sh_audio->samplesize=1; - sh_audio->sample_format=AFMT_U8; + sh_audio->afmt=AFMT_U8; break; default: case AV_SAMPLE_FMT_S16: ///< signed 16 bits - sh_audio->samplesize=2; - sh_audio->sample_format=AFMT_S16_LE; + sh_audio->afmt=AFMT_S16_LE; break; case AV_SAMPLE_FMT_S32: ///< signed 32 bits - sh_audio->samplesize=4; - sh_audio->sample_format=AFMT_S32_LE; + sh_audio->afmt=AFMT_S32_LE; break; case AV_SAMPLE_FMT_FLT: ///< float - sh_audio->samplesize=4; - sh_audio->sample_format=AFMT_FLOAT32; + sh_audio->afmt=AFMT_FLOAT32; break; - case AV_SAMPLE_FMT_DBL: ///< double - sh_audio->samplesize=8; - sh_audio->sample_format=AFMT_FLOAT32; - break; } sh_audio->i_bps=lavc_context->bit_rate/8; return 1; Modified: mplayerxp/libmpcodecs/ad_hwac3.c =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-08 13:41:11 UTC (rev 304) @@ -82,7 +82,7 @@ unsigned char bsidmod; unsigned char acmod; } bsi; -}; +}; int ac3_iec958_build_burst(int length, int data_type, int big_endian, unsigned char * data, unsigned char * out) { @@ -105,22 +105,22 @@ int ac3_iec958_parse_syncinfo(unsigned char *buf, int size, struct hwac3info *ai, int *skipped) { int samplerates[4] = { 48000, 44100, 32000, -1 }; - unsigned short sync = 0; + unsigned short _sync = 0; unsigned char *ptr = buf; int fscod, frmsizecod; struct syncframe *sf; - sync = buf[0] << 8; - sync |= buf[1]; + _sync = buf[0] << 8; + _sync |= buf[1]; ptr = buf + 2; *skipped = 0; - while (sync != 0xb77 && *skipped < size - 8) { - sync <<= 8; - sync |= *ptr; + while (_sync != 0xb77 && *skipped < size - 8) { + _sync <<= 8; + _sync |= *ptr; ptr++; *skipped += 1; } - if (sync != 0xb77) + if (_sync != 0xb77) return -1; ptr -= 2; sf = (struct syncframe *) ptr; @@ -168,8 +168,8 @@ mpcodecs_ad_a52.preinit(sh); sh->audio_out_minsize=4*256*6; sh->audio_in_minsize=3840; - sh->channels=2; - sh->sample_format=AFMT_AC3; + sh->nch=2; + sh->afmt=AFMT_AC3; return 1; } @@ -186,7 +186,7 @@ MSG_ERR("A52 sync failed\n"); return 0; } - /* + /* sh_audio->samplerate=ai.samplerate; // SET by a52_fillbuff() sh_audio->samplesize=ai.framesize; sh_audio->i_bps=ai.bitrate*(1000/8); // SET by a52_fillbuff() @@ -195,8 +195,8 @@ o_bps is calculated from samplesize*channels*samplerate a single ac3 frame is always translated to 6144 byte packet. (zero padding)*/ - sh_audio->channels=2; - sh_audio->samplesize=2; /* 2*2*(6*256) = 6144 (very TRICKY!)*/ + sh_audio->nch=2; + sh_audio->afmt=bps2afmt(2); /* 2*2*(6*256) = 6144 (very TRICKY!)*/ return 1; } Modified: mplayerxp/libmpcodecs/ad_libdv.c =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_libdv.c 2012-11-08 13:41:11 UTC (rev 304) @@ -15,6 +15,7 @@ #include "libmpdemux/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" +#include "libao2/afmt.h" #include "ad_internal.h" @@ -56,9 +57,9 @@ if(!h) return 0; sh->i_bps=h->nAvgBytesPerSec; - sh->channels=h->nChannels; - sh->samplerate=h->nSamplesPerSec; - sh->samplesize=(h->wBitsPerSample+7)/8; + sh->nch=h->nChannels; + sh->rate=h->nSamplesPerSec; + sh->afmt=bps2afmt((h->wBitsPerSample+7)/8); priv = mp_mallocz(sizeof(priv_t)); priv->decoder=init_global_rawdv_decoder(); sh->context = priv; Modified: mplayerxp/libmpcodecs/ad_mp3.c =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_mp3.c 2012-11-08 13:41:11 UTC (rev 304) @@ -269,8 +269,7 @@ unsigned char *indata; struct mpg123_frameinfo fi; priv_t *priv; - sh->samplesize=4; - sh->sample_format=AFMT_FLOAT32; + sh->afmt=AFMT_FLOAT32; mpg123_init(); priv = mp_mallocz(sizeof(priv_t)); sh->context = priv; @@ -305,8 +304,8 @@ return 0; } mpg123_getformat(priv->mh, &rate, &nch, &enc); - sh->samplerate = rate; - sh->channels = nch; + sh->rate = rate; + sh->nch = nch; mpg123_info(priv->mh,&fi); sh->i_bps=((fi.abr_rate?fi.abr_rate:fi.bitrate)/8)*1000; // Prints first frame header in ascii. @@ -381,11 +380,11 @@ if(!((err==MPG123_OK)||(err==MPG123_NEED_MORE))) { MSG_ERR("mpg123_read = %s done = %u minlen = %u\n",mpg123_plain_strerror(err),done,minlen); } - else { + if(err==MPG123_OK) { MSG_DBG2("ad_mp3.decode: copy %u bytes from %p\n",done,outdata); memcpy(buf,outdata,done); } - if(err==MPG123_NEED_MORE) { + else if(err==MPG123_NEED_MORE) { float apts=0.; indata_size=ds_get_packet_r(sh->ds,&indata,&apts); if(indata_size<0) return 0; Modified: mplayerxp/libmpcodecs/ad_pcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_pcm.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_pcm.c 2012-11-08 13:41:11 UTC (rev 304) @@ -2,7 +2,7 @@ #include <stdlib.h> #include <unistd.h> #include "ad_internal.h" -#include "../libao2/afmt.h" +#include "libao2/afmt.h" static const ad_info_t info = { @@ -22,36 +22,30 @@ { WAVEFORMATEX *h=sh_audio->wf; sh_audio->i_bps=h->nAvgBytesPerSec; - sh_audio->channels=h->nChannels; - sh_audio->samplerate=h->nSamplesPerSec; - sh_audio->samplesize=(h->wBitsPerSample+7)/8; + sh_audio->nch=h->nChannels; + sh_audio->rate=h->nSamplesPerSec; + sh_audio->afmt=bps2afmt((h->wBitsPerSample+7)/8); switch(sh_audio->wtag){ /* hardware formats: */ - case 0x3: sh_audio->sample_format=AFMT_FLOAT32; break; - case 0x6: sh_audio->sample_format=AFMT_A_LAW;break; - case 0x7: sh_audio->sample_format=AFMT_MU_LAW;break; - case 0x11: sh_audio->sample_format=AFMT_IMA_ADPCM;break; - case 0x50: sh_audio->sample_format=AFMT_MPEG;break; + case 0x3: sh_audio->afmt=AFMT_FLOAT32; break; + case 0x6: sh_audio->afmt=AFMT_A_LAW;break; + case 0x7: sh_audio->afmt=AFMT_MU_LAW;break; + case 0x11: sh_audio->afmt=AFMT_IMA_ADPCM;break; + case 0x50: sh_audio->afmt=AFMT_MPEG;break; /* case 0x2000: sh_audio->sample_format=AFMT_AC3; */ case mmioFOURCC('r','a','w',' '): /* 'raw '*/ - if(sh_audio->samplesize==1) sh_audio->sample_format=AFMT_S8; - else if(sh_audio->samplesize==2) sh_audio->sample_format=AFMT_S16_BE; - else if(sh_audio->samplesize==3) sh_audio->sample_format=AFMT_S24_BE; - else sh_audio->sample_format=AFMT_S32_BE; - break; + break; case mmioFOURCC('t','w','o','s'): /* 'twos'*/ - if(sh_audio->samplesize==1) sh_audio->sample_format=AFMT_S8; - else sh_audio->sample_format=AFMT_S16_BE; - break; + if(afmt2bps(sh_audio->afmt)!=1) sh_audio->afmt=AFMT_S16_BE; + break; case mmioFOURCC('s','o','w','t'): /* 'swot'*/ - if(sh_audio->samplesize==1) sh_audio->sample_format=AFMT_S8; - else sh_audio->sample_format=AFMT_S16_LE; - break; + if(afmt2bps(sh_audio->afmt)!=1) sh_audio->afmt=AFMT_S16_LE; + break; default: - if(sh_audio->samplesize==1) sh_audio->sample_format=AFMT_S8; - else if(sh_audio->samplesize==2) sh_audio->sample_format=AFMT_S16_LE; - else if(sh_audio->samplesize==3) sh_audio->sample_format=AFMT_S24_LE; - else sh_audio->sample_format=AFMT_S32_LE; - break; + if(afmt2bps(sh_audio->afmt)==1); + else if(afmt2bps(sh_audio->afmt)==2) sh_audio->afmt=AFMT_S16_LE; + else if(afmt2bps(sh_audio->afmt)==3) sh_audio->afmt=AFMT_S24_LE; + else sh_audio->afmt=AFMT_S32_LE; + break; } return 1; } @@ -89,7 +83,7 @@ unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) { - unsigned len = sh_audio->channels*sh_audio->samplesize; + unsigned len = sh_audio->nch*afmt2bps(sh_audio->afmt); len = (minlen + len - 1) / len * len; if (len > maxlen) /* if someone needs hundreds of channels adjust audio_out_minsize based on channels in preinit() */ Modified: mplayerxp/libmpcodecs/ad_real.c =================================================================== --- mplayerxp/libmpcodecs/ad_real.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_real.c 2012-11-08 13:41:11 UTC (rev 304) @@ -12,6 +12,7 @@ #include "codecs_ld.h" #include "ad_msg.h" #include "osdep/mplib.h" +#include "libao2/afmt.h" static const ad_info_t info = { "RealAudio decoder", "realaud", @@ -133,9 +134,9 @@ return 0; } - sh->samplerate=sh->wf->nSamplesPerSec; - sh->samplesize=sh->wf->wBitsPerSample/8; - sh->channels=sh->wf->nChannels; + sh->rate=sh->wf->nSamplesPerSec; + sh->afmt=bps2afmt(sh->wf->wBitsPerSample/8); + sh->nch=sh->wf->nChannels; { ra_init_t init_data={ Modified: mplayerxp/libmpcodecs/ad_vorbis.c =================================================================== --- mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-08 13:41:11 UTC (rev 304) @@ -89,8 +89,8 @@ } // Setup the decoder - sh->channels=ov->vi.channels; - sh->samplerate=ov->vi.rate; + sh->nch=ov->vi.channels; + sh->rate=ov->vi.rate; #ifdef WORDS_BIGENDIAN #define OGG_FMT32 AFMT_S32_BE #define OGG_FMT24 AFMT_S24_BE @@ -100,12 +100,9 @@ #define OGG_FMT24 AFMT_S24_LE #define OGG_FMT16 AFMT_S16_LE #endif - sh->samplesize=2; - sh->sample_format=OGG_FMT16; - if(ao_control(ao_data,AOCONTROL_QUERY_FORMAT,OGG_FMT32) == CONTROL_OK) - { - sh->samplesize=4; - sh->sample_format=OGG_FMT32; + sh->afmt=OGG_FMT16; + if(ao_control(ao_data,AOCONTROL_QUERY_FORMAT,OGG_FMT32) == CONTROL_OK) { + sh->afmt=OGG_FMT32; } // assume 128kbit if bitrate not specified in the header sh->i_bps=((ov->vi.bitrate_nominal>0) ? ov->vi.bitrate_nominal : 128000)/8; @@ -162,8 +159,7 @@ if(bout<=0) break; - if(sh->samplesize==4) - { + if(afmt2bps(sh->afmt)==4) { /* convert floats to 32 bit signed ints (host order) and interleave */ for(i=0;i<(unsigned)ov->vi.channels;i++){ @@ -221,7 +217,7 @@ if(clipflag) MSG_DBG2("Clipping in frame %ld\n",(long)(ov->vd.sequence)); - len+=sh->samplesize*ov->vi.channels*bout; + len+=afmt2bps(sh->afmt)*ov->vi.channels*bout; MSG_DBG2("\n[decoded: %d / %d ]\n",bout,samples); vorbis_synthesis_read(&ov->vd,bout); /* tell libvorbis how many samples we Modified: mplayerxp/libmpcodecs/dec_audio.c =================================================================== --- mplayerxp/libmpcodecs/dec_audio.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/dec_audio.c 2012-11-08 13:41:11 UTC (rev 304) @@ -29,113 +29,106 @@ static const ad_functions_t* mpadec; const ad_functions_t* mpca_find_driver(const char *name) { - unsigned i; - for (i=0; mpcodecs_ad_drivers[i] != NULL; i++) { - if(strcmp(mpcodecs_ad_drivers[i]->info->driver_name,name)==0){ - return mpcodecs_ad_drivers[i]; + unsigned i; + for (i=0; mpcodecs_ad_drivers[i] != NULL; i++) { + if(strcmp(mpcodecs_ad_drivers[i]->info->driver_name,name)==0){ + return mpcodecs_ad_drivers[i]; + } } - } - return NULL; + return NULL; } int mpca_init(sh_audio_t *sh_audio) { - unsigned i; - for (i=0; mpcodecs_ad_drivers[i] != NULL; i++) - if(strcmp(mpcodecs_ad_drivers[i]->info->driver_name,sh_audio->codec->driver_name)==0){ - mpadec=mpcodecs_ad_drivers[i]; break; + unsigned i; + for (i=0; mpcodecs_ad_drivers[i] != NULL; i++) + if(strcmp(mpcodecs_ad_drivers[i]->info->driver_name,sh_audio->codec->driver_name)==0){ + mpadec=mpcodecs_ad_drivers[i]; break; + } + if(!mpadec){ + MSG_ERR(MSGTR_CODEC_BAD_AFAMILY,sh_audio->codec->codec_name, sh_audio->codec->driver_name); + return 0; // no such driver } - if(!mpadec){ - MSG_ERR(MSGTR_CODEC_BAD_AFAMILY,sh_audio->codec->codec_name, sh_audio->codec->driver_name); - return 0; // no such driver - } - /* reset in/out buffer size/pointer: */ - sh_audio->a_buffer_size=0; - sh_audio->a_buffer=NULL; - sh_audio->a_in_buffer_size=0; - sh_audio->a_in_buffer=NULL; - /* Set up some common usefull defaults. ad->preinit() can override these: */ + /* reset in/out buffer size/pointer: */ + sh_audio->a_buffer_size=0; + sh_audio->a_buffer=NULL; + sh_audio->a_in_buffer_size=0; + sh_audio->a_in_buffer=NULL; - sh_audio->samplesize=2; + /* Set up some common usefull defaults. ad->preinit() can override these: */ #ifdef WORDS_BIGENDIAN - sh_audio->sample_format=AFMT_S16_BE; + sh_audio->afmt=AFMT_S16_BE; #else - sh_audio->sample_format=AFMT_S16_LE; + sh_audio->afmt=AFMT_S16_LE; #endif - sh_audio->samplerate=0; - sh_audio->o_bps=0; - if(sh_audio->wf) /* NK: We need to know i_bps before its detection by codecs param */ - sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; + sh_audio->rate=0; + sh_audio->o_bps=0; + if(sh_audio->wf) /* NK: We need to know i_bps before its detection by codecs param */ + sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; - sh_audio->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/ - sh_audio->audio_in_minsize=0; + sh_audio->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/ + sh_audio->audio_in_minsize=0; - if(!mpadec->preinit(sh_audio)) - { - MSG_ERR(MSGTR_CODEC_CANT_PREINITA); - return 0; - } + if(!mpadec->preinit(sh_audio)) { + MSG_ERR(MSGTR_CODEC_CANT_PREINITA); + return 0; + } -/* allocate audio in buffer: */ - if(sh_audio->audio_in_minsize>0){ - sh_audio->a_in_buffer_size=sh_audio->audio_in_minsize; - MSG_V("dec_audio: Allocating %d bytes for input buffer\n", - sh_audio->a_in_buffer_size); - sh_audio->a_in_buffer=mp_mallocz(sh_audio->a_in_buffer_size); - sh_audio->a_in_buffer_len=0; - } + /* allocate audio in buffer: */ + if(sh_audio->audio_in_minsize>0){ + sh_audio->a_in_buffer_size=sh_audio->audio_in_minsize; + MSG_V("dec_audio: Allocating %d bytes for input buffer\n", + sh_audio->a_in_buffer_size); + sh_audio->a_in_buffer=mp_mallocz(sh_audio->a_in_buffer_size); + sh_audio->a_in_buffer_len=0; + } -/* allocate audio out buffer: */ - sh_audio->a_buffer_size=sh_audio->audio_out_minsize+MAX_OUTBURST; /* worst case calc.*/ + /* allocate audio out buffer: */ + sh_audio->a_buffer_size=sh_audio->audio_out_minsize+MAX_OUTBURST; /* worst case calc.*/ - MSG_V("dec_audio: Allocating %d + %d = %d bytes for output buffer\n", - sh_audio->audio_out_minsize,MAX_OUTBURST,sh_audio->a_buffer_size); + MSG_V("dec_audio: Allocating %d + %d = %d bytes for output buffer\n", + sh_audio->audio_out_minsize,MAX_OUTBURST,sh_audio->a_buffer_size); - sh_audio->a_buffer=mp_mallocz(sh_audio->a_buffer_size); - if(!sh_audio->a_buffer){ - MSG_ERR(MSGTR_CantAllocAudioBuf); - return 0; - } - sh_audio->a_buffer_len=0; + sh_audio->a_buffer=mp_mallocz(sh_audio->a_buffer_size); + if(!sh_audio->a_buffer) { + MSG_ERR(MSGTR_CantAllocAudioBuf); + return 0; + } + sh_audio->a_buffer_len=0; - if(!mpadec->init(sh_audio)){ - MSG_WARN(MSGTR_CODEC_CANT_INITA); - mpca_uninit(sh_audio); /* mp_free buffers */ - return 0; - } + if(!mpadec->init(sh_audio)){ + MSG_WARN(MSGTR_CODEC_CANT_INITA); + mpca_uninit(sh_audio); /* mp_free buffers */ + return 0; + } - sh_audio->inited=1; + sh_audio->inited=1; - if(!sh_audio->channels || !sh_audio->samplerate){ - MSG_WARN(MSGTR_UnknownAudio); - mpca_uninit(sh_audio); /* mp_free buffers */ - return 0; - } + if(!sh_audio->nch || !sh_audio->rate) { + MSG_WARN(MSGTR_UnknownAudio); + mpca_uninit(sh_audio); /* mp_free buffers */ + return 0; + } - if(!sh_audio->o_bps) - sh_audio->o_bps=sh_audio->channels*sh_audio->samplerate*sh_audio->samplesize; - if(!sh_audio->i_bps) - { + if(!sh_audio->o_bps) + sh_audio->o_bps=sh_audio->nch*sh_audio->rate*afmt2bps(sh_audio->afmt); + if(!sh_audio->i_bps) { static int warned=0; - if(!warned) - { + if(!warned) { warned=1; MSG_WARN(MSGTR_CODEC_INITAL_AV_RESYNC); } - } - else - if(xp_core->initial_apts_corr.need_correction==1) - { - xp_core->initial_apts += ((float)(xp_core->initial_apts_corr.pts_bytes-xp_core->initial_apts_corr.nbytes))/(float)sh_audio->i_bps; - xp_core->initial_apts_corr.need_correction=0; - } - MSG_OK("[AC] %s decoder: [%s] drv:%s.%s ratio %i->%i\n",mp_conf.audio_codec?"Forcing":"Selecting" - ,sh_audio->codec->codec_name - ,mpadec->info->driver_name - ,sh_audio->codec->dll_name - ,sh_audio->i_bps,sh_audio->o_bps); - return 1; + } else if(xp_core->initial_apts_corr.need_correction==1) { + xp_core->initial_apts += ((float)(xp_core->initial_apts_corr.pts_bytes-xp_core->initial_apts_corr.nbytes))/(float)sh_audio->i_bps; + xp_core->initial_apts_corr.need_correction=0; + } + MSG_OK("[AC] %s decoder: [%s] drv:%s.%s ratio %i->%i\n",mp_conf.audio_codec?"Forcing":"Selecting" + ,sh_audio->codec->codec_name + ,mpadec->info->driver_name + ,sh_audio->codec->dll_name + ,sh_audio->i_bps,sh_audio->o_bps); + return 1; } void mpca_uninit(sh_audio_t *sh_audio) @@ -160,103 +153,108 @@ /* Init audio filters */ int mpca_preinit_filters(sh_audio_t *sh_audio, - int in_samplerate, int in_channels, int in_format, int in_bps, - int* out_samplerate, int* out_channels, int* out_format, int out_bps){ - char strbuf[200]; - af_stream_t* afs=af_new(sh_audio); + unsigned in_samplerate, unsigned in_channels, unsigned in_format, + unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format){ + char strbuf[200]; + af_stream_t* afs=af_new(sh_audio); - // input format: same as codec's output format: - afs->input.rate = in_samplerate; - afs->input.nch = in_channels; - afs->input.format = af_format_decode(in_format,&afs->input.bps); + // input format: same as codec's output format: + afs->input.rate = in_samplerate; + afs->input.nch = in_channels; + afs->input.format = mpaf_format_decode(in_format); - // output format: same as ao driver's input format (if missing, fallback to input) - afs->output.rate = *out_samplerate ? *out_samplerate : afs->input.rate; - afs->output.nch = *out_channels ? *out_channels : afs->input.nch; - if(*out_format) afs->output.format = af_format_decode(*out_format,&afs->output.bps); - else { - afs->output.format = afs->input.format; - afs->output.bps = out_bps ? out_bps : afs->input.bps; - } - // filter config: - memcpy(&afs->cfg,&af_cfg,sizeof(af_cfg_t)); + // output format: same as ao driver's input format (if missing, fallback to input) + afs->output.rate = *out_samplerate ? *out_samplerate : afs->input.rate; + afs->output.nch = *out_channels ? *out_channels : afs->input.nch; + if(*out_format) afs->output.format = mpaf_format_decode(*out_format); + else afs->output.format = afs->input.format; - MSG_V("Checking audio filter chain for %dHz/%dch/%dbit...\n", - afs->input.rate,afs->input.nch,afs->input.bps*8); + // filter config: + memcpy(&afs->cfg,&af_cfg,sizeof(af_cfg_t)); - // let's autoprobe it! - if(0 != af_init(afs,0)){ - mp_free(afs); - return 0; // failed :( - } + MSG_V("Checking audio filter chain for %dHz/%dch/%dbit...\n", + afs->input.rate,afs->input.nch,(afs->input.format&MPAF_BPS_MASK)*8); - *out_samplerate=afs->output.rate; - *out_channels=afs->output.nch; - *out_format=af_format_encode((any_t*)(&afs->output)); + // let's autoprobe it! + if(0 != af_init(afs,0)){ + mp_free(afs); + return 0; // failed :( + } - sh_audio->af_bps = afs->output.rate*afs->output.nch*afs->output.bps; + *out_samplerate=afs->output.rate; + *out_channels=afs->output.nch; + *out_format=mpaf_format_encode(afs->output.format); - MSG_V("AF_pre: af format: %d bps, %d ch, %d hz, %s\n", - afs->output.bps, afs->output.nch, afs->output.rate, - fmt2str(afs->output.format,afs->output.bps,strbuf,200)); + sh_audio->af_bps = afs->output.rate*afs->output.nch*(afs->output.format&MPAF_BPS_MASK); - sh_audio->afilter=(any_t*)afs; - return 1; + MSG_V("AF_pre: af format: %d ch, %d hz, %s af_bps=%i\n", + afs->output.nch, afs->output.rate, + mpaf_fmt2str(afs->output.format,strbuf,200), + sh_audio->af_bps); + + sh_audio->afilter=(any_t*)afs; + return 1; } /* Init audio filters */ -int mpca_init_filters(sh_audio_t *sh_audio, - int in_samplerate, int in_channels, int in_format, int in_bps, - int out_samplerate, int out_channels, int out_format, int out_bps, - int out_minsize, int out_maxsize){ - af_stream_t* afs=sh_audio->afilter; - if(!afs) afs = af_new(sh_audio); +int mpca_init_filters(sh_audio_t *sh_audio, + unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, + unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, + unsigned out_minsize, unsigned out_maxsize){ + char strbuf[200]; + af_stream_t* afs=sh_audio->afilter; + if(!afs) afs = af_new(sh_audio); - // input format: same as codec's output format: - afs->input.rate = in_samplerate; - afs->input.nch = in_channels; - afs->input.format = af_format_decode(in_format,&afs->input.bps); + // input format: same as codec's output format: + afs->input.rate = in_samplerate; + afs->input.nch = in_channels; + afs->input.format = mpaf_format_decode(in_format); - // output format: same as ao driver's input format (if missing, fallback to input) - afs->output.rate = out_samplerate ? out_samplerate : afs->input.rate; - afs->output.nch = out_channels ? out_channels : afs->input.nch; - afs->output.format = af_format_decode(out_format ? out_format : afs->input.format,&afs->output.bps); + // output format: same as ao driver's input format (if missing, fallback to input) + afs->output.rate = out_samplerate ? out_samplerate : afs->input.rate; + afs->output.nch = out_channels ? out_channels : afs->input.nch; + afs->output.format = mpaf_format_decode(out_format ? out_format : afs->input.format); - // filter config: - memcpy(&afs->cfg,&af_cfg,sizeof(af_cfg_t)); + // filter config: + memcpy(&afs->cfg,&af_cfg,sizeof(af_cfg_t)); - MSG_V("Building audio filter chain for %dHz/%dch/%dbit (%s) -> %dHz/%dch/%dbit (%s)...\n", - afs->input.rate,afs->input.nch,afs->input.bps*8,ao_format_name(af_format_encode(&afs->input)), - afs->output.rate,afs->output.nch,afs->output.bps*8,ao_format_name(af_format_encode(&afs->output))); + MSG_V("Building audio filter chain for %dHz/%dch/%dbit (%s) -> %dHz/%dch/%dbit (%s)...\n", + afs->input.rate,afs->input.nch,(afs->input.format&MPAF_BPS_MASK)*8,ao_format_name(mpaf_format_encode(afs->input.format)), + afs->output.rate,afs->output.nch,(afs->output.format&MPAF_BPS_MASK)*8,ao_format_name(mpaf_format_encode(afs->output.format))); - // let's autoprobe it! - if(0 != af_init(afs,1)){ - sh_audio->afilter=NULL; - mp_free(afs); - return 0; // failed :( - } + // let's autoprobe it! + if(0 != af_init(afs,1)){ + sh_audio->afilter=NULL; + mp_free(afs); + return 0; // failed :( + } - // allocate the a_out_* buffers: - if(out_maxsize<out_minsize) out_maxsize=out_minsize; - if(out_maxsize<8192) out_maxsize=MAX_OUTBURST; // not sure this is ok + // allocate the a_out_* buffers: + if(out_maxsize<out_minsize) out_maxsize=out_minsize; + if(out_maxsize<8192) out_maxsize=MAX_OUTBURST; // not sure this is ok - sh_audio->af_bps = afs->output.rate*afs->output.nch*afs->output.bps; + sh_audio->af_bps = afs->output.rate*afs->output.nch*(afs->output.format&MPAF_BPS_MASK); - sh_audio->a_buffer_size=out_maxsize; - sh_audio->a_buffer=mp_mallocz(sh_audio->a_buffer_size); - sh_audio->a_buffer_len=0; + MSG_V("AF_init: af format: %d ch, %d hz, %s af_bps=%i\n", + afs->output.nch, afs->output.rate, + mpaf_fmt2str(afs->output.format,strbuf,200), + sh_audio->af_bps); - af_showconf(afs->first); - sh_audio->afilter=(any_t*)afs; - sh_audio->afilter_inited=1; - return 1; + sh_audio->a_buffer_size=out_maxsize; + sh_audio->a_buffer=mp_mallocz(sh_audio->a_buffer_size); + sh_audio->a_buffer_len=0; + + af_showconf(afs->first); + sh_audio->afilter=(any_t*)afs; + sh_audio->afilter_inited=1; + return 1; } /* Init audio filters */ -int mpca_reinit_filters(sh_audio_t *sh_audio, - int in_samplerate, int in_channels, int in_format, int in_bps, - int out_samplerate, int out_channels, int out_format, int out_bps, - int out_minsize, int out_maxsize) +int mpca_reinit_filters(sh_audio_t *sh_audio, + unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, + unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, + unsigned out_minsize, unsigned out_maxsize) { if(sh_audio->afilter){ MSG_V("Uninit audio filters...\n"); @@ -265,93 +263,89 @@ sh_audio->afilter=NULL; } return mpca_init_filters(sh_audio,in_samplerate,in_channels, - in_format,in_bps,out_samplerate, - out_channels,out_format,out_bps, + in_format,out_samplerate, + out_channels,out_format, out_minsize,out_maxsize); } unsigned mpca_decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts) { - unsigned len; - unsigned cp_size,cp_tile; - af_data_t afd; // filter input - af_data_t* pafd; // filter output + unsigned len; + unsigned cp_size,cp_tile; + mp_aframe_t afd; // filter input + mp_aframe_t* pafd; // filter output - if(!sh_audio->inited) return 0; // no codec - MSG_DBG3("mpca_decode(%p,%p,%i,%i,%i,%p)\n",sh_audio,buf,minlen,maxlen,buflen,pts); + if(!sh_audio->inited) return 0; // no codec + MSG_DBG3("mpca_decode(%p,%p,%i,%i,%i,%p)\n",sh_audio,buf,minlen,maxlen,buflen,pts); - if(minlen>maxlen) MSG_WARN(MSGTR_CODEC_XP_INT_ERR,minlen,maxlen); - if(sh_audio->af_buffer_len) - { - cp_size=min(buflen,sh_audio->af_buffer_len); - memcpy(buf,sh_audio->af_buffer,cp_size); - *pts = sh_audio->af_pts; - cp_tile=sh_audio->af_buffer_len-cp_size; - MSG_DBG2("cache->buf %i bytes %f pts <PREDICTED PTS %f>\n",cp_size,*pts,*pts+(float)cp_tile/(float)sh_audio->af_bps); - if(cp_tile) - { - sh_audio->af_buffer=&sh_audio->af_buffer[cp_size]; - sh_audio->af_buffer_len=cp_tile; - sh_audio->af_pts += (float)cp_size/(float)sh_audio->af_bps; + if(minlen>maxlen) MSG_WARN(MSGTR_CODEC_XP_INT_ERR,minlen,maxlen); + if(sh_audio->af_buffer_len) { + cp_size=min(buflen,sh_audio->af_buffer_len); + memcpy(buf,sh_audio->af_buffer,cp_size); + *pts = sh_audio->af_pts; + cp_tile=sh_audio->af_buffer_len-cp_size; + MSG_DBG2("cache->buf %i bytes %f pts <PREDICTED PTS %f>\n",cp_size,*pts,*pts+(float)cp_tile/(float)sh_audio->af_bps); + if(cp_tile) { + sh_audio->af_buffer=&sh_audio->af_buffer[cp_size]; + sh_audio->af_buffer_len=cp_tile; + sh_audio->af_pts += (float)cp_size/(float)sh_audio->af_bps; + } + else sh_audio->af_buffer_len=0; + return cp_size; } - else sh_audio->af_buffer_len=0; - return cp_size; - } - if(sh_audio->af_bps>sh_audio->o_bps) - maxlen=min(maxlen,(long long int)buflen*sh_audio->o_bps/sh_audio->af_bps); - len=mpadec->decode(sh_audio,buf, minlen, maxlen,pts); - if(len>buflen) MSG_WARN(MSGTR_CODEC_BUF_OVERFLOW,sh_audio->codec->driver_name,len,buflen); - MSG_DBG2("decaudio: %i bytes %f pts min %i max %i buflen %i o_bps=%i f_bps=%i\n",len,*pts,minlen,maxlen,buflen,sh_audio->o_bps,sh_audio->af_bps); - if(len==0 || !sh_audio->afilter) return 0; // EOF? - // run the filters: - afd.audio=buf; - afd.len=len; - afd.rate=sh_audio->samplerate; - afd.nch=sh_audio->channels; - afd.format=af_format_decode(sh_audio->sample_format,&afd.bps); - pafd=af_play(sh_audio->afilter,&afd); + if(sh_audio->af_bps>sh_audio->o_bps) + maxlen=min(maxlen,(long long int)buflen*sh_audio->o_bps/sh_audio->af_bps); + len=mpadec->decode(sh_audio,buf, minlen, maxlen,pts); + if(len>buflen) MSG_WARN(MSGTR_CODEC_BUF_OVERFLOW,sh_audio->codec->driver_name,len,buflen); + MSG_DBG2("decaudio: %i bytes %f pts min %i max %i buflen %i o_bps=%i f_bps=%i\n",len,*pts,minlen,maxlen,buflen,sh_audio->o_bps,sh_audio->af_bps); + if(len==0 || !sh_audio->afilter) return 0; // EOF? + // run the filters: + memset(&afd,0,sizeof(mp_aframe_t)); + afd.audio=buf; + afd.len=len; + afd.rate=sh_audio->rate; + afd.nch=sh_audio->nch; + afd.format=mpaf_format_decode(sh_audio->afmt); + pafd=af_play(sh_audio->afilter,&afd); - if(!pafd) { - MSG_V("decaudio: filter error\n"); - return 0; // error - } + if(!pafd) { + MSG_V("decaudio: filter error\n"); + return 0; // error + } - MSG_DBG2("decaudio: %X in=%d out=%d (min %d max %d buf %d)\n", - pafd->format,len, pafd->len, minlen, maxlen, buflen); + MSG_DBG2("decaudio: %X in=%d out=%d (min %d max %d buf %d)\n", + pafd->format,len, pafd->len, minlen, maxlen, buflen); - cp_size=pafd->len; - if(buf != pafd->audio) - { - cp_size=min(buflen,pafd->len); - memcpy(buf,pafd->audio,cp_size); - cp_tile=pafd->len-cp_size; - if(cp_tile) - { - sh_audio->af_buffer=&((char *)pafd->audio)[cp_size]; - sh_audio->af_buffer_len=cp_tile; - sh_audio->af_pts = *pts+(float)cp_size/(float)sh_audio->af_bps; - MSG_DBG2("decaudio: afilter->cache %i bytes %f pts\n",cp_tile,*pts); + cp_size=pafd->len; + if(buf != pafd->audio) { + cp_size=min(buflen,pafd->len); + memcpy(buf,pafd->audio,cp_size); + cp_tile=pafd->len-cp_size; + if(cp_tile) { + sh_audio->af_buffer=&((char *)pafd->audio)[cp_size]; + sh_audio->af_buffer_len=cp_tile; + sh_audio->af_pts = *pts+(float)cp_size/(float)sh_audio->af_bps; + MSG_DBG2("decaudio: afilter->cache %i bytes %f pts\n",cp_tile,*pts); + } else sh_audio->af_buffer_len=0; } - else sh_audio->af_buffer_len=0; - } - return cp_size; + return cp_size; } /* Note: it is called once after seeking, to resync. */ void mpca_resync_stream(sh_audio_t *sh_audio) { - if(sh_audio) { - sh_audio->a_in_buffer_len=0; /* workaround */ - if(sh_audio->inited && mpadec) mpadec->control(sh_audio,ADCTRL_RESYNC_STREAM,NULL); - } + if(sh_audio) { + sh_audio->a_in_buffer_len=0; /* workaround */ + if(sh_audio->inited && mpadec) mpadec->control(sh_audio,ADCTRL_RESYNC_STREAM,NULL); + } } /* Note: it is called to skip (jump over) small amount (1/10 sec or 1 frame) of audio data - used to sync audio to video after seeking */ void mpca_skip_frame(sh_audio_t *sh_audio) { - int rc=CONTROL_TRUE; - if(sh_audio) - if(sh_audio->inited && mpadec) rc=mpadec->control(sh_audio,ADCTRL_SKIP_FRAME,NULL); - if(rc!=CONTROL_TRUE) ds_fill_buffer(sh_audio->ds); + int rc=CONTROL_TRUE; + if(sh_audio) + if(sh_audio->inited && mpadec) rc=mpadec->control(sh_audio,ADCTRL_SKIP_FRAME,NULL); + if(rc!=CONTROL_TRUE) ds_fill_buffer(sh_audio->ds); } Modified: mplayerxp/libmpcodecs/dec_audio.h =================================================================== --- mplayerxp/libmpcodecs/dec_audio.h 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpcodecs/dec_audio.h 2012-11-08 13:41:11 UTC (rev 304) @@ -1,6 +1,7 @@ #ifndef DEC_AUDIO_H_INCLUDED #define DEC_AUDIO_H_INCLUDED 1 #include "ad.h" +#include "xmpcore/mp_aframe.h" // dec_audio.c: extern const ad_functions_t* __FASTCALL__ mpca_find_driver(const char *name); @@ -12,16 +13,16 @@ struct codecs_st; extern struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t*); -extern int mpca_init_filters(sh_audio_t *sh_audio, - int in_samplerate, int in_channels, int in_format, int in_bps, - int out_samplerate, int out_channels, int out_format, int out_bps, - int out_minsize, int out_maxsize); +extern int mpca_init_filters(sh_audio_t *sh_audio, + unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, + unsigned out_samplerate, unsigned out_channels,mpaf_format_e out_format, + unsigned out_minsize, unsigned out_maxsize); extern int mpca_preinit_filters(sh_audio_t *sh_audio, - int in_samplerate, int in_channels, int in_format, int in_bps, - int* out_samplerate, int* out_channels, int* out_format, int out_bps); -extern int mpca_reinit_filters(sh_audio_t *sh_audio, - int in_samplerate, int in_channels, int in_format, int in_bps, - int out_samplerate, int out_channels, int out_format, int out_bps, - int out_minsize, int out_maxsize); + unsigned in_samplerate, unsigned in_channels, unsigned in_format, + unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format); +extern int mpca_reinit_filters(sh_audio_t *sh_audio, + unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, + unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, + unsigned out_minsize, unsigned out_maxsize); extern void afm_help(void); #endif Modified: mplayerxp/libmpdemux/demux_aiff.c =================================================================== --- mplayerxp/libmpdemux/demux_aiff.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpdemux/demux_aiff.c 2012-11-08 13:41:11 UTC (rev 304) @@ -9,6 +9,7 @@ #include "stheader.h" #include "libmpconf/cfgparser.h" #include "libmpcodecs/dec_audio.h" +#include "libao2/afmt.h" #include "osdep/mplib.h" #include "demux_msg.h" @@ -56,12 +57,12 @@ priv=demuxer->priv=mp_mallocz(sizeof(priv_t)); sh_audio->wf = w = (WAVEFORMATEX*)mp_malloc(sizeof(WAVEFORMATEX)); w->wFormatTag = 0x1; sh_audio->wtag = mmioFOURCC('r','a','w',' '); /* S16BE */ - w->nChannels = sh_audio->channels = - w->nSamplesPerSec = sh_audio->samplerate = + w->nChannels = sh_audio->nch = + w->nSamplesPerSec = sh_audio->rate = w->nAvgBytesPerSec = w->nBlockAlign = 0; - sh_audio->samplesize = 2; - w->wBitsPerSample = 8*sh_audio->samplesize; + sh_audio->afmt = bps2afmt(2); + w->wBitsPerSample = 8*afmt2bps(sh_audio->afmt); w->cbSize = 0; stream_reset(s); stream_seek(s,8); @@ -101,21 +102,21 @@ return NULL; } if(stream_read(s,buf,chunk_size)!=chunk_size) return NULL; - w->nChannels = sh_audio->channels = be2me_16(*((uint16_t *)&buf[0])); + w->nChannels = sh_audio->nch = be2me_16(*((uint16_t *)&buf[0])); frames=be2me_32(*((uint32_t *)&buf[2])); w->wBitsPerSample = be2me_16(*((uint16_t *)&buf[6])); - sh_audio->samplesize = w->wBitsPerSample/8; - w->nSamplesPerSec = sh_audio->samplerate = cvt_extended(&buf[8]); - w->nAvgBytesPerSec = sh_audio->samplerate*sh_audio->samplesize*sh_audio->channels; - w->nBlockAlign = sh_audio->channels*sh_audio->samplesize; + sh_audio->afmt = bps2afmt(w->wBitsPerSample/8); + w->nSamplesPerSec = sh_audio->rate = cvt_extended(&buf[8]); + w->nAvgBytesPerSec = sh_audio->rate*afmt2bps(sh_audio->afmt)*sh_audio->nch; + w->nBlockAlign = sh_audio->nch*afmt2bps(sh_audio->afmt); if(priv->verc) { sh_audio->wtag = *((uint32_t *)&buf[18]); if(sh_audio->wtag == mmioFOURCC('N','O','N','E')) sh_audio->wtag=mmioFOURCC('r','a','w',' '); - MSG_V("AIFC: fourcc %08X ch %u frames %u bps %u rate %u\n",sh_audio->wtag,sh_audio->channels,frames,w->wBitsPerSample,sh_audio->samplerate); + MSG_V("AIFC: fourcc %08X ch %u frames %u bps %u rate %u\n",sh_audio->wtag,sh_audio->nch,frames,w->wBitsPerSample,sh_audio->rate); } else - MSG_V("AIFF: ch %u frames %u bps %u rate %u\n",sh_audio->channels,frames,w->wBitsPerSample,sh_audio->samplerate); + MSG_V("AIFF: ch %u frames %u bps %u rate %u\n",sh_audio->nch,frames,w->wBitsPerSample,sh_audio->rate); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('S','S','N','D') || @@ -205,7 +206,7 @@ base = (seeka->flags&DEMUX_SEEK_SET) ? demuxer->movi_start : stream_tell(s); pos=base+(seeka->flags&DEMUX_SEEK_PERCENTS?(demuxer->movi_end - demuxer->movi_start):sh_audio->i_bps)*seeka->secs; - pos -= (pos % (sh_audio->channels * sh_audio->samplesize) ); + pos -= (pos % (sh_audio->nch * afmt2bps(sh_audio->afmt))); stream_seek(s,pos); mpca_resync_stream(sh_audio); } Modified: mplayerxp/libmpdemux/demux_audio.c =================================================================== --- mplayerxp/libmpdemux/demux_audio.c 2012-11-07 17:24:16 UTC (rev 303) +++ mplayerxp/libmpdemux/demux_audio.c 2012-11-08 13:41:11 UTC (rev 304) @@ -8,6 +8,7 @@ #include "genres.h" #include <limits.h> #include "libmpcodecs/dec_audio.h" +#include "libao2/afmt.h" #include "aviprint.h" #include "osdep/bswap.h" #include "mp3_hdr.h" @@ -245,10 +246,10 @@ return frame_size; } -static int ddca_decode_header (const uint8_t * buf, int * sample_rate, int * bit_rate,int *channels) +static int ddca_decode_header (const uint8_t * buf, unsigned* sample_rate, unsigned* bit_rate,unsigned*channels) { ddca_state_t state; - int flags,frame_length,frame_size=0; + unsigned flags,frame_length,frame_size=0; /* 14 bits and little endian bitstream */ if (buf[0] == 0xff && buf[1] == 0x1f && buf[2] == 0x00 && buf[3] == 0xe8 && @@ -328,7 +329,7 @@ #define AC3_CHANNEL_MASK 15 #define AC3_LFE 16 #define AC3_ADJUST_LEVEL 32 -static int ac3_decode_header (const uint8_t * buf, int * sample_rate, int * bit_rate,int *channels) +static int ac3_decode_header (const uint8_t * buf,unsigned* sample_rate,unsigned* bit_rate,unsigned* channels) { static int rate[] = { 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, @@ -419,7 +420,7 @@ } -static int read_mp3v1_tags(demuxer_t *demuxer,char *hdr, off_t pos ) +static int read_mp3v1_tags(demuxer_t *demuxer,uint8_t *hdr, off_t pos ) { unsigned n; stream_t *s=demuxer->stream; @@ -473,7 +474,7 @@ return 1... [truncated message content] |
From: <nic...@us...> - 2012-11-09 08:17:59
|
Revision: 308 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=308&view=rev Author: nickols_k Date: 2012-11-09 08:17:43 +0000 (Fri, 09 Nov 2012) Log Message: ----------- use universal return codes Modified Paths: -------------- mplayerxp/libao2/ao_alsa9.c mplayerxp/libao2/ao_arts.c mplayerxp/libao2/ao_esd.c mplayerxp/libao2/ao_jack.c mplayerxp/libao2/ao_nas.c mplayerxp/libao2/ao_null.c mplayerxp/libao2/ao_openal.c mplayerxp/libao2/ao_oss.c mplayerxp/libao2/ao_sdl.c mplayerxp/libao2/ao_wav.c mplayerxp/libao2/audio_out.c mplayerxp/libao2/audio_out.h mplayerxp/libao2/audio_out_internal.h mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_a52.c mplayerxp/libmpcodecs/ad_acm.c mplayerxp/libmpcodecs/ad_dca.c mplayerxp/libmpcodecs/ad_dmo.c mplayerxp/libmpcodecs/ad_dshow.c mplayerxp/libmpcodecs/ad_dvdpcm.c mplayerxp/libmpcodecs/ad_faad.c mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/ad_hwac3.c mplayerxp/libmpcodecs/ad_internal.h mplayerxp/libmpcodecs/ad_libdv.c mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/ad_null.c mplayerxp/libmpcodecs/ad_pcm.c mplayerxp/libmpcodecs/ad_qtaudio.c mplayerxp/libmpcodecs/ad_real.c mplayerxp/libmpcodecs/ad_twin.c mplayerxp/libmpcodecs/ad_vorbis.c mplayerxp/libmpcodecs/dec_audio.c mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/vd.c mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_dmo.c mplayerxp/libmpcodecs/vd_dshow.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpcodecs/vd_mpegpes.c mplayerxp/libmpcodecs/vd_null.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_qtvideo.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_vfw.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/libvo/video_out.c mplayerxp/libvo/video_out.h mplayerxp/libvo/video_out_internal.h mplayerxp/libvo/vo_dga.c mplayerxp/libvo/vo_fbdev.c mplayerxp/libvo/vo_null.c mplayerxp/libvo/vo_opengl.c mplayerxp/libvo/vo_sdl.c mplayerxp/libvo/vo_vesa.c mplayerxp/libvo/vo_x11.c mplayerxp/libvo/vo_xv.c mplayerxp/libvo/vo_xvidix.c mplayerxp/libvo/vosub_vidix.c mplayerxp/mixer.c mplayerxp/mplayerxp.c mplayerxp/postproc/af.c mplayerxp/postproc/af.h mplayerxp/postproc/af_ao2.c mplayerxp/postproc/af_center.c mplayerxp/postproc/af_channels.c mplayerxp/postproc/af_comp.c mplayerxp/postproc/af_control.h mplayerxp/postproc/af_crystality.c mplayerxp/postproc/af_delay.c mplayerxp/postproc/af_dummy.c mplayerxp/postproc/af_dyn.c mplayerxp/postproc/af_echo3d.c mplayerxp/postproc/af_equalizer.c mplayerxp/postproc/af_export.c mplayerxp/postproc/af_extrastereo.c mplayerxp/postproc/af_ffenc.c mplayerxp/postproc/af_format.c mplayerxp/postproc/af_format_alaw.c mplayerxp/postproc/af_format_ulaw.c mplayerxp/postproc/af_gate.c mplayerxp/postproc/af_hrtf.c mplayerxp/postproc/af_karaoke.c mplayerxp/postproc/af_lp.c mplayerxp/postproc/af_pan.c mplayerxp/postproc/af_raw.c mplayerxp/postproc/af_resample.c mplayerxp/postproc/af_scaletempo.c mplayerxp/postproc/af_sinesuppress.c mplayerxp/postproc/af_sub.c mplayerxp/postproc/af_surround.c mplayerxp/postproc/af_tools.c mplayerxp/postproc/af_volnorm.c mplayerxp/postproc/af_volume.c mplayerxp/postproc/vf.c mplayerxp/postproc/vf.h mplayerxp/postproc/vf_1bpp.c mplayerxp/postproc/vf_2xsai.c mplayerxp/postproc/vf_aspect.c mplayerxp/postproc/vf_delogo.c mplayerxp/postproc/vf_denoise3d.c mplayerxp/postproc/vf_dint.c mplayerxp/postproc/vf_down3dright.c mplayerxp/postproc/vf_eq.c mplayerxp/postproc/vf_expand.c mplayerxp/postproc/vf_flip.c mplayerxp/postproc/vf_format.c mplayerxp/postproc/vf_framestep.c mplayerxp/postproc/vf_il.c mplayerxp/postproc/vf_menu.c mplayerxp/postproc/vf_mirror.c mplayerxp/postproc/vf_noise.c mplayerxp/postproc/vf_ow.c mplayerxp/postproc/vf_palette.c mplayerxp/postproc/vf_panscan.c mplayerxp/postproc/vf_perspective.c mplayerxp/postproc/vf_pp.c mplayerxp/postproc/vf_raw.c mplayerxp/postproc/vf_rectangle.c mplayerxp/postproc/vf_rgb2bgr.c mplayerxp/postproc/vf_rotate.c mplayerxp/postproc/vf_scale.c mplayerxp/postproc/vf_smartblur.c mplayerxp/postproc/vf_softpulldown.c mplayerxp/postproc/vf_swapuv.c mplayerxp/postproc/vf_test.c mplayerxp/postproc/vf_unsharp.c mplayerxp/postproc/vf_vo.c mplayerxp/postproc/vf_yuvcsp.c mplayerxp/postproc/vf_yuy2.c mplayerxp/postproc/vf_yvu9.c mplayerxp/xmpcore/xmp_enums.h Modified: mplayerxp/libao2/ao_alsa9.c =================================================================== --- mplayerxp/libao2/ao_alsa9.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_alsa9.c 2012-11-09 08:17:43 UTC (rev 308) @@ -131,7 +131,7 @@ } /* to set/get/query special features/parameters */ -static ControlCodes __FASTCALL__ control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd, long arg) { priv_t*priv=ao->priv; int rval; @@ -139,15 +139,15 @@ case AOCONTROL_QUERY_FORMAT: rval=fmt2alsa(arg); return snd_pcm_hw_params_test_format(priv->handler, priv->hwparams,rval)==0? - CONTROL_TRUE:CONTROL_FALSE; + MPXP_True:MPXP_False; case AOCONTROL_QUERY_CHANNELS: rval=arg; return snd_pcm_hw_params_test_channels(priv->handler, priv->hwparams,rval)==0? - CONTROL_TRUE:CONTROL_FALSE; + MPXP_True:MPXP_False; case AOCONTROL_QUERY_RATE: rval=arg; return snd_pcm_hw_params_test_rate(priv->handler, priv->hwparams,rval,0)==0? - CONTROL_TRUE:CONTROL_FALSE; + MPXP_True:MPXP_False; case AOCONTROL_GET_VOLUME: case AOCONTROL_SET_VOLUME: #ifndef WORDS_BIGENDIAN @@ -166,7 +166,7 @@ long get_vol, set_vol; float calc_vol, diff, f_multi; - if(ao->format == AFMT_AC3) return CONTROL_TRUE; + if(ao->format == AFMT_AC3) return MPXP_True; //allocate simple id snd_mixer_selem_id_alloca(&sid); @@ -177,31 +177,31 @@ if ((err = snd_mixer_open(&handle, 0)) < 0) { MSG_ERR("alsa-control: mixer open error: %s\n", snd_strerror(err)); - return CONTROL_ERROR; + return MPXP_Error; } if ((err = snd_mixer_attach(handle, card)) < 0) { MSG_ERR("alsa-control: mixer attach %s error: %s", card, snd_strerror(err)); snd_mixer_close(handle); - return CONTROL_ERROR; + return MPXP_Error; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { MSG_ERR("alsa-control: mixer register error: %s", snd_strerror(err)); snd_mixer_close(handle); - return CONTROL_ERROR; + return MPXP_Error; } if ((err = snd_mixer_load(handle)) < 0) { MSG_ERR("alsa-control: mixer load error: %s", snd_strerror(err)); snd_mixer_close(handle); - return CONTROL_ERROR; + return MPXP_Error; } elem = snd_mixer_find_selem(handle, sid); if (!elem) { MSG_ERR("alsa-control: unable to find simple control '%s',%i\n", snd_mixer_selem_id_get_name(sid), snd_mixer_selem_id_get_index(sid)); snd_mixer_close(handle); - return CONTROL_ERROR; + return MPXP_Error; } snd_mixer_selem_get_playback_volume_range(elem,&pmin,&pmax); @@ -218,11 +218,11 @@ //setting channels if ((err = snd_mixer_selem_set_playback_volume(elem, 0, set_vol)) < 0) { MSG_ERR("alsa-control: error setting left channel, %s",snd_strerror(err)); - return CONTROL_ERROR; + return MPXP_Error; } if ((err = snd_mixer_selem_set_playback_volume(elem, 1, set_vol)) < 0) { MSG_ERR("alsa-control: error setting right channel, %s",snd_strerror(err)); - return CONTROL_ERROR; + return MPXP_Error; } } else { snd_mixer_selem_get_playback_volume(elem, 0, &get_vol); @@ -234,13 +234,13 @@ //printf("get_vol = %i, calc=%i\n",get_vol, calc_vol); } snd_mixer_close(handle); - return CONTROL_OK; + return MPXP_Ok; } #else // end big-endian - return CONTROL_UNKNOWN; + return MPXP_Unknown; #endif } //end witch - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static void __FASTCALL__ show_caps(unsigned device) Modified: mplayerxp/libao2/ao_arts.c =================================================================== --- mplayerxp/libao2/ao_arts.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_arts.c 2012-11-09 08:17:43 UTC (rev 308) @@ -45,12 +45,12 @@ LIBAO_EXTERN(arts) -static ControlCodes control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { UNUSED(ao); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static int init(ao_data_t* ao,unsigned flags) Modified: mplayerxp/libao2/ao_esd.c =================================================================== --- mplayerxp/libao2/ao_esd.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_esd.c 2012-11-09 08:17:43 UTC (rev 308) @@ -93,7 +93,7 @@ /* * to set/get/query special features/parameters */ -static ControlCodes control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { priv_t*priv=ao->priv; esd_player_info_t *esd_pi; @@ -107,12 +107,12 @@ time(&now); if (now == vol_cache_time) { *(ao_control_vol_t *)arg = vol_cache; - return CONTROL_OK; + return MPXP_Ok; } dprintf("esd: get vol\n"); if ((esd_i = esd_get_all_info(priv->fd)) == NULL) - return CONTROL_ERROR; + return MPXP_Error; for (esd_pi = esd_i->player_list; esd_pi != NULL; esd_pi = esd_pi->next) if (strcmp(esd_pi->name, ESD_CLIENT_NAME) == 0) @@ -128,12 +128,12 @@ } esd_free_all_info(esd_i); - return CONTROL_OK; + return MPXP_Ok; case AOCONTROL_SET_VOLUME: dprintf("esd: set vol\n"); if ((esd_i = esd_get_all_info(priv->fd)) == NULL) - return CONTROL_ERROR; + return MPXP_Error; for (esd_pi = esd_i->player_list; esd_pi != NULL; esd_pi = esd_pi->next) if (strcmp(esd_pi->name, ESD_CLIENT_NAME) == 0) @@ -149,10 +149,10 @@ time(&vol_cache_time); } esd_free_all_info(esd_i); - return CONTROL_OK; + return MPXP_Ok; default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } } Modified: mplayerxp/libao2/ao_jack.c =================================================================== --- mplayerxp/libao2/ao_jack.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_jack.c 2012-11-09 08:17:43 UTC (rev 308) @@ -140,11 +140,11 @@ // end ring priv->buffer stuff -static ControlCodes control(ao_data_t* ao,int cmd, long arg) { +static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { UNUSED(ao); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } /** Modified: mplayerxp/libao2/ao_nas.c =================================================================== --- mplayerxp/libao2/ao_nas.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_nas.c 2012-11-09 08:17:43 UTC (rev 308) @@ -368,12 +368,12 @@ } // to set/get/query special features/parameters -static ControlCodes control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { priv_t*priv=ao->priv; AuElementParameters aep; AuStatus as; - int retval = CONTROL_UNKNOWN; + int retval = MPXP_Unknown; ao_control_vol_t *vol = (ao_control_vol_t *)arg; @@ -384,7 +384,7 @@ vol->left = vol->right; MSG_DBG2( "ao_nas: AOCONTROL_GET_VOLUME: %.2f\n", vol->right); - retval = CONTROL_OK; + retval = MPXP_Ok; break; case AOCONTROL_SET_VOLUME: @@ -405,8 +405,8 @@ if (as != AuSuccess) { nas_print_error(priv->aud, "control(): AuSetElementParameters", as); - retval = CONTROL_ERROR; - } else retval = CONTROL_OK; + retval = MPXP_Error; + } else retval = MPXP_Ok; break; }; Modified: mplayerxp/libao2/ao_null.c =================================================================== --- mplayerxp/libao2/ao_null.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_null.c 2012-11-09 08:17:43 UTC (rev 308) @@ -97,11 +97,11 @@ } // to set/get/query special features/parameters -static ControlCodes __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ UNUSED(ao); UNUSED(cmd); UNUSED(arg); - return CONTROL_TRUE; + return MPXP_True; } // open & setup audio device Modified: mplayerxp/libao2/ao_openal.c =================================================================== --- mplayerxp/libao2/ao_openal.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_openal.c 2012-11-09 08:17:43 UTC (rev 308) @@ -60,7 +60,7 @@ int16_t* tmpbuf; }priv_t; -static ControlCodes control(ao_data_t* ao,int cmd, long arg) { +static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { UNUSED(ao); switch (cmd) { case AOCONTROL_GET_VOLUME: @@ -73,10 +73,10 @@ } alGetListenerf(AL_GAIN, &volume); vol->left = vol->right = volume * 100; - return CONTROL_TRUE; + return MPXP_True; } } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } #if 0 Modified: mplayerxp/libao2/ao_oss.c =================================================================== --- mplayerxp/libao2/ao_oss.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_oss.c 2012-11-09 08:17:43 UTC (rev 308) @@ -42,55 +42,55 @@ const char *oss_mixer_device = PATH_DEV_MIXER; // to set/get/query special features/parameters -static ControlCodes __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ priv_t*priv=ao->priv; int rval; switch(cmd){ case AOCONTROL_SET_DEVICE: priv->dsp=(char*)arg; - return CONTROL_OK; + return MPXP_Ok; case AOCONTROL_QUERY_FORMAT: if (ioctl (priv->fd, SNDCTL_DSP_GETFMTS, &rval) != -1) { - if((rval & AFMT_MU_LAW) && arg==AFMT_MU_LAW) return CONTROL_OK; - if((rval & AFMT_A_LAW) && arg==AFMT_A_LAW) return CONTROL_OK; - if((rval & AFMT_IMA_ADPCM) && arg==AFMT_IMA_ADPCM) return CONTROL_OK; - if((rval & AFMT_U8) && arg==AFMT_U8) return CONTROL_OK; - if((rval & AFMT_S16_LE) && arg==AFMT_S16_LE) return CONTROL_OK; - if((rval & AFMT_S16_BE) && arg==AFMT_S16_BE) return CONTROL_OK; - if((rval & AFMT_S8) && arg==AFMT_S8) return CONTROL_OK; - if((rval & AFMT_U16_LE) && arg==AFMT_U16_LE) return CONTROL_OK; - if((rval & AFMT_U16_BE) && arg==AFMT_U16_BE) return CONTROL_OK; - if((rval & AFMT_MPEG) && arg==AFMT_MPEG) return CONTROL_OK; - if((rval & AFMT_AC3) && arg==AFMT_AC3) return CONTROL_OK; - if((rval & AFMT_S24_LE) && arg==AFMT_S24_LE) return CONTROL_OK; - if((rval & AFMT_S24_BE) && arg==AFMT_S24_BE) return CONTROL_OK; - if((rval & AFMT_U24_LE) && arg==AFMT_U24_LE) return CONTROL_OK; - if((rval & AFMT_U24_BE) && arg==AFMT_U24_BE) return CONTROL_OK; - if((rval & AFMT_S32_LE) && arg==AFMT_S32_LE) return CONTROL_OK; - if((rval & AFMT_S32_BE) && arg==AFMT_S32_BE) return CONTROL_OK; - if((rval & AFMT_U32_LE) && arg==AFMT_U32_LE) return CONTROL_OK; - if((rval & AFMT_U32_BE) && arg==AFMT_U32_BE) return CONTROL_OK; + if((rval & AFMT_MU_LAW) && arg==AFMT_MU_LAW) return MPXP_Ok; + if((rval & AFMT_A_LAW) && arg==AFMT_A_LAW) return MPXP_Ok; + if((rval & AFMT_IMA_ADPCM) && arg==AFMT_IMA_ADPCM) return MPXP_Ok; + if((rval & AFMT_U8) && arg==AFMT_U8) return MPXP_Ok; + if((rval & AFMT_S16_LE) && arg==AFMT_S16_LE) return MPXP_Ok; + if((rval & AFMT_S16_BE) && arg==AFMT_S16_BE) return MPXP_Ok; + if((rval & AFMT_S8) && arg==AFMT_S8) return MPXP_Ok; + if((rval & AFMT_U16_LE) && arg==AFMT_U16_LE) return MPXP_Ok; + if((rval & AFMT_U16_BE) && arg==AFMT_U16_BE) return MPXP_Ok; + if((rval & AFMT_MPEG) && arg==AFMT_MPEG) return MPXP_Ok; + if((rval & AFMT_AC3) && arg==AFMT_AC3) return MPXP_Ok; + if((rval & AFMT_S24_LE) && arg==AFMT_S24_LE) return MPXP_Ok; + if((rval & AFMT_S24_BE) && arg==AFMT_S24_BE) return MPXP_Ok; + if((rval & AFMT_U24_LE) && arg==AFMT_U24_LE) return MPXP_Ok; + if((rval & AFMT_U24_BE) && arg==AFMT_U24_BE) return MPXP_Ok; + if((rval & AFMT_S32_LE) && arg==AFMT_S32_LE) return MPXP_Ok; + if((rval & AFMT_S32_BE) && arg==AFMT_S32_BE) return MPXP_Ok; + if((rval & AFMT_U32_LE) && arg==AFMT_U32_LE) return MPXP_Ok; + if((rval & AFMT_U32_BE) && arg==AFMT_U32_BE) return MPXP_Ok; } - return CONTROL_FALSE; + return MPXP_False; case AOCONTROL_QUERY_CHANNELS: rval=arg; if (rval > 2) { if ( ioctl(priv->fd, SNDCTL_DSP_CHANNELS, &rval) == -1 || - rval != arg ) return CONTROL_FALSE; + rval != arg ) return MPXP_False; } else { int c = rval-1; - if (ioctl (priv->fd, SNDCTL_DSP_STEREO, &c) == -1) return CONTROL_FALSE; + if (ioctl (priv->fd, SNDCTL_DSP_STEREO, &c) == -1) return MPXP_False; } - return CONTROL_TRUE; + return MPXP_True; case AOCONTROL_QUERY_RATE: rval=arg; if (ioctl(priv->fd, SNDCTL_DSP_SPEED, &rval) != -1) { - if(rval == arg) return CONTROL_OK; + if(rval == arg) return MPXP_Ok; } - return CONTROL_FALSE; + return MPXP_False; case AOCONTROL_GET_VOLUME: case AOCONTROL_SET_VOLUME: { @@ -98,7 +98,7 @@ int fd, v, devs; if(ao->format == AFMT_AC3) - return CONTROL_TRUE; + return MPXP_True; if ((fd = open(oss_mixer_device, O_RDONLY)) > 0) { @@ -120,15 +120,15 @@ else { close(fd); - return CONTROL_ERROR; + return MPXP_Error; } close(fd); - return CONTROL_OK; + return MPXP_Ok; } } - return CONTROL_ERROR; + return MPXP_Error; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static void show_fmts(ao_data_t* ao) Modified: mplayerxp/libao2/ao_sdl.c =================================================================== --- mplayerxp/libao2/ao_sdl.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_sdl.c 2012-11-09 08:17:43 UTC (rev 308) @@ -110,18 +110,18 @@ #endif // to set/get/query special features/parameters -static ControlCodes __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ priv_t*priv=ao->priv; switch (cmd) { case AOCONTROL_QUERY_FORMAT: case AOCONTROL_QUERY_CHANNELS: case AOCONTROL_QUERY_RATE: - return CONTROL_FALSE; + return MPXP_False; case AOCONTROL_GET_VOLUME: { ao_control_vol_t* vol = (ao_control_vol_t*)arg; vol->left = vol->right = (float)((priv->volume + 127)/2.55); - return CONTROL_OK; + return MPXP_Ok; } case AOCONTROL_SET_VOLUME: { @@ -129,7 +129,7 @@ ao_control_vol_t* vol = (ao_control_vol_t*)arg; diff = (vol->left+vol->right) / 2; priv->volume = (int)(diff * 2.55) - 127; - return CONTROL_OK; + return MPXP_Ok; } } return -1; Modified: mplayerxp/libao2/ao_wav.c =================================================================== --- mplayerxp/libao2/ao_wav.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/ao_wav.c 2012-11-09 08:17:43 UTC (rev 308) @@ -87,7 +87,7 @@ /* init with default values */ // to set/get/query special features/parameters -static ControlCodes control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc control(ao_data_t* ao,int cmd,long arg){ UNUSED(ao); UNUSED(cmd); UNUSED(arg); Modified: mplayerxp/libao2/audio_out.c =================================================================== --- mplayerxp/libao2/audio_out.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/audio_out.c 2012-11-09 08:17:43 UTC (rev 308) @@ -262,7 +262,7 @@ if(ao) audio_out->resume(ao); } -ControlCodes __FASTCALL__ ao_control(ao_data_t*ao,int cmd,long arg) +MPXP_Rc __FASTCALL__ ao_control(ao_data_t*ao,int cmd,long arg) { - return ao?audio_out->control(ao,cmd,arg):CONTROL_ERROR; + return ao?audio_out->control(ao,cmd,arg):MPXP_Error; } Modified: mplayerxp/libao2/audio_out.h =================================================================== --- mplayerxp/libao2/audio_out.h 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/audio_out.h 2012-11-09 08:17:43 UTC (rev 308) @@ -33,9 +33,9 @@ /** Control interface * @param cmd command. See AOCONTROL_** for detail * @param arg argument associated with command - * @return CONTROL_OK if success CONTROL_FALSE CONTROL_ERROR CONTROL_NA otherwise + * @return MPXP_Ok if success MPXP_False MPXP_Error MPXP_NA otherwise **/ - ControlCodes (* __FASTCALL__ control)(ao_data_t*,int cmd,long arg); + MPXP_Rc (* __FASTCALL__ control)(ao_data_t*,int cmd,long arg); /** Preinitializes driver * @param flag currently unused @@ -109,5 +109,5 @@ extern float __FASTCALL__ ao_get_delay(ao_data_t* priv); extern void __FASTCALL__ ao_pause(ao_data_t* priv); extern void __FASTCALL__ ao_resume(ao_data_t* priv); -extern ControlCodes __FASTCALL__ ao_control(ao_data_t* priv,int cmd,long arg); +extern MPXP_Rc __FASTCALL__ ao_control(ao_data_t* priv,int cmd,long arg); #endif Modified: mplayerxp/libao2/audio_out_internal.h =================================================================== --- mplayerxp/libao2/audio_out_internal.h 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libao2/audio_out_internal.h 2012-11-09 08:17:43 UTC (rev 308) @@ -1,7 +1,7 @@ #include "mp_config.h" // prototypes: //static ao_info_t info; -static ControlCodes __FASTCALL__ control(ao_data_t*,int cmd,long arg); +static MPXP_Rc __FASTCALL__ control(ao_data_t*,int cmd,long arg); static int __FASTCALL__ init(ao_data_t*,unsigned flags); static int __FASTCALL__ configure(ao_data_t*,unsigned rate,unsigned channels,unsigned format); static void __FASTCALL__ uninit(ao_data_t*); Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad.h 2012-11-09 08:17:43 UTC (rev 308) @@ -28,7 +28,7 @@ int (* __FASTCALL__ preinit)(sh_audio_t *); int (* __FASTCALL__ init)(sh_audio_t *sh); void (* __FASTCALL__ uninit)(sh_audio_t *sh); - ControlCodes (* __FASTCALL__ control)(sh_audio_t *sh,int cmd,any_t* arg, ...); + MPXP_Rc (* __FASTCALL__ control)(sh_audio_t *sh,int cmd,any_t* arg, ...); unsigned (* __FASTCALL__ decode)(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); } ad_functions_t; Modified: mplayerxp/libmpcodecs/ad_a52.c =================================================================== --- mplayerxp/libmpcodecs/ad_a52.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_a52.c 2012-11-09 08:17:43 UTC (rev 308) @@ -121,9 +121,9 @@ #define A52_FMT24 AFMT_S24_LE #endif sh->afmt=bps2afmt(2); - if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == CONTROL_OK|| - af_query_fmt(sh->afilter,A52_FMT32) == CONTROL_OK || - af_query_fmt(sh->afilter,A52_FMT24) == CONTROL_OK) + if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == MPXP_Ok|| + af_query_fmt(sh->afilter,A52_FMT32) == MPXP_Ok || + af_query_fmt(sh->afilter,A52_FMT24) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } @@ -191,24 +191,24 @@ mp_free(sh->context); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); switch(cmd) { case ADCTRL_RESYNC_STREAM: sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return CONTROL_TRUE; + return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; a52_fillbuff(sh,&pts); // skip AC3 frame - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_acm.c =================================================================== --- mplayerxp/libmpcodecs/ad_acm.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_acm.c 2012-11-09 08:17:43 UTC (rev 308) @@ -160,14 +160,14 @@ mp_free(sh->context); } -ControlCodes control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { int skip; switch(cmd) { // case ADCTRL_RESYNC_STREAM: // sh_audio->a_in_buffer_len=0;/* reset ACM/DShow audio buffer */ -// return CONTROL_TRUE; +// return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; @@ -177,12 +177,12 @@ if(skip<16) skip=16; } demux_read_data_r(sh_audio->ds,NULL,skip,&pts); - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dca.c =================================================================== --- mplayerxp/libmpcodecs/ad_dca.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_dca.c 2012-11-09 08:17:43 UTC (rev 308) @@ -119,9 +119,9 @@ #define DCA_FMT24 AFMT_S24_LE #endif sh->afmt=bps2afmt(2); - if( af_query_fmt(sh->afilter,AFMT_FLOAT32) == CONTROL_OK|| - af_query_fmt(sh->afilter,DCA_FMT32) == CONTROL_OK || - af_query_fmt(sh->afilter,DCA_FMT24) == CONTROL_OK) + if( af_query_fmt(sh->afilter,AFMT_FLOAT32) == MPXP_Ok|| + af_query_fmt(sh->afilter,DCA_FMT32) == MPXP_Ok || + af_query_fmt(sh->afilter,DCA_FMT24) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } @@ -188,24 +188,24 @@ mp_free(sh->context); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); switch(cmd) { case ADCTRL_RESYNC_STREAM: sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return CONTROL_TRUE; + return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; dca_fillbuff(sh,&pts); // skip AC3 frame - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dmo.c =================================================================== --- mplayerxp/libmpcodecs/ad_dmo.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_dmo.c 2012-11-09 08:17:43 UTC (rev 308) @@ -71,7 +71,7 @@ mp_free(priv); } -static ControlCodes control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) +static MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { int skip; UNUSED(arg); @@ -86,10 +86,10 @@ if(skip<16) skip=16; } demux_read_data_r(sh_audio->ds,NULL,skip,&pts); - return CONTROL_TRUE; + return MPXP_True; } } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dshow.c =================================================================== --- mplayerxp/libmpcodecs/ad_dshow.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_dshow.c 2012-11-09 08:17:43 UTC (rev 308) @@ -63,7 +63,7 @@ mp_free(priv); } -ControlCodes control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { int skip; UNUSED(arg); @@ -71,7 +71,7 @@ { case ADCTRL_RESYNC_STREAM: sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return CONTROL_TRUE; + return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; @@ -82,11 +82,11 @@ } demux_read_data_r(sh_audio->ds,NULL,skip,&pts); } - return CONTROL_TRUE; + return MPXP_True; default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dvdpcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-09 08:17:43 UTC (rev 308) @@ -68,7 +68,7 @@ UNUSED(sh); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { int skip; UNUSED(arg); @@ -80,12 +80,12 @@ skip=sh->i_bps/16; skip=skip&(~3); demux_read_data_r(sh->ds,NULL,skip,&pts); - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_faad.c =================================================================== --- mplayerxp/libmpcodecs/ad_faad.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_faad.c 2012-11-09 08:17:43 UTC (rev 308) @@ -195,9 +195,9 @@ #endif /* Set the maximal quality */ /* This is useful for expesive audio cards */ - if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == CONTROL_OK || - af_query_fmt(sh->afilter,NeAAC_FMT32) == CONTROL_OK || - af_query_fmt(sh->afilter,NeAAC_FMT24) == CONTROL_OK) + if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == MPXP_Ok || + af_query_fmt(sh->afilter,NeAAC_FMT32) == MPXP_Ok || + af_query_fmt(sh->afilter,NeAAC_FMT24) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; NeAAC_conf->outputFormat=FAAD_FMT_FLOAT; @@ -259,12 +259,12 @@ mp_free(sh->context); } -static ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(sh); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static unsigned decode(sh_audio_t *sh,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-09 08:17:43 UTC (rev 308) @@ -163,17 +163,17 @@ acodec_inited=0; } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); AVCodecContext *lavc_context = sh->context; switch(cmd){ case ADCTRL_RESYNC_STREAM: avcodec_flush_buffers(lavc_context); - return CONTROL_TRUE; + return MPXP_True; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_hwac3.c =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-09 08:17:43 UTC (rev 308) @@ -205,24 +205,24 @@ mpcodecs_ad_a52.uninit(sh); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); switch(cmd) { case ADCTRL_RESYNC_STREAM: sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return CONTROL_TRUE; + return MPXP_True; case ADCTRL_SKIP_FRAME: { float pts; a52_fillbuff(sh,&pts); // skip AC3 frame - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_internal.h =================================================================== --- mplayerxp/libmpcodecs/ad_internal.h 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-11-09 08:17:43 UTC (rev 308) @@ -16,7 +16,7 @@ static int __FASTCALL__ init(sh_audio_t *sh); static int __FASTCALL__ preinit(sh_audio_t *sh); static void __FASTCALL__ uninit(sh_audio_t *sh); -static ControlCodes __FASTCALL__ control(sh_audio_t *sh,int cmd,any_t* arg, ...); +static MPXP_Rc __FASTCALL__ control(sh_audio_t *sh,int cmd,any_t* arg, ...); static unsigned __FASTCALL__ decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); #define LIBAD_EXTERN(x) const ad_functions_t mpcodecs_ad_##x = {\ Modified: mplayerxp/libmpcodecs/ad_libdv.c =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_libdv.c 2012-11-09 08:17:43 UTC (rev 308) @@ -78,13 +78,13 @@ mp_free(priv->audioBuffers[i]); } -static ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { // TODO!!! UNUSED(sh); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static unsigned decode(sh_audio_t *sh, unsigned char *buf, unsigned minlen, unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_mp3.c =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_mp3.c 2012-11-09 08:17:43 UTC (rev 308) @@ -343,12 +343,12 @@ dlclose(dll_handle); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(sh); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_null.c =================================================================== --- mplayerxp/libmpcodecs/ad_null.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_null.c 2012-11-09 08:17:43 UTC (rev 308) @@ -34,12 +34,12 @@ UNUSED(sh); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(sh); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_pcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_pcm.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_pcm.c 2012-11-09 08:17:43 UTC (rev 308) @@ -61,7 +61,7 @@ UNUSED(sh); } -ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { int skip; UNUSED(arg); @@ -73,12 +73,12 @@ skip=sh->i_bps/16; skip=skip&(~3); demux_read_data_r(sh->ds,NULL,skip,&pts); - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_qtaudio.c =================================================================== --- mplayerxp/libmpcodecs/ad_qtaudio.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_qtaudio.c 2012-11-09 08:17:43 UTC (rev 308) @@ -314,10 +314,10 @@ return ConvertedBytes; } -static ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...){ +static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...){ // various optional functions you MAY implement: UNUSED(sh); UNUSED(cmd); UNUSED(arg); - return CONTROL_UNKNOWN; + return MPXP_Unknown; } Modified: mplayerxp/libmpcodecs/ad_real.c =================================================================== --- mplayerxp/libmpcodecs/ad_real.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_real.c 2012-11-09 08:17:43 UTC (rev 308) @@ -283,7 +283,7 @@ // or -1 for EOF (or uncorrectable error) } -static ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...){ +static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...){ UNUSED(sh); UNUSED(arg); // various optional functions you MAY implement: @@ -291,13 +291,13 @@ case ADCTRL_RESYNC_STREAM: // it is called once after seeking, to resync. // Note: sh_audio->a_in_buffer_len=0; is done _before_ this call! - return CONTROL_TRUE; + return MPXP_True; case ADCTRL_SKIP_FRAME: // it is called to skip (jump over) small amount (1/10 sec or 1 frame) // of audio data - used to sync audio to video after seeking - // if you don't return CONTROL_TRUE, it will defaults to: + // if you don't return MPXP_True, it will defaults to: // ds_fill_buffer(sh_audio->ds); // skip 1 demux packet - return CONTROL_TRUE; + return MPXP_True; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } Modified: mplayerxp/libmpcodecs/ad_twin.c =================================================================== --- mplayerxp/libmpcodecs/ad_twin.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_twin.c 2012-11-09 08:17:43 UTC (rev 308) @@ -350,7 +350,7 @@ FreeLibrary(vqf_dll); } -ControlCodes control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) +MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { int skip; UNUSED(arg); @@ -365,12 +365,12 @@ if(skip<16) skip=16; } demux_read_data_r(sh_audio->ds,NULL,skip,&pts); - return CONTROL_TRUE; + return MPXP_True; } default: - return CONTROL_UNKNOWN; + return MPXP_Unknown; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static int bread(char *data, /* Output: Output data array */ Modified: mplayerxp/libmpcodecs/ad_vorbis.c =================================================================== --- mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-09 08:17:43 UTC (rev 308) @@ -101,7 +101,7 @@ #define OGG_FMT16 AFMT_S16_LE #endif sh->afmt=OGG_FMT16; - if(ao_control(ao_data,AOCONTROL_QUERY_FORMAT,OGG_FMT32) == CONTROL_OK) { + if(ao_control(ao_data,AOCONTROL_QUERY_FORMAT,OGG_FMT32) == MPXP_Ok) { sh->afmt=OGG_FMT32; } // assume 128kbit if bitrate not specified in the header @@ -121,7 +121,7 @@ mp_free(sh->context); } -static ControlCodes control(sh_audio_t *sh,int cmd,any_t* arg, ...) +static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(sh); UNUSED(cmd); @@ -129,11 +129,11 @@ switch(cmd) { #if 0 - case ADCTRL_RESYNC_STREAM: return CONTROL_TRUE; - case ADCTRL_SKIP_FRAME: return CONTROL_TRUE; + case ADCTRL_RESYNC_STREAM: return MPXP_True; + case ADCTRL_SKIP_FRAME: return MPXP_True; #endif } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static unsigned decode(sh_audio_t *sh,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/dec_audio.c =================================================================== --- mplayerxp/libmpcodecs/dec_audio.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/dec_audio.c 2012-11-09 08:17:43 UTC (rev 308) @@ -344,8 +344,8 @@ of audio data - used to sync audio to video after seeking */ void mpca_skip_frame(sh_audio_t *sh_audio) { - int rc=CONTROL_TRUE; + int rc=MPXP_True; if(sh_audio) if(sh_audio->inited && mpadec) rc=mpadec->control(sh_audio,ADCTRL_SKIP_FRAME,NULL); - if(rc!=CONTROL_TRUE) ds_fill_buffer(sh_audio->ds); + if(rc!=MPXP_True) ds_fill_buffer(sh_audio->ds); } Modified: mplayerxp/libmpcodecs/dec_video.c =================================================================== --- mplayerxp/libmpcodecs/dec_video.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/dec_video.c 2012-11-09 08:17:43 UTC (rev 308) @@ -67,9 +67,9 @@ vf_equalizer_t eq; eq.item=item; eq.value=value*10; - if(vf->control(vf,VFCTRL_SET_EQUALIZER,&eq)!=CONTROL_TRUE) + if(vf->control(vf,VFCTRL_SET_EQUALIZER,&eq)!=MPXP_True) { - if(mpvdec) return mpvdec->control(sh_video,VDCTRL_SET_EQUALIZER,item,(int)value)==CONTROL_OK?1:0; + if(mpvdec) return mpvdec->control(sh_video,VDCTRL_SET_EQUALIZER,item,(int)value)==MPXP_Ok?1:0; } return 1; } Modified: mplayerxp/libmpcodecs/vd.c =================================================================== --- mplayerxp/libmpcodecs/vd.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd.c 2012-11-09 08:17:43 UTC (rev 308) @@ -132,7 +132,7 @@ if((flags&VFCAP_CSP_SUPPORTED_BY_HW) || ((flags&VFCAP_CSP_SUPPORTED) && j<0)){ // check (query) if codec really support this outfmt... sh->outfmtidx=j; // pass index to the control() function this way - if(mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)==CONTROL_FALSE) { + if(mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)==MPXP_False) { MSG_DBG2("vo_debug: codec[%s] query_format(%s) returned FALSE\n",mpvdec->info->driver_name,vo_format_name(out_fmt)); continue; } @@ -142,7 +142,7 @@ } else if(!palette && !(vo_data->flags&3) && (out_fmt==IMGFMT_RGB8||out_fmt==IMGFMT_BGR8)){ sh->outfmtidx=j; // pass index to the control() function this way - if(mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)!=CONTROL_FALSE) + if(mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)!=MPXP_False) palette=1; } } Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd.h 2012-11-09 08:17:43 UTC (rev 308) @@ -19,7 +19,7 @@ const config_t* options;/**< Optional: MPlayerXP's option related */ int (*__FASTCALL__ init)(sh_video_t *sh); void (*__FASTCALL__ uninit)(sh_video_t *sh); - ControlCodes (*__FASTCALL__ control)(sh_video_t *sh,int cmd,any_t* arg, ...); + MPXP_Rc (*__FASTCALL__ control)(sh_video_t *sh,int cmd,any_t* arg, ...); mp_image_t* (*__FASTCALL__ decode)(sh_video_t *sh,any_t* data,int len,int flags); } vd_functions_t; Modified: mplayerxp/libmpcodecs/vd_divx4.c =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_divx4.c 2012-11-09 08:17:43 UTC (rev 308) @@ -137,7 +137,7 @@ static any_t*dll_handle; // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ priv_t*p=sh->context; switch(cmd){ case VDCTRL_QUERY_MAX_PP_LEVEL: return 100; // for divx4linux @@ -145,7 +145,7 @@ int iOperation = DEC_PAR_POSTPROCESSING; int iLevel = *((int*)arg); if(iLevel<0 || iLevel>100) iLevel=100; - return p->decoder(p->pHandle,DEC_OPT_SET,&iOperation,&iLevel)==DEC_OK?CONTROL_OK:CONTROL_FALSE; + return p->decoder(p->pHandle,DEC_OPT_SET,&iOperation,&iLevel)==DEC_OK?MPXP_Ok:MPXP_False; } case VDCTRL_SET_EQUALIZER: { int value; @@ -158,22 +158,22 @@ if(!strcmp(arg,VO_EC_BRIGHTNESS)) option=DEC_PAR_BRIGHTNESS; else if(!strcmp(arg, VO_EC_CONTRAST)) option=DEC_PAR_CONTRAST; else if(!strcmp(arg,VO_EC_SATURATION)) option=DEC_PAR_SATURATION; - else return CONTROL_FALSE; + else return MPXP_False; value = (value * 256) / 100; - return p->decoder(p->pHandle,DEC_OPT_SET,&option,&value)==DEC_OK?CONTROL_OK:CONTROL_FALSE; + return p->decoder(p->pHandle,DEC_OPT_SET,&option,&value)==DEC_OK?MPXP_Ok:MPXP_False; } case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12 || *((int*)arg) == IMGFMT_I420 || *((int*)arg) == IMGFMT_IYUV) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; case VDCTRL_RESYNC_STREAM: p->resync=1; - return CONTROL_TRUE; + return MPXP_True; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } Modified: mplayerxp/libmpcodecs/vd_dmo.c =================================================================== --- mplayerxp/libmpcodecs/vd_dmo.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_dmo.c 2012-11-09 08:17:43 UTC (rev 308) @@ -28,7 +28,7 @@ LIBVD_EXTERN(dmo) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd){ case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12 || @@ -37,11 +37,11 @@ *((int*)arg) == IMGFMT_YVU9 || *((int*)arg) == IMGFMT_YUY2 || *((int*)arg) == IMGFMT_UYVY) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_dshow.c =================================================================== --- mplayerxp/libmpcodecs/vd_dshow.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_dshow.c 2012-11-09 08:17:43 UTC (rev 308) @@ -26,14 +26,14 @@ LIBVD_EXTERN(dshow) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd){ case VDCTRL_QUERY_MAX_PP_LEVEL: return 4; case VDCTRL_SET_PP_LEVEL: - if(!sh->context) return CONTROL_ERROR; + if(!sh->context) return MPXP_Error; DS_VideoDecoder_SetValue(sh->context,"Quality",*((int*)arg)); - return CONTROL_OK; + return MPXP_Ok; case VDCTRL_SET_EQUALIZER: { va_list ap; int value; @@ -42,8 +42,8 @@ va_end(ap); value=(value/2)+50; if(DS_VideoDecoder_SetValue(sh->context,arg,value)==0) - return CONTROL_OK; - return CONTROL_FALSE; + return MPXP_Ok; + return MPXP_False; } case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12 || @@ -52,11 +52,11 @@ *((int*)arg) == IMGFMT_YVU9 || *((int*)arg) == IMGFMT_YUY2 || *((int*)arg) == IMGFMT_UYVY) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-09 08:17:43 UTC (rev 308) @@ -126,7 +126,7 @@ }; /* to set/get/query special features/parameters */ -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ priv_t *ctx = sh->context; uint32_t out_fourcc; AVCodecContext *avctx = ctx->ctx; @@ -137,7 +137,7 @@ int quality=*((int*)arg); if(quality<0 || quality>PP_QUALITY_MAX) quality=PP_QUALITY_MAX; divx_quality = quality; - return CONTROL_OK; + return MPXP_Ok; } case VDCTRL_QUERY_FORMAT: { @@ -158,7 +158,7 @@ else MSG_DBG2("[vd_ffmpeg]avctx->codec->pix_fmts doesn't exist\n"); out_fourcc = fourcc_from_pixfmt(avctx->pix_fmt); - if(out_fourcc==format) return CONTROL_TRUE; + if(out_fourcc==format) return MPXP_True; // possible conversions: switch( format ){ case IMGFMT_YV12: @@ -167,26 +167,26 @@ // "converted" using pointer/stride modification if( avctx->pix_fmt==PIX_FMT_YUV420P || // u/v swap avctx->pix_fmt==PIX_FMT_YUV422P || - avctx->pix_fmt==PIX_FMT_YUVJ420P) return CONTROL_TRUE;// half stride + avctx->pix_fmt==PIX_FMT_YUVJ420P) return MPXP_True;// half stride /* these codecs may return only: PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_YUV420P*/ /* TODO: we must test pix_fmt after decoding first frame at least */ if( avctx->codec_id == CODEC_ID_MPEG1VIDEO || - avctx->codec_id == CODEC_ID_MPEG2VIDEO) return CONTROL_TRUE; + avctx->codec_id == CODEC_ID_MPEG2VIDEO) return MPXP_True; break; #ifdef HAVE_XVMC case IMGFMT_XVMC_IDCT_MPEG2: case IMGFMT_XVMC_MOCO_MPEG2: - if(avctx->pix_fmt==PIX_FMT_XVMC_MPEG2_IDCT) return CONTROL_TRUE; + if(avctx->pix_fmt==PIX_FMT_XVMC_MPEG2_IDCT) return MPXP_True; #endif } - return CONTROL_FALSE; + return MPXP_False; } break; case VDCTRL_RESYNC_STREAM: avcodec_flush_buffers(avctx); - return CONTROL_TRUE; + return MPXP_True; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static int ff_config_vo(sh_video_t *sh,uint32_t w,uint32_t h) Modified: mplayerxp/libmpcodecs/vd_huffyuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-09 08:17:43 UTC (rev 308) @@ -161,23 +161,23 @@ // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...) +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...) { switch(cmd) { case VDCTRL_QUERY_FORMAT: if (((priv_t *)(sh->context))->bitmaptype == BMPTYPE_YUV) { if (*((int*)arg) == IMGFMT_YUY2) - return CONTROL_TRUE; + return MPXP_True; else - return CONTROL_FALSE; + return MPXP_False; } else { if ((*((int*)arg) == IMGFMT_BGR32) || (*((int*)arg) == IMGFMT_BGR24)) - return CONTROL_TRUE; + return MPXP_True; else - return CONTROL_FALSE; + return MPXP_False; } } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-11-09 08:17:43 UTC (rev 308) @@ -14,7 +14,7 @@ // prototypes: //static vd_info_t info; static const config_t options[]; -static ControlCodes __FASTCALL__ control(sh_video_t *sh,int cmd,any_t* arg,...); +static MPXP_Rc __FASTCALL__ control(sh_video_t *sh,int cmd,any_t* arg,...); static int __FASTCALL__ init(sh_video_t *sh); static void __FASTCALL__ uninit(sh_video_t *sh); static mp_image_t* __FASTCALL__ decode(sh_video_t *sh,any_t* data,int len,int flags); Modified: mplayerxp/libmpcodecs/vd_libdv.c =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_libdv.c 2012-11-09 08:17:43 UTC (rev 308) @@ -33,8 +33,8 @@ LIBVD_EXTERN(libdv) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ - return CONTROL_UNKNOWN; +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ + return MPXP_Unknown; } static dv_decoder_t* global_rawdv_decoder=NULL; Modified: mplayerxp/libmpcodecs/vd_libmpeg2.c =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-09 08:17:43 UTC (rev 308) @@ -166,7 +166,7 @@ } // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ priv_t *priv; priv=sh->context; switch(cmd) @@ -174,14 +174,14 @@ case VDCTRL_RESYNC_STREAM: /*lib starts looking for the next sequence header.*/ mpeg2_reset(priv->mpeg2dec,1); - return CONTROL_TRUE; + return MPXP_True; case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static int init(sh_video_t *sh){ Modified: mplayerxp/libmpcodecs/vd_mpegpes.c =================================================================== --- mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-09 08:17:43 UTC (rev 308) @@ -20,8 +20,8 @@ LIBVD_EXTERN(mpegpes) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ - return CONTROL_UNKNOWN; +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_null.c =================================================================== --- mplayerxp/libmpcodecs/vd_null.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_null.c 2012-11-09 08:17:43 UTC (rev 308) @@ -20,8 +20,8 @@ LIBVD_EXTERN(null) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ - return CONTROL_UNKNOWN; +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_nuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_nuv.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_nuv.c 2012-11-09 08:17:43 UTC (rev 308) @@ -19,16 +19,16 @@ LIBVD_EXTERN(nuv) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd) { case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_I420 || *((int*)arg) == IMGFMT_IYUV) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_qtvideo.c =================================================================== --- mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-09 08:17:43 UTC (rev 308) @@ -93,7 +93,7 @@ static OSErr (*NewHandleClear)(Size byteCount); // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd) { case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12 || @@ -107,11 +107,11 @@ *((int*)arg) == IMGFMT_BGR24|| *((int*)arg) == IMGFMT_BGR32|| *((int*)arg) == IMGFMT_RGB32) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } static int codec_inited=0; Modified: mplayerxp/libmpcodecs/vd_raw.c =================================================================== --- mplayerxp/libmpcodecs/vd_raw.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_raw.c 2012-11-09 08:17:43 UTC (rev 308) @@ -19,13 +19,13 @@ LIBVD_EXTERN(raw) // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd) { case VDCTRL_QUERY_FORMAT: - return CONTROL_TRUE; + return MPXP_True; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_real.c =================================================================== --- mplayerxp/libmpcodecs/vd_real.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_real.c 2012-11-09 08:17:43 UTC (rev 308) @@ -79,20 +79,20 @@ // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd){ // case VDCTRL_QUERY_MAX_PP_LEVEL: // return 9; // case VDCTRL_SET_PP_LEVEL: // vfw_set_postproc(sh,10*(*((int*)arg))); -// return CONTROL_OK; +// return MPXP_Ok; case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_I420 || *((int*)arg) == IMGFMT_IYUV) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } /* exits program when failure */ Modified: mplayerxp/libmpcodecs/vd_theora.c =================================================================== --- mplayerxp/libmpcodecs/vd_theora.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_theora.c 2012-11-09 08:17:43 UTC (rev 308) @@ -37,15 +37,15 @@ } priv_t; // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd) { case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } /* Modified: mplayerxp/libmpcodecs/vd_vfw.c =================================================================== --- mplayerxp/libmpcodecs/vd_vfw.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_vfw.c 2012-11-09 08:17:43 UTC (rev 308) @@ -219,20 +219,20 @@ } // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ priv_t *priv = sh->context; switch(cmd){ case VDCTRL_QUERY_MAX_PP_LEVEL: return 9; case VDCTRL_SET_PP_LEVEL: vfw_set_postproc(sh,10*(*((int*)arg))); - return CONTROL_OK; + return MPXP_Ok; // FIXME: make this optional... case VDCTRL_QUERY_FORMAT: { HRESULT ret; // if(!(sh->codec->outflags[sh->outfmtidx]&CODECS_FLAG_QUERY)) -// return CONTROL_UNKNOWN; // do not query! +// return MPXP_Unknown; // do not query! set_csp(priv->o_bih,*((int*)arg)); if(priv->ex) ret = ICDecompressQueryEx(priv->hic, sh->bih, priv->o_bih); @@ -241,13 +241,13 @@ if (ret) { MSG_DBG2("ICDecompressQuery failed:: Error %d\n", (int)ret); - return CONTROL_FALSE; + return MPXP_False; } - return CONTROL_TRUE; + return MPXP_True; } default: break; } - return CONTROL_UNKNOWN; + return MPXP_Unknown; } // init driver Modified: mplayerxp/libmpcodecs/vd_xanim.c =================================================================== --- mplayerxp/libmpcodecs/vd_xanim.c 2012-11-09 07:40:44 UTC (rev 307) +++ mplayerxp/libmpcodecs/vd_xanim.c 2012-11-09 08:17:43 UTC (rev 308) @@ -893,17 +893,17 @@ /*************************** END OF XA CODEC BINARY INTERFACE ******************/ // to set/get/query special features/parameters -static ControlCodes control(sh_video_t *sh,int cmd,any_t* arg,...){ +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd) { case VDCTRL_QUERY_FORMAT: if (*((int*)arg) == IMGFMT_YV12 || *((int*)arg) == IMGFMT_I420 || *((int*)arg) == IMGFMT_IYUV) - return CONTROL_TRUE; - else return CONTROL_FALSE; + return MPXP_True; + else return MPXP_False; default: break; } - return CONTROL_UNKNO... [truncated message content] |
From: <nic...@us...> - 2012-11-09 08:45:05
|
Revision: 309 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=309&view=rev Author: nickols_k Date: 2012-11-09 08:44:54 +0000 (Fri, 09 Nov 2012) Log Message: ----------- cleanups Modified Paths: -------------- mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_internal.h mplayerxp/libmpcodecs/ad_libdv.c mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/mplayerxp.c mplayerxp/xmpcore/xmp_enums.h Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/libmpcodecs/ad.h 2012-11-09 08:44:54 UTC (rev 309) @@ -28,7 +28,7 @@ int (* __FASTCALL__ preinit)(sh_audio_t *); int (* __FASTCALL__ init)(sh_audio_t *sh); void (* __FASTCALL__ uninit)(sh_audio_t *sh); - MPXP_Rc (* __FASTCALL__ control)(sh_audio_t *sh,int cmd,any_t* arg, ...); + MPXP_Rc (* control)(sh_audio_t *sh,int cmd,any_t* arg, ...); unsigned (* __FASTCALL__ decode)(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); } ad_functions_t; Modified: mplayerxp/libmpcodecs/ad_internal.h =================================================================== --- mplayerxp/libmpcodecs/ad_internal.h 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-11-09 08:44:54 UTC (rev 309) @@ -12,11 +12,10 @@ #include "ad_msg.h" -static const config_t options[]; static int __FASTCALL__ init(sh_audio_t *sh); static int __FASTCALL__ preinit(sh_audio_t *sh); static void __FASTCALL__ uninit(sh_audio_t *sh); -static MPXP_Rc __FASTCALL__ control(sh_audio_t *sh,int cmd,any_t* arg, ...); +static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...); static unsigned __FASTCALL__ decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); #define LIBAD_EXTERN(x) const ad_functions_t mpcodecs_ad_##x = {\ Modified: mplayerxp/libmpcodecs/ad_libdv.c =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.c 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/libmpcodecs/ad_libdv.c 2012-11-09 08:44:54 UTC (rev 309) @@ -19,7 +19,7 @@ #include "ad_internal.h" -static ad_info_t info = +static const ad_info_t info = { "Raw DV Audio Decoder", "libdv", Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/libmpcodecs/vd.h 2012-11-09 08:44:54 UTC (rev 309) @@ -19,7 +19,7 @@ const config_t* options;/**< Optional: MPlayerXP's option related */ int (*__FASTCALL__ init)(sh_video_t *sh); void (*__FASTCALL__ uninit)(sh_video_t *sh); - MPXP_Rc (*__FASTCALL__ control)(sh_video_t *sh,int cmd,any_t* arg, ...); + MPXP_Rc (* control)(sh_video_t *sh,int cmd,any_t* arg, ...); mp_image_t* (*__FASTCALL__ decode)(sh_video_t *sh,any_t* data,int len,int flags); } vd_functions_t; Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-11-09 08:44:54 UTC (rev 309) @@ -14,7 +14,7 @@ // prototypes: //static vd_info_t info; static const config_t options[]; -static MPXP_Rc __FASTCALL__ control(sh_video_t *sh,int cmd,any_t* arg,...); +static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...); static int __FASTCALL__ init(sh_video_t *sh); static void __FASTCALL__ uninit(sh_video_t *sh); static mp_image_t* __FASTCALL__ decode(sh_video_t *sh,any_t* data,int len,int flags); Modified: mplayerxp/libmpcodecs/vd_libdv.c =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.c 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/libmpcodecs/vd_libdv.c 2012-11-09 08:44:54 UTC (rev 309) @@ -18,7 +18,7 @@ #include "vd_internal.h" -static vd_info_t info = +static const vd_info_t info = { "Raw DV Video Decoder", "libdv", Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/mplayerxp.c 2012-11-09 08:44:54 UTC (rev 309) @@ -183,7 +183,7 @@ static MPXP_Rc mpxp_test_antiviral_protection(int* verbose) { if(*verbose) MSG_INFO("Your've specified test-av option!\nRight now MPlayerXP should make coredump!\n"); - *verbose=antiviral_hole1[0]|antiviral_hole2[0]|antiviral_hole2[0]; + *verbose=antiviral_hole1[0]|antiviral_hole2[0]|antiviral_hole3[0]; MSG_ERR("Antiviral protection of MPlayerXP doesn't work!"); return MPXP_Virus; } Modified: mplayerxp/xmpcore/xmp_enums.h =================================================================== --- mplayerxp/xmpcore/xmp_enums.h 2012-11-09 08:17:43 UTC (rev 308) +++ mplayerxp/xmpcore/xmp_enums.h 2012-11-09 08:44:54 UTC (rev 309) @@ -6,10 +6,10 @@ MPXP_True =1, MPXP_Ok =MPXP_True, MPXP_False =0, - MPXP_Virus =MPXP_False, MPXP_Unknown=-1, MPXP_Error =-2, - MPXP_NA =-3 + MPXP_NA =-3, + MPXP_Virus =-4 }MPXP_Rc; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-09 11:44:00
|
Revision: 310 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=310&view=rev Author: nickols_k Date: 2012-11-09 11:43:47 +0000 (Fri, 09 Nov 2012) Log Message: ----------- use MPXP_Rc in libmpcodecs Modified Paths: -------------- mplayerxp/libmpcodecs/ad.c mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_a52.c mplayerxp/libmpcodecs/ad_acm.c mplayerxp/libmpcodecs/ad_dca.c mplayerxp/libmpcodecs/ad_dmo.c mplayerxp/libmpcodecs/ad_dshow.c mplayerxp/libmpcodecs/ad_dvdpcm.c mplayerxp/libmpcodecs/ad_faad.c mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/ad_hwac3.c mplayerxp/libmpcodecs/ad_libdv.c mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/ad_null.c mplayerxp/libmpcodecs/ad_pcm.c mplayerxp/libmpcodecs/ad_qtaudio.c mplayerxp/libmpcodecs/ad_real.c mplayerxp/libmpcodecs/ad_twin.c mplayerxp/libmpcodecs/ad_vorbis.c mplayerxp/libmpcodecs/dec_audio.c mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpcodecs/vd.c mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_dmo.c mplayerxp/libmpcodecs/vd_dshow.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpcodecs/vd_mpegpes.c mplayerxp/libmpcodecs/vd_null.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_qtvideo.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_vfw.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/mplayerxp.c Modified: mplayerxp/libmpcodecs/ad.c =================================================================== --- mplayerxp/libmpcodecs/ad.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad.c 2012-11-09 11:43:47 UTC (rev 310) @@ -34,32 +34,31 @@ extern const ad_functions_t mpcodecs_ad_dmo; extern const ad_functions_t mpcodecs_ad_qtaudio; -const ad_functions_t* mpcodecs_ad_drivers[] = -{ - &mpcodecs_ad_null, - &mpcodecs_ad_mp3, - &mpcodecs_ad_a52, - &mpcodecs_ad_dca, - &mpcodecs_ad_hwac3, - &mpcodecs_ad_ffmpeg, - &mpcodecs_ad_pcm, - &mpcodecs_ad_dvdpcm, - &mpcodecs_ad_faad, +const ad_functions_t* mpcodecs_ad_drivers[] = { + &mpcodecs_ad_null, + &mpcodecs_ad_mp3, + &mpcodecs_ad_a52, + &mpcodecs_ad_dca, + &mpcodecs_ad_hwac3, + &mpcodecs_ad_ffmpeg, + &mpcodecs_ad_pcm, + &mpcodecs_ad_dvdpcm, + &mpcodecs_ad_faad, #ifdef HAVE_LIBVORBIS - &mpcodecs_ad_vorbis, + &mpcodecs_ad_vorbis, #endif #ifdef HAVE_LIBDV - &mpcodecs_ad_libdv, + &mpcodecs_ad_libdv, #endif - &mpcodecs_ad_real, + &mpcodecs_ad_real, #ifdef HAVE_WIN32LOADER - &mpcodecs_ad_dshow, - &mpcodecs_ad_twin, - &mpcodecs_ad_msacm, - &mpcodecs_ad_dmo, - &mpcodecs_ad_qtaudio, + &mpcodecs_ad_dshow, + &mpcodecs_ad_twin, + &mpcodecs_ad_msacm, + &mpcodecs_ad_dmo, + &mpcodecs_ad_qtaudio, #endif - NULL + NULL }; static unsigned int nddrivers=sizeof(mpcodecs_ad_drivers)/sizeof(ad_functions_t*); Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad.h 2012-11-09 11:43:47 UTC (rev 310) @@ -23,13 +23,13 @@ /* interface of video decoder drivers */ typedef struct ad_functions_s { - const ad_info_t *info; - const config_t* options;/**< Optional: MPlayerXP's option related */ - int (* __FASTCALL__ preinit)(sh_audio_t *); - int (* __FASTCALL__ init)(sh_audio_t *sh); - void (* __FASTCALL__ uninit)(sh_audio_t *sh); - MPXP_Rc (* control)(sh_audio_t *sh,int cmd,any_t* arg, ...); - unsigned (* __FASTCALL__ decode)(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); + const ad_info_t* info; + const config_t* options;/**< Optional: MPlayerXP's option related */ + MPXP_Rc (* __FASTCALL__ preinit)(sh_audio_t *); + MPXP_Rc (* __FASTCALL__ init)(sh_audio_t *sh); + void (* __FASTCALL__ uninit)(sh_audio_t *sh); + MPXP_Rc (* control)(sh_audio_t *sh,int cmd,any_t* arg, ...); + unsigned (* __FASTCALL__ decode)(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); } ad_functions_t; extern const ad_functions_t* mpcodecs_ad_drivers[]; Modified: mplayerxp/libmpcodecs/ad_a52.c =================================================================== --- mplayerxp/libmpcodecs/ad_a52.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_a52.c 2012-11-09 11:43:47 UTC (rev 310) @@ -45,31 +45,32 @@ }; LIBAD_EXTERN(a52) + int a52_fillbuff(sh_audio_t *sh_audio,float *pts){ -int length=0; -int flags=0; -int sample_rate=0; -int bit_rate=0; -float apts=0.,null_pts; -priv_t *priv=sh_audio->context; + int length=0; + int flags=0; + int sample_rate=0; + int bit_rate=0; + float apts=0.,null_pts; + priv_t *priv=sh_audio->context; sh_audio->a_in_buffer_len=0; /* sync frame:*/ -while(1){ - while(sh_audio->a_in_buffer_len<8){ - int c=demux_getc_r(sh_audio->ds,apts?&null_pts:&apts); - if(c<0) { priv->last_pts=*pts=apts; return -1; } /* EOF*/ - sh_audio->a_in_buffer[sh_audio->a_in_buffer_len++]=c; + while(1){ + while(sh_audio->a_in_buffer_len<8){ + int c=demux_getc_r(sh_audio->ds,apts?&null_pts:&apts); + if(c<0) { priv->last_pts=*pts=apts; return -1; } /* EOF*/ + sh_audio->a_in_buffer[sh_audio->a_in_buffer_len++]=c; + } + if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer,sh_audio->a_in_buffer,8); + length = a52_syncinfo (sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate); + if(length>=7 && length<=MAX_AC3_FRAME) break; /* we're done.*/ + /* bad file => resync*/ + if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer,sh_audio->a_in_buffer,8); + memmove(sh_audio->a_in_buffer,sh_audio->a_in_buffer+1,7); + --sh_audio->a_in_buffer_len; + apts=0; } - if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer,sh_audio->a_in_buffer,8); - length = a52_syncinfo (sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate); - if(length>=7 && length<=MAX_AC3_FRAME) break; /* we're done.*/ - /* bad file => resync*/ - if(sh_audio->wtag!=0x2000) swab(sh_audio->a_in_buffer,sh_audio->a_in_buffer,8); - memmove(sh_audio->a_in_buffer,sh_audio->a_in_buffer+1,7); - --sh_audio->a_in_buffer_len; - apts=0; -} MSG_DBG2("a52: len=%d flags=0x%X %d Hz %d bit/s\n",length,flags,sample_rate,bit_rate); sh_audio->rate=sample_rate; sh_audio->i_bps=bit_rate/8; @@ -83,24 +84,24 @@ /* returns: number of available channels*/ static int a52_printinfo(sh_audio_t *sh_audio){ -int flags, sample_rate, bit_rate; -char* mode="unknown"; -int channels=0; - a52_syncinfo (sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate); - switch(flags&A52_CHANNEL_MASK){ - case A52_CHANNEL: mode="channel"; channels=2; break; - case A52_MONO: mode="mono"; channels=1; break; - case A52_STEREO: mode="stereo"; channels=2; break; - case A52_3F: mode="3f";channels=3;break; - case A52_2F1R: mode="2f+1r";channels=3;break; - case A52_3F1R: mode="3f+1r";channels=4;break; - case A52_2F2R: mode="2f+2r";channels=4;break; - case A52_3F2R: mode="3f+2r";channels=5;break; - case A52_CHANNEL1: mode="channel1"; channels=2; break; - case A52_CHANNEL2: mode="channel2"; channels=2; break; - case A52_DOLBY: mode="dolby"; channels=2; break; - } - MSG_INFO("AC3: %d.%d (%s%s) %d Hz %3.1f kbit/s Out: %u-bit\n", + int flags, sample_rate, bit_rate; + char* mode="unknown"; + int channels=0; + a52_syncinfo (sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate); + switch(flags&A52_CHANNEL_MASK){ + case A52_CHANNEL: mode="channel"; channels=2; break; + case A52_MONO: mode="mono"; channels=1; break; + case A52_STEREO: mode="stereo"; channels=2; break; + case A52_3F: mode="3f";channels=3;break; + case A52_2F1R: mode="2f+1r";channels=3;break; + case A52_3F1R: mode="3f+1r";channels=4;break; + case A52_2F2R: mode="2f+2r";channels=4;break; + case A52_3F2R: mode="3f+2r";channels=5;break; + case A52_CHANNEL1: mode="channel1"; channels=2; break; + case A52_CHANNEL2: mode="channel2"; channels=2; break; + case A52_DOLBY: mode="dolby"; channels=2; break; + } + MSG_INFO("AC3: %d.%d (%s%s) %d Hz %3.1f kbit/s Out: %u-bit\n", channels, (flags&A52_LFE)?1:0, mode, (flags&A52_LFE)?"+lfe":"", sample_rate, bit_rate*0.001f, @@ -108,8 +109,7 @@ return (flags&A52_LFE) ? (channels+1) : channels; } - -int preinit(sh_audio_t *sh) +MPXP_Rc preinit(sh_audio_t *sh) { /* Dolby AC3 audio: */ /* however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */ @@ -123,37 +123,36 @@ sh->afmt=bps2afmt(2); if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == MPXP_Ok|| af_query_fmt(sh->afilter,A52_FMT32) == MPXP_Ok || - af_query_fmt(sh->afilter,A52_FMT24) == MPXP_Ok) - { + af_query_fmt(sh->afilter,A52_FMT24) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*6; sh->audio_in_minsize=MAX_AC3_FRAME; sh->context=mp_malloc(sizeof(priv_t)); - return 1; + return MPXP_Ok; } -int init(sh_audio_t *sh_audio) +MPXP_Rc init(sh_audio_t *sh_audio) { - sample_t level=1, bias=384; - float pts; - int flags=0; - /* Dolby AC3 audio:*/ - mpxp_a52_accel = mp_data->mplayer_accel; - mpxp_a52_state=a52_init (mpxp_a52_accel); - if (mpxp_a52_state == NULL) { + sample_t level=1, bias=384; + float pts; + int flags=0; + /* Dolby AC3 audio:*/ + mpxp_a52_accel = mp_data->mplayer_accel; + mpxp_a52_state=a52_init (mpxp_a52_accel); + if (mpxp_a52_state == NULL) { MSG_ERR("A52 init failed\n"); - return 0; - } - if(a52_fillbuff(sh_audio,&pts)<0){ + return MPXP_False; + } + if(a52_fillbuff(sh_audio,&pts)<0){ MSG_ERR("A52 sync failed\n"); - return 0; - } - /* 'a52 cannot upmix' hotfix:*/ - a52_printinfo(sh_audio); - sh_audio->nch=mp_conf.ao_channels; -while(sh_audio->nch>0){ - switch(sh_audio->nch){ + return MPXP_False; + } + /* 'a52 cannot upmix' hotfix:*/ + a52_printinfo(sh_audio); + sh_audio->nch=mp_conf.ao_channels; + while(sh_audio->nch>0){ + switch(sh_audio->nch){ case 1: mpxp_a52_flags=A52_MONO; break; /* case 2: mpxp_a52_flags=A52_STEREO; break; */ case 2: mpxp_a52_flags=A52_DOLBY; break; @@ -162,53 +161,51 @@ case 4: mpxp_a52_flags=A52_2F2R; break; /* 2+2*/ case 5: mpxp_a52_flags=A52_3F2R; break; case 6: mpxp_a52_flags=A52_3F2R|A52_LFE; break; /* 5.1*/ - } - /* test:*/ - flags=mpxp_a52_flags|A52_ADJUST_LEVEL; - MSG_V("A52 flags before a52_frame: 0x%X\n",flags); - if (a52_frame (mpxp_a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ - MSG_ERR("a52: error decoding frame -> nosound\n"); - return 0; - } - MSG_V("A52 flags after a52_frame: 0x%X\n",flags); - /* frame decoded, let's init resampler:*/ - if(afmt2bps(sh_audio->afmt)==4) { - if(a52_resample_init_float(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->nch)) break; - } else { - if(a52_resample_init(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->nch)) break; - } - --sh_audio->nch; /* try to decrease no. of channels*/ + } + /* test:*/ + flags=mpxp_a52_flags|A52_ADJUST_LEVEL; + MSG_V("A52 flags before a52_frame: 0x%X\n",flags); + if (a52_frame (mpxp_a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ + MSG_ERR("a52: error decoding frame -> nosound\n"); + return MPXP_False; + } + MSG_V("A52 flags after a52_frame: 0x%X\n",flags); + /* frame decoded, let's init resampler:*/ + if(afmt2bps(sh_audio->afmt)==4) { + if(a52_resample_init_float(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->nch)) break; + } else { + if(a52_resample_init(mpxp_a52_state,mpxp_a52_accel,flags,sh_audio->nch)) break; + } + --sh_audio->nch; /* try to decrease no. of channels*/ + } + if(sh_audio->nch<=0){ + MSG_ERR("a52: no resampler. try different channel setup!\n"); + return MPXP_False; + } + return MPXP_Ok; } - if(sh_audio->nch<=0){ - MSG_ERR("a52: no resampler. try different channel setup!\n"); - return 0; - } - return 1; -} void uninit(sh_audio_t *sh) { - mp_free(sh->context); + mp_free(sh->context); } MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); - switch(cmd) - { - case ADCTRL_RESYNC_STREAM: - sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return MPXP_True; - case ADCTRL_SKIP_FRAME: - { - float pts; - a52_fillbuff(sh,&pts); // skip AC3 frame - return MPXP_True; + switch(cmd) { + case ADCTRL_RESYNC_STREAM: + sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer + return MPXP_True; + case ADCTRL_SKIP_FRAME: { + float pts; + a52_fillbuff(sh,&pts); // skip AC3 frame + return MPXP_True; } - default: - return MPXP_Unknown; + default: + return MPXP_Unknown; } - return MPXP_Unknown; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) @@ -220,27 +217,25 @@ UNUSED(minlen); UNUSED(maxlen); priv_t *priv=sh_audio->context; - if(!sh_audio->a_in_buffer_len) - { - if(a52_fillbuff(sh_audio,pts)<0) return len; /* EOF */ - } - else *pts=priv->last_pts; - sh_audio->a_in_buffer_len=0; - if (a52_frame (mpxp_a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ - MSG_WARN("a52: error decoding frame\n"); - return len; - } + if(!sh_audio->a_in_buffer_len) { + if(a52_fillbuff(sh_audio,pts)<0) return len; /* EOF */ + } else *pts=priv->last_pts; + sh_audio->a_in_buffer_len=0; + if (a52_frame (mpxp_a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ + MSG_WARN("a52: error decoding frame\n"); + return len; + } // a52_dynrng(&mpxp_a52_state, NULL, NULL); - len=0; - for (i = 0; i < 6; i++) { - if (a52_block (mpxp_a52_state)){ - MSG_WARN("a52: error at resampling\n"); - break; - } - if(afmt2bps(sh_audio->afmt)==4) - len+=4*a52_resample32(a52_samples(mpxp_a52_state),(float *)&buf[len]); - else - len+=2*a52_resample(a52_samples(mpxp_a52_state),(int16_t *)&buf[len]); + len=0; + for (i = 0; i < 6; i++) { + if (a52_block (mpxp_a52_state)){ + MSG_WARN("a52: error at resampling\n"); + break; } - return len; + if(afmt2bps(sh_audio->afmt)==4) + len+=4*a52_resample32(a52_samples(mpxp_a52_state),(float *)&buf[len]); + else + len+=2*a52_resample(a52_samples(mpxp_a52_state),(int16_t *)&buf[len]); + } + return len; } Modified: mplayerxp/libmpcodecs/ad_acm.c =================================================================== --- mplayerxp/libmpcodecs/ad_acm.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_acm.c 2012-11-09 11:43:47 UTC (rev 310) @@ -12,12 +12,11 @@ #include "libao2/afmt.h" #include "help_mp.h" -static const ad_info_t info = -{ - "Win32/ACM decoders", - "acm", - "Nickols_K", - "build-in" +static const ad_info_t info = { + "Win32/ACM decoders", + "acm", + "Nickols_K", + "build-in" }; static const config_t options[] = { @@ -26,8 +25,7 @@ LIBAD_EXTERN(msacm) -typedef struct priv_s -{ +typedef struct priv_s { float pts; WAVEFORMATEX o_wf; // out format HACMSTREAM srcstream; // handle @@ -50,15 +48,13 @@ priv->o_wf.nBlockAlign=2*sh_audio->nch; priv->o_wf.wBitsPerSample=sh_audio->afmt?afmt2bps(sh_audio->afmt)*8:16; priv->o_wf.cbSize=0; - if(!in_fmt) - { + if(!in_fmt) { in_fmt=sh_audio->wf=mp_malloc(sizeof(WAVEFORMATEX)); memcpy(in_fmt,&priv->o_wf,sizeof(WAVEFORMATEX)); in_fmt->wFormatTag=sh_audio->wtag; } - if(mp_conf.verbose) - { + if(mp_conf.verbose) { MSG_V("Output fmt:\n"); print_wave_header(&priv->o_wf,sizeof(WAVEFORMATEX)); } @@ -128,19 +124,19 @@ return(1); } -int init(sh_audio_t *sh_audio) +MPXP_Rc init(sh_audio_t *sh_audio) { float pts; int ret=decode(sh_audio,sh_audio->a_buffer,4096,sh_audio->a_buffer_size,&pts); if(ret<0){ MSG_INFO("ACM decoding error: %d\n",ret); - return 0; + return MPXP_False; } sh_audio->a_buffer_len=ret; - return 1; + return MPXP_Ok; } -int preinit(sh_audio_t *sh_audio) +MPXP_Rc preinit(sh_audio_t *sh_audio) { /* Win32 ACM audio codec: */ priv_t *priv; @@ -148,10 +144,10 @@ priv=sh_audio->context; if(!init_acm_audio_codec(sh_audio)){ MSG_ERR(MSGTR_ACMiniterror); - return 0; + return MPXP_False; } MSG_V("INFO: Win32/ACM init OK!\n"); - return 1; + return MPXP_Ok; } void uninit(sh_audio_t *sh) @@ -163,26 +159,24 @@ MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { int skip; - switch(cmd) - { -// case ADCTRL_RESYNC_STREAM: -// sh_audio->a_in_buffer_len=0;/* reset ACM/DShow audio buffer */ + switch(cmd) { +// case ADCTRL_RESYNC_STREAM: +// sh_audio->a_in_buffer_len=0;/* reset ACM/DShow audio buffer */ // return MPXP_True; - case ADCTRL_SKIP_FRAME: - { - float pts; - skip=sh_audio->wf->nBlockAlign; - if(skip<16){ - skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); - if(skip<16) skip=16; - } - demux_read_data_r(sh_audio->ds,NULL,skip,&pts); - return MPXP_True; + case ADCTRL_SKIP_FRAME: { + float pts; + skip=sh_audio->wf->nBlockAlign; + if(skip<16){ + skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); + if(skip<16) skip=16; + } + demux_read_data_r(sh_audio->ds,NULL,skip,&pts); + return MPXP_True; } - default: - return MPXP_Unknown; + default: + return MPXP_Unknown; } - return MPXP_Unknown; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dca.c =================================================================== --- mplayerxp/libmpcodecs/ad_dca.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_dca.c 2012-11-09 11:43:47 UTC (rev 310) @@ -27,18 +27,16 @@ uint32_t mpxp_dca_accel=0; uint32_t mpxp_dca_flags=0; -typedef struct priv_s -{ +typedef struct priv_s { float last_pts; }priv_t; -static const ad_info_t info = -{ - "DTS Coherent Acoustics", - "libdca", - "Nickols_K", - "build-in" +static const ad_info_t info = { + "DTS Coherent Acoustics", + "libdca", + "Nickols_K", + "build-in" }; static const config_t options[] = { @@ -48,28 +46,28 @@ LIBAD_EXTERN(dca) int dca_fillbuff(sh_audio_t *sh_audio,float *pts){ -int length=0,flen=0; -int flags=0; -int sample_rate=0; -int bit_rate=0; -float apts=0.,null_pts; -priv_t *priv=sh_audio->context; + int length=0,flen=0; + int flags=0; + int sample_rate=0; + int bit_rate=0; + float apts=0.,null_pts; + priv_t *priv=sh_audio->context; sh_audio->a_in_buffer_len=0; /* sync frame:*/ -while(1){ - while(sh_audio->a_in_buffer_len<16){ - int c=demux_getc_r(sh_audio->ds,apts?&null_pts:&apts); - if(c<0) { priv->last_pts=*pts=apts; return -1; } /* EOF*/ - sh_audio->a_in_buffer[sh_audio->a_in_buffer_len++]=c; + while(1){ + while(sh_audio->a_in_buffer_len<16){ + int c=demux_getc_r(sh_audio->ds,apts?&null_pts:&apts); + if(c<0) { priv->last_pts=*pts=apts; return -1; } /* EOF*/ + sh_audio->a_in_buffer[sh_audio->a_in_buffer_len++]=c; + } + length = dca_syncinfo (mpxp_dca_state,sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate, &flen); + if(length>=16 && length<=MAX_AC5_FRAME) break; /* we're done.*/ + /* bad file => resync*/ + memmove(sh_audio->a_in_buffer,sh_audio->a_in_buffer+1,15); + --sh_audio->a_in_buffer_len; + apts=0; } - length = dca_syncinfo (mpxp_dca_state,sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate, &flen); - if(length>=16 && length<=MAX_AC5_FRAME) break; /* we're done.*/ - /* bad file => resync*/ - memmove(sh_audio->a_in_buffer,sh_audio->a_in_buffer+1,15); - --sh_audio->a_in_buffer_len; - apts=0; -} MSG_DBG2("dca[%08X]: len=%d flags=0x%X %d Hz %d bit/s frame=%u\n",*((long *)sh_audio->a_in_buffer),length,flags,sample_rate,bit_rate,flen); sh_audio->rate=sample_rate; sh_audio->i_bps=bit_rate/8; @@ -81,33 +79,33 @@ /* returns: number of available channels*/ static int dca_printinfo(sh_audio_t *sh_audio){ -int flags, sample_rate, bit_rate,flen,length; -char* mode="unknown"; -int channels=0; - length=dca_syncinfo (mpxp_dca_state,sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate,&flen); - switch(flags&DCA_CHANNEL_MASK){ - case DCA_CHANNEL: mode="channel"; channels=2; break; - case DCA_MONO: mode="mono"; channels=1; break; - case DCA_STEREO: mode="stereo"; channels=2; break; - case DCA_3F: mode="3f"; channels=3;break; - case DCA_2F1R: mode="2f+1r"; channels=3;break; - case DCA_3F1R: mode="3f+1r"; channels=4;break; - case DCA_2F2R: mode="2f+2r"; channels=4;break; - case DCA_3F2R: mode="3f+2r"; channels=5;break; - case DCA_4F2R: mode="4f+2r"; channels=6;break; - case DCA_DOLBY: mode="dolby"; channels=2; break; - default: channels=0; break; - } - MSG_INFO("DCA: %d.%d (%s%s) %d Hz %3.1f kbit/s Out: %u-bit\n", + int flags, sample_rate, bit_rate,flen,length; + char* mode="unknown"; + int channels=0; + length=dca_syncinfo (mpxp_dca_state,sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate,&flen); + switch(flags&DCA_CHANNEL_MASK){ + case DCA_CHANNEL: mode="channel"; channels=2; break; + case DCA_MONO: mode="mono"; channels=1; break; + case DCA_STEREO: mode="stereo"; channels=2; break; + case DCA_3F: mode="3f"; channels=3;break; + case DCA_2F1R: mode="2f+1r"; channels=3;break; + case DCA_3F1R: mode="3f+1r"; channels=4;break; + case DCA_2F2R: mode="2f+2r"; channels=4;break; + case DCA_3F2R: mode="3f+2r"; channels=5;break; + case DCA_4F2R: mode="4f+2r"; channels=6;break; + case DCA_DOLBY: mode="dolby"; channels=2; break; + default: channels=0; break; + } + MSG_INFO("DCA: %d.%d (%s%s) %d Hz %3.1f kbit/s Out: %u-bit\n", channels, (flags&DCA_LFE)?1:0, mode, (flags&DCA_LFE)?"+lfe":"", sample_rate, bit_rate*0.001f, afmt2bps(sh_audio->afmt)*8); - return (flags&DCA_LFE) ? (channels+1) : channels; + return (flags&DCA_LFE) ? (channels+1) : channels; } -int preinit(sh_audio_t *sh) +MPXP_Rc preinit(sh_audio_t *sh) { /* DTS audio: however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */ @@ -128,84 +126,82 @@ sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*8; sh->audio_in_minsize=MAX_AC5_FRAME; sh->context=mp_malloc(sizeof(priv_t)); - return 1; + return MPXP_Ok; } -int init(sh_audio_t *sh_audio) +MPXP_Rc init(sh_audio_t *sh_audio) { - sample_t level=1, bias=384; - float pts; - int flags=0; - /* Dolby AC3 audio:*/ - mpxp_dca_accel = mp_data->mplayer_accel; - mpxp_dca_state = dca_init(mpxp_dca_accel); - if (mpxp_dca_state == NULL) { + sample_t level=1, bias=384; + float pts; + int flags=0; + /* Dolby AC3 audio:*/ + mpxp_dca_accel = mp_data->mplayer_accel; + mpxp_dca_state = dca_init(mpxp_dca_accel); + if (mpxp_dca_state == NULL) { MSG_ERR("dca init failed\n"); - return 0; - } - if(dca_fillbuff(sh_audio,&pts)<0){ + return MPXP_False; + } + if(dca_fillbuff(sh_audio,&pts)<0){ MSG_ERR("dca sync failed\n"); - return 0; - } - /* 'dca cannot upmix' hotfix:*/ - dca_printinfo(sh_audio); - sh_audio->nch=mp_conf.ao_channels; -while(sh_audio->nch>0){ - switch(sh_audio->nch){ - case 1: mpxp_dca_flags=DCA_MONO; break; - case 2: mpxp_dca_flags=DCA_STEREO; break; -/* case 2: mpxp_dca_flags=DCA_DOLBY; break; */ -/* case 3: mpxp_dca_flags=DCA_3F; break; */ - case 3: mpxp_dca_flags=DCA_2F1R; break; - case 4: mpxp_dca_flags=DCA_2F2R; break; /* 2+2*/ - case 5: mpxp_dca_flags=DCA_3F2R; break; - case 6: mpxp_dca_flags=DCA_3F2R|DCA_LFE; break; /* 5.1*/ - } - /* test:*/ - flags=mpxp_dca_flags|DCA_ADJUST_LEVEL; - MSG_V("dca flags before dca_frame: 0x%X\n",flags); - if (dca_frame (mpxp_dca_state, sh_audio->a_in_buffer, &flags, &level, bias)){ - MSG_ERR("dca: error decoding frame -> nosound\n"); - return 0; - } - MSG_V("dca flags after dca_frame: 0x%X\n",flags); - if(afmt2bps(sh_audio->afmt)==4) { - if(dca_resample_init_float(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->nch)) break; - } else { - if(dca_resample_init(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->nch)) break; - } - --sh_audio->nch; /* try to decrease no. of channels*/ + return MPXP_False; + } + /* 'dca cannot upmix' hotfix:*/ + dca_printinfo(sh_audio); + sh_audio->nch=mp_conf.ao_channels; + while(sh_audio->nch>0){ + switch(sh_audio->nch){ + case 1: mpxp_dca_flags=DCA_MONO; break; + case 2: mpxp_dca_flags=DCA_STEREO; break; +/* case 2: mpxp_dca_flags=DCA_DOLBY; break; */ +/* case 3: mpxp_dca_flags=DCA_3F; break; */ + case 3: mpxp_dca_flags=DCA_2F1R; break; + case 4: mpxp_dca_flags=DCA_2F2R; break; /* 2+2*/ + case 5: mpxp_dca_flags=DCA_3F2R; break; + case 6: mpxp_dca_flags=DCA_3F2R|DCA_LFE; break; /* 5.1*/ + } + /* test:*/ + flags=mpxp_dca_flags|DCA_ADJUST_LEVEL; + MSG_V("dca flags before dca_frame: 0x%X\n",flags); + if (dca_frame (mpxp_dca_state, sh_audio->a_in_buffer, &flags, &level, bias)){ + MSG_ERR("dca: error decoding frame -> nosound\n"); + return MPXP_False; + } + MSG_V("dca flags after dca_frame: 0x%X\n",flags); + if(afmt2bps(sh_audio->afmt)==4) { + if(dca_resample_init_float(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->nch)) break; + } else { + if(dca_resample_init(mpxp_dca_state,mpxp_dca_accel,flags,sh_audio->nch)) break; + } + --sh_audio->nch; /* try to decrease no. of channels*/ + } + if(sh_audio->nch<=0){ + MSG_ERR("dca: no resampler. try different channel setup!\n"); + return MPXP_False; + } + return MPXP_Ok; } - if(sh_audio->nch<=0){ - MSG_ERR("dca: no resampler. try different channel setup!\n"); - return 0; - } - return 1; -} void uninit(sh_audio_t *sh) { - mp_free(sh->context); + mp_free(sh->context); } MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); - switch(cmd) - { - case ADCTRL_RESYNC_STREAM: - sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return MPXP_True; - case ADCTRL_SKIP_FRAME: - { - float pts; - dca_fillbuff(sh,&pts); // skip AC3 frame - return MPXP_True; + switch(cmd) { + case ADCTRL_RESYNC_STREAM: + sh->a_in_buffer_len=0; // reset ACM/DShow audio buffer + return MPXP_True; + case ADCTRL_SKIP_FRAME: { + float pts; + dca_fillbuff(sh,&pts); // skip AC3 frame + return MPXP_True; } - default: - return MPXP_Unknown; + default: + return MPXP_Unknown; } - return MPXP_Unknown; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dmo.c =================================================================== --- mplayerxp/libmpcodecs/ad_dmo.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_dmo.c 2012-11-09 11:43:47 UTC (rev 310) @@ -12,12 +12,11 @@ #include "ad_internal.h" #include "ad_msg.h" -static const ad_info_t info = -{ - "Win32/DMO decoders", - "dmo", - "A'rpi", - "build-in" +static const ad_info_t info = { + "Win32/DMO decoders", + "dmo", + "A'rpi", + "build-in" }; static const config_t options[] = { @@ -26,42 +25,39 @@ LIBAD_EXTERN(dmo) - #include "loader/dmo/DMO_AudioDecoder.h" -typedef struct dmo_priv_s -{ - float pts; - DMO_AudioDecoder* ds_adec; +typedef struct dmo_priv_s { + float pts; + DMO_AudioDecoder* ds_adec; }priv_t; -static int init(sh_audio_t *sh) +static MPXP_Rc init(sh_audio_t *sh) { - UNUSED(sh); - return 1; + UNUSED(sh); + return MPXP_Ok; } -static int preinit(sh_audio_t *sh_audio) +static MPXP_Rc preinit(sh_audio_t *sh_audio) { - priv_t*priv; - int chans=(mp_conf.ao_channels==sh_audio->wf->nChannels) ? - mp_conf.ao_channels : (sh_audio->wf->nChannels>=2 ? 2 : 1); - if(!(sh_audio->context=mp_malloc(sizeof(priv_t)))) return 0; - priv=sh_audio->context; - if(!(priv->ds_adec=DMO_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf,chans))) - { - MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name); - mp_free(sh_audio->context); - return 0; - } + priv_t*priv; + int chans=(mp_conf.ao_channels==sh_audio->wf->nChannels) ? + mp_conf.ao_channels : (sh_audio->wf->nChannels>=2 ? 2 : 1); + if(!(sh_audio->context=mp_malloc(sizeof(priv_t)))) return MPXP_False; + priv=sh_audio->context; + if(!(priv->ds_adec=DMO_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf,chans))) { + MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name); + mp_free(sh_audio->context); + return MPXP_False; + } sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; sh_audio->nch=chans; sh_audio->rate=sh_audio->wf->nSamplesPerSec; sh_audio->audio_in_minsize=4*sh_audio->wf->nBlockAlign; if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192; sh_audio->audio_out_minsize=4*16384; - MSG_V("INFO: Win32/DMO audio codec init OK!\n"); - return 1; + MSG_V("INFO: Win32/DMO audio codec init OK!\n"); + return MPXP_Ok; } static void uninit(sh_audio_t *sh) @@ -73,23 +69,21 @@ static MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { - int skip; - UNUSED(arg); - switch(cmd) - { - case ADCTRL_SKIP_FRAME: - { + int skip; + UNUSED(arg); + switch(cmd) { + case ADCTRL_SKIP_FRAME: { float pts; - skip=sh_audio->wf->nBlockAlign; - if(skip<16){ - skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); - if(skip<16) skip=16; - } - demux_read_data_r(sh_audio->ds,NULL,skip,&pts); - return MPXP_True; + skip=sh_audio->wf->nBlockAlign; + if(skip<16){ + skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); + if(skip<16) skip=16; + } + demux_read_data_r(sh_audio->ds,NULL,skip,&pts); + return MPXP_True; } } - return MPXP_Unknown; + return MPXP_Unknown; } static unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dshow.c =================================================================== --- mplayerxp/libmpcodecs/ad_dshow.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_dshow.c 2012-11-09 11:43:47 UTC (rev 310) @@ -9,12 +9,11 @@ #include "loader/dshow/DS_AudioDecoder.h" #include "codecs_ld.h" -static const ad_info_t info = -{ - "Win32/DirectShow decoders", - "dshow", - "Nickols_K", - "build-in" +static const ad_info_t info = { + "Win32/DirectShow decoders", + "dshow", + "Nickols_K", + "build-in" }; static const config_t options[] = { @@ -23,70 +22,66 @@ LIBAD_EXTERN(dshow) -typedef struct dshow_priv_s -{ - float pts; - DS_AudioDecoder* ds_adec; +typedef struct dshow_priv_s { + float pts; + DS_AudioDecoder* ds_adec; }priv_t; -int init(sh_audio_t *sh) +MPXP_Rc init(sh_audio_t *sh) { UNUSED(sh); - return 1; + return MPXP_Ok; } -int preinit(sh_audio_t *sh_audio) +MPXP_Rc preinit(sh_audio_t *sh_audio) { - priv_t *priv; - if(!(sh_audio->context=mp_malloc(sizeof(priv_t)))) return 0; - priv=sh_audio->context; - if(!(priv->ds_adec=DS_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf))) - { - MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name); - mp_free(sh_audio->context); - return 0; - } - sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; - sh_audio->nch=sh_audio->wf->nChannels; - sh_audio->rate=sh_audio->wf->nSamplesPerSec; - sh_audio->audio_in_minsize=2*sh_audio->wf->nBlockAlign; - if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192; - sh_audio->audio_out_minsize=16384; - MSG_V("INFO: Win32/DShow init OK!\n"); - return 1; + priv_t *priv; + if(!(sh_audio->context=mp_malloc(sizeof(priv_t)))) return 0; + priv=sh_audio->context; + if(!(priv->ds_adec=DS_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf))) { + MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name); + mp_free(sh_audio->context); + return MPXP_False; + } + sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; + sh_audio->nch=sh_audio->wf->nChannels; + sh_audio->rate=sh_audio->wf->nSamplesPerSec; + sh_audio->audio_in_minsize=2*sh_audio->wf->nBlockAlign; + if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192; + sh_audio->audio_out_minsize=16384; + MSG_V("INFO: Win32/DShow init OK!\n"); + return MPXP_Ok; } void uninit(sh_audio_t *sh) { - priv_t* priv = sh->context; - DS_AudioDecoder_Destroy(priv->ds_adec); - mp_free(priv); + priv_t* priv = sh->context; + DS_AudioDecoder_Destroy(priv->ds_adec); + mp_free(priv); } MPXP_Rc control(sh_audio_t *sh_audio,int cmd,any_t* arg, ...) { - int skip; + int skip; UNUSED(arg); - switch(cmd) - { - case ADCTRL_RESYNC_STREAM: - sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer - return MPXP_True; - case ADCTRL_SKIP_FRAME: - { - float pts; - skip=sh_audio->wf->nBlockAlign; - if(skip<16){ - skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); - if(skip<16) skip=16; - } - demux_read_data_r(sh_audio->ds,NULL,skip,&pts); + switch(cmd) { + case ADCTRL_RESYNC_STREAM: + sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer + return MPXP_True; + case ADCTRL_SKIP_FRAME: { + float pts; + skip=sh_audio->wf->nBlockAlign; + if(skip<16){ + skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); + if(skip<16) skip=16; + } + demux_read_data_r(sh_audio->ds,NULL,skip,&pts); } return MPXP_True; - default: - return MPXP_Unknown; + default: + return MPXP_Unknown; } - return MPXP_Unknown; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_dvdpcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-09 11:43:47 UTC (rev 310) @@ -5,12 +5,11 @@ #include "osdep/bswap.h" #include "libao2/afmt.h" -static const ad_info_t info = -{ - "Uncompressed DVD/VOB LPCM audio decoder", - "dvdpcm", - "Nickols_K", - "build-in" +static const ad_info_t info = { + "Uncompressed DVD/VOB LPCM audio decoder", + "dvdpcm", + "Nickols_K", + "build-in" }; static const config_t options[] = { @@ -19,7 +18,7 @@ LIBAD_EXTERN(dvdpcm) -int init(sh_audio_t *sh) +MPXP_Rc init(sh_audio_t *sh) { /* DVD PCM Audio:*/ sh->i_bps = 0; @@ -28,23 +27,23 @@ unsigned char h=sh->codecdata[1]; sh->nch=1+(h&7); switch((h>>4)&3){ - case 0: sh->rate=48000;break; - case 1: sh->rate=96000;break; - case 2: sh->rate=44100;break; - case 3: sh->rate=32000;break; + case 0: sh->rate=48000;break; + case 1: sh->rate=96000;break; + case 2: sh->rate=44100;break; + case 3: sh->rate=32000;break; } switch ((h >> 6) & 3) { - case 0: - sh->afmt = AFMT_S16_BE; - break; - case 1: - //sh->afmt = AFMT_S20_BE; - sh->i_bps = sh->nch * sh->rate * 5 / 2; - case 2: - sh->afmt = AFMT_S24_BE; - break; - default: - sh->afmt = AFMT_S16_BE; + case 0: + sh->afmt = AFMT_S16_BE; + break; + case 1: + //sh->afmt = AFMT_S20_BE; + sh->i_bps = sh->nch * sh->rate * 5 / 2; + case 2: + sh->afmt = AFMT_S24_BE; + break; + default: + sh->afmt = AFMT_S16_BE; } } else { // use defaults: @@ -54,13 +53,13 @@ } if (!sh->i_bps) sh->i_bps = afmt2bps(sh->afmt) * sh->nch * sh->rate; - return 1; + return MPXP_Ok; } -int preinit(sh_audio_t *sh) +MPXP_Rc preinit(sh_audio_t *sh) { - sh->audio_out_minsize=2048; - return 1; + sh->audio_out_minsize=2048; + return MPXP_Ok; } void uninit(sh_audio_t *sh) @@ -70,22 +69,20 @@ MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { - int skip; - UNUSED(arg); - switch(cmd) - { - case ADCTRL_SKIP_FRAME: - { - float pts; - skip=sh->i_bps/16; - skip=skip&(~3); - demux_read_data_r(sh->ds,NULL,skip,&pts); - return MPXP_True; - } - default: - return MPXP_Unknown; + int skip; + UNUSED(arg); + switch(cmd) { + case ADCTRL_SKIP_FRAME: { + float pts; + skip=sh->i_bps/16; + skip=skip&(~3); + demux_read_data_r(sh->ds,NULL,skip,&pts); + return MPXP_True; + } + default: + return MPXP_Unknown; } - return MPXP_Unknown; + return MPXP_Unknown; } unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_faad.c =================================================================== --- mplayerxp/libmpcodecs/ad_faad.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_faad.c 2012-11-09 11:43:47 UTC (rev 310) @@ -23,12 +23,11 @@ #include "libao2/audio_out.h" #include "postproc/af.h" -static const ad_info_t info = -{ - "AAC (MPEG2/4 Advanced Audio Coding)", - "faad", - "Felix Buenemann", - "http://www.audiocoding.com/faad2.html" +static const ad_info_t info = { + "AAC (MPEG2/4 Advanced Audio Coding)", + "faad", + "Felix Buenemann", + "http://www.audiocoding.com/faad2.html" }; static const config_t options[] = { @@ -37,14 +36,12 @@ LIBAD_EXTERN(faad) -typedef struct faad_priv_s -{ +typedef struct faad_priv_s { float pts; }priv_t; typedef any_t*NeAACDecHandle; -typedef struct NeAACDecConfiguration -{ +typedef struct NeAACDecConfiguration { unsigned char defObjectType; unsigned long defSampleRate; unsigned char outputFormat; @@ -53,8 +50,8 @@ unsigned char dontUpSampleImplicitSBR; } NeAACDecConfiguration, *NeAACDecConfigurationPtr; struct NeAACDecFrameInfo; -typedef struct NeAACDecFrameInfo -{ + +typedef struct NeAACDecFrameInfo { unsigned long bytesconsumed; unsigned long samples; unsigned char channels; @@ -109,25 +106,25 @@ static NeAACDecConfigurationPtr (*NEAACDECAPI NeAACDecGetCurrentConfiguration_ptr)(NeAACDecHandle hDecoder); #define NeAACDecGetCurrentConfiguration(a) (*NeAACDecGetCurrentConfiguration_ptr)(a) static unsigned char NEAACDECAPI (*NeAACDecSetConfiguration_ptr)(NeAACDecHandle hDecoder, - NeAACDecConfigurationPtr config); + NeAACDecConfigurationPtr config); #define NeAACDecSetConfiguration(a,b) (*NeAACDecSetConfiguration_ptr)(a,b) static long (*NEAACDECAPI NeAACDecInit_ptr)(NeAACDecHandle hDecoder, - unsigned char *buffer, - unsigned long buffer_size, - unsigned long *samplerate, - unsigned char *channels); + unsigned char *buffer, + unsigned long buffer_size, + unsigned long *samplerate, + unsigned char *channels); #define NeAACDecInit(a,b,c,d,e) (*NeAACDecInit_ptr)(a,b,c,d,e) static char (*NEAACDECAPI NeAACDecInit2_ptr)(NeAACDecHandle hDecoder, unsigned char *pBuffer, - unsigned long SizeOfDecoderSpecificInfo, - unsigned long *samplerate, unsigned char *channels); + unsigned long SizeOfDecoderSpecificInfo, + unsigned long *samplerate, unsigned char *channels); #define NeAACDecInit2(a,b,c,d,e) (*NeAACDecInit2_ptr)(a,b,c,d,e) static void (*NEAACDECAPI NeAACDecClose_ptr)(NeAACDecHandle hDecoder); #define NeAACDecClose(a) (*NeAACDecClose_ptr)(a) static any_t* (*NEAACDECAPI NeAACDecDecode_ptr)(NeAACDecHandle hDecoder, - NeAACDecFrameInfo *hInfo, - unsigned char *buffer, - unsigned long buffer_size); + NeAACDecFrameInfo *hInfo, + unsigned char *buffer, + unsigned long buffer_size); #define NeAACDecDecode(a,b,c,d) (*NeAACDecDecode_ptr)(a,b,c,d) static char* (*NEAACDECAPI NeAACDecGetErrorMessage_ptr)(unsigned char errcode); #define NeAACDecGetErrorMessage(a) (*NeAACDecGetErrorMessage_ptr)(a) @@ -138,52 +135,51 @@ static NeAACDecFrameInfo NeAAC_finfo; static any_t*dll_handle; -static int load_dll(const char *libname) +static MPXP_Rc load_dll(const char *libname) { - if(!(dll_handle=ld_codec(libname,mpcodecs_ad_faad.info->url))) return 0; - NeAACDecOpen_ptr = ld_sym(dll_handle,"NeAACDecOpen"); - NeAACDecGetCurrentConfiguration_ptr = ld_sym(dll_handle,"NeAACDecGetCurrentConfiguration"); - NeAACDecSetConfiguration_ptr = ld_sym(dll_handle,"NeAACDecSetConfiguration"); - NeAACDecInit_ptr = ld_sym(dll_handle,"NeAACDecInit"); - NeAACDecInit2_ptr = ld_sym(dll_handle,"NeAACDecInit2"); - NeAACDecClose_ptr = ld_sym(dll_handle,"NeAACDecClose"); - NeAACDecDecode_ptr = ld_sym(dll_handle,"NeAACDecDecode"); - NeAACDecGetErrorMessage_ptr = ld_sym(dll_handle,"NeAACDecGetErrorMessage"); - return NeAACDecOpen_ptr && NeAACDecGetCurrentConfiguration_ptr && + if(!(dll_handle=ld_codec(libname,mpcodecs_ad_faad.info->url))) return 0; + NeAACDecOpen_ptr = ld_sym(dll_handle,"NeAACDecOpen"); + NeAACDecGetCurrentConfiguration_ptr = ld_sym(dll_handle,"NeAACDecGetCurrentConfiguration"); + NeAACDecSetConfiguration_ptr = ld_sym(dll_handle,"NeAACDecSetConfiguration"); + NeAACDecInit_ptr = ld_sym(dll_handle,"NeAACDecInit"); + NeAACDecInit2_ptr = ld_sym(dll_handle,"NeAACDecInit2"); + NeAACDecClose_ptr = ld_sym(dll_handle,"NeAACDecClose"); + NeAACDecDecode_ptr = ld_sym(dll_handle,"NeAACDecDecode"); + NeAACDecGetErrorMessage_ptr = ld_sym(dll_handle,"NeAACDecGetErrorMessage"); + return (NeAACDecOpen_ptr && NeAACDecGetCurrentConfiguration_ptr && NeAACDecInit_ptr && NeAACDecInit2_ptr && NeAACDecGetCurrentConfiguration_ptr && - NeAACDecClose_ptr && NeAACDecDecode_ptr && NeAACDecGetErrorMessage_ptr; + NeAACDecClose_ptr && NeAACDecDecode_ptr && NeAACDecGetErrorMessage_ptr)? + MPXP_Ok:MPXP_False; } - -static int preinit(sh_audio_t *sh) +static MPXP_Rc preinit(sh_audio_t *sh) { - sh->audio_out_minsize=8192*FAAD_MAX_CHANNELS; - sh->audio_in_minsize=FAAD_BUFFLEN; - if(!(sh->context=mp_malloc(sizeof(priv_t)))) return 0; - return load_dll("libfaad"SLIBSUFFIX); + sh->audio_out_minsize=8192*FAAD_MAX_CHANNELS; + sh->audio_in_minsize=FAAD_BUFFLEN; + if(!(sh->context=mp_malloc(sizeof(priv_t)))) return MPXP_False; + return load_dll("libfaad"SLIBSUFFIX); } -static int init(sh_audio_t *sh) +static MPXP_Rc init(sh_audio_t *sh) { - unsigned long NeAAC_samplerate; - unsigned char NeAAC_channels; - float pts; - int NeAAC_init; - NeAACDecConfigurationPtr NeAAC_conf; - if(!(NeAAC_hdec = NeAACDecOpen(mp_data->mplayer_accel))) - { - MSG_WARN("FAAD: Failed to open the decoder!\n"); // XXX: deal with cleanup! - return 0; - } - // If we don't get the ES descriptor, try manual config - if(!sh->codecdata_len && sh->wf) { - sh->codecdata_len = sh->wf->cbSize; - sh->codecdata = (char*)(sh->wf+1); - MSG_DBG2("FAAD: codecdata extracted from WAVEFORMATEX\n"); - } - NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); - if(sh->rate) NeAAC_conf->defSampleRate = sh->rate; + unsigned long NeAAC_samplerate; + unsigned char NeAAC_channels; + float pts; + int NeAAC_init; + NeAACDecConfigurationPtr NeAAC_conf; + if(!(NeAAC_hdec = NeAACDecOpen(mp_data->mplayer_accel))) { + MSG_WARN("FAAD: Failed to open the decoder!\n"); // XXX: deal with cleanup! + return MPXP_False; + } + // If we don't get the ES descriptor, try manual config + if(!sh->codecdata_len && sh->wf) { + sh->codecdata_len = sh->wf->cbSize; + sh->codecdata = (char*)(sh->wf+1); + MSG_DBG2("FAAD: codecdata extracted from WAVEFORMATEX\n"); + } + NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); + if(sh->rate) NeAAC_conf->defSampleRate = sh->rate; #ifdef WORDS_BIGENDIAN #define NeAAC_FMT32 AFMT_S32_BE #define NeAAC_FMT24 AFMT_S24_BE @@ -193,78 +189,73 @@ #define NeAAC_FMT24 AFMT_S24_LE #define NeAAC_FMT16 AFMT_S16_LE #endif - /* Set the maximal quality */ - /* This is useful for expesive audio cards */ - if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == MPXP_Ok || - af_query_fmt(sh->afilter,NeAAC_FMT32) == MPXP_Ok || - af_query_fmt(sh->afilter,NeAAC_FMT24) == MPXP_Ok) - { - sh->afmt=AFMT_FLOAT32; - NeAAC_conf->outputFormat=FAAD_FMT_FLOAT; - } - else - { - sh->afmt=NeAAC_FMT16; - NeAAC_conf->outputFormat=FAAD_FMT_16BIT; - } - /* Set the default object type and samplerate */ - NeAACDecSetConfiguration(NeAAC_hdec, NeAAC_conf); - if(!sh->codecdata_len) { - - sh->a_in_buffer_len = demux_read_data_r(sh->ds, sh->a_in_buffer, sh->a_in_buffer_size,&pts); - - /* init the codec */ - NeAAC_init = NeAACDecInit(NeAAC_hdec, sh->a_in_buffer, - sh->a_in_buffer_len, &NeAAC_samplerate, &NeAAC_channels); - - sh->a_in_buffer_len -= (NeAAC_init > 0)?NeAAC_init:0; // how many bytes init consumed - // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi - - } else { // We have ES DS in codecdata - NeAAC_init = NeAACDecInit2(NeAAC_hdec, sh->codecdata, - sh->codecdata_len, &NeAAC_samplerate, &NeAAC_channels); - } - if(NeAAC_init < 0) { - MSG_WARN("FAAD: Failed to initialize the decoder!\n"); // XXX: deal with cleanup! - NeAACDecClose(NeAAC_hdec); - // XXX: mp_free a_in_buffer here or in uninit? - return 0; - } else { - NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); - sh->nch = NeAAC_channels; - sh->rate = NeAAC_samplerate; - switch(NeAAC_conf->outputFormat){ - default: - case FAAD_FMT_16BIT: sh->afmt=bps2afmt(2); break; - case FAAD_FMT_24BIT: sh->afmt=bps2afmt(3); break; - case FAAD_FMT_FLOAT: - case FAAD_FMT_32BIT: sh->afmt=bps2afmt(4); break; + /* Set the maximal quality */ + /* This is useful for expesive audio cards */ + if(af_query_fmt(sh->afilter,AFMT_FLOAT32) == MPXP_Ok || + af_query_fmt(sh->afilter,NeAAC_FMT32) == MPXP_Ok || + af_query_fmt(sh->afilter,NeAAC_FMT24) == MPXP_Ok) { + sh->afmt=AFMT_FLOAT32; + NeAAC_conf->outputFormat=FAAD_FMT_FLOAT; + } else { + sh->afmt=NeAAC_FMT16; + NeAAC_conf->outputFormat=FAAD_FMT_16BIT; } - MSG_V("FAAD: Decoder init done (%dBytes)!\n", sh->a_in_buffer_len); // XXX: remove or move to debug! - MSG_V("FAAD: Negotiated samplerate: %dHz channels: %d bps: %d\n", NeAAC_samplerate, NeAAC_channels,afmt2bps(sh->afmt)); - //sh->o_bps = sh->samplesize*NeAAC_channels*NeAAC_samplerate; - if(!sh->i_bps) { - MSG_WARN("FAAD: compressed input bitrate missing, assuming 128kbit/s!\n"); - sh->i_bps = 128*1000/8; // XXX: HACK!!! ::atmos - } else - MSG_V("FAAD: got %dkbit/s bitrate from MP4 header!\n",sh->i_bps*8/1000); - } - return 1; + /* Set the default object type and samplerate */ + NeAACDecSetConfiguration(NeAAC_hdec, NeAAC_conf); + if(!sh->codecdata_len) { + sh->a_in_buffer_len = demux_read_data_r(sh->ds, sh->a_in_buffer, sh->a_in_buffer_size,&pts); + /* init the codec */ + NeAAC_init = NeAACDecInit(NeAAC_hdec, sh->a_in_buffer, + sh->a_in_buffer_len, &NeAAC_samplerate, + &NeAAC_channels); + sh->a_in_buffer_len -= (NeAAC_init > 0)?NeAAC_init:0; // how many bytes init consumed + // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi + } else { // We have ES DS in codecdata + NeAAC_init = NeAACDecInit2(NeAAC_hdec, sh->codecdata, + sh->codecdata_len, + &NeAAC_samplerate, + &NeAAC_channels); + } + if(NeAAC_init < 0) { + MSG_WARN("FAAD: Failed to initialize the decoder!\n"); // XXX: deal with cleanup! + NeAACDecClose(NeAAC_hdec); + // XXX: mp_free a_in_buffer here or in uninit? + return MPXP_False; + } else { + NeAAC_conf = NeAACDecGetCurrentConfiguration(NeAAC_hdec); + sh->nch = NeAAC_channels; + sh->rate = NeAAC_samplerate; + switch(NeAAC_conf->outputFormat){ + default: + case FAAD_FMT_16BIT: sh->afmt=bps2afmt(2); break; + case FAAD_FMT_24BIT: sh->afmt=bps2afmt(3); break; + case FAAD_FMT_FLOAT: + case FAAD_FMT_32BIT: sh->afmt=bps2afmt(4); break; + } + MSG_V("FAAD: Decoder init done (%dBytes)!\n", sh->a_in_buffer_len); // XXX: remove or move to debug! + MSG_V("FAAD: Negotiated samplerate: %dHz channels: %d bps: %d\n", NeAAC_samplerate, NeAAC_channels,afmt2bps(sh->afmt)); + //sh->o_bps = sh->samplesize*NeAAC_channels*NeAAC_samplerate; + if(!sh->i_bps) { + MSG_WARN("FAAD: compressed input bitrate missing, assuming 128kbit/s!\n"); + sh->i_bps = 128*1000/8; // XXX: HACK!!! ::atmos + } else MSG_V("FAAD: got %dkbit/s bitrate from MP4 header!\n",sh->i_bps*8/1000); + } + return MPXP_Ok; } static void uninit(sh_audio_t *sh) { - MSG_V("FAAD: Closing decoder!\n"); - NeAACDecClose(NeAAC_hdec); - mp_free(sh->context); + MSG_V("FAAD: Closing decoder!\n"); + NeAACDecClose(NeAAC_hdec); + mp_free(sh->context); } static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { - UNUSED(sh); - UNUSED(cmd); - UNUSED(arg); - return MPXP_Unknown; + UNUSED(sh); + UNUSED(cmd); + UNUSED(arg); + return MPXP_Unknown; } static unsigned decode(sh_audio_t *sh,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) Modified: mplayerxp/libmpcodecs/ad_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-09 11:43:47 UTC (rev 310) @@ -19,12 +19,15 @@ #include "libavformat/riff.h" #include "codecs_ld.h" -static int acodec_inited; +typedef struct priv_s { + AVCodecContext *lavc_ctx; +}priv_t; struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t* sh) { unsigned i; struct codecs_st* acodec = NULL; const char *what="AVCodecID"; + priv_t* priv=sh->context; enum AVCodecID id = ff_codec_get_id(ff_codec_wav_tags,sh->wtag); if (id <= 0) { prn_err: @@ -33,10 +36,11 @@ ,sh->wtag); return 0; } - if(!acodec_inited){ + if(!priv){ + priv=mp_mallocz(sizeof(priv_t)); + sh->context=priv; // avcodec_init(); avcodec_register_all(); - acodec_inited=1; } AVCodec *codec=avcodec_find_decoder(id); if(!codec) { what="AVCodec"; goto prn_err; } @@ -57,12 +61,11 @@ #define FF_INPUT_BUFFER_PADDING_SIZE 8 #endif -static const ad_info_t info = -{ - "FFmpeg/libavcodec audio decoders", - "ffmpeg", - "Nickols_K", - "build-in" +static const ad_info_t info = { + "FFmpeg/libavcodec audio decoders", + "ffmpeg", + "Nickols_K", + "build-in" }; static const config_t options[] = { @@ -71,105 +74,104 @@ LIBAD_EXTERN(ffmpeg) -int preinit(sh_audio_t *sh) +MPXP_Rc preinit(sh_audio_t *sh) { - sh->audio_out_minsize=AVCODEC_MAX_AUDIO_FRAME_SIZE; - return 1; + sh->audio_out_minsize=AVCODEC_MAX_AUDIO_FRAME_SIZE; + return MPXP_Ok; } -int init(sh_audio_t *sh_audio) +MPXP_Rc init(sh_audio_t *sh_audio) { - int x; - float pts; - AVCodec *lavc_codec=NULL; - AVCodecContext *lavc_context; - MSG_V("FFmpeg's libavcodec audio codec\n"); - if(!acodec_inited){ + int x; + float pts; + AVCodec *lavc_codec=NULL; + priv_t* priv=sh_audio->context; + MSG_V("FFmpeg's libavcodec audio codec\n"); + if(!priv){ + priv=mp_mallocz(sizeof(priv_t)); + sh_audio->context=priv; // avcodec_init(); avcodec_register_all(); - acodec_inited=1; } lavc_codec = (AVCodec *)avcodec_find_decoder_by_name(sh_audio->codec->dll_name); - if(!lavc_codec){ + if(!lavc_codec) { MSG_ERR(MSGTR_MissingLAVCcodec,sh_audio->codec->dll_name); - return 0; + return MPXP_False; } - lavc_context = avcodec_alloc_context3(lavc_codec); - sh_audio->context = lavc_context; - if(sh_audio->wf) - { - lavc_context->channels = sh_audio->wf->nChannels; - lavc_context->sample_rate = sh_audio->wf->nSamplesPerSec; - lavc_context->bit_rate = sh_audio->wf->nAvgBytesPerSec * 8; - lavc_context->block_align = sh_audio->wf->nBlockAlign; - lavc_context->bits_per_coded_sample = sh_audio->wf->wBitsPerSample; + priv->lavc_ctx = avcodec_alloc_context3(lavc_codec); + if(sh_audio->wf) { + priv->lavc_ctx->channels = sh_audio->wf->nChannels; + priv->lavc_ctx->sample_rate = sh_audio->wf->nSamplesPerSec; + priv->lavc_ctx->bit_rate = sh_audio->wf->nAvgBytesPerSec * 8; + priv->lavc_ctx->block_align = sh_audio->wf->nBlockAlign; + priv->lavc_ctx->bits_per_coded_sample = sh_audio->wf->wBitsPerSample; /* alloc extra data */ if (sh_audio->wf->cbSize > 0) { - lavc_context->extradata = mp_malloc(sh_audio->wf->cbSize+FF_INPUT_BUFFER_PADDING_SIZE); - lavc_context->extradata_size = sh_audio->wf->cbSize; - memcpy(lavc_context->extradata, (char *)sh_audio->wf + sizeof(WAVEFORMATEX), - lavc_context->extradata_size); + priv->lavc_ctx->extradata = mp_malloc(sh_audio->wf->cbSize+FF_INPUT_BUFFER_PADDING_SIZE); + priv->lavc_ctx->extradata_size = sh_audio->wf->cbSize; + memcpy(priv->lavc_ctx->extradata, (char *)sh_audio->wf + sizeof(WAVEFORMATEX), + priv->lavc_ctx->extradata_size); } } // for QDM2 - if (sh_audio->codecdata_len && sh_audio->codecdata && !lavc_context->extradata) - { - lavc_context->extradata = mp_malloc(sh_audio->codecdata_len); - lavc_context->extradata_size = sh_audio->codecdata_len; - memcpy(lavc_context->extradata, (char *)sh_audio->codecdata, - lavc_context->extradata_size); + if (sh_audio->codecdata_len && sh_audio->codecdata && !priv->lavc_ctx->extradata) { + priv->lavc_ctx->extradata = mp_malloc(sh_audio->codecdata_len); + priv->lavc_ctx->extradata_size = sh_audio->codecdata_len; + memcpy(priv->lavc_ctx->extradata, (char *)sh_audio->codecdata, + priv->lavc_ctx->extradata_size); } - lavc_context->codec_tag = sh_audio->wtag; - lavc_context->codec_type = lavc_codec->type; - lavc_context->codec_id = lavc_codec->id; + priv->lavc_ctx->codec_tag = sh_audio->wtag; + priv->lavc_ctx->codec_type = lavc_codec->type; + priv->lavc_ctx->codec_id = lavc_codec->id; /* open it */ - if (avcodec_open2(lavc_context, lavc_codec, NULL) < 0) { - MSG_ERR( MSGTR_CantOpenCodec); - return 0; + if (avcodec_open2(priv->lavc_ctx, lavc_codec, NULL) < 0) { + MSG_ERR( MSGTR_CantOpenCodec); + return MPXP_False; } - MSG_V("INFO: libavcodec init OK!\n"); + MSG_V("INFO: libavcodec init OK!\n"); - // Decode at least 1 byte: (to get header filled) - x=decode(sh_audio,sh_audio->a_buffer,1,sh_audio->a_buffer_size,&pts); - if(x>0) sh_audio->a_buffer_len=x; + // Decode at least 1 byte: (to get header filled) + x=decode(sh_audio,sh_audio->a_buffer,1,sh_audio->a_buffer_size,&pts); + if(x>0) sh_audio->a_buffer_len=x; - sh_audio->nch=lavc_context->channels; - sh_audio->rate=lavc_context->sample_rate; - switch(lavc_context->sample_fmt) { - case AV_SAMPLE_FMT_U8: ///< unsigned 8 bits - sh_audio->afmt=AFMT_U8; - break; - default: - case AV_SAMPLE_FMT_S16: ///< signed 16 bits - sh_audio->afmt=AFMT_S16_LE; - break; - case AV_SAMPLE_FMT_S32: ///< signed 32 bits - sh_audio->afmt=AFMT_S32_LE; - break; - case AV_SAMPLE_FMT_FLT: ///< float - sh_audio->afmt=AFMT_FLOAT32; - break; - } - sh_audio->i_bps=lavc_context->bit_rate/8; - return 1; + sh_audio->nch=priv->lavc_ctx->channels; + sh_audio->rate=priv->lavc_ctx->sample_rate; + switch(priv->lavc_ctx->sample_fmt) { + case AV_SAMPLE_FMT_U8: ///< unsigned 8 bits + sh_audio->afmt=AFMT_U8; + break; + default: + case AV_SAMPLE_FMT_S16: ///< signed 16 bits + sh_audio->afmt=AFMT_S16_LE; + break; + case AV_SAMPLE_FMT_S32: ///< signed 32 bits + sh_audio->afmt=AFMT_S32_LE; + break; + case AV_SAMPLE_FMT_FLT: ///< float + sh_audio->afmt=AFMT_FLOAT32; + break; + } + sh_audio->i_bps=priv->lavc_ctx->bit_rate/8; + return MPXP_Ok; } void uninit(sh_audio_t *sh) { - AVCodecContext *lavc_context=sh->context; - avcodec_close(sh->context); - if (lavc_context->extradata) mp_free(lavc_context->extradata); - mp_free(lavc_context); - acodec_inited=0; + priv_t* priv=sh->context; + avcodec_close(priv->lavc_ctx); + if (priv->lavc_ctx->extradata) mp_free(priv->lavc_ctx->extradata); + mp_free(priv->lavc_ctx); + mp_free(priv); + sh->context=NULL; } MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...) { UNUSED(arg); - AVCodecContext *lavc_context = sh->context; + priv_t* priv = sh->context; switch(cmd){ case ADCTRL_RESYNC_STREAM: - avcodec_flush_buffers(lavc_context); + avcodec_flush_buffers(priv->lavc_ctx); return MPXP_True; default: break; } @@ -178,6 +180,7 @@ unsigned decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) { + priv_t* priv = sh_audio->context; unsigned char *start=NULL; int y; unsigned len=0; @@ -191,7 +194,7 @@ av_init_packet(&pkt); pkt.data = start; pkt.size = x; - y=avcodec_decode_audio3(sh_audio->context,(int16_t*)buf,&len2,&pkt); + y=avcodec_decode_audio3(priv->lavc_ctx,(int16_t*)buf,&len2,&pkt); if(y<0){ MSG_V("lavc_audio: error\n");break; } if(y<x) { Modified: mplayerxp/libmpcodecs/ad_hwac3.c =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-09 08:44:54 UTC (rev 309) +++ mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-09 11:43:47 UTC (rev 310) @@ -21,17 +21,15 @@ }priv_t; struct hwac3info { - int bitrate, framesize, samplerate, bsmod; + unsigned bitrate, framesize, samplerate, bsmod; }; -struct frmsize_s -{ - unsigned short bit_rate; - unsigned short frm_size[3]; +struct frmsize_s { + unsigned short bit_rate; + unsigned short frm_size[3]; }; -static const struct frmsize_s frmsizecod_tbl[64] = -{ +static const struct frmsize_s frmsizecod_tbl[64] = { { 32 ,{64 ,69 ,96 } }, { 32 ,{64 ,70 ,96 } }, { 40 ,{80 ,87 ,120 } }, @@ -73,69 +71,69 @@ }; struct syncframe { - struct syncinfo { - unsigned char syncword[2]; - unsigned char crc1[2]; - unsigned char code; - } syncinfo; - struct bsi { - unsigned char bsidmod; - unsigned char acmod; - } bsi; + struct syncinfo { + unsigned char syncword[2]; + unsigned char crc1[2]; + unsigned char code; + } syncinfo; + struct bsi { + unsigned char bsidmod; + unsigned char acmod; + } bsi; }; -int ac3_iec958_build_burst(int length, int data_type, int big_endian, unsigned char * data, unsigned char * out) +unsigned ac3_iec958_build_burst(unsigned length, unsigned data_type, unsigned big_endian, unsigned char * data, unsigned char * out) { - out[0] = 0x72; - out[1] = 0xF8; - out[2] = 0x1F; - out[3] = 0x4E; - out[4] = (length) ? data_type : 0; /* & 0x1F; */ - out[5] = 0x00; - out[6] = (length << 3) & 0xFF; - out[7] = (length >> 5) & 0xFF; - if (big_endian) - swab(data, out + 8, length); - else - memcpy(out + 8, data, length); - memset(out + 8 + length, 0, 6144 - 8 - length); - return 6144; + out[0] = 0x72; + out[1] = 0xF8; + out[2] = 0x1F; + out[3] = 0x4E; + out[4] = (length) ? data_type : 0; /* & 0x1F; */ + out[5] = 0x00; + out[6] = (length << 3) & 0xFF; + out[7] = (length >> 5) & 0xFF; + if (big_endian) + swab(data, out + 8, length); + else + memcpy(out + 8, data, length); + memset(out + 8 + length, 0, 6144 - 8 - length); + return 6144; } -int ac3_iec958_parse_syncinfo(unsigned char *buf, int size, struct hwac3info *ai, int *skipped) +int ac3_iec958_parse_syncinfo(unsigned char *buf, unsigned size, struct hwac3info *ai, unsigned *skipped) { - int samplerates[4] = { 48000, 44100, 32000, -1 }; - unsigned short _sync = 0; - unsigned char *ptr = buf; - int fscod, frmsizecod; - struct syncframe *sf; - - _sync = buf[0] << 8; - _sync |= buf[1]; - ptr = buf + 2; - *skipped = 0; - while (_sync != 0xb77 && *skipped < size - 8) { - _sync <<= 8; - _sync |= *ptr; - ptr++; - *skipped += 1; - } - if (_sync != 0xb77) - return -1; - ptr -= 2; - sf = (struct syncframe *) ptr; - fscod = (sf->syncinfo.code >> 6) & 0x03; - ai->samplerate = samplerates[fscod]; - if (ai->samplerate == -1) - return -1; - frmsizecod = sf->syncinfo.code & 0x3f; - ai->framesize = 2 * frmsizecod_tbl[frm... [truncated message content] |
From: <nic...@us...> - 2012-11-09 12:30:04
|
Revision: 311 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=311&view=rev Author: nickols_k Date: 2012-11-09 12:29:58 +0000 (Fri, 09 Nov 2012) Log Message: ----------- use more MPXP_Rc Modified Paths: -------------- mplayerxp/libmpcodecs/dec_audio.c mplayerxp/libmpcodecs/dec_audio.h mplayerxp/mplayerxp.c mplayerxp/postproc/af.c mplayerxp/postproc/af.h Modified: mplayerxp/libmpcodecs/dec_audio.c =================================================================== --- mplayerxp/libmpcodecs/dec_audio.c 2012-11-09 11:43:47 UTC (rev 310) +++ mplayerxp/libmpcodecs/dec_audio.c 2012-11-09 12:29:58 UTC (rev 311) @@ -38,7 +38,7 @@ return NULL; } -int mpca_init(sh_audio_t *sh_audio) +MPXP_Rc mpca_init(sh_audio_t *sh_audio) { unsigned i; for (i=0; mpcodecs_ad_drivers[i] != NULL; i++) @@ -47,7 +47,7 @@ } if(!mpadec){ MSG_ERR(MSGTR_CODEC_BAD_AFAMILY,sh_audio->codec->codec_name, sh_audio->codec->driver_name); - return 0; // no such driver + return MPXP_False; // no such driver } /* reset in/out buffer size/pointer: */ @@ -72,7 +72,7 @@ if(mpadec->preinit(sh_audio)!=MPXP_Ok) { MSG_ERR(MSGTR_CODEC_CANT_PREINITA); - return 0; + return MPXP_False; } /* allocate audio in buffer: */ @@ -93,14 +93,14 @@ sh_audio->a_buffer=mp_mallocz(sh_audio->a_buffer_size); if(!sh_audio->a_buffer) { MSG_ERR(MSGTR_CantAllocAudioBuf); - return 0; + return MPXP_False; } sh_audio->a_buffer_len=0; if(mpadec->init(sh_audio)!=MPXP_Ok){ MSG_WARN(MSGTR_CODEC_CANT_INITA); mpca_uninit(sh_audio); /* mp_free buffers */ - return 0; + return MPXP_False; } sh_audio->inited=1; @@ -108,7 +108,7 @@ if(!sh_audio->nch || !sh_audio->rate) { MSG_WARN(MSGTR_UnknownAudio); mpca_uninit(sh_audio); /* mp_free buffers */ - return 0; + return MPXP_False; } if(!sh_audio->o_bps) @@ -128,7 +128,7 @@ ,mpadec->info->driver_name ,sh_audio->codec->dll_name ,sh_audio->i_bps,sh_audio->o_bps); - return 1; + return MPXP_Ok; } void mpca_uninit(sh_audio_t *sh_audio) @@ -152,7 +152,7 @@ } /* Init audio filters */ -int mpca_preinit_filters(sh_audio_t *sh_audio, +MPXP_Rc mpca_preinit_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, unsigned in_format, unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format){ char strbuf[200]; @@ -176,9 +176,9 @@ afs->input.rate,afs->input.nch,(afs->input.format&MPAF_BPS_MASK)*8); // let's autoprobe it! - if(0 != af_init(afs,0)){ + if(MPXP_Ok != af_init(afs,0)){ mp_free(afs); - return 0; // failed :( + return MPXP_False; // failed :( } *out_samplerate=afs->output.rate; @@ -193,11 +193,11 @@ sh_audio->af_bps); sh_audio->afilter=(any_t*)afs; - return 1; + return MPXP_Ok; } /* Init audio filters */ -int mpca_init_filters(sh_audio_t *sh_audio, +MPXP_Rc mpca_init_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, unsigned out_minsize, unsigned out_maxsize){ @@ -223,10 +223,10 @@ afs->output.rate,afs->output.nch,(afs->output.format&MPAF_BPS_MASK)*8,ao_format_name(mpaf_format_encode(afs->output.format))); // let's autoprobe it! - if(0 != af_init(afs,1)){ + if(MPXP_Ok != af_init(afs,1)){ sh_audio->afilter=NULL; mp_free(afs); - return 0; // failed :( + return MPXP_False; // failed :( } // allocate the a_out_* buffers: @@ -247,11 +247,11 @@ af_showconf(afs->first); sh_audio->afilter=(any_t*)afs; sh_audio->afilter_inited=1; - return 1; + return MPXP_Ok; } /* Init audio filters */ -int mpca_reinit_filters(sh_audio_t *sh_audio, +MPXP_Rc mpca_reinit_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, unsigned out_minsize, unsigned out_maxsize) Modified: mplayerxp/libmpcodecs/dec_audio.h =================================================================== --- mplayerxp/libmpcodecs/dec_audio.h 2012-11-09 11:43:47 UTC (rev 310) +++ mplayerxp/libmpcodecs/dec_audio.h 2012-11-09 12:29:58 UTC (rev 311) @@ -2,10 +2,11 @@ #define DEC_AUDIO_H_INCLUDED 1 #include "ad.h" #include "xmpcore/mp_aframe.h" +#include "xmpcore/xmp_enums.h" // dec_audio.c: extern const ad_functions_t* __FASTCALL__ mpca_find_driver(const char *name); -extern int __FASTCALL__ mpca_init(sh_audio_t *sh_audio); +extern MPXP_Rc __FASTCALL__ mpca_init(sh_audio_t *sh_audio); extern void __FASTCALL__ mpca_uninit(sh_audio_t *sh_audio); extern unsigned __FASTCALL__ mpca_decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts); extern void __FASTCALL__ mpca_resync_stream(sh_audio_t *sh_audio); @@ -13,14 +14,14 @@ struct codecs_st; extern struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t*); -extern int mpca_init_filters(sh_audio_t *sh_audio, +extern MPXP_Rc mpca_init_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, unsigned out_samplerate, unsigned out_channels,mpaf_format_e out_format, unsigned out_minsize, unsigned out_maxsize); -extern int mpca_preinit_filters(sh_audio_t *sh_audio, +extern MPXP_Rc mpca_preinit_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, unsigned in_format, unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format); -extern int mpca_reinit_filters(sh_audio_t *sh_audio, +extern MPXP_Rc mpca_reinit_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, unsigned out_minsize, unsigned out_maxsize); Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-09 11:43:47 UTC (rev 310) +++ mplayerxp/mplayerxp.c 2012-11-09 12:29:58 UTC (rev 311) @@ -1236,12 +1236,12 @@ ao_data->channels=mp_conf.ao_channels?mp_conf.ao_channels:sh_audio->nch; ao_data->format=sh_audio->afmt; #if 1 - if(!mpca_preinit_filters(sh_audio, + if(mpca_preinit_filters(sh_audio, // input: (int)(sh_audio->rate), sh_audio->nch, sh_audio->afmt, // output: - &ao_data->samplerate, &ao_data->channels, &ao_data->format)){ + &ao_data->samplerate, &ao_data->channels, &ao_data->format)!=MPXP_Ok){ MSG_ERR("Audio filter chain preinit failed\n"); } else { MSG_V("AF_pre: %dHz %dch (%s) afmt=%08X sh_audio_min=%i\n", @@ -1258,11 +1258,11 @@ } else { priv->inited_flags|=INITED_AO; MP_UNIT("af_init"); - if(!mpca_init_filters(sh_audio, + if(mpca_init_filters(sh_audio, sh_audio->rate, sh_audio->nch, sh_audio->afmt, ao_data->samplerate, ao_data->channels, ao_data->format, - ao_data->outburst*4, ao_data->buffersize)) { + ao_data->outburst*4, ao_data->buffersize)!=MPXP_Ok) { MSG_ERR("No matching audio filter found!\n"); } } @@ -1870,7 +1870,7 @@ if(sh_audio){ MSG_V("Initializing audio codec...\n"); - if(!mpca_init(sh_audio)){ + if(mpca_init(sh_audio)!=MPXP_Ok){ MSG_ERR(MSGTR_CouldntInitAudioCodec); sh_audio=d_audio->sh=NULL; } else { Modified: mplayerxp/postproc/af.c =================================================================== --- mplayerxp/postproc/af.c 2012-11-09 11:43:47 UTC (rev 310) +++ mplayerxp/postproc/af.c 2012-11-09 12:29:58 UTC (rev 311) @@ -351,11 +351,11 @@ format given in "s", otherwise the output fromat in the last filter will be copied "s". The return value is 0 if success and -1 if failure */ -int af_init(af_stream_t* s, int force_output) +MPXP_Rc af_init(af_stream_t* s, int force_output) { char *af_name,*af_next; // Sanity check - if(!s) return -1; + if(!s) return MPXP_False; // Precaution in case caller is misbehaving s->input.audio = s->output.audio = NULL; @@ -370,7 +370,7 @@ // Add all filters in the list (if there are any) if(!s->cfg.list){ // To make automatic format conversion work if(!af_append(s,s->first,"ao2")) - return -1; + return MPXP_False; } else{ af_name=s->cfg.list; @@ -378,21 +378,21 @@ af_next=strchr(af_name,','); if(af_next) { *af_next=0; af_next++; } if(!af_append(s,s->last,af_name)) - return -1; + return MPXP_False; af_name=af_next; } } } - if(strcmp(s->last->info->name,"ao2")!=0) if(!af_append(s,s->last,"ao2")) return -1; + if(strcmp(s->last->info->name,"ao2")!=0) if(!af_append(s,s->last,"ao2")) return MPXP_False; // Init filters if(MPXP_Ok != af_reinit(s,s->first)) - return -1; + return MPXP_False; // If force_output isn't set do not compensate for output format if(!force_output){ memcpy(&s->output, s->last->data, sizeof(mp_aframe_t)); - return 0; + return MPXP_Ok; } // Check output format @@ -417,7 +417,7 @@ // Init the new filter if(!af || (MPXP_Ok != af->control(af,AF_CONTROL_RESAMPLE_RATE, &(s->output.rate)))) - return -1; + return MPXP_False; // Use lin int if the user wants fast if ((AF_INIT_TYPE_MASK & s->cfg.force) == AF_INIT_FAST) { char args[32]; @@ -425,7 +425,7 @@ af->control(af, AF_CONTROL_COMMAND_LINE, args); } if(MPXP_Ok != af_reinit(s,af)) - return -1; + return MPXP_False; } // Check number of output channels fix if not OK @@ -437,9 +437,9 @@ af = af_append(s,s->last,"channels"); // Init the new filter if(!af || (MPXP_Ok != af->control(af,AF_CONTROL_CHANNELS,&(s->output.nch)))) - return -1; + return MPXP_False; if(MPXP_Ok != af_reinit(s,af)) - return -1; + return MPXP_False; } // Check output format fix if not OK @@ -450,14 +450,14 @@ af = s->last; // Init the new filter if(!af ||(MPXP_Ok != af->control(af,AF_CONTROL_FORMAT,&s->output.format))) - return -1; + return MPXP_False; if(MPXP_Ok != af_reinit(s,af)) - return -1; + return MPXP_False; } // Re init again just in case if(MPXP_Ok != af_reinit(s,s->first)) - return -1; + return MPXP_False; if((s->last->data->format != s->output.format) || (s->last->data->nch != s->output.nch) || @@ -466,10 +466,10 @@ MSG_ERR("[libaf] Unable to setup filter system can not" " meet sound-card demands, please send bugreport. \n"); af_uninit(s); - return -1; + return MPXP_False; } } - return 0; + return MPXP_Ok; } /* Add filter during execution. This function adds the filter "name" Modified: mplayerxp/postproc/af.h =================================================================== --- mplayerxp/postproc/af.h 2012-11-09 11:43:47 UTC (rev 310) +++ mplayerxp/postproc/af.h 2012-11-09 12:29:58 UTC (rev 311) @@ -111,7 +111,7 @@ format given in "s", otherwise the output format in the last filter will be copied "s". The return value is 0 if success and -1 if failure */ -int af_init(af_stream_t* s, int force_output); +MPXP_Rc af_init(af_stream_t* s, int force_output); // Uninit and remove all filters void af_uninit(af_stream_t* s); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-09 14:05:05
|
Revision: 312 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=312&view=rev Author: nickols_k Date: 2012-11-09 14:04:48 +0000 (Fri, 09 Nov 2012) Log Message: ----------- use more universal MPXP_Rc Modified Paths: -------------- mplayerxp/libao2/ao_alsa9.c mplayerxp/libao2/ao_arts.c mplayerxp/libao2/ao_esd.c mplayerxp/libao2/ao_jack.c mplayerxp/libao2/ao_nas.c mplayerxp/libao2/ao_null.c mplayerxp/libao2/ao_openal.c mplayerxp/libao2/ao_oss.c mplayerxp/libao2/ao_sdl.c mplayerxp/libao2/ao_wav.c mplayerxp/libao2/audio_out.c mplayerxp/libao2/audio_out.h mplayerxp/libvo/screenshot.c mplayerxp/libvo/screenshot.h mplayerxp/libvo/video_out.c mplayerxp/libvo/video_out.h mplayerxp/libvo/video_out_internal.h mplayerxp/libvo/vo_dga.c mplayerxp/libvo/vo_fbdev.c mplayerxp/libvo/vo_null.c mplayerxp/libvo/vo_opengl.c mplayerxp/libvo/vo_sdl.c mplayerxp/libvo/vo_vesa.c mplayerxp/libvo/vo_x11.c mplayerxp/libvo/vo_xv.c mplayerxp/libvo/vo_xvidix.c mplayerxp/libvo/vosub_vidix.c mplayerxp/libvo/vosub_vidix.h mplayerxp/libvo/x11_common.c mplayerxp/libvo/x11_common.h mplayerxp/mplayerxp.c mplayerxp/postproc/vf_vo.c Modified: mplayerxp/libao2/ao_alsa9.c =================================================================== --- mplayerxp/libao2/ao_alsa9.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_alsa9.c 2012-11-09 14:04:48 UTC (rev 312) @@ -310,7 +310,7 @@ open & setup audio device return: 1=success 0=fail */ -static int __FASTCALL__ init(ao_data_t* ao,unsigned flags) +static MPXP_Rc __FASTCALL__ init(ao_data_t* ao,unsigned flags) { int err; int cards = -1; @@ -341,7 +341,7 @@ if(strcmp(p+1,"-1")==0) { *p='\0'; show_caps(atoi(alsa_port)); - return 0; + return MPXP_False; } } if(alsa_port) snprintf(alsa_device,sizeof(alsa_device),"%s:%s",alsa_dev,alsa_port); @@ -352,7 +352,7 @@ if ((err = snd_card_next(&cards)) < 0 || cards < 0) { MSG_ERR("alsa-init: no soundcards found: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } if (alsa_device[0] == '\0') { @@ -360,17 +360,17 @@ if ((err = snd_pcm_info_malloc(&alsa_info)) < 0) { MSG_ERR("alsa-init: memory allocation error: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } if ((tmp_device = snd_pcm_info_get_device(alsa_info)) < 0) { MSG_ERR("alsa-init: cant get device\n"); - return 0; + return MPXP_False; } if ((tmp_subdevice = snd_pcm_info_get_subdevice(alsa_info)) < 0) { MSG_ERR("alsa-init: cant get subdevice\n"); - return 0; + return MPXP_False; } MSG_V("alsa-init: got device=%i, subdevice=%i\n", tmp_device, tmp_subdevice); @@ -401,7 +401,7 @@ if ((err = snd_pcm_open(&priv->handler, alsa_device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { MSG_ERR("alsa-init: playback open error: %s\n", snd_strerror(err)); alsa_device[0]='\0'; - return 0; + return MPXP_False; } else { block_mode = 0; str_block_mode = "block-mode"; @@ -409,7 +409,7 @@ } else { MSG_ERR("alsa-init: playback open error: %s\n", snd_strerror(err)); alsa_device[0]='\0'; - return 0; + return MPXP_False; } } alsa_device[0]='\0'; @@ -426,7 +426,7 @@ { MSG_ERR("alsa-init: unable to get initial parameters: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_params_any()\n"); if (priv_conf.mmap) { @@ -443,13 +443,13 @@ } if (err < 0) { MSG_ERR("alsa-init: unable to set access type: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } } // end switch priv->handler (spdif) - return 1; + return MPXP_Ok; } // end init -static int __FASTCALL__ configure(ao_data_t* ao,unsigned rate_hz,unsigned channels,unsigned format) +static MPXP_Rc __FASTCALL__ configure(ao_data_t* ao,unsigned rate_hz,unsigned channels,unsigned format) { priv_t*priv=ao->priv; int err,i; @@ -492,7 +492,7 @@ case -1: MSG_ERR("alsa-conf: invalid format (%s) requested - output disabled\n", ao_format_name(format)); - return 0; + return MPXP_False; default: break; } @@ -508,7 +508,7 @@ if (!(snd_pcm_hw_params_test_format(priv->handler, priv->hwparams, i))) MSG_HINT("%s ",snd_pcm_format_name(i)); MSG_HINT("\n"); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_params_set_format(%i)\n",priv->format); @@ -516,7 +516,7 @@ MSG_ERR("alsa-conf: unable to set samplerate %u: %s\n", ao->samplerate, snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_params_set_rate_near(%i)\n",ao->samplerate); @@ -525,7 +525,7 @@ MSG_ERR("alsa-conf: unable to set %u channels: %s\n", ao->channels, snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_params_set_channels(%i)\n",ao->channels); #ifdef BUFFERTIME @@ -536,7 +536,7 @@ if ((err = snd_pcm_hw_params_set_buffer_time_near(priv->handler, priv->hwparams, &alsa_buffer_time, &dir)) < 0) { MSG_ERR("alsa-init: unable to set buffer time near: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_set_buffer_time_near(%i)\n",alsa_buffer_time); @@ -545,7 +545,7 @@ /* original: alsa_buffer_time/ao->bps */ MSG_ERR("alsa-init: unable to set period time: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_set_period_time_near(%i)\n",period_time); MSG_V("alsa-init: buffer_time: %d, period_time :%d\n",alsa_buffer_time, period_time); @@ -557,14 +557,14 @@ snd_pcm_uframes_t size; if ((err = snd_pcm_hw_params_set_period_time_near(priv->handler, priv->hwparams, &period_time, &dir)) < 0) { MSG_ERR("alsa-init: unable to set period_time: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_set_period_time(%i)\n",period_time); //get chunksize if ((err = snd_pcm_hw_params_get_period_size(priv->hwparams, &size, &dir)) < 0) { MSG_ERR("alsa-init: unable to get period_size: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_get_period_size(%i)\n",size); chunk_size=size; @@ -573,7 +573,7 @@ // gets buffersize for control if ((err = snd_pcm_hw_params_get_buffer_size(priv->hwparams,&dummy)) < 0) { MSG_ERR("alsa-conf: unable to get buffersize: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } else { ao->buffersize = dummy * priv->bytes_per_sample; MSG_V("alsa-conf: got buffersize=%i\n", ao->buffersize); @@ -590,39 +590,39 @@ if ((err = snd_pcm_hw_params(priv->handler, priv->hwparams)) < 0) { MSG_ERR("alsa-conf: unable to set hw-parameters: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } MSG_DBG2("snd_pcm_hw_params()\n"); // setting sw-params (only avail-min) if noblocking mode was choosed if (priv_conf.noblock) { if ((err = snd_pcm_sw_params_current(priv->handler, priv->swparams)) < 0) { MSG_ERR("alsa-conf: unable to get parameters: %s\n",snd_strerror(err)); - return 0; + return MPXP_False; } //set min available frames to consider pcm ready (4) //increased for nonblock-mode should be set dynamically later if ((err = snd_pcm_sw_params_set_avail_min(priv->handler, priv->swparams, 4)) < 0) { MSG_ERR("alsa-conf: unable to set avail_min %s\n",snd_strerror(err)); - return 0; + return MPXP_False; } if ((err = snd_pcm_sw_params(priv->handler, priv->swparams)) < 0) { - MSG_ERR("alsa-conf: unable to install sw-params\n"); - return 0; + MSG_ERR("alsa-conf: unable to install sw-params\n"); + return MPXP_False; } }//end swparams if ((err = snd_pcm_prepare(priv->handler)) < 0) { MSG_ERR("alsa-conf: pcm prepare error: %s\n", snd_strerror(err)); - return 0; + return MPXP_False; } // end setting hw-params MSG_V("alsa-conf: %d Hz/%d channels/%d bpf/%d bytes buffer/%s\n", ao->samplerate, ao->channels, priv->bytes_per_sample, ao->buffersize, snd_pcm_format_description(priv->format)); - return 1; + return MPXP_Ok; } // end configure /* close audio device */ Modified: mplayerxp/libao2/ao_arts.c =================================================================== --- mplayerxp/libao2/ao_arts.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_arts.c 2012-11-09 14:04:48 UTC (rev 312) @@ -50,37 +50,37 @@ UNUSED(ao); UNUSED(cmd); UNUSED(arg); - return MPXP_Unknown; + return MPXP_Unknown; } -static int init(ao_data_t* ao,unsigned flags) +static MPXP_Rc init(ao_data_t* ao,unsigned flags) { - int err; - UNUSED(ao); - UNUSED(flags); + int err; + UNUSED(ao); + UNUSED(flags); - if( (err=arts_init()) ) { - MSG_ERR("[aRts] init failed: %s\n", arts_error_text(err)); - /*TODO: system("artsd -l0");*/ - return 0; - } - MSG_INFO("[aRts] connected to server\n"); - return 1; + if( (err=arts_init()) ) { + MSG_ERR("[aRts] init failed: %s\n", arts_error_text(err)); + /*TODO: system("artsd -l0");*/ + return MPXP_False; + } + MSG_INFO("[aRts] connected to server\n"); + return MPXP_Ok; } -static int __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) +static MPXP_Rc __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) { arts_stream_t stream; - unsigned frag_spec,samplesize; - /* - * arts supports 8bit unsigned and 16bit signed sample formats - * (16bit apparently in little endian format, even in the case - * when artsd runs on a big endian cpu). - * - * Unsupported formats are translated to one of these two formats - * using mplayer's audio filters. - */ - switch (format) { + unsigned frag_spec,samplesize; + /* + * arts supports 8bit unsigned and 16bit signed sample formats + * (16bit apparently in little endian format, even in the case + * when artsd runs on a big endian cpu). + * + * Unsupported formats are translated to one of these two formats + * using mplayer's audio filters. + */ + switch (format) { case AFMT_U8: case AFMT_S8: format = AFMT_U8; @@ -106,34 +106,34 @@ samplesize=2; format = AFMT_S16_LE; /* artsd always expects little endian?*/ break; - } + } - ao->format = format; - ao->channels = channels; - ao->samplerate = rate; - ao->bps = rate*channels*samplesize; + ao->format = format; + ao->channels = channels; + ao->samplerate = rate; + ao->bps = rate*channels*samplesize; - stream=arts_play_stream(rate, samplesize*8, channels, "MPlayerXP"); - ao->priv=stream; + stream=arts_play_stream(rate, samplesize*8, channels, "MPlayerXP"); + ao->priv=stream; - if(stream == NULL) { - MSG_ERR("[aRts] Can't open stream\n"); - arts_free(); - return 0; - } + if(stream == NULL) { + MSG_ERR("[aRts] Can't open stream\n"); + arts_free(); + return MPXP_False; + } - /* Set the stream to blocking: it will not block anyway, but it seems */ - /* to be working better */ - arts_stream_set(stream, ARTS_P_BLOCKING, 1); - frag_spec = ARTS_PACKET_SIZE_LOG2 | ARTS_PACKETS << 16; - arts_stream_set(stream, ARTS_P_PACKET_SETTINGS, frag_spec); - ao->buffersize = arts_stream_get(stream, ARTS_P_BUFFER_SIZE); - MSG_INFO("[aRts] Stream opened\n"); + /* Set the stream to blocking: it will not block anyway, but it seems */ + /* to be working better */ + arts_stream_set(stream, ARTS_P_BLOCKING, 1); + frag_spec = ARTS_PACKET_SIZE_LOG2 | ARTS_PACKETS << 16; + arts_stream_set(stream, ARTS_P_PACKET_SETTINGS, frag_spec); + ao->buffersize = arts_stream_get(stream, ARTS_P_BUFFER_SIZE); + MSG_INFO("[aRts] Stream opened\n"); - MSG_V("[aRts] buffersize=%u\n",ao->buffersize); - MSG_V("[aRts] buffersize=%u\n", arts_stream_get(stream, ARTS_P_PACKET_SIZE)); + MSG_V("[aRts] buffersize=%u\n",ao->buffersize); + MSG_V("[aRts] buffersize=%u\n", arts_stream_get(stream, ARTS_P_PACKET_SIZE)); - return 1; + return MPXP_Ok; } static void uninit(ao_data_t* ao) Modified: mplayerxp/libao2/ao_esd.c =================================================================== --- mplayerxp/libao2/ao_esd.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_esd.c 2012-11-09 14:04:48 UTC (rev 312) @@ -161,7 +161,7 @@ * open & setup audio device * return: 1=success 0=fail */ -static int init(ao_data_t* ao,unsigned flags) +static MPXP_Rc init(ao_data_t* ao,unsigned flags) { ao->priv=mp_mallocz(sizeof(priv_t)); priv_t*priv=ao->priv; @@ -172,13 +172,13 @@ priv->fd = esd_open_sound(server); if (priv->fd < 0) { MSG_ERR("ESD: Can't open sound: %s\n", strerror(errno)); - return 0; + return MPXP_False; } } - return 1; + return MPXP_Ok; } -static int configure(ao_data_t* ao,unsigned rate_hz,unsigned channels,unsigned format) +static MPXP_Rc configure(ao_data_t* ao,unsigned rate_hz,unsigned channels,unsigned format) { priv_t*priv=ao->priv; char *server = ao->subdevice; /* NULL for localhost */ @@ -264,7 +264,7 @@ server, ESD_CLIENT_NAME); if (priv->play_fd < 0) { MSG_ERR("ESD: Can't open play stream: %s\n", strerror(errno)); - return 0; + return MPXP_False; } /* enable non-blocking i/o on the socket connection to the esd server */ @@ -290,7 +290,7 @@ priv->samples_written = 0; priv->bytes_per_sample = bytes_per_sample; - return 1; + return MPXP_Ok; } Modified: mplayerxp/libao2/ao_jack.c =================================================================== --- mplayerxp/libao2/ao_jack.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_jack.c 2012-11-09 14:04:48 UTC (rev 312) @@ -212,18 +212,18 @@ ); } #endif -static int init(ao_data_t* ao,unsigned flags) { +static MPXP_Rc init(ao_data_t* ao,unsigned flags) { ao->priv=mp_mallocz(sizeof(priv_t)); UNUSED(flags); - return 1; + return MPXP_Ok; } -static int configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) { +static MPXP_Rc configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) { priv_t*priv=ao->priv; - const char **matching_ports = NULL; - char *port_name = NULL; - char *client_name = NULL; - int autostart = 0; + const char **matching_ports = NULL; + char *port_name = NULL; + char *client_name = NULL; + int autostart = 0; /* const opt_t subopts[] = { {"port", OPT_ARG_MSTRZ, &port_name, NULL}, @@ -233,93 +233,92 @@ {NULL} }; */ - jack_options_t open_options = JackUseExactName; - int port_flags = JackPortIsInput; - unsigned i; - priv->estimate = 1; - UNUSED(format); + jack_options_t open_options = JackUseExactName; + int port_flags = JackPortIsInput; + unsigned i; + priv->estimate = 1; + UNUSED(format); /* if (subopt_parse(ao->subdevice, subopts) != 0) { print_help(); return 0; } */ - if (channels > MAX_CHANS) { - MSG_FATAL("[JACK] Invalid number of channels: %i\n", channels); - goto err_out; - } - if (!client_name) { - client_name = mp_malloc(40); - sprintf(client_name, "MPlayerXP [%d]", getpid()); - } - if (!autostart) - open_options |= JackNoStartServer; - priv->client = jack_client_open(client_name, open_options, NULL); - if (!priv->client) { - MSG_FATAL("[JACK] cannot open server\n"); - goto err_out; - } - priv->buffer = cb_fifo_alloc(BUFFSIZE); - jack_set_process_callback(priv->client, outputaudio, ao); + if (channels > MAX_CHANS) { + MSG_FATAL("[JACK] Invalid number of channels: %i\n", channels); + goto err_out; + } + if (!client_name) { + client_name = mp_malloc(40); + sprintf(client_name, "MPlayerXP [%d]", getpid()); + } + if (!autostart) + open_options |= JackNoStartServer; + priv->client = jack_client_open(client_name, open_options, NULL); + if (!priv->client) { + MSG_FATAL("[JACK] cannot open server\n"); + goto err_out; + } + priv->buffer = cb_fifo_alloc(BUFFSIZE); + jack_set_process_callback(priv->client, outputaudio, ao); - // list matching priv->ports - if (!port_name) - port_flags |= JackPortIsPhysical; - matching_ports = jack_get_ports(priv->client, ao->subdevice, NULL, port_flags); - if (!matching_ports || !matching_ports[0]) { - MSG_FATAL("[JACK] no physical priv->ports available\n"); - goto err_out; - } - i = 1; - while (matching_ports[i]) i++; - if (channels > i) channels = i; - priv->num_ports = channels; + // list matching priv->ports + if (!port_name) + port_flags |= JackPortIsPhysical; + matching_ports = jack_get_ports(priv->client, ao->subdevice, NULL, port_flags); + if (!matching_ports || !matching_ports[0]) { + MSG_FATAL("[JACK] no physical priv->ports available\n"); + goto err_out; + } + i = 1; + while (matching_ports[i]) i++; + if (channels > i) channels = i; + priv->num_ports = channels; - // create out output priv->ports - for (i = 0; i < priv->num_ports; i++) { - char pname[30]; - snprintf(pname, 30, "out_%d", i); - priv->ports[i] = jack_port_register(priv->client, pname, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); - if (!priv->ports[i]) { - MSG_FATAL("[JACK] not enough priv->ports available\n"); - goto err_out; + // create out output priv->ports + for (i = 0; i < priv->num_ports; i++) { + char pname[30]; + snprintf(pname, 30, "out_%d", i); + priv->ports[i] = jack_port_register(priv->client, pname, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); + if (!priv->ports[i]) { + MSG_FATAL("[JACK] not enough priv->ports available\n"); + goto err_out; + } } - } - if (jack_activate(priv->client)) { - MSG_FATAL("[JACK] activate failed\n"); - goto err_out; - } - for (i = 0; i < priv->num_ports; i++) { - if (jack_connect(priv->client, jack_port_name(priv->ports[i]), matching_ports[i])) { - MSG_FATAL( "[JACK] connecting failed\n"); - goto err_out; + if (jack_activate(priv->client)) { + MSG_FATAL("[JACK] activate failed\n"); + goto err_out; } - } - rate = jack_get_sample_rate(priv->client); - priv->latency = (float)(jack_port_get_total_latency(priv->client, priv->ports[0]) + - jack_get_buffer_size(priv->client)) / (float)rate; - priv->callback_interval = 0; + for (i = 0; i < priv->num_ports; i++) { + if (jack_connect(priv->client, jack_port_name(priv->ports[i]), matching_ports[i])) { + MSG_FATAL( "[JACK] connecting failed\n"); + goto err_out; + } + } + rate = jack_get_sample_rate(priv->client); + priv->latency = (float)(jack_port_get_total_latency(priv->client, priv->ports[0]) + + jack_get_buffer_size(priv->client)) / (float)rate; + priv->callback_interval = 0; - ao->channels = channels; - ao->samplerate = rate; - ao->format = AFMT_FLOAT32; - ao->bps = channels * rate * sizeof(float); - ao->buffersize = CHUNK_SIZE * NUM_CHUNKS; - ao->outburst = CHUNK_SIZE; - mp_free(matching_ports); - mp_free(port_name); - mp_free(client_name); - return 1; + ao->channels = channels; + ao->samplerate = rate; + ao->format = AFMT_FLOAT32; + ao->bps = channels * rate * sizeof(float); + ao->buffersize = CHUNK_SIZE * NUM_CHUNKS; + ao->outburst = CHUNK_SIZE; + mp_free(matching_ports); + mp_free(port_name); + mp_free(client_name); + return MPXP_Ok; err_out: - mp_free(matching_ports); - mp_free(port_name); - mp_free(client_name); - if (priv->client) - jack_client_close(priv->client); - cb_fifo_free(priv->buffer); - priv->buffer = NULL; - return 0; + mp_free(matching_ports); + mp_free(port_name); + mp_free(client_name); + if (priv->client) jack_client_close(priv->client); + cb_fifo_free(priv->buffer); + priv->buffer = NULL; + return MPXP_False; } // close audio device Modified: mplayerxp/libao2/ao_nas.c =================================================================== --- mplayerxp/libao2/ao_nas.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_nas.c 2012-11-09 14:04:48 UTC (rev 312) @@ -66,199 +66,198 @@ #define NAS_FRAG_SIZE 4096 static const char * const nas_event_types[] = { - "Undefined", - "Undefined", - "ElementNotify", - "GrabNotify", - "MonitorNotify", - "BucketNotify", - "DeviceNotify" + "Undefined", + "Undefined", + "ElementNotify", + "GrabNotify", + "MonitorNotify", + "BucketNotify", + "DeviceNotify" }; static const char * const nas_elementnotify_kinds[] = { - "LowWater", - "HighWater", - "State", - "Unknown" + "LowWater", + "HighWater", + "State", + "Unknown" }; static const char * const nas_states[] = { - "Stop", - "Start", - "Pause", - "Any" + "Stop", + "Start", + "Pause", + "Any" }; static const char * const nas_reasons[] = { - "User", - "Underrun", - "Overrun", - "EOF", - "Watermark", - "Hardware", - "Any" + "User", + "Underrun", + "Overrun", + "EOF", + "Watermark", + "Hardware", + "Any" }; #ifdef MP_DEBUG static const char* nas_reason(unsigned int reason) { - if (reason > 6) reason = 6; - return nas_reasons[reason]; + if (reason > 6) reason = 6; + return nas_reasons[reason]; } static const char* nas_elementnotify_kind(unsigned int kind) { - if (kind > 2) kind = 3; - return nas_elementnotify_kinds[kind]; + if (kind > 2) kind = 3; + return nas_elementnotify_kinds[kind]; } static const char* nas_event_type(unsigned int type) { - if (type > 6) type = 0; - return nas_event_types[type]; + if (type > 6) type = 0; + return nas_event_types[type]; } static const char* nas_state(unsigned int state) { - if (state>3) state = 3; - return nas_states[state]; + if (state>3) state = 3; + return nas_states[state]; } #endif -static const ao_info_t info = -{ - "NAS audio output", - "nas", - "Tobias Diedrich <ran...@td...>", - "" +static const ao_info_t info = { + "NAS audio output", + "nas", + "Tobias Diedrich <ran...@td...>", + "" }; typedef struct priv_s { - AuServer *aud; - AuFlowID flow; - AuDeviceID dev; - AuFixedPoint gain; + AuServer *aud; + AuFlowID flow; + AuDeviceID dev; + AuFixedPoint gain; - unsigned int state; - int expect_underrun; + unsigned int state; + int expect_underrun; - char *client_buffer; - char *server_buffer; - unsigned int client_buffer_size; - unsigned int client_buffer_used; - unsigned int server_buffer_size; - unsigned int server_buffer_used; - pthread_mutex_t buffer_mutex; + char *client_buffer; + char *server_buffer; + unsigned int client_buffer_size; + unsigned int client_buffer_used; + unsigned int server_buffer_size; + unsigned int server_buffer_used; + pthread_mutex_t buffer_mutex; - pthread_t event_thread; - int stop_thread; + pthread_t event_thread; + int stop_thread; }priv_t; LIBAO_EXTERN(nas) static void nas_print_error(AuServer *aud, const char *prefix, AuStatus as) { - char s[100]; - AuGetErrorText(aud, as, s, 100); - MSG_ERR("ao_nas: %s: returned status %d (%s)\n", prefix, as, s); + char s[100]; + AuGetErrorText(aud, as, s, 100); + MSG_ERR("ao_nas: %s: returned status %d (%s)\n", prefix, as, s); } static int nas_readBuffer(priv_t *priv, unsigned int num) { - AuStatus as; + AuStatus as; - pthread_mutex_lock(&priv->buffer_mutex); - MSG_DBG2("ao_nas: nas_readBuffer(): num=%d client=%d/%d server=%d/%d\n", + pthread_mutex_lock(&priv->buffer_mutex); + MSG_DBG2("ao_nas: nas_readBuffer(): num=%d client=%d/%d server=%d/%d\n", num, priv->client_buffer_used, priv->client_buffer_size, priv->server_buffer_used, priv->server_buffer_size); - if (priv->client_buffer_used == 0) { - MSG_DBG2("ao_nas: buffer is empty, nothing read.\n"); - pthread_mutex_unlock(&priv->buffer_mutex); - return 0; - } - if (num > priv->client_buffer_used) - num = priv->client_buffer_used; + if (priv->client_buffer_used == 0) { + MSG_DBG2("ao_nas: buffer is empty, nothing read.\n"); + pthread_mutex_unlock(&priv->buffer_mutex); + return 0; + } + if (num > priv->client_buffer_used) + num = priv->client_buffer_used; - /* - * It is not appropriate to call AuWriteElement() here because the - * buffer is locked and delays writing to the network will cause - * other threads to block waiting for buffer_mutex. Instead the - * data is copied to "server_buffer" and written to the network - * outside of the locked section of code. - * - * (Note: Rather than these two buffers, a single circular buffer - * could eliminate the memcpy/memmove steps.) - */ - /* make sure we don't overflow the buffer */ - if (num > priv->server_buffer_size) - num = priv->server_buffer_size; - memcpy(priv->server_buffer, priv->client_buffer, num); + /* + * It is not appropriate to call AuWriteElement() here because the + * buffer is locked and delays writing to the network will cause + * other threads to block waiting for buffer_mutex. Instead the + * data is copied to "server_buffer" and written to the network + * outside of the locked section of code. + * + * (Note: Rather than these two buffers, a single circular buffer + * could eliminate the memcpy/memmove steps.) + */ + /* make sure we don't overflow the buffer */ + if (num > priv->server_buffer_size) + num = priv->server_buffer_size; + memcpy(priv->server_buffer, priv->client_buffer, num); - priv->client_buffer_used -= num; - priv->server_buffer_used += num; - memmove(priv->client_buffer, priv->client_buffer + num, priv->client_buffer_used); - pthread_mutex_unlock(&priv->buffer_mutex); + priv->client_buffer_used -= num; + priv->server_buffer_used += num; + memmove(priv->client_buffer, priv->client_buffer + num, priv->client_buffer_used); + pthread_mutex_unlock(&priv->buffer_mutex); - /* - * Now write the new buffer to the network. - */ - AuWriteElement(priv->aud, priv->flow, 0, num, priv->server_buffer, AuFalse, &as); - if (as != AuSuccess) - nas_print_error(priv->aud, "nas_readBuffer(): AuWriteElement", as); + /* + * Now write the new buffer to the network. + */ + AuWriteElement(priv->aud, priv->flow, 0, num, priv->server_buffer, AuFalse, &as); + if (as != AuSuccess) + nas_print_error(priv->aud, "nas_readBuffer(): AuWriteElement", as); - return num; + return num; } static int nas_writeBuffer(priv_t *priv, any_t*data, unsigned int len) { - pthread_mutex_lock(&priv->buffer_mutex); - MSG_DBG2("ao_nas: nas_writeBuffer(): len=%d client=%d/%d server=%d/%d\n", - len, priv->client_buffer_used, priv->client_buffer_size, - priv->server_buffer_used, priv->server_buffer_size); + pthread_mutex_lock(&priv->buffer_mutex); + MSG_DBG2("ao_nas: nas_writeBuffer(): len=%d client=%d/%d server=%d/%d\n", + len, priv->client_buffer_used, priv->client_buffer_size, + priv->server_buffer_used, priv->server_buffer_size); - /* make sure we don't overflow the buffer */ - if (len > priv->client_buffer_size - priv->client_buffer_used) - len = priv->client_buffer_size - priv->client_buffer_used; - memcpy(priv->client_buffer + priv->client_buffer_used, data, len); - priv->client_buffer_used += len; + /* make sure we don't overflow the buffer */ + if (len > priv->client_buffer_size - priv->client_buffer_used) + len = priv->client_buffer_size - priv->client_buffer_used; + memcpy(priv->client_buffer + priv->client_buffer_used, data, len); + priv->client_buffer_used += len; - pthread_mutex_unlock(&priv->buffer_mutex); + pthread_mutex_unlock(&priv->buffer_mutex); - return len; + return len; } static int nas_empty_event_queue(priv_t *priv) { - AuEvent ev; - int result = 0; + AuEvent ev; + int result = 0; - while (AuScanForTypedEvent(priv->aud, AuEventsQueuedAfterFlush, + while (AuScanForTypedEvent(priv->aud, AuEventsQueuedAfterFlush, AuTrue, AuEventTypeElementNotify, &ev)) { - AuDispatchEvent(priv->aud, &ev); - result = 1; - } - return result; + AuDispatchEvent(priv->aud, &ev); + result = 1; + } + return result; } static any_t*nas_event_thread_start(any_t*data) { - priv_t *priv = data; + priv_t *priv = data; - do { - MSG_DBG2( - "ao_nas: event thread heartbeat (state=%s)\n", - nas_state(priv->state)); - nas_empty_event_queue(priv); - usleep(1000); - } while (!priv->stop_thread); + do { + MSG_DBG2( + "ao_nas: event thread heartbeat (state=%s)\n", + nas_state(priv->state)); + nas_empty_event_queue(priv); + usleep(1000); + } while (!priv->stop_thread); - return NULL; + return NULL; } static AuBool nas_error_handler(AuServer* aud, AuErrorEvent* ev) { - char s[100]; - AuGetErrorText(aud, ev->error_code, s, 100); - MSG_ERR( "ao_nas: error [%s]\n" + char s[100]; + AuGetErrorText(aud, ev->error_code, s, 100); + MSG_ERR( "ao_nas: error [%s]\n" "error_code: %d\n" "request_code: %d\n" "minor_code: %d\n", @@ -267,7 +266,7 @@ ev->request_code, ev->minor_code); - return AuTrue; + return AuTrue; } static AuBool nas_event_handler(AuServer *aud, AuEvent *ev, AuEventHandlerRec *hnd) @@ -414,125 +413,125 @@ } -static int init(ao_data_t* ao,unsigned flags) +static MPXP_Rc init(ao_data_t* ao,unsigned flags) { ao->priv=mp_mallocz(sizeof(priv_t)); priv_t* priv=ao->priv; UNUSED(flags); - return 1; + return MPXP_Ok; } // open & setup audio device // return: 1=success 0=fail -static int configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) +static MPXP_Rc configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) { priv_t* priv=ao->priv; - AuElement elms[3]; - AuStatus as; - char str[256]; - unsigned char auformat = nas_aformat_to_auformat(&format); - unsigned bytes_per_sample = channels * AuSizeofFormat(auformat); - unsigned buffer_size; - char *server; + AuElement elms[3]; + AuStatus as; + char str[256]; + unsigned char auformat = nas_aformat_to_auformat(&format); + unsigned bytes_per_sample = channels * AuSizeofFormat(auformat); + unsigned buffer_size; + char *server; - ao->format = format; - ao->samplerate = rate; - ao->channels = channels; - ao->outburst = NAS_FRAG_SIZE; - ao->bps = rate * bytes_per_sample; - buffer_size = ao->bps; /* buffer 1 second */ + ao->format = format; + ao->samplerate = rate; + ao->channels = channels; + ao->outburst = NAS_FRAG_SIZE; + ao->bps = rate * bytes_per_sample; + buffer_size = ao->bps; /* buffer 1 second */ - MSG_V("ao2: %d Hz %d chans %s\n",rate,channels, + MSG_V("ao2: %d Hz %d chans %s\n",rate,channels, mpaf_fmt2str(format,str,256)); - /* - * round up to multiple of NAS_FRAG_SIZE - * divide by 3 first because of 2:1 split - */ - buffer_size = (buffer_size/3 + NAS_FRAG_SIZE-1) & ~(NAS_FRAG_SIZE-1); - ao->buffersize = buffer_size*3; + /* + * round up to multiple of NAS_FRAG_SIZE + * divide by 3 first because of 2:1 split + */ + buffer_size = (buffer_size/3 + NAS_FRAG_SIZE-1) & ~(NAS_FRAG_SIZE-1); + ao->buffersize = buffer_size*3; - priv->client_buffer_size = buffer_size*2; - priv->client_buffer = mp_malloc(priv->client_buffer_size); - priv->server_buffer_size = buffer_size; - priv->server_buffer = mp_malloc(priv->server_buffer_size); + priv->client_buffer_size = buffer_size*2; + priv->client_buffer = mp_malloc(priv->client_buffer_size); + priv->server_buffer_size = buffer_size; + priv->server_buffer = mp_malloc(priv->server_buffer_size); - if (!bytes_per_sample) { - MSG_ERR("ao_nas: init(): Zero bytes per sample -> nosound\n"); - return 0; - } + if (!bytes_per_sample) { + MSG_ERR("ao_nas: init(): Zero bytes per sample -> nosound\n"); + return MPXP_False; + } - if (!(server = getenv("AUDIOSERVER")) && + if (!(server = getenv("AUDIOSERVER")) && !(server = getenv("DISPLAY"))) { - MSG_ERR("ao_nas: init(): AUDIOSERVER environment variable not set -> nosound\n"); - return 0; - } + MSG_ERR("ao_nas: init(): AUDIOSERVER environment variable not set -> nosound\n"); + return MPXP_False; + } - MSG_V("ao_nas: init(): Using audioserver %s\n", server); + MSG_V("ao_nas: init(): Using audioserver %s\n", server); - priv->aud = AuOpenServer(server, 0, NULL, 0, NULL, NULL); - if (!priv->aud) { - MSG_ERR("ao_nas: init(): Can't open nas audio server -> nosound\n"); - return 0; - } + priv->aud = AuOpenServer(server, 0, NULL, 0, NULL, NULL); + if (!priv->aud) { + MSG_ERR("ao_nas: init(): Can't open nas audio server -> nosound\n"); + return MPXP_False; + } - while (channels>0) { - priv->dev = nas_find_device(priv->aud, channels); - if (priv->dev != AuNone && - ((priv->flow = AuCreateFlow(priv->aud, NULL)) != 0)) - break; - channels--; - } + while (channels>0) { + priv->dev = nas_find_device(priv->aud, channels); + if (priv->dev != AuNone && + ((priv->flow = AuCreateFlow(priv->aud, NULL)) != 0)) + break; + channels--; + } - if (priv->flow == 0) { - MSG_ERR("ao_nas: init(): Can't find a suitable output device -> nosound\n"); - AuCloseServer(priv->aud); - priv->aud = 0; - return 0; - } + if (priv->flow == 0) { + MSG_ERR("ao_nas: init(): Can't find a suitable output device -> nosound\n"); + AuCloseServer(priv->aud); + priv->aud = 0; + return MPXP_False; + } - AuMakeElementImportClient(elms, rate, auformat, channels, AuTrue, + AuMakeElementImportClient(elms, rate, auformat, channels, AuTrue, buffer_size / bytes_per_sample, (buffer_size - NAS_FRAG_SIZE) / bytes_per_sample, 0, NULL); - priv->gain = AuFixedPointFromFraction(1, 1); - AuMakeElementMultiplyConstant(elms+1, 0, priv->gain); - AuMakeElementExportDevice(elms+2, 1, priv->dev, rate, + priv->gain = AuFixedPointFromFraction(1, 1); + AuMakeElementMultiplyConstant(elms+1, 0, priv->gain); + AuMakeElementExportDevice(elms+2, 1, priv->dev, rate, AuUnlimitedSamples, 0, NULL); - AuSetElements(priv->aud, priv->flow, AuTrue, sizeof(elms)/sizeof(*elms), elms, &as); - if (as != AuSuccess) { - nas_print_error(priv->aud, "init(): AuSetElements", as); - AuCloseServer(priv->aud); - priv->aud = 0; - return 0; - } - AuRegisterEventHandler(priv->aud, AuEventHandlerIDMask | + AuSetElements(priv->aud, priv->flow, AuTrue, sizeof(elms)/sizeof(*elms), elms, &as); + if (as != AuSuccess) { + nas_print_error(priv->aud, "init(): AuSetElements", as); + AuCloseServer(priv->aud); + priv->aud = 0; + return MPXP_False; + } + AuRegisterEventHandler(priv->aud, AuEventHandlerIDMask | AuEventHandlerTypeMask, AuEventTypeElementNotify, priv->flow, nas_event_handler, (AuPointer) priv); - AuSetErrorHandler(priv->aud, nas_error_handler); - priv->state=AuStateStop; - priv->expect_underrun=0; + AuSetErrorHandler(priv->aud, nas_error_handler); + priv->state=AuStateStop; + priv->expect_underrun=0; - pthread_mutex_init(&priv->buffer_mutex, NULL); - pthread_create(&priv->event_thread, NULL, &nas_event_thread_start, priv); + pthread_mutex_init(&priv->buffer_mutex, NULL); + pthread_create(&priv->event_thread, NULL, &nas_event_thread_start, priv); - return 1; + return MPXP_Ok; } // close audio device static void uninit(ao_data_t* ao){ priv_t* priv=ao->priv; - MSG_DBG3("ao_nas: uninit()\n"); + MSG_DBG3("ao_nas: uninit()\n"); - priv->expect_underrun = 1; - while (priv->state != AuStateStop) usleep(1000); - priv->stop_thread = 1; - pthread_join(priv->event_thread, NULL); - AuCloseServer(priv->aud); - priv->aud = 0; - mp_free(priv->client_buffer); - mp_free(priv->server_buffer); + priv->expect_underrun = 1; + while (priv->state != AuStateStop) usleep(1000); + priv->stop_thread = 1; + pthread_join(priv->event_thread, NULL); + AuCloseServer(priv->aud); + priv->aud = 0; + mp_free(priv->client_buffer); + mp_free(priv->server_buffer); mp_free(priv); } Modified: mplayerxp/libao2/ao_null.c =================================================================== --- mplayerxp/libao2/ao_null.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_null.c 2012-11-09 14:04:48 UTC (rev 312) @@ -106,7 +106,7 @@ // open & setup audio device // return: 1=success 0=fail -static int __FASTCALL__ init(ao_data_t* ao,unsigned flags){ +static MPXP_Rc __FASTCALL__ init(ao_data_t* ao,unsigned flags){ ao->priv=mp_mallocz(sizeof(priv_t)); priv_t*priv = (priv_t*)ao->priv; char *null_dev=NULL,*mode=NULL; @@ -118,10 +118,10 @@ //if(priv->fd) priv->fast_mode=1; if(strcmp(mode,"wav")==0) priv->wav_mode=1; } //end parsing ao->subdevice - return 1; + return MPXP_Ok; } -static int __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format){ +static MPXP_Rc __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format){ priv_t*priv = (priv_t*)ao->priv; unsigned bits; ao->buffersize= 0xFFFFF; @@ -173,7 +173,7 @@ fwrite(&wavhdr,sizeof(wavhdr),1,priv->fd); wavhdr.file_length=wavhdr.data_length=0; } - return 1; + return MPXP_Ok; } // close audio device Modified: mplayerxp/libao2/ao_openal.c =================================================================== --- mplayerxp/libao2/ao_openal.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_openal.c 2012-11-09 14:04:48 UTC (rev 312) @@ -91,34 +91,34 @@ ); } #endif -static int init(ao_data_t* ao,unsigned flags) +static MPXP_Rc init(ao_data_t* ao,unsigned flags) { ao->priv=mp_mallocz(sizeof(priv_t)); priv_t*priv=ao->priv; - UNUSED(flags); - priv->alc_dev = alcOpenDevice(NULL); - if (!priv->alc_dev) { - MSG_ERR("[OpenAL] could not open device\n"); - return 0; - } - return 1; + UNUSED(flags); + priv->alc_dev = alcOpenDevice(NULL); + if (!priv->alc_dev) { + MSG_ERR("[OpenAL] could not open device\n"); + return MPXP_False; + } + return MPXP_Ok; } -static int configure(ao_data_t* ao,unsigned rate, unsigned channels, unsigned format) +static MPXP_Rc configure(ao_data_t* ao,unsigned rate, unsigned channels, unsigned format) { priv_t*priv=ao->priv; - ALCcontext *ctx = NULL; - float position[3] = {0, 0, 0}; - float direction[6] = {0, 0, 1, 0, -1, 0}; - float sppos[MAX_CHANS][3] = { - {-1, 0, 0.5}, {1, 0, 0.5}, - {-1, 0, -1}, {1, 0, -1}, - {0, 0, 1}, {0, 0, 0.1}, - {-1, 0, 0}, {1, 0, 0}, - }; - ALCint freq = 0; - ALCint attribs[] = {ALC_FREQUENCY, rate, 0, 0}; - unsigned i; + ALCcontext *ctx = NULL; + float position[3] = {0, 0, 0}; + float direction[6] = {0, 0, 1, 0, -1, 0}; + float sppos[MAX_CHANS][3] = { + {-1, 0, 0.5}, {1, 0, 0.5}, + {-1, 0, -1}, {1, 0, -1}, + {0, 0, 1}, {0, 0, 0.1}, + {-1, 0, 0}, {1, 0, 0}, + }; + ALCint freq = 0; + ALCint attribs[] = {ALC_FREQUENCY, rate, 0, 0}; + unsigned i; /* const opt_t subopts[] = { {NULL} @@ -128,39 +128,38 @@ return 0; } */ - UNUSED(format); - if (channels > MAX_CHANS) { - MSG_ERR("[OpenAL] Invalid number of channels: %i\n", channels); - goto err_out; - } - ctx = alcCreateContext(priv->alc_dev, attribs); - alcMakeContextCurrent(ctx); - alListenerfv(AL_POSITION, position); - alListenerfv(AL_ORIENTATION, direction); - alGenSources(channels, priv->sources); - for (i = 0; i < channels; i++) { - priv->cur_buf[i] = 0; - priv->unqueue_buf[i] = 0; - alGenBuffers(NUM_BUF, priv->buffers[i]); - alSourcefv(priv->sources[i], AL_POSITION, sppos[i]); - alSource3f(priv->sources[i], AL_VELOCITY, 0, 0, 0); - } - if (channels == 1) - alSource3f(priv->sources[0], AL_POSITION, 0, 0, 1); - ao->channels = channels; - alcGetIntegerv(priv->alc_dev, ALC_FREQUENCY, 1, &freq); - if (alcGetError(priv->alc_dev) == ALC_NO_ERROR && freq) - rate = freq; - ao->samplerate = rate; - ao->format = AFMT_S16_NE; - ao->bps = channels * rate * 2; - ao->buffersize = CHUNK_SIZE * NUM_BUF; - ao->outburst = channels * CHUNK_SIZE; - priv->tmpbuf = mp_malloc(CHUNK_SIZE); - return 1; - + UNUSED(format); + if (channels > MAX_CHANS) { + MSG_ERR("[OpenAL] Invalid number of channels: %i\n", channels); + goto err_out; + } + ctx = alcCreateContext(priv->alc_dev, attribs); + alcMakeContextCurrent(ctx); + alListenerfv(AL_POSITION, position); + alListenerfv(AL_ORIENTATION, direction); + alGenSources(channels, priv->sources); + for (i = 0; i < channels; i++) { + priv->cur_buf[i] = 0; + priv->unqueue_buf[i] = 0; + alGenBuffers(NUM_BUF, priv->buffers[i]); + alSourcefv(priv->sources[i], AL_POSITION, sppos[i]); + alSource3f(priv->sources[i], AL_VELOCITY, 0, 0, 0); + } + if (channels == 1) + alSource3f(priv->sources[0], AL_POSITION, 0, 0, 1); + ao->channels = channels; + alcGetIntegerv(priv->alc_dev, ALC_FREQUENCY, 1, &freq); + if (alcGetError(priv->alc_dev) == ALC_NO_ERROR && freq) + rate = freq; + ao->samplerate = rate; + ao->format = AFMT_S16_NE; + ao->bps = channels * rate * 2; + ao->buffersize = CHUNK_SIZE * NUM_BUF; + ao->outburst = channels * CHUNK_SIZE; + priv->tmpbuf = mp_malloc(CHUNK_SIZE); + return MPXP_Ok; err_out: - return 0; + return MPXP_False; } // close audio device Modified: mplayerxp/libao2/ao_oss.c =================================================================== --- mplayerxp/libao2/ao_oss.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_oss.c 2012-11-09 14:04:48 UTC (rev 312) @@ -196,157 +196,149 @@ } // open & setup audio device // return: 1=success 0=fail -static int __FASTCALL__ init(ao_data_t* ao,unsigned flags){ - char *mixer_channels [SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES; - UNUSED(flags); - ao->priv=mp_mallocz(sizeof(priv_t)); - priv_t*priv=ao->priv; - priv->dsp=PATH_DEV_DSP; - priv->mixer_channel=SOUND_MIXER_PCM; - priv->fd=-1; - priv->delay_method=2; - if (ao->subdevice) - { - char *p; - p=strrchr(ao->subdevice,':'); - priv->dsp = ao->subdevice; - if(p) { *p=0; p++; if(strcmp(p,"-1")==0) { show_caps(ao); return 0; } } - } +static MPXP_Rc __FASTCALL__ init(ao_data_t* ao,unsigned flags){ + char *mixer_channels [SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES; + UNUSED(flags); + ao->priv=mp_mallocz(sizeof(priv_t)); + priv_t*priv=ao->priv; + priv->dsp=PATH_DEV_DSP; + priv->mixer_channel=SOUND_MIXER_PCM; + priv->fd=-1; + priv->delay_method=2; + if (ao->subdevice) { + char *p; + p=strrchr(ao->subdevice,':'); + priv->dsp = ao->subdevice; + if(p) { *p=0; p++; if(strcmp(p,"-1")==0) { show_caps(ao); return MPXP_False; } } + } - MSG_V("audio_setup: using '%s' priv->dsp device\n", priv->dsp); - MSG_V("audio_setup: using '%s'(%s) mixer device\n", oss_mixer_device,mixer_channels[priv->mixer_channel]); + MSG_V("audio_setup: using '%s' priv->dsp device\n", priv->dsp); + MSG_V("audio_setup: using '%s'(%s) mixer device\n", oss_mixer_device,mixer_channels[priv->mixer_channel]); #ifdef __linux__ - priv->fd=open(priv->dsp, O_WRONLY | O_NONBLOCK); + priv->fd=open(priv->dsp, O_WRONLY | O_NONBLOCK); #else - priv->fd=open(priv->dsp, O_WRONLY); + priv->fd=open(priv->dsp, O_WRONLY); #endif - if(priv->fd<0){ - MSG_ERR("Can't open audio device %s: %s\n", priv->dsp, strerror(errno)); - return 0; - } + if(priv->fd<0){ + MSG_ERR("Can't open audio device %s: %s\n", priv->dsp, strerror(errno)); + return MPXP_False; + } #ifdef __linux__ /* Remove the non-blocking flag */ - if(fcntl(priv->fd, F_SETFL, 0) < 0) { - MSG_ERR("Can't make filedescriptor non-blocking: %s\n", strerror(errno)); - return 0; - } + if(fcntl(priv->fd, F_SETFL, 0) < 0) { + MSG_ERR("Can't make filedescriptor non-blocking: %s\n", strerror(errno)); + return MPXP_False; + } #endif #if defined(FD_CLOEXEC) && defined(F_SETFD) - fcntl(priv->fd, F_SETFD, FD_CLOEXEC); + fcntl(priv->fd, F_SETFD, FD_CLOEXEC); #endif - return 1; + return MPXP_Ok; } -static int __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) +static MPXP_Rc __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) { priv_t*priv=ao->priv; MSG_V("ao2: %d Hz %d chans %s\n",rate,channels, ao_format_name(format)); - if(format == AFMT_AC3) { - ao->samplerate=rate; - ioctl (priv->fd, SNDCTL_DSP_SPEED, &ao->samplerate); - } + if(format == AFMT_AC3) { + ao->samplerate=rate; + ioctl (priv->fd, SNDCTL_DSP_SPEED, &ao->samplerate); + } ac3_retry: - ao->format=format; - if( ioctl(priv->fd, SNDCTL_DSP_SETFMT, &ao->format)<0 || - ao->format != format) - { - if(format == AFMT_AC3){ - MSG_WARN("OSS-CONF: Can't set audio device %s to AC3 output, trying S16...\n", priv->dsp); + ao->format=format; + if( ioctl(priv->fd, SNDCTL_DSP_SETFMT, &ao->format)<0 || ao->format != format) { + if(format == AFMT_AC3){ + MSG_WARN("OSS-CONF: Can't set audio device %s to AC3 output, trying S16...\n", priv->dsp); #ifdef WORDS_BIGENDIAN - format=AFMT_S16_BE; + format=AFMT_S16_BE; #else - format=AFMT_S16_LE; + format=AFMT_S16_LE; #endif - goto ac3_retry; - } - else - { - MSG_ERR("OSS-CONF: Can't configure for: %s\n",ao_format_name(format)); - show_fmts(ao); - ao->format=format; - return 0; - } - } - ao->channels = channels; - if(format != AFMT_AC3) { - // We only use SNDCTL_DSP_CHANNELS for >2 channels, in case some drivers don't have it - if (ao->channels > 2) { - if ( ioctl(priv->fd, SNDCTL_DSP_CHANNELS, &ao->channels) == -1 || - ao->channels != channels ) { - MSG_ERR("OSS-CONF: Failed to set audio device to %d channels\n", channels); - return 0; - } + goto ac3_retry; + } else { + MSG_ERR("OSS-CONF: Can't configure for: %s\n",ao_format_name(format)); + show_fmts(ao); + ao->format=format; + return MPXP_False; + } } - else { - int c = ao->channels-1; - if (ioctl (priv->fd, SNDCTL_DSP_STEREO, &c) == -1) { - MSG_ERR("OSS-CONF: Failed to set audio device to %d channels\n", ao->channels); - return 0; - } - ao->channels=c+1; + ao->channels = channels; + if(format != AFMT_AC3) { + // We only use SNDCTL_DSP_CHANNELS for >2 channels, in case some drivers don't have it + if (ao->channels > 2) { + if ( ioctl(priv->fd, SNDCTL_DSP_CHANNELS, &ao->channels) == -1 || ao->channels != channels ) { + MSG_ERR("OSS-CONF: Failed to set audio device to %d channels\n", channels); + return MPXP_False; + } + } else { + int c = ao->channels-1; + if (ioctl (priv->fd, SNDCTL_DSP_STEREO, &c) == -1) { + MSG_ERR("OSS-CONF: Failed to set audio device to %d channels\n", ao->channels); + return MPXP_False; + } + ao->channels=c+1; + } + MSG_V("OSS-CONF: using %d channels (requested: %d)\n", ao->channels, channels); + // set rate + ao->samplerate=rate; + ioctl (priv->fd, SNDCTL_DSP_SPEED, &ao->samplerate); + MSG_V("OSS-CONF: using %d Hz samplerate (requested: %d)\n",ao->samplerate,rate); } - MSG_V("OSS-CONF: using %d channels (requested: %d)\n", ao->channels, channels); - // set rate - ao->samplerate=rate; - ioctl (priv->fd, SNDCTL_DSP_SPEED, &ao->samplerate); - MSG_V("OSS-CONF: using %d Hz samplerate (requested: %d)\n",ao->samplerate,rate); - } - if(ioctl(priv->fd, SNDCTL_DSP_GETOSPACE, &priv->zz)==-1){ - int r=0; - MSG_WARN("OSS-CONF: driver doesn't support SNDCTL_DSP_GETOSPACE :-(\n"); - if(ioctl(priv->fd, SNDCTL_DSP_GETBLKSIZE, &r)==-1){ - MSG_V("OSS-CONF: %d bytes/frag (mp_config.h)\n",ao->outburst); - } else { - ao->outburst=r; - MSG_V("OSS-CONF: %d bytes/frag (GETBLKSIZE)\n",ao->outburst); - } - } else { - MSG_V("OSS-CONF: frags: %3d/%d (%d bytes/frag) mp_free: %6d\n", - priv->zz.fragments, priv->zz.fragstotal, priv->zz.fragsize, priv->zz.bytes); - if(ao->buffersize==0) ao->buffersize=priv->zz.bytes; - ao->outburst=priv->zz.fragsize; - } - - if(ao->buffersize==0){ - // Measuring buffer size: - any_t* data; - ao->buffersize=0; -#ifdef HAVE_AUDIO_SELECT - data=mp_mallocz(ao->outburst); - while(ao->buffersize<0x40000){ - fd_set rfds; - struct timeval tv; - FD_ZERO(&rfds); FD_SET(priv->fd,&rfds); - tv.tv_sec=0; tv.tv_usec = 0; - if(!select(priv->fd+1, NULL, &rfds, NULL, &tv)) break; - write(priv->fd,data,ao->outburst); - ao->buffersize+=ao->outburst; + if(ioctl(priv->fd, SNDCTL_DSP_GETOSPACE, &priv->zz)==-1){ + int r=0; + MSG_WARN("OSS-CONF: driver doesn't support SNDCTL_DSP_GETOSPACE :-(\n"); + if(ioctl(priv->fd, SNDCTL_DSP_GETBLKSIZE, &r)==-1){ + MSG_V("OSS-CONF: %d bytes/frag (mp_config.h)\n",ao->outburst); + } else { + ao->outburst=r; + MSG_V("OSS-CONF: %d bytes/frag (GETBLKSIZE)\n",ao->outburst); + } + } else { + MSG_V("OSS-CONF: frags: %3d/%d (%d bytes/frag) mp_free: %6d\n", + priv->zz.fragments, priv->zz.fragstotal, priv->zz.fragsize, priv->zz.bytes); + if(ao->buffersize==0) ao->buffersize=priv->zz.bytes; + ao->outburst=priv->zz.fragsize; } - mp_free(data); + if(ao->buffersize==0){ - MSG_ERR("\n *** OSS-CONF: Your audio driver DOES NOT support select() ***\n" - "Recompile mplayerxp with #undef HAVE_AUDIO_SELECT in mp_config.h !\n\n"); - return 0; - } + // Measuring buffer size: + any_t* data; + ao->buffersize=0; +#ifdef HAVE_AUDIO_SELECT + data=mp_mallocz(ao->outburst); + while(ao->buffersize<0x40000) { + fd_set rfds; + struct timeval tv; + FD_ZERO(&rfds); FD_SET(priv->fd,&rfds); + tv.tv_sec=0; tv.tv_usec = 0; + if(!select(priv->fd+1, NULL, &rfds, NULL, &tv)) break; + write(priv->fd,data,ao->outburst); + ao->buffersize+=ao->outburst; + } + mp_free(data); + if(ao->buffersize==0){ + MSG_ERR("\n *** OSS-CONF: Your audio driver DOES NOT support select() ***\n" + "Recompile mplayerxp with #undef HAVE_AUDIO_SELECT in mp_config.h !\n\n"); + return MPXP_False; + } #endif - } + } - ao->bps=ao->channels; - if(ao->format != AFMT_U8 && ao->format != AFMT_S8) - ao->bps*=2; + ao->bps=ao->channels; + if(ao->format != AFMT_U8 && ao->format != AFMT_S8) ao->bps*=2; - ao->outburst-=ao->outburst % ao->bps; // round down - ao->bps*=ao->samplerate; + ao->outburst-=ao->outburst % ao->bps; // round down + ao->bps*=ao->samplerate; - return 1; + return MPXP_Ok; } // close audio device Modified: mplayerxp/libao2/ao_sdl.c =================================================================== --- mplayerxp/libao2/ao_sdl.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_sdl.c 2012-11-09 14:04:48 UTC (rev 312) @@ -142,131 +142,131 @@ // open & setup audio device // return: 1=success 0=fail -static int __FASTCALL__ init(ao_data_t* ao,unsigned flags) +static MPXP_Rc __FASTCALL__ init(ao_data_t* ao,unsigned flags) { - unsigned i; - UNUSED(flags); - ao->priv=mp_mallocz(sizeof(priv_t)); - priv_t*priv=ao->priv; - priv->volume=127; - /* Allocate ring-priv->buffer memory */ - for(i=0;i<NUM_BUFS;i++) priv->buffer[i]=(unsigned char *) mp_malloc(BUFFSIZE); + unsigned i; + UNUSED(flags); + ao->priv=mp_mallocz(sizeof(priv_t)); + priv_t*priv=ao->priv; + priv->volume=127; + /* Allocate ring-priv->buffer memory */ + for(i=0;i<NUM_BUFS;i++) priv->buffer[i]=(unsigned char *) mp_malloc(BUFFSIZE); - if(ao->subdevice) { - setenv("SDL_AUDIODRIVER", ao->subdevice, 1); - } - return 1; + if(ao->subdevice) { + setenv("SDL_AUDIODRIVER", ao->subdevice, 1); + } + return MPXP_Ok; } -static int __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) +static MPXP_Rc __FASTCALL__ configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format) { - /* SDL Audio Specifications */ - SDL_AudioSpec aspec, obtained; - char drv_name[80]; + /* SDL Audio Specifications */ + SDL_AudioSpec aspec, obtained; + char drv_name[80]; - ao->channels=channels; - ao->samplerate=rate; - ao->format=format; + ao->channels=channels; + ao->samplerate=rate; + ao->format=format; - ao->bps=channels*rate; - if(format != AFMT_U8 && format != AFMT_S8) - ao->bps*=2; - - /* The desired audio format (see SDL_AudioSpec) */ - switch(format) { - case AFMT_U8: - aspec.format = AUDIO_U8; + ao->bps=channels*rate; + if(format != AFMT_U8 && format != AFMT_S8) + ao->bps*=2; + + /* The desired audio format (see SDL_AudioSpec) */ + switch(format) { + case AFMT_U8: + aspec.format = AUDIO_U8; break; - case AFMT_S16_LE: - aspec.format = AUDIO_S16LSB; + case AFMT_S16_LE: + aspec.format = AUDIO_S16LSB; break; - case AFMT_S16_BE: - aspec.format = AUDIO_S16MSB; + case AFMT_S16_BE: + aspec.format = AUDIO_S16MSB; break; - case AFMT_S8: - aspec.format = AUDIO_S8; + case AFMT_S8: + aspec.format = AUDIO_S8; break; - case AFMT_U16_LE: - aspec.format = AUDIO_U16LSB; + case AFMT_U16_LE: + aspec.format = AUDIO_U16LSB; break; - case AFMT_U16_BE: - aspec.format = AUDIO_U16MSB; + case AFMT_U16_BE: + aspec.format = AUDIO_U16MSB; break; - default: - MSG_ERR("SDL: Unsupported audio format: 0x%x.\n", format); - return 0; - } + default: + MSG_ERR("SDL: Unsupported audio format: 0x%x.\n", format); + return MPXP_False; + } - /* The desired audio frequency in samples-per-second. */ - aspec.freq = rate; + /* The desired audio frequency in samples-per-second. */ + aspec.freq = rate; - /* Number of channels (mono/stereo) */ - aspec.channels = channels; + /* Number of channels (mono/stereo) */ + aspec.channels = channels; - /* The desired size of the audio priv->buffer in samples. This number should be a power of two, and may be adjusted by the audio driver to a value more suitable for the hardware. Good values seem to range between 512 and 8192 inclusive, depending on the application and CPU speed. Smaller values yield faster response time, but can lead to underflow if the application is doing heavy processing and cannot fill the audio priv->buffer in time. A stereo sample consists of both right and left channels in LR ordering. Note that the number of samples is directly related to time by the following formula: ms = (samples*1000)/freq */ - aspec.samples = SAMPLESIZE; + /* The desired size of the audio priv->buffer in samples. This number should be a power of two, and may be adjusted by the audio driver to a value more suitable for the hardware. Good values seem to range between 512 and 8192 inclusive, depending on the application and CPU speed. Smaller values yield faster response time, but can lead to underflow if the application is doing heavy processing and cannot fill the audio priv->buffer in time. A stereo sample consists of both right and left channels in LR ordering. Note that the number of samples is directly related to time by the following formula: ms = (samples*1000)/freq */ + aspec.samples = SAMPLESIZE; - /* This should be set to a function that will be called when the audio device is ready for more data. It is passed a pointer to the audio priv->buffer, and the length in bytes of the audio priv->buffer. This function usually runs in a separate thread, and so you should protect data structures that it accesses by calling SDL_LockAudio and SDL_UnlockAudio in your code. The callback prototype is: -void callback(any_t*userdata, Uint8 *stream, int len); userdata is the pointer stored in userdata field of the SDL_AudioSpec. stream is a pointer to the audio priv->buffer you want to fill with information and len is the length of the audio priv->buffer in bytes. */ - aspec.callback = outputaudio; + /* This should be set to a function that will be called when the audio device is ready for more data. It is passed a pointer to the audio priv->buffer, and the length in bytes of the audio priv->buffer. This function usually runs in a separate thread, and so you should protect data structures that it accesses by calling SDL_LockAudio and SDL_UnlockAudio in your code. The callback prototype is: + void callback(any_t*userdata, Uint8 *stream, int len); userdata is the pointer stored in userdata field of the SDL_AudioSpec. stream is a pointer to the audio priv->buffer you want to fill with information and len is the length of the audio priv->buffer in bytes. */ + aspec.callback = outputaudio; - /* This pointer is passed as the first parameter to the callback function. */ - aspec.userdata = ao; + /* This pointer is passed as the first parameter to the callback function. */ + aspec.userdata = ao; - /* initialize the SDL Audio system */ - if (SDL_Init (SDL_INIT_AUDIO/*|SDL_INIT_NOPARACHUTE*/)) { - MSG_ERR("SDL: Initializing of SDL Audio failed: %s.\n", SDL_GetError()); - return 0; - } + /* initialize the SDL Audio system */ + if (SDL_Init (SDL_INIT_AUDIO/*|SDL_INIT_NOPARACHUTE*/)) { + MSG_ERR("SDL: Initializing of SDL Audio failed: %s.\n", SDL_GetError()); + return MPXP_False; + } - /* Open the audio device and start playing sound! */ - if(SDL_OpenAudio(&aspec, &obtained) < 0) { - MSG_ERR("SDL: Unable to open audio: %s\n", SDL_GetError()); - return(0); - } - - /* did we got what we wanted ? */ - ao->channels=obtained.channels; - ao->samplerate=obtained.freq; + /* Open the audio device and start playing sound! */ + if(SDL_OpenAudio(&aspec, &obtained) < 0) { + MSG_ERR("SDL: Unable to open audio: %s\n", SDL_GetError()); + return MPXP_False; + } - switch(obtained.format) { - case AUDIO_U8 : - ao->format = AFMT_U8; + /* did we got what we wanted ? */ + ao->channels=obtained.channels; + ao->samplerate=obtained.freq; + + switch(obtained.format) { + case AUDIO_U8 : + ao->format = AFMT_U8; break; - case AUDIO_S16LSB : - ao->format = AFMT_S16_LE; + case AUDIO_S16LSB : + ao->format = AFMT_S16_LE; break; - case AUDIO_S16MSB : - ao->format = AFMT_S16_BE; + case AUDIO_S16MSB : + ao->format = AFMT_S16_BE; break; - case AUDIO_S8 : - ao->format = AFMT_S8; + case AUDIO_S8 : + ao->format = AFMT_S8; break; - case AUDIO_U16LSB : - ao->format = AFMT_U16_LE; + case AUDIO_U16LSB : + ao->format = AFMT_U16_LE; break; - case AUDIO_U16MSB : - ao->format = AFMT_U16_BE; + case AUDIO_U16MSB : + ao->format = AFMT_U16_BE; break; - default: - MSG_WARN("SDL: Unsupported SDL audio format: 0x%x.\n", obtained.format); - return 0; - } + default: + MSG_WARN("SDL: Unsupported SDL audio format: 0x%x.\n", obtained.format); + return MPXP_False; + } - MSG_V("SDL: buf size = %d\n",aspec.size); - ao->buffersize=obtained.size; + MSG_V("SDL: buf size = %d\n",aspec.size); + ao->buffersize=obtained.size; - SDL_AudioDriverName(drv_name, sizeof(drv_name)); - MSG_OK("SDL: using %s audio driver (%iHz %s \"%s\")\n" + SDL_AudioDriverName(drv_name, sizeof(drv_name)); + MSG_OK("SDL: using %s audio driver (%iHz %s \"%s\")\n" ,drv_name ,rate ,channels>4?"Surround":channels>2?"Quadro":channels>1?"Stereo":"Mono" ,ao_format_name(format)); - /* unsilence audio, if callback is ready */ - SDL_PauseAudio(0); + /* unsilence audio, if callback is ready */ + SDL_PauseAudio(0); - return 1; + return MPXP_Ok; } // close audio device Modified: mplayerxp/libao2/ao_wav.c =================================================================== --- mplayerxp/libao2/ao_wav.c 2012-11-09 12:29:58 UTC (rev 311) +++ mplayerxp/libao2/ao_wav.c 2012-11-09 14:04:48 UTC (rev 312) @@ -96,16 +96,16 @@ // open & setup audio device // return: 1=success 0=fail -static int init(ao_data_t* ao,unsigned flags) { +static MPXP_Rc init(ao_data_t* ao,unsigned flags) { // set defaults UNUSED(flags); ao->priv=mp_mallocz(sizeof(priv_t)); priv_t* priv=ao->priv; priv->pcm_waveheader=1; - return 1; + return MPXP_Ok; } -static int configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format){ +static MPXP_Rc configure(ao_data_t* ao,unsigned rate,unsigned channels,unsigned format){ priv_t* priv=ao->priv; unsigned bits; char str[256]; @@ -169,10 +169,10 @@ if(priv->pcm_waveheader){ /* Reserve space for wave header */ fwrite(&priv->wavhdr,sizeof(priv->wavhdr),1,priv->fp); } - return 1; + return MPXP_Ok; } MSG_ERR("ao_wav: can't open output file: %s\n", priv->out_filename); - return 0; + return MPXP_False; } // close audio device Mo... [truncated message content] |
From: <nic...@us...> - 2012-11-10 11:17:00
|
Revision: 316 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=316&view=rev Author: nickols_k Date: 2012-11-10 11:16:53 +0000 (Sat, 10 Nov 2012) Log Message: ----------- rename input -> input2 Modified Paths: -------------- mplayerxp/dump.c mplayerxp/mplayerxp.c Added Paths: ----------- mplayerxp/input2/ Removed Paths: ------------- mplayerxp/input/ Modified: mplayerxp/dump.c =================================================================== --- mplayerxp/dump.c 2012-11-10 10:58:25 UTC (rev 315) +++ mplayerxp/dump.c 2012-11-10 11:16:53 UTC (rev 316) @@ -12,7 +12,7 @@ #include "dump.h" #include "xmpcore/sig_hand.h" #include "help_mp.h" -#include "input/input.h" +#include "input2/input.h" #include "mplayerxp.h" #include "libmpdemux/muxer.h" #include "libmpdemux/mrl.h" Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-10 10:58:25 UTC (rev 315) +++ mplayerxp/mplayerxp.c 2012-11-10 11:16:53 UTC (rev 316) @@ -67,7 +67,7 @@ #include "osdep/cpudetect.h" #include "osdep/mm_accel.h" -#include "input/input.h" +#include "input2/input.h" #include "dump.h" #include "nls/nls.h" #include "postproc/libmenu/menu.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-10 11:22:17
|
Revision: 317 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=317&view=rev Author: nickols_k Date: 2012-11-10 11:22:10 +0000 (Sat, 10 Nov 2012) Log Message: ----------- rename input -> input2 Modified Paths: -------------- mplayerxp/Makefile mplayerxp/input2/Makefile mplayerxp/libmpdemux/mpdemux.c mplayerxp/libmpdemux/s_dvdnav.c mplayerxp/libmpdemux/s_tv.c mplayerxp/libmpdemux/tcp.c mplayerxp/libvo/vo_sdl.c mplayerxp/libvo/x11_common.c mplayerxp/postproc/libmenu/menu_cmdlist.c mplayerxp/postproc/libmenu/menu_console.c mplayerxp/postproc/libmenu/menu_filesel.c mplayerxp/postproc/libmenu/menu_param.c mplayerxp/postproc/libmenu/menu_pt.c mplayerxp/postproc/vf_menu.c Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/Makefile 2012-11-10 11:22:10 UTC (rev 317) @@ -13,7 +13,7 @@ PRG_FIBMAP = fibmap_mplayerxp PRG_CFG = codec-cfg-xp # these subdirectories required installation due binaries within them -SUBDIRS = libmpdemux libmpsub libplaytree libmpcodecs libmpconf libao2 osdep postproc input nls libvo xmpcore +SUBDIRS = libmpdemux libmpsub libplaytree libmpcodecs libmpconf libao2 osdep postproc input2 nls libvo xmpcore ifeq ($(TARGET_ARCH_X86),yes) SUBDIRS+=loader endif @@ -41,7 +41,7 @@ libplaytree/libplaytree.a \ libao2/libao2.a \ postproc/libpostproc.a \ - input/libinput.a \ + input2/libinput2.a \ libvo/libvo.a \ osdep/libosdep.a \ nls/libnls.a \ Modified: mplayerxp/input2/Makefile =================================================================== --- mplayerxp/input2/Makefile 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/input2/Makefile 2012-11-10 11:22:10 UTC (rev 317) @@ -1,7 +1,7 @@ include ../mp_config.mak -LIBNAME = libinput.a +LIBNAME = libinput2.a SRCS=input.c joystick.c lirc.c OBJS=$(SRCS:.c=.o) Modified: mplayerxp/libmpdemux/mpdemux.c =================================================================== --- mplayerxp/libmpdemux/mpdemux.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/libmpdemux/mpdemux.c 2012-11-10 11:22:10 UTC (rev 317) @@ -1,7 +1,6 @@ - -#include "../mp_config.h" +#include "mp_config.h" #include <stdlib.h> -#include "../input/input.h" +#include "input2/input.h" #include "demux_msg.h" int mpdemux_check_interrupt(any_t* libinput,int _time) { mp_cmd_t* cmd; Modified: mplayerxp/libmpdemux/s_dvdnav.c =================================================================== --- mplayerxp/libmpdemux/s_dvdnav.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/libmpdemux/s_dvdnav.c 2012-11-10 11:22:10 UTC (rev 317) @@ -11,7 +11,7 @@ #include "demuxer.h" #include "libmpsub/spudec.h" #include "libvo/sub.h" -#include "input/input.h" +#include "input2/input.h" #include "mplayerxp.h" #include "demux_msg.h" Modified: mplayerxp/libmpdemux/s_tv.c =================================================================== --- mplayerxp/libmpdemux/s_tv.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/libmpdemux/s_tv.c 2012-11-10 11:22:10 UTC (rev 317) @@ -17,7 +17,7 @@ #include <stdlib.h> #include <string.h> #include "stream.h" -#include "input/input.h" +#include "input2/input.h" #include "osdep/mplib.h" #include "libao2/afmt.h" #include "mrl.h" Modified: mplayerxp/libmpdemux/tcp.c =================================================================== --- mplayerxp/libmpdemux/tcp.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/libmpdemux/tcp.c 2012-11-10 11:22:10 UTC (rev 317) @@ -15,10 +15,10 @@ #include <sys/time.h> #include <sys/types.h> -#include "../mp_config.h" +#include "mp_config.h" #include "help_mp.h" -#include "../input/input.h" +#include "input2/input.h" #ifndef HAVE_WINSOCK2 #include <netdb.h> Modified: mplayerxp/libvo/vo_sdl.c =================================================================== --- mplayerxp/libvo/vo_sdl.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/libvo/vo_sdl.c 2012-11-10 11:22:10 UTC (rev 317) @@ -123,8 +123,8 @@ #include "x11_common.h" #endif -#include "input/input.h" -#include "input/mouse.h" +#include "input2/input.h" +#include "input2/mouse.h" #include "osdep/keycodes.h" #include "dri_vo.h" #include "video_out_internal.h" Modified: mplayerxp/libvo/x11_common.c =================================================================== --- mplayerxp/libvo/x11_common.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/libvo/x11_common.c 2012-11-10 11:22:10 UTC (rev 317) @@ -31,8 +31,8 @@ #include <X11/XF86keysym.h> #endif -#include "../input/input.h" -#include "../input/mouse.h" +#include "input2/input.h" +#include "input2/mouse.h" #include "vo_msg.h" #ifdef HAVE_SHM Modified: mplayerxp/postproc/libmenu/menu_cmdlist.c =================================================================== --- mplayerxp/postproc/libmenu/menu_cmdlist.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/postproc/libmenu/menu_cmdlist.c 2012-11-10 11:22:10 UTC (rev 317) @@ -18,7 +18,7 @@ #include "libvo/font_load.h" -#include "input/input.h" +#include "input2/input.h" #include "version.h" #include "pp_msg.h" #include "osdep/mplib.h" Modified: mplayerxp/postproc/libmenu/menu_console.c =================================================================== --- mplayerxp/postproc/libmenu/menu_console.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/postproc/libmenu/menu_console.c 2012-11-10 11:22:10 UTC (rev 317) @@ -24,7 +24,7 @@ #include "libvo/font_load.h" #include "osdep/keycodes.h" -#include "input/input.h" +#include "input2/input.h" #include "osdep/timer.h" #include "pp_msg.h" #include "osdep/mplib.h" Modified: mplayerxp/postproc/libmenu/menu_filesel.c =================================================================== --- mplayerxp/postproc/libmenu/menu_filesel.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/postproc/libmenu/menu_filesel.c 2012-11-10 11:22:10 UTC (rev 317) @@ -23,7 +23,7 @@ #include "menu.h" #include "menu_list.h" -#include "input/input.h" +#include "input2/input.h" #include "osdep/keycodes.h" #include "pp_msg.h" #include "osdep/mplib.h" Modified: mplayerxp/postproc/libmenu/menu_param.c =================================================================== --- mplayerxp/postproc/libmenu/menu_param.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/postproc/libmenu/menu_param.c 2012-11-10 11:22:10 UTC (rev 317) @@ -23,7 +23,7 @@ #include "menu.h" #include "menu_list.h" -#include "input/input.h" +#include "input2/input.h" #include "osdep/keycodes.h" #include "osdep/mplib.h" #include "pp_msg.h" Modified: mplayerxp/postproc/libmenu/menu_pt.c =================================================================== --- mplayerxp/postproc/libmenu/menu_pt.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/postproc/libmenu/menu_pt.c 2012-11-10 11:22:10 UTC (rev 317) @@ -15,7 +15,7 @@ #include "libmpdemux/stream.h" #include "libplaytree/playtree.h" -#include "input/input.h" +#include "input2/input.h" #include "pp_msg.h" #include "osdep/mplib.h" Modified: mplayerxp/postproc/vf_menu.c =================================================================== --- mplayerxp/postproc/vf_menu.c 2012-11-10 11:16:53 UTC (rev 316) +++ mplayerxp/postproc/vf_menu.c 2012-11-10 11:22:10 UTC (rev 317) @@ -15,7 +15,7 @@ #include "osdep/fastmemcpy.h" #include "libvo/video_out.h" #include "libvo/font_load.h" -#include "input/input.h" +#include "input2/input.h" #include "libmpconf/m_struct.h" #include "libmenu/menu.h" #include "osdep/mplib.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-10 12:52:48
|
Revision: 320 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=320&view=rev Author: nickols_k Date: 2012-11-10 12:52:42 +0000 (Sat, 10 Nov 2012) Log Message: ----------- fixes Modified Paths: -------------- mplayerxp/postproc/af_channels.c mplayerxp/postproc/af_extrastereo.c mplayerxp/postproc/af_karaoke.c mplayerxp/postproc/af_lp.c mplayerxp/postproc/af_resample.c mplayerxp/postproc/af_sinesuppress.c mplayerxp/postproc/af_volnorm.c mplayerxp/postproc/af_volume.c mplayerxp/xmpcore/mp_aframe.h Modified: mplayerxp/postproc/af_channels.c =================================================================== --- mplayerxp/postproc/af_channels.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_channels.c 2012-11-10 12:52:42 UTC (rev 320) @@ -128,7 +128,7 @@ // Set default channel assignment if(!s->router){ int i; - // Make sure this filter isn't redundant + // Make sure this filter isn't redundant if(af->data->nch == ((mp_aframe_t*)arg)->nch) return MPXP_Detach; Modified: mplayerxp/postproc/af_extrastereo.c =================================================================== --- mplayerxp/postproc/af_extrastereo.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_extrastereo.c 2012-11-10 12:52:42 UTC (rev 320) @@ -37,7 +37,7 @@ // Sanity check if(!arg) return MPXP_Error; - if(((mp_aframe_t*)arg)->format != (MPAF_SI|MPAF_NE) || + if(!mpaf_testa(((mp_aframe_t*)arg)->format,MPAF_SI|MPAF_NE) || (((mp_aframe_t*)arg)->nch != 2)) return MPXP_Error; Modified: mplayerxp/postproc/af_karaoke.c =================================================================== --- mplayerxp/postproc/af_karaoke.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_karaoke.c 2012-11-10 12:52:42 UTC (rev 320) @@ -19,14 +19,14 @@ // Initialization and runtime control static MPXP_Rc control(struct af_instance_s* af, int cmd, any_t* arg) { - switch(cmd){ - case AF_CONTROL_REINIT: - af->data->rate = ((mp_aframe_t*)arg)->rate; - af->data->nch = ((mp_aframe_t*)arg)->nch; - af->data->format= MPAF_NE|MPAF_F|4; - return af_test_output(af,(mp_aframe_t*)arg); - } - return MPXP_Unknown; + switch(cmd){ + case AF_CONTROL_REINIT: + af->data->rate = ((mp_aframe_t*)arg)->rate; + af->data->nch = ((mp_aframe_t*)arg)->nch; + af->data->format= MPAF_NE|MPAF_F|4; + return af_test_output(af,(mp_aframe_t*)arg); + } + return MPXP_Unknown; } // Deallocate memory Modified: mplayerxp/postproc/af_lp.c =================================================================== --- mplayerxp/postproc/af_lp.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_lp.c 2012-11-10 12:52:42 UTC (rev 320) @@ -17,7 +17,7 @@ // Initialization and runtime control static MPXP_Rc __FASTCALL__ control(struct af_instance_s* af, int cmd, any_t* arg) { - af_lp_t* s = (af_lp_t*)af->setup; + af_lp_t* s = (af_lp_t*)af->setup; switch(cmd){ case AF_CONTROL_REINIT: memcpy(af->data,(mp_aframe_t*)arg,sizeof(mp_aframe_t)); Modified: mplayerxp/postproc/af_resample.c =================================================================== --- mplayerxp/postproc/af_resample.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_resample.c 2012-11-10 12:52:42 UTC (rev 320) @@ -78,7 +78,7 @@ case AF_CONTROL_REINIT: { enum AVSampleFormat avfmt; uint64_t nch; - mp_aframe_t* n = (mp_aframe_t*)arg; // New configuration + mp_aframe_t* n = (mp_aframe_t*)arg; // New configuration int rv = MPXP_Ok; if(s->ctx) { swr_free(&s->ctx); s->ctx=NULL; } Modified: mplayerxp/postproc/af_sinesuppress.c =================================================================== --- mplayerxp/postproc/af_sinesuppress.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_sinesuppress.c 2012-11-10 12:52:42 UTC (rev 320) @@ -51,8 +51,7 @@ af->data->rate = ((mp_aframe_t*)arg)->rate; af->data->nch = 1; #if 0 - if (((mp_aframe_t*)arg)->format == MPAF_NE | MPAF_F) - { + if (mpaf_testa((mp_aframe_t*)arg)->format,MPAF_NE | MPAF_F) { af->data->format = MPAF_FLOAT_NE|4; af->play = play_float; }// else Modified: mplayerxp/postproc/af_volnorm.c =================================================================== --- mplayerxp/postproc/af_volnorm.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_volnorm.c 2012-11-10 12:52:42 UTC (rev 320) @@ -81,15 +81,14 @@ af->data->rate = ((mp_aframe_t*)arg)->rate; af->data->nch = ((mp_aframe_t*)arg)->nch; - if(!(((mp_aframe_t*)arg)->format&(MPAF_F|MPAF_NE) || - ((mp_aframe_t*)arg)->format&(MPAF_SI|MPAF_NE))) + if(!(mpaf_testa(((mp_aframe_t*)arg)->format,MPAF_F|MPAF_NE) || + mpaf_testa(((mp_aframe_t*)arg)->format,MPAF_SI|MPAF_NE))) return MPXP_Error; - if(((mp_aframe_t*)arg)->format&(MPAF_F|MPAF_NE)){ + if(mpaf_testa(((mp_aframe_t*)arg)->format,MPAF_F|MPAF_NE)) af->data->format = MPAF_F|MPAF_NE|4; - }else{ + else af->data->format = MPAF_SI|MPAF_NE|2; - } return af_test_output(af,(mp_aframe_t*)arg); case AF_CONTROL_SHOWCONF: MSG_INFO("[af_volnorm] using method %d\n",s->method); Modified: mplayerxp/postproc/af_volume.c =================================================================== --- mplayerxp/postproc/af_volume.c 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/postproc/af_volume.c 2012-11-10 12:52:42 UTC (rev 320) @@ -62,10 +62,9 @@ af->data->rate = ((mp_aframe_t*)arg)->rate; af->data->nch = ((mp_aframe_t*)arg)->nch; - if(s->fast && (((mp_aframe_t*)arg)->format != (MPAF_F|MPAF_NE))){ - af->data->format = MPAF_SI|MPAF_NE|2; - } - else{ + if(s->fast && !mpaf_testa(((mp_aframe_t*)arg)->format,MPAF_F|MPAF_NE)) + af->data->format = MPAF_SI|MPAF_NE|2; + else { // Cutoff set to 10Hz for forgetting factor float x = 2.0*M_PI*15.0/(float)af->data->rate; float t = 2.0-cos(x); Modified: mplayerxp/xmpcore/mp_aframe.h =================================================================== --- mplayerxp/xmpcore/mp_aframe.h 2012-11-10 12:16:34 UTC (rev 319) +++ mplayerxp/xmpcore/mp_aframe.h 2012-11-10 12:52:42 UTC (rev 320) @@ -43,6 +43,8 @@ extern char* __FASTCALL__ mpaf_fmt2str(mpaf_format_e format, char* str, size_t size); extern mpaf_format_e __FASTCALL__ mpaf_str2fmt(const char *str); +static inline int mpaf_test(mpaf_format_e f,unsigned bits) { return f&bits; } +static inline int mpaf_testa(mpaf_format_e f,unsigned bits) { return (f&bits)==bits; } typedef struct mp_audio_frame_s { unsigned flags; /* currently unused */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-10 13:05:31
|
Revision: 321 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=321&view=rev Author: nickols_k Date: 2012-11-10 13:05:23 +0000 (Sat, 10 Nov 2012) Log Message: ----------- replace #define with inline functions Modified Paths: -------------- mplayerxp/libvo/osd_template.c mplayerxp/postproc/dsp_accel.h mplayerxp/pvector/pvector.h mplayerxp/pvector/pvector_f32_x86.h mplayerxp/pvector/pvector_int_x86.h Modified: mplayerxp/libvo/osd_template.c =================================================================== --- mplayerxp/libvo/osd_template.c 2012-11-10 12:52:42 UTC (rev 320) +++ mplayerxp/libvo/osd_template.c 2012-11-10 13:05:23 UTC (rev 321) @@ -64,11 +64,11 @@ _ivec_prefetch(&src[x]); _ivec_prefetch(&srca[x]); /* MOVNTDQ: #GP(0) - If memory operand is not aligned on a 16-byte boundary */ - if(!IVEC_ALIGNED(dstbase)) + if(!_ivec_aligned(dstbase)) for(;x<w;x++){ unsigned char *dst=&dstbase[x]; if(srca[x]) *dst=((dstbase[x]*srca[x])>>8)+src[x]; - if(IVEC_ALIGNED(dst)) break; /* align on sizeof(MMREG) boundary */ + if(_ivec_aligned(dst)) break; /* align on sizeof(MMREG) boundary */ } if((w-x)>=__IVEC_SIZE) for(;x<w;x+=__IVEC_SIZE){ @@ -77,11 +77,11 @@ _ivec_prefetch(&src[x+__IVEC_SIZE*4]); _ivec_prefetch(&srca[x+__IVEC_SIZE*4]); vdest = _ivec_loada(&dstbase[x]); - if(IVEC_ALIGNED(&src[x])) + if(_ivec_aligned(&src[x])) vsrc = _ivec_loada(&src[x]); else vsrc = _ivec_loadu(&src[x]); - if(IVEC_ALIGNED(&srca[x])) + if(_ivec_aligned(&srca[x])) vsrca = _ivec_loada(&srca[x]); else vsrca = _ivec_loadu(&srca[x]); Modified: mplayerxp/postproc/dsp_accel.h =================================================================== --- mplayerxp/postproc/dsp_accel.h 2012-11-10 12:52:42 UTC (rev 320) +++ mplayerxp/postproc/dsp_accel.h 2012-11-10 13:05:23 UTC (rev 321) @@ -10,15 +10,15 @@ i = 0; #ifdef HAVE_INT_PVECTOR len_mm=len&(~(__IVEC_SIZE-1)); - if(!IVEC_ALIGNED(out_data)) + if(!_ivec_aligned(out_data)) for(;i<len;i++) { ((uint16_t*)out_data)[i]=((uint16_t)((const uint8_t*)in_data)[i])<<8; - if(IVEC_ALIGNED(out_data)) break; + if(_ivec_aligned(out_data)) break; } if((len_mm-i)>=__IVEC_SIZE) for(;i<len_mm;i+=__IVEC_SIZE){ __ivec ind,itmp[2]; - if(IVEC_ALIGNED(in_data)) + if(_ivec_aligned(in_data)) ind = _ivec_loada(&((const uint8_t *)in_data)[i]); else ind = _ivec_loadu(&((const uint8_t *)in_data)[i]); @@ -47,15 +47,15 @@ i = 0; #ifdef HAVE_INT_PVECTOR len_mm=len&(~(__IVEC_SIZE-1)); - if(!IVEC_ALIGNED(out_data)) + if(!_ivec_aligned(out_data)) for(;i<len;i++) { ((uint8_t*)out_data)[i]=(uint8_t)((((const uint16_t*)in_data)[i])>>8); - if(IVEC_ALIGNED(out_data)) break; + if(_ivec_aligned(out_data)) break; } if((len_mm-i)>=__IVEC_SIZE) for(;i<len_mm;i+=__IVEC_SIZE){ __ivec outd,itmp[2]; - if(IVEC_ALIGNED(in_data)) { + if(_ivec_aligned(in_data)) { itmp[0] = _ivec_loada(&((const uint16_t*)in_data)[i]); itmp[1] = _ivec_loada(&((const uint16_t*)in_data)[i+__IVEC_SIZE/2]); } @@ -85,16 +85,16 @@ i=0; #ifdef HAVE_INT_PVECTOR len_mm=len&(~(__IVEC_SIZE-1)); - if(!IVEC_ALIGNED(out_data)) + if(!_ivec_aligned(out_data)) for(;i<len;i++){ ((uint32_t*)out_data)[i]=((uint32_t)((const uint16_t*)in_data)[i])<<16; - if(IVEC_ALIGNED(out_data)) break; + if(_ivec_aligned(out_data)) break; } if((len_mm-i)>=__IVEC_SIZE) for(;i<len_mm;i+=__IVEC_SIZE) { __ivec ind,tmp[2]; - if(IVEC_ALIGNED(in_data)) + if(_ivec_aligned(in_data)) ind = _ivec_loada(&((const uint8_t *)in_data)[i]); else ind = _ivec_loadu(&((const uint8_t *)in_data)[i]); @@ -123,16 +123,16 @@ i=0; #ifdef HAVE_INT_PVECTOR len_mm=len&(~(__IVEC_SIZE-1)); - if(!IVEC_ALIGNED(out_data)) + if(!_ivec_aligned(out_data)) for(;i<len;i++){ ((uint16_t*)out_data)[i]=(uint16_t)((((const uint32_t*)in_data)[i])>>16); - if(IVEC_ALIGNED(out_data)) break; + if(_ivec_aligned(out_data)) break; } if((len_mm-i)>=__IVEC_SIZE) for(;i<len_mm;i+=__IVEC_SIZE) { __ivec ind[2],tmp; - if(IVEC_ALIGNED(in_data)) { + if(_ivec_aligned(in_data)) { ind[0]=_ivec_loada(&((const uint8_t *)in_data)[i*2]); ind[1]=_ivec_loada(&((const uint8_t *)in_data)[i*2+__IVEC_SIZE]); } else { @@ -326,19 +326,19 @@ So CLAMP volume on 0.0002% here. */ plus1 = _f32vec_broadcast(+0.999998); minus1= _f32vec_broadcast(-0.999998); - if(!F32VEC_ALIGNED(out)) + if(!_f32vec_aligned(out)) for(;i<len;i++) { ftmp=((const float*)in)[i]; SATURATE(ftmp,-0.999998,+0.999998); ((int32_t*)out)[i]=(int32_t)lrintf((INT_MAX-1)*ftmp); - if(F32VEC_ALIGNED(out)) break; + if(_f32vec_aligned(out)) break; } _ivec_empty(); len_mm=len&(~(__F32VEC_SIZE-1)); if((len_mm-i)>=__F32VEC_SIZE/sizeof(float)) for(;i<len_mm;i+=__F32VEC_SIZE/sizeof(float)) { __f32vec tmp; - if(F32VEC_ALIGNED(in)) + if(_f32vec_aligned(in)) tmp = _f32vec_loada(&((const float*)in)[i]); else tmp = _f32vec_loadu(&((const float*)in)[i]); @@ -366,16 +366,16 @@ #endif register unsigned i=0; #ifdef HAVE_F32_PVECTOR - if(!F32VEC_ALIGNED(out)) + if(!_f32vec_aligned(out)) for(;i<len;i++) { ((float*)out)[i]=(1.0/INT_MAX)*((float)((const int32_t*)in)[i]); - if(F32VEC_ALIGNED(out)) break; + if(_f32vec_aligned(out)) break; } _ivec_empty(); if((len-i)>=__F32VEC_SIZE) for(;i<len;i+=__F32VEC_SIZE/sizeof(float)) { __f32vec tmp; - if(F32VEC_ALIGNED(in)) + if(_f32vec_aligned(in)) tmp = _f32vec_from_s32a(&((const int32_t*)in)[i]); else tmp = _f32vec_from_s32u(&((const int32_t*)in)[i]); Modified: mplayerxp/pvector/pvector.h =================================================================== --- mplayerxp/pvector/pvector.h 2012-11-10 12:52:42 UTC (rev 320) +++ mplayerxp/pvector/pvector.h 2012-11-10 13:05:23 UTC (rev 321) @@ -47,11 +47,6 @@ #undef HAVE_F32_PVECTOR #endif -#undef IVEC_ALIGNED -#define IVEC_ALIGNED(p) ((((long)((any_t*)(p)))&(__IVEC_SIZE-1))==0) -#undef F32VEC_ALIGNED -#define F32VEC_ALIGNED(p) ((((long)((any_t*)(p)))&(__F32VEC_SIZE-1))==0) - /* ABBREVIATION: s8 - signed int8_t Modified: mplayerxp/pvector/pvector_f32_x86.h =================================================================== --- mplayerxp/pvector/pvector_f32_x86.h 2012-11-10 12:52:42 UTC (rev 320) +++ mplayerxp/pvector/pvector_f32_x86.h 2012-11-10 13:05:23 UTC (rev 321) @@ -34,6 +34,11 @@ #define __f32vec __m64 #endif +extern __inline int __attribute__((__gnu_inline__, __always_inline__)) +PVECTOR_RENAME(f32vec_aligned)(const any_t* p) { return (((long)p)&(__F32VEC_SIZE-1))==0; } +#undef _f32vec_aligned +#define _f32vec_aligned PVECTOR_RENAME(f32vec_aligned) + extern __inline __f32vec __attribute__((__gnu_inline__, __always_inline__)) PVECTOR_RENAME(f32_loadu)(float const *__P) { Modified: mplayerxp/pvector/pvector_int_x86.h =================================================================== --- mplayerxp/pvector/pvector_int_x86.h 2012-11-10 12:52:42 UTC (rev 320) +++ mplayerxp/pvector/pvector_int_x86.h 2012-11-10 13:05:23 UTC (rev 321) @@ -34,6 +34,11 @@ #define __ivec __m64 #endif +static __inline int __attribute__((__gnu_inline__, __always_inline__)) +PVECTOR_RENAME(ivec_aligned)(const any_t* p) { return (((long)p)&(__IVEC_SIZE-1))==0; } +#undef _ivec_aligned +#define _ivec_aligned PVECTOR_RENAME(ivec_aligned) + extern __inline void __attribute__((__gnu_inline__, __always_inline__)) PVECTOR_RENAME(empty)(void) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-10 14:22:25
|
Revision: 323 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=323&view=rev Author: nickols_k Date: 2012-11-10 14:22:16 +0000 (Sat, 10 Nov 2012) Log Message: ----------- first step towards packet-based demuxer Modified Paths: -------------- mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_dmo.c mplayerxp/libmpcodecs/vd_dshow.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpcodecs/vd_mpegpes.c mplayerxp/libmpcodecs/vd_null.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_qtvideo.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_vfw.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/libmpdemux/demuxer_r.c mplayerxp/libmpdemux/demuxer_r.h mplayerxp/xmpcore/xmp_vdecoder.c Modified: mplayerxp/libmpcodecs/dec_video.c =================================================================== --- mplayerxp/libmpcodecs/dec_video.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/dec_video.c 2012-11-10 14:22:16 UTC (rev 323) @@ -59,6 +59,7 @@ MPXP_Rc mpcv_set_quality(sh_video_t *sh_video,int quality){ if(mpvdec) return mpvdec->control(sh_video,VDCTRL_SET_PP_LEVEL, (any_t*)(&quality)); + return MPXP_False; } MPXP_Rc mpcv_set_colors(sh_video_t *sh_video,char *item,int value) @@ -224,7 +225,7 @@ extern vo_data_t* vo_data; static void update_subtitle(sh_video_t *sh_video,float v_pts,unsigned idx); -int mpcv_decode(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame, float pts){ +int mpcv_decode(sh_video_t *sh_video,const enc_frame_t* frame,int drop_frame){ vf_instance_t* vf; mp_image_t *mpi=NULL; unsigned int t; @@ -237,7 +238,7 @@ vf->control(vf,VFCTRL_START_FRAME,NULL); sh_video->active_slices=0; - mpi=mpvdec->decode(sh_video, start, in_size, drop_frame); + mpi=mpvdec->decode(sh_video, frame, drop_frame); MSG_DBG2("decvideo: decoding video %u bytes\n",in_size); while(sh_video->active_slices!=0) usleep(0); /* ------------------------ frame decoded. -------------------- */ @@ -255,7 +256,7 @@ } if(drop_frame) return 0; - update_subtitle(sh_video,pts,mpi->xp_idx); + update_subtitle(sh_video,frame->pts,mpi->xp_idx); vo_flush_page(vo_data,dae_curr_vdecoded(xp_core)); t2=GetTimer()-t2; Modified: mplayerxp/libmpcodecs/dec_video.h =================================================================== --- mplayerxp/libmpcodecs/dec_video.h 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/dec_video.h 2012-11-10 14:22:16 UTC (rev 323) @@ -7,7 +7,7 @@ extern void __FASTCALL__ mpcv_uninit(sh_video_t *sh_video); extern MPXP_Rc __FASTCALL__ mpcv_ffmpeg_init(sh_video_t*,any_t* libinput); -extern int __FASTCALL__ mpcv_decode(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame,float pts); +extern int __FASTCALL__ mpcv_decode(sh_video_t *sh_video,const enc_frame_t* frame,int drop_frame); extern MPXP_Rc __FASTCALL__ mpcv_get_quality_max(sh_video_t *sh_video,unsigned *qual); extern MPXP_Rc __FASTCALL__ mpcv_set_quality(sh_video_t *sh_video,int quality); Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd.h 2012-11-10 14:22:16 UTC (rev 323) @@ -20,7 +20,7 @@ MPXP_Rc (*__FASTCALL__ init)(sh_video_t *sh,any_t* libinput); void (*__FASTCALL__ uninit)(sh_video_t *sh); MPXP_Rc (* control)(sh_video_t *sh,int cmd,any_t* arg, ...); - mp_image_t* (*__FASTCALL__ decode)(sh_video_t *sh,any_t* data,int len,int flags); + mp_image_t* (*__FASTCALL__ decode)(sh_video_t *sh,const enc_frame_t* frame,int flags); } vd_functions_t; // NULL terminated array of all drivers Modified: mplayerxp/libmpcodecs/vd_divx4.c =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_divx4.c 2012-11-10 14:22:16 UTC (rev 323) @@ -204,8 +204,8 @@ if(!(p=mp_mallocz(sizeof(priv_t)))) { MSG_ERR("Out of memory\n"); return MPXP_False; } sh->context=p; if(!(p->decoder=getDecore_ptr(sh->fourcc))) { - char *p=(char *)&(sh->fourcc); - MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",p[0],p[1],p[2],p[3]); + char *fcc=(char *)&(sh->fourcc); + MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",fcc[0],fcc[1],fcc[2],fcc[3]); return MPXP_False; } dinit.formatOut.fourCC=sh->codec->outfmt[sh->outfmtidx]; @@ -218,8 +218,8 @@ dinit.formatIn.fourCC=sh->fourcc; dinit.formatIn.framePeriod=sh->fps; if(p->decoder(NULL, DEC_OPT_INIT, (any_t*) &p->pHandle, &dinit)!=DEC_OK) { - char *p=(char *)&(dinit.formatOut); - MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",p[0],p[1],p[2],p[3]); + char *fcc=(char *)&(dinit.formatOut); + MSG_ERR("Can't find decoder for %c%c%c%c fourcc\n",fcc[0],fcc[1],fcc[2],fcc[3]); } MSG_V("INFO: DivX4Linux (libdivx.so) video codec init OK!\n"); fflush(stdout); @@ -235,20 +235,20 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ priv_t*p=sh->context; mp_image_t* mpi; DecFrame decFrame; memset(&decFrame,0,sizeof(DecFrame)); - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, MP_IMGFLAG_PRESERVE | MP_IMGFLAG_ACCEPT_WIDTH, sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - decFrame.bitstream.pBuff = data; - decFrame.bitstream.iLength = len; + decFrame.bitstream.pBuff = frame->data; + decFrame.bitstream.iLength = frame->len; decFrame.shallowDecode = (flags&3)?1:0; decFrame.pBmp=mpi->planes[0]; decFrame.bmpStride=(mpi->flags&(MP_IMGFLAG_YUV|MP_IMGFLAG_DIRECT))==(MP_IMGFLAG_YUV|MP_IMGFLAG_DIRECT)? Modified: mplayerxp/libmpcodecs/vd_dmo.c =================================================================== --- mplayerxp/libmpcodecs/vd_dmo.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_dmo.c 2012-11-10 14:22:16 UTC (rev 323) @@ -79,13 +79,13 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ mp_image_t* mpi; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame if(flags&3){ // framedrop: - DMO_VideoDecoder_DecodeInternal(sh->context, data, len, sh->ds->flags&1, 0); + DMO_VideoDecoder_DecodeInternal(sh->context, frame->data, frame->len, sh->ds->flags&1, 0); return NULL; } @@ -98,7 +98,7 @@ return NULL; } - DMO_VideoDecoder_DecodeInternal(sh->context, data, len, sh->ds->flags&1, mpi->planes[0]); + DMO_VideoDecoder_DecodeInternal(sh->context, frame->data, frame->len, sh->ds->flags&1, mpi->planes[0]); return mpi; } Modified: mplayerxp/libmpcodecs/vd_dshow.c =================================================================== --- mplayerxp/libmpcodecs/vd_dshow.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_dshow.c 2012-11-10 14:22:16 UTC (rev 323) @@ -95,13 +95,13 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ mp_image_t* mpi; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame if(flags&3){ // framedrop: - DS_VideoDecoder_DecodeInternal(sh->context, data, len, sh->ds->flags&1, 0); + DS_VideoDecoder_DecodeInternal(sh->context, frame->data, frame->len, sh->ds->flags&1, 0); return NULL; } @@ -109,7 +109,7 @@ sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - DS_VideoDecoder_DecodeInternal(sh->context, data, len, sh->ds->flags&1, mpi->planes[0]); + DS_VideoDecoder_DecodeInternal(sh->context, frame->data, frame->len, sh->ds->flags&1, mpi->planes[0]); return mpi; } Modified: mplayerxp/libmpcodecs/vd_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-10 14:22:16 UTC (rev 323) @@ -242,7 +242,7 @@ static MPXP_Rc init(sh_video_t *sh,any_t* libinput){ unsigned avc_version=0; priv_t *priv; - int pp_flags,rc; + int pp_flags; if(mp_conf.npp_options) pp2_init(); if(!vcodec_inited){ // avcodec_init(); @@ -646,14 +646,16 @@ } dp_hdr_t; // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ int got_picture=0; int ret,has_b_frames; + unsigned len=frame->len; + any_t* data=frame->data; priv_t *priv=sh->context; mp_image_t* mpi=NULL; priv->ctx->opaque=sh; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame priv->ctx->skip_frame=(flags&3)?((flags&2)?AVDISCARD_NONKEY:AVDISCARD_DEFAULT):AVDISCARD_NONE; if(priv->cap_slices) priv->use_slices= !(sh->vf_flags&VF_FLAGS_SLICES)?0:(priv->ctx->skip_frame!=AVDISCARD_NONE)?0:1; @@ -685,16 +687,16 @@ || sh->fourcc == mmioFOURCC('R', 'V', '4', '0')) if(sh->bih->biSize==sizeof(*sh->bih)+8){ int i; - dp_hdr_t *hdr= (dp_hdr_t*)data; + const dp_hdr_t *hdr= (const dp_hdr_t*)data; - if(priv->ctx->slice_offset==NULL) + if(priv->ctx->slice_offset==NULL) priv->ctx->slice_offset= mp_malloc(sizeof(int)*1000); // for(i=0; i<25; i++) printf("%02X ", ((uint8_t*)data)[i]); priv->ctx->slice_count= hdr->chunks+1; for(i=0; i<priv->ctx->slice_count; i++) - priv->ctx->slice_offset[i]= ((uint32_t*)(data+hdr->chunktab))[2*i+1]; + priv->ctx->slice_offset[i]= ((const uint32_t*)(data+hdr->chunktab))[2*i+1]; len=hdr->len; data+= sizeof(dp_hdr_t); } Modified: mplayerxp/libmpcodecs/vd_huffyuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-10 14:22:16 UTC (rev 323) @@ -463,7 +463,7 @@ * Decode a HuffYUV frame * */ -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags) +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags) { mp_image_t* mpi; int pixel_ptr; @@ -472,8 +472,8 @@ unsigned char tmp, mi, mx, med; unsigned char *swap; int row, col; - signed int pos = 32; - unsigned char *encoded = (unsigned char *)data; + unsigned int pos = 32; + const unsigned char *encoded = (const unsigned char *)frame->data; priv_t *priv = (priv_t *) sh->context; // Decoder context unsigned char *abovebuf = priv->abovebuf1; unsigned char *curbuf = priv->abovebuf2; @@ -483,7 +483,7 @@ int bgr32; // skipped frame - if(len <= 0) return NULL; + if(frame->len <= 0) return NULL; /* Do not accept stride for rgb, it gives me wrong output :-( */ if (priv->bitmaptype == BMPTYPE_YUV) Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-11-10 14:22:16 UTC (rev 323) @@ -17,7 +17,7 @@ static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...); static int __FASTCALL__ init(sh_video_t *sh,any_t* libinput); static void __FASTCALL__ uninit(sh_video_t *sh); -static mp_image_t* __FASTCALL__ decode(sh_video_t *sh,any_t* data,int len,int flags); +static mp_image_t* __FASTCALL__ decode(sh_video_t *sh,const enc_frame_t* frame,int flags); #define LIBVD_EXTERN(x) const vd_functions_t mpcodecs_vd_##x = {\ &info,\ Modified: mplayerxp/libmpcodecs/vd_libdv.c =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_libdv.c 2012-11-10 14:22:16 UTC (rev 323) @@ -59,17 +59,17 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags) +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags) { mp_image_t* mpi; dv_decoder_t *priv=sh->context; - if(len<=0 || (flags&3)){ + if(frame->len<=0 || (flags&3)){ // fprintf(stderr,"decode() (rawdv) SKIPPED\n"); return NULL; // skipped frame } - dv_parse_header(priv, data); + dv_parse_header(priv, frame->data); mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE, sh->src_w, sh->src_h); @@ -78,7 +78,7 @@ return NULL; } - dv_decode_full_frame(priv, data, e_dv_color_yuv, mpi->planes, mpi->stride); + dv_decode_full_frame(priv, frame->data, e_dv_color_yuv, mpi->planes, mpi->stride); return mpi; } Modified: mplayerxp/libmpcodecs/vd_libmpeg2.c =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-10 14:22:16 UTC (rev 323) @@ -209,22 +209,14 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ priv_t *priv=sh->context; mp_image_t *mpi; - const mpeg2_info_t *info; + const mpeg2_info_t *_info; int state,buf; - if(len<=0) return NULL; // skipped null frame + if(frame->len<=0) return NULL; // skipped null frame -#if 0 - // append extra 'end of frame' code: - ((char*)data+len)[0]=0; - ((char*)data+len)[1]=0; - ((char*)data+len)[2]=1; - ((char*)data+len)[3]=0xff; - len+=4; -#endif - info=mpeg2_info(priv->mpeg2dec); + _info=mpeg2_info(priv->mpeg2dec); mpi=NULL; buf=0; MSG_DBG2("len=%u ***mpeg2_info***\n",len); @@ -235,7 +227,7 @@ switch(state) { case STATE_BUFFER: - mpeg2_buffer(priv->mpeg2dec,data,data+len); + mpeg2_buffer(priv->mpeg2dec,frame->data,frame->data+frame->len); buf++; if(buf>2) return NULL; /* parsing of the passed buffer finished, return. */ break; @@ -243,31 +235,31 @@ #if 0 if(!priv->mpeg2dec->decoder.mpq_store) { - priv->mpeg2dec->decoder.mpq_stride=(info->sequence->picture_width+15)>>4; - priv->mpeg2dec->decoder.mpq_store=mp_malloc(priv->mpeg2dec->decoder.mpq_stride*((info->sequence->picture_height+15)>>4)); + priv->mpeg2dec->decoder.mpq_stride=(_info->sequence->picture_width+15)>>4; + priv->mpeg2dec->decoder.mpq_store=mp_malloc(priv->mpeg2dec->decoder.mpq_stride*((_info->sequence->picture_height+15)>>4)); } #endif mpi=mpcodecs_get_image(sh,MP_IMGTYPE_EXPORT, MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_DRAW_CALLBACK - ,info->sequence->width,info->sequence->height); + ,_info->sequence->width,_info->sequence->height); mpeg2_stride(priv->mpeg2dec,mpi->stride[0]); break; case STATE_SLICE: case STATE_END: case STATE_INVALID: /* we must call draw_frame() only after STATE_BUFFER and STATE_PICTURE events */ - MSG_DBG2("display=%X discard=%X current=%X mpi=%X\n",info->display_fbuf,info->discard_fbuf,info->current_fbuf,mpi); + MSG_DBG2("display=%X discard=%X current=%X mpi=%X\n",_info->display_fbuf,_info->discard_fbuf,_info->current_fbuf,mpi); /* Workaround for broken (badly demuxed) streams. Reset libmpeg2 to start decoding at the next picture. */ if(state==STATE_END) mpeg2_reset(priv->mpeg2dec,0); - if (info->display_fbuf && mpi) + if (_info->display_fbuf && mpi) { - mpi->pict_type=info->current_picture->flags&PIC_MASK_CODING_TYPE; + mpi->pict_type=_info->current_picture->flags&PIC_MASK_CODING_TYPE; #if 0 mpi->qscale_type= 1; mpi->qscale=priv->mpeg2dec->decoder.mpq_store; mpi->qstride=priv->mpeg2dec->decoder.mpq_stride; #endif - draw_frame (mpi,sh,info->sequence->width,info->display_fbuf); + draw_frame (mpi,sh,_info->sequence->width,_info->display_fbuf); return mpi; } break; Modified: mplayerxp/libmpcodecs/vd_mpegpes.c =================================================================== --- mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-10 14:22:16 UTC (rev 323) @@ -32,13 +32,13 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ mp_image_t* mpi; static vo_mpegpes_t packet; mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0,sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - packet.data=data; - packet.size=len-4; + packet.data=frame->data; + packet.size=frame->len-4; packet.timestamp=sh->ds->pts; packet.id=0x1E0; //+sh_video->ds->id; mpi->planes[0]=(uint8_t*)(&packet); Modified: mplayerxp/libmpcodecs/vd_null.c =================================================================== --- mplayerxp/libmpcodecs/vd_null.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_null.c 2012-11-10 14:22:16 UTC (rev 323) @@ -34,7 +34,7 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ return NULL; } Modified: mplayerxp/libmpcodecs/vd_nuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_nuv.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_nuv.c 2012-11-10 14:22:16 UTC (rev 323) @@ -40,15 +40,15 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ mp_image_t* mpi; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, 0, sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - decode_nuv(data, len, mpi->planes[0], sh->src_w, sh->src_h); + decode_nuv(frame->data, frame->len, mpi->planes[0], sh->src_w, sh->src_h); return mpi; } Modified: mplayerxp/libmpcodecs/vd_qtvideo.c =================================================================== --- mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-10 14:22:16 UTC (rev 323) @@ -303,21 +303,21 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ long result = 1; int i; mp_image_t* mpi; ComponentResult cres; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame mpi=mpcodecs_get_image(sh, MP_IMGTYPE_STATIC, MP_IMGFLAG_PRESERVE, sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - decpar.data = (char*)data; - decpar.bufferSize = len; - (**framedescHandle).dataSize=len; + decpar.data = (const char*)frame->data; + decpar.bufferSize = frame->len; + (**framedescHandle).dataSize=frame->len; if(!codec_inited){ result = QTNewGWorldFromPtr( Modified: mplayerxp/libmpcodecs/vd_raw.c =================================================================== --- mplayerxp/libmpcodecs/vd_raw.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_raw.c 2012-11-10 14:22:16 UTC (rev 323) @@ -49,16 +49,15 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ mp_image_t* mpi; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame - mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, - sh->src_w, sh->src_h); + mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; if(mpi->flags&MP_IMGFLAG_PLANAR){ - mpi->planes[0]=data; + mpi->planes[0]=frame->data; mpi->stride[0]=mpi->width; switch(sh->codec->outfmt[sh->outfmtidx]) { @@ -66,7 +65,7 @@ case IMGFMT_I420: case IMGFMT_IYUV: case IMGFMT_YV12: - mpi->planes[1]=data+mpi->width*mpi->height; + mpi->planes[1]=frame->data+mpi->width*mpi->height; mpi->stride[1]=mpi->width/2; mpi->planes[2]=mpi->planes[1]+(mpi->width/2)*(mpi->height/2); mpi->stride[2]=mpi->width/2; @@ -78,7 +77,7 @@ mpi->stride[3]=mpi->width/4; */ case IMGFMT_YVU9: - mpi->planes[1]=data+mpi->width*mpi->height; + mpi->planes[1]=frame->data+mpi->width*mpi->height; mpi->stride[1]=mpi->width/4; mpi->planes[2]=mpi->planes[1]+(mpi->width/4)*(mpi->height/4); mpi->stride[2]=mpi->width/4; @@ -87,7 +86,7 @@ break; } } else { - mpi->planes[0]=data; + mpi->planes[0]=frame->data; mpi->stride[0]=mpi->width*((mpi->bpp+7)/8); } return mpi; Modified: mplayerxp/libmpcodecs/vd_real.c =================================================================== --- mplayerxp/libmpcodecs/vd_real.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_real.c 2012-11-10 14:22:16 UTC (rev 323) @@ -49,7 +49,7 @@ uint32_t len; uint32_t unknown1; uint32_t chunks; - uint32_t* extra; + const uint32_t* extra; uint32_t unknown2; uint32_t timestamp; } transform_in_t; @@ -191,31 +191,31 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ - mp_image_t* mpi; - unsigned long result; - dp_hdr_t* dp_hdr=(dp_hdr_t*)data; - unsigned char* dp_data=((unsigned char*)data)+sizeof(dp_hdr_t); - uint32_t* extra=(uint32_t*)(((char*)data)+dp_hdr->chunktab); +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ + mp_image_t* mpi; + unsigned long result; + const dp_hdr_t* dp_hdr=(const dp_hdr_t*)frame->data; + const unsigned char* dp_data=((const unsigned char*)frame->data)+sizeof(dp_hdr_t); + const uint32_t* extra=(const uint32_t*)(((const char*)frame->data)+dp_hdr->chunktab); - unsigned int transform_out[5]; - transform_in_t transform_in={ - dp_hdr->len, // length of the packet (sub-packets appended) - 0, // unknown, seems to be unused - dp_hdr->chunks, // number of sub-packets - 1 - extra, // table of sub-packet offsets - 0, // unknown, seems to be unused - dp_hdr->timestamp,// timestamp (the integer value from the stream) - }; + unsigned int transform_out[5]; + transform_in_t transform_in={ + dp_hdr->len, // length of the packet (sub-packets appended) + 0, // unknown, seems to be unused + dp_hdr->chunks, // number of sub-packets - 1 + extra, // table of sub-packet offsets + 0, // unknown, seems to be unused + dp_hdr->timestamp,// timestamp (the integer value from the stream) + }; - if(len<=0 || flags&2) return NULL; // skipped frame || hardframedrop + if(frame->len<=0 || flags&2) return NULL; // skipped frame || hardframedrop - mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, 0 /*MP_IMGFLAG_ACCEPT_STRIDE*/, + mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, 0 /*MP_IMGFLAG_ACCEPT_STRIDE*/, sh->src_w, sh->src_h); if(mpi->flags&MP_IMGFLAG_DIRECT) mpi->flags|=MP_IMGFLAG_RENDERED; - - result=(*rvyuv_transform)(dp_data, mpi->planes[0], &transform_in, - transform_out, sh->context); - return (result?NULL:mpi); + result=(*rvyuv_transform)(dp_data, mpi->planes[0], &transform_in, + transform_out, sh->context); + + return (result?NULL:mpi); } Modified: mplayerxp/libmpcodecs/vd_theora.c =================================================================== --- mplayerxp/libmpcodecs/vd_theora.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_theora.c 2012-11-10 14:22:16 UTC (rev 323) @@ -129,18 +129,17 @@ /* * decode frame */ -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags) +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags) { priv_t *priv = (priv_t *)sh->context; int errorCode = 0; ogg_packet op; yuv_buffer yuv; mp_image_t* mpi; - int i; bzero (&op, sizeof (op)); - op.bytes = len; - op.packet = data; + op.bytes = frame->len; + op.packet = frame->data; op.granulepos = -1; errorCode = theora_decode_packetin (&priv->st, &op); Modified: mplayerxp/libmpcodecs/vd_vfw.c =================================================================== --- mplayerxp/libmpcodecs/vd_vfw.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_vfw.c 2012-11-10 14:22:16 UTC (rev 323) @@ -112,7 +112,7 @@ ex = priv->ex; MSG_V("======= Win32 (VFW) VIDEO Codec init =======\n"); - priv->hic = ICOpen(IC_FCCTYPE, sh_video->fourcc, ICMODE_DECOMPRESS); + priv->hic = ICOpen((long)IC_FCCTYPE, sh_video->fourcc, ICMODE_DECOMPRESS); if(!priv->hic){ MSG_ERR("ICOpen failed! unknown codec / wrong parameters?\n"); return MPXP_False; @@ -169,7 +169,7 @@ // avi_header.our_in_buffer=mp_malloc(avi_header.video.dwSuggestedBufferSize); // FIXME!!!! - ICSendMessage(priv->hic, ICM_USER+80, (long)(&divx_quality) ,NULL); + ICSendMessage(priv->hic, ICM_USER+80, (long)(&divx_quality), 0); // don't do this palette mess always, it makes div3 dll crashing... if(sh_video->codec->outfmt[sh_video->outfmtidx]==IMGFMT_BGR8){ @@ -188,7 +188,7 @@ static int vfw_set_postproc(sh_video_t* sh_video,int quality){ // Works only with opendivx/divx4 based DLL priv_t *priv=sh_video->context; - return ICSendMessage(priv->hic, ICM_USER+80, (long)(&quality) ,NULL); + return ICSendMessage(priv->hic, ICM_USER+80, (long)(&quality), 0); } static MPXP_Rc vfw_close_video_codec(sh_video_t *sh_video) @@ -268,12 +268,12 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ priv_t *priv = sh->context; mp_image_t* mpi; HRESULT ret; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_WIDTH, @@ -284,18 +284,18 @@ sh->bih->biWidth=mpi->width; //mpi->stride[0]/(mpi->bpp/8); priv->o_bih->biWidth=mpi->width; //mpi->stride[0]/(mpi->bpp/8); - sh->bih->biSizeImage = len; + sh->bih->biSizeImage = frame->len; if(priv->ex) ret = ICDecompressEx(priv->hic, ( (sh->ds->flags&1) ? 0 : ICDECOMPRESS_NOTKEYFRAME ) | ( ((flags&3)==2 && !(sh->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ), - sh->bih, data, priv->o_bih, (flags&3) ? 0 : mpi->planes[0]); + sh->bih, frame->data, priv->o_bih, (flags&3) ? 0 : mpi->planes[0]); else ret = ICDecompress(priv->hic, ( (sh->ds->flags&1) ? 0 : ICDECOMPRESS_NOTKEYFRAME ) | ( ((flags&3)==2 && !(sh->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ), - sh->bih, data, priv->o_bih, (flags&3) ? 0 : mpi->planes[0]); + sh->bih, frame->data, priv->o_bih, (flags&3) ? 0 : mpi->planes[0]); if ((int)ret){ MSG_WARN("Error decompressing frame, err=%d\n",ret); Modified: mplayerxp/libmpcodecs/vd_xanim.c =================================================================== --- mplayerxp/libmpcodecs/vd_xanim.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_xanim.c 2012-11-10 14:22:16 UTC (rev 323) @@ -884,13 +884,13 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ mp_image_t* mpi; xacodec_image_t* image; - if(len<=0) return NULL; // skipped frame + if(frame->len<=0) return NULL; // skipped frame - image=xacodec_decode_frame(data,len,(flags&3)?1:0); + image=xacodec_decode_frame(frame->data,frame->len,(flags&3)?1:0); if(!image) return NULL; mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_PRESERVE, Modified: mplayerxp/libmpcodecs/vd_xvid.c =================================================================== --- mplayerxp/libmpcodecs/vd_xvid.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpcodecs/vd_xvid.c 2012-11-10 14:22:16 UTC (rev 323) @@ -394,22 +394,22 @@ // decode a frame -static mp_image_t* decode(sh_video_t *sh,any_t* data,int len,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ xvid_dec_frame_t dec; xvid_dec_stats_t stats; mp_image_t* mpi = NULL; int consumed; priv_t* priv = sh->context; - if(!data || len <= 0) return NULL; + if(frame->len <= 0) return NULL; memset(&dec,0,sizeof(xvid_dec_frame_t)); memset(&stats, 0, sizeof(xvid_dec_stats_t)); dec.version = XVID_VERSION; stats.version = XVID_VERSION; - dec.bitstream = data; - dec.length = len; + dec.bitstream = frame->data; + dec.length = frame->len; dec.general = 0; dec.brightness = priv->brightness; if(!priv->pp_level) dec.general |= XVID_LOWDELAY | XVID_DEC_FAST; Modified: mplayerxp/libmpdemux/demuxer_r.c =================================================================== --- mplayerxp/libmpdemux/demuxer_r.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpdemux/demuxer_r.c 2012-11-10 14:22:16 UTC (rev 323) @@ -9,11 +9,25 @@ #include "demuxer_r.h" #include "libmpsub/vobsub.h" #include "osdep/timer.h" +#include "osdep/mplib.h" #include "mplayerxp.h" #include "xmpcore/xmp_core.h" #include "demux_msg.h" +enc_frame_t* new_enc_frame(enc_frame_type_e type,unsigned len,float pts,float duration) { + enc_frame_t* frame=mp_mallocz(sizeof(enc_frame_t)); + frame->type=type; + frame->pts=pts; + frame->duration=duration; + frame->len=len; + return frame; +} +void free_enc_frame(enc_frame_t* frame) { + if(frame->data && frame->type!=VideoFrame) mp_free(frame->data); + mp_free(frame); +} + pthread_mutex_t demuxer_mutex=PTHREAD_MUTEX_INITIALIZER; #define LOCK_DEMUXER() { pthread_mutex_lock(&demuxer_mutex); } #define UNLOCK_DEMUXER() { pthread_mutex_unlock(&demuxer_mutex); } @@ -81,15 +95,21 @@ return retval; } -int video_read_frame_r(sh_video_t* sh_video,float* frame_time_ptr,float *v_pts,unsigned char** start,int force_fps) +enc_frame_t* video_read_frame_r(sh_video_t* sh_video,int force_fps) { + enc_frame_t* frame; + float frame_time,v_pts; + unsigned char* start; int retval; unsigned int t=0; unsigned int t2=0; double tt; LOCK_DEMUXER(); if(mp_conf.benchmark) t=GetTimer(); - retval = video_read_frame(sh_video,frame_time_ptr,v_pts,start,force_fps); + retval = video_read_frame(sh_video,&frame_time,&v_pts,&start,force_fps); + if(retval<=0) return NULL; + frame=new_enc_frame(VideoFrame,retval,v_pts,frame_time); + frame->data=start; if(mp_conf.benchmark) { t2=GetTimer();t=t2-t; @@ -99,7 +119,7 @@ if(tt < mp_data->bench->min_demux) mp_data->bench->min_demux=tt; } UNLOCK_DEMUXER(); - return retval; + return frame; } int demux_read_data_r(demux_stream_t *ds,unsigned char* mem,int len,float *pts) Modified: mplayerxp/libmpdemux/demuxer_r.h =================================================================== --- mplayerxp/libmpdemux/demuxer_r.h 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/libmpdemux/demuxer_r.h 2012-11-10 14:22:16 UTC (rev 323) @@ -11,10 +11,26 @@ extern "C" { #endif +typedef enum enc_frame_type { + AudioFrame =0, + VideoFrame +}enc_frame_type_e; + +typedef struct enc_frame_s { + enc_frame_type_e type; + float pts; + float duration; + unsigned len; + any_t* data; +}enc_frame_t; + +extern enc_frame_t* new_enc_frame(enc_frame_type_e type,unsigned len,float pts,float duration); +extern void free_enc_frame(enc_frame_t* frame); + static inline int ds_tell_pts_r(demux_stream_t *ds) { return ds_tell_pts(ds); } extern int demux_getc_r(demux_stream_t *ds,float *pts); -extern int video_read_frame_r(sh_video_t* sh_video,float* frame_time_ptr,float *v_pts,unsigned char** start,int force_fps); +extern enc_frame_t* video_read_frame_r(sh_video_t* sh_video,int force_fps); extern int demux_read_data_r(demux_stream_t *ds,unsigned char* mem,int len,float *pts); extern int ds_get_packet_r(demux_stream_t *ds,unsigned char **start,float *pts); extern int ds_get_packet_sub_r(demux_stream_t *ds,unsigned char **start); Modified: mplayerxp/xmpcore/xmp_vdecoder.c =================================================================== --- mplayerxp/xmpcore/xmp_vdecoder.c 2012-11-10 13:27:24 UTC (rev 322) +++ mplayerxp/xmpcore/xmp_vdecoder.c 2012-11-10 14:22:16 UTC (rev 323) @@ -115,13 +115,14 @@ demux_stream_t *d_video=sh_video->ds; demuxer_t* demuxer=d_video->demuxer; demux_stream_t* d_audio=demuxer->audio; + enc_frame_t* frame; float duration=0; float drop_barrier; int blit_frame=0; int drop_param=0; unsigned xp_n_frame_to_drop; - float v_pts,mpeg_timer=HUGE; + float mpeg_timer=HUGE; priv->state=Pth_Run; priv->dae->eof = 0; @@ -141,8 +142,6 @@ else xp_core->bad_pts = mp_conf.av_sync_pts?0:1; while(!priv->dae->eof){ - unsigned char* start=NULL; - int in_size; if(priv->state==Pth_Canceling) break; if(priv->state==Pth_Sleep) { pt_sleep: @@ -163,24 +162,22 @@ } #endif /*-------------------- Decode a frame: -----------------------*/ - in_size=video_read_frame_r(sh_video,&duration,&v_pts,&start,sh_video->fps); - if(in_size<0) { + frame=video_read_frame_r(sh_video,sh_video->fps); + if(!frame) { pt_exit_loop: dae_decoded_mark_eof(xp_core->video); priv->dae->eof=1; break; } if(mp_conf.play_n_frames>0 && xp_core->video->num_decoded_frames >= mp_conf.play_n_frames) goto pt_exit_loop; - /* in_size==0: it's or broken stream or demuxer's bug */ - if(in_size==0 && priv->state!=Pth_Canceling) continue; /* frame was decoded into current decoder_idx */ if(xp_core->bad_pts) { - if(mpeg_timer==HUGE) mpeg_timer=v_pts; - else if( mpeg_timer-duration<v_pts ) { - mpeg_timer=v_pts; + if(mpeg_timer==HUGE) mpeg_timer=frame->pts; + else if( mpeg_timer-duration<frame->pts ) { + mpeg_timer=frame->pts; MSG_DBG2("Sync mpeg pts %f\n", mpeg_timer); } - else mpeg_timer+=duration; + else mpeg_timer+=frame->duration; } /* compute frame dropping */ xp_n_frame_to_drop=0; @@ -188,9 +185,9 @@ int cur_time; cur_time = GetTimerMS(); /* Ugly solution: disable frame dropping right after seeking! */ - if(cur_time - mp_data->seek_time > (xp_core->num_v_buffs/sh_video->fps)*100) xp_n_frame_to_drop=compute_frame_dropping(sh_video,v_pts,drop_barrier); + if(cur_time - mp_data->seek_time > (xp_core->num_v_buffs/sh_video->fps)*100) xp_n_frame_to_drop=compute_frame_dropping(sh_video,frame->pts,drop_barrier); } /* if( mp_conf.frame_dropping ) */ - if(!finite(v_pts)) MSG_WARN("Bug of demuxer! Value of video pts=%f\n",v_pts); + if(!finite(frame->pts)) MSG_WARN("Bug of demuxer! Value of video pts=%f\n",frame->pts); #if 0 /* We can't seriously examine question of too slow machines @@ -215,7 +212,7 @@ else if(mp_conf.autoq) mpcv_set_quality(sh_video,our_quality>0?our_quality:0); } - blit_frame=mpcv_decode(sh_video,start,in_size,drop_param,v_pts); + blit_frame=mpcv_decode(sh_video,frame,drop_param); MSG_DBG2("DECODER: %i[%i] %f\n",dae_curr_vdecoded(xp_core),in_size,v_pts); if(mp_data->output_quality) { if(drop_param) mpcv_set_quality(sh_video,mp_data->output_quality); @@ -226,12 +223,12 @@ if(xp_core->bad_pts) xp_core->video->frame[idx].v_pts=mpeg_timer; else - xp_core->video->frame[idx].v_pts = v_pts; + xp_core->video->frame[idx].v_pts = frame->pts; xp_core->video->frame[idx].duration=duration; dae_decoded_clear_eof(xp_core->video); if(!xp_core->bad_pts) { int _idx = dae_prev_vdecoded(xp_core); - xp_core->video->frame[_idx].duration=v_pts-xp_core->video->frame[_idx].v_pts; + xp_core->video->frame[_idx].duration=frame->pts-xp_core->video->frame[_idx].v_pts; } if(mp_conf.frame_reorder) reorder_pts_in_mpeg(); } /* if (blit_frame) */ @@ -251,6 +248,7 @@ } usleep(1); } + free_enc_frame(frame); /*------------------------ frame decoded. --------------------*/ } /* while(!priv->dae->eof)*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-10 17:01:39
|
Revision: 324 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=324&view=rev Author: nickols_k Date: 2012-11-10 17:01:29 +0000 (Sat, 10 Nov 2012) Log Message: ----------- cleanups Modified Paths: -------------- mplayerxp/libmpcodecs/ad_internal.h mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpcodecs/libdca/parse.c mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_dmo.c mplayerxp/libmpcodecs/vd_dshow.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpcodecs/vd_mpegpes.c mplayerxp/libmpcodecs/vd_null.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_qtvideo.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_vfw.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/libmpdemux/demux_lavf.c mplayerxp/libmpdemux/demux_pva.c mplayerxp/libmpdemux/demuxer_r.h mplayerxp/mp_msg.c mplayerxp/osdep/getch2.c mplayerxp/postproc/vf_pp.c mplayerxp/xmpcore/xmp_vdecoder.c Modified: mplayerxp/libmpcodecs/ad_internal.h =================================================================== --- mplayerxp/libmpcodecs/ad_internal.h 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-11-10 17:01:29 UTC (rev 324) @@ -12,8 +12,8 @@ #include "ad_msg.h" -static int __FASTCALL__ init(sh_audio_t *sh); -static int __FASTCALL__ preinit(sh_audio_t *sh); +static MPXP_Rc __FASTCALL__ init(sh_audio_t *sh); +static MPXP_Rc __FASTCALL__ preinit(sh_audio_t *sh); static void __FASTCALL__ uninit(sh_audio_t *sh); static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...); static unsigned __FASTCALL__ decode(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); @@ -23,7 +23,7 @@ &options,\ preinit,\ init,\ - uninit,\ + uninit,\ control,\ decode\ }; Modified: mplayerxp/libmpcodecs/ad_mp3.c =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/ad_mp3.c 2012-11-10 17:01:29 UTC (rev 324) @@ -240,9 +240,8 @@ { int rval; sh->audio_out_minsize=9216; - rval=0; rval = load_dll("libmpg123"SLIBSUFFIX); /* try standard libmpg123 first */ - return rval; + return rval?MPXP_Ok:MPXP_False; } typedef struct priv_s { Modified: mplayerxp/libmpcodecs/dec_video.c =================================================================== --- mplayerxp/libmpcodecs/dec_video.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/dec_video.c 2012-11-10 17:01:29 UTC (rev 324) @@ -44,8 +44,6 @@ extern int v_hue; extern int v_saturation; -int divx_quality=PP_QUALITY_MAX; - const vd_functions_t* mpvdec=NULL; MPXP_Rc mpcv_get_quality_max(sh_video_t *sh_video,unsigned *quality){ @@ -225,7 +223,7 @@ extern vo_data_t* vo_data; static void update_subtitle(sh_video_t *sh_video,float v_pts,unsigned idx); -int mpcv_decode(sh_video_t *sh_video,const enc_frame_t* frame,int drop_frame){ +int mpcv_decode(sh_video_t *sh_video,const enc_frame_t* frame){ vf_instance_t* vf; mp_image_t *mpi=NULL; unsigned int t; @@ -238,7 +236,7 @@ vf->control(vf,VFCTRL_START_FRAME,NULL); sh_video->active_slices=0; - mpi=mpvdec->decode(sh_video, frame, drop_frame); + mpi=mpvdec->decode(sh_video, frame); MSG_DBG2("decvideo: decoding video %u bytes\n",in_size); while(sh_video->active_slices!=0) usleep(0); /* ------------------------ frame decoded. -------------------- */ @@ -255,7 +253,7 @@ mp_data->bench->cur_video=tt; } - if(drop_frame) return 0; + if(frame->flags) return 0; update_subtitle(sh_video,frame->pts,mpi->xp_idx); vo_flush_page(vo_data,dae_curr_vdecoded(xp_core)); Modified: mplayerxp/libmpcodecs/dec_video.h =================================================================== --- mplayerxp/libmpcodecs/dec_video.h 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/dec_video.h 2012-11-10 17:01:29 UTC (rev 324) @@ -7,7 +7,7 @@ extern void __FASTCALL__ mpcv_uninit(sh_video_t *sh_video); extern MPXP_Rc __FASTCALL__ mpcv_ffmpeg_init(sh_video_t*,any_t* libinput); -extern int __FASTCALL__ mpcv_decode(sh_video_t *sh_video,const enc_frame_t* frame,int drop_frame); +extern int __FASTCALL__ mpcv_decode(sh_video_t *sh_video,const enc_frame_t* frame); extern MPXP_Rc __FASTCALL__ mpcv_get_quality_max(sh_video_t *sh_video,unsigned *qual); extern MPXP_Rc __FASTCALL__ mpcv_set_quality(sh_video_t *sh_video,int quality); @@ -15,7 +15,5 @@ extern MPXP_Rc __FASTCALL__ mpcv_set_colors(sh_video_t *sh_video,char *item,int value); extern void __FASTCALL__ mpcv_resync_stream(sh_video_t *sh_video); -extern int divx_quality; - extern void vfm_help(void); #endif Modified: mplayerxp/libmpcodecs/libdca/parse.c =================================================================== --- mplayerxp/libmpcodecs/libdca/parse.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/libdca/parse.c 2012-11-10 17:01:29 UTC (rev 324) @@ -671,7 +671,7 @@ state->joint_scale_factor[j][k] = scale;/*joint_scale_table[scale];*/ } - if (!state->debug_flag & 0x02) + if (!(state->debug_flag & 0x02)) { fprintf (stderr, "Joint stereo coding not supported\n"); state->debug_flag |= 0x02; Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd.h 2012-11-10 17:01:29 UTC (rev 324) @@ -20,7 +20,7 @@ MPXP_Rc (*__FASTCALL__ init)(sh_video_t *sh,any_t* libinput); void (*__FASTCALL__ uninit)(sh_video_t *sh); MPXP_Rc (* control)(sh_video_t *sh,int cmd,any_t* arg, ...); - mp_image_t* (*__FASTCALL__ decode)(sh_video_t *sh,const enc_frame_t* frame,int flags); + mp_image_t* (*__FASTCALL__ decode)(sh_video_t *sh,const enc_frame_t* frame); } vd_functions_t; // NULL terminated array of all drivers Modified: mplayerxp/libmpcodecs/vd_divx4.c =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_divx4.c 2012-11-10 17:01:29 UTC (rev 324) @@ -235,7 +235,7 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ priv_t*p=sh->context; mp_image_t* mpi; DecFrame decFrame; @@ -249,7 +249,7 @@ decFrame.bitstream.pBuff = frame->data; decFrame.bitstream.iLength = frame->len; - decFrame.shallowDecode = (flags&3)?1:0; + decFrame.shallowDecode = (frame->flags&3)?1:0; decFrame.pBmp=mpi->planes[0]; decFrame.bmpStride=(mpi->flags&(MP_IMGFLAG_YUV|MP_IMGFLAG_DIRECT))==(MP_IMGFLAG_YUV|MP_IMGFLAG_DIRECT)? mpi->flags&MP_IMGFLAG_PLANAR?mpi->stride[0]:mpi->stride[0]/2: Modified: mplayerxp/libmpcodecs/vd_dmo.c =================================================================== --- mplayerxp/libmpcodecs/vd_dmo.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_dmo.c 2012-11-10 17:01:29 UTC (rev 324) @@ -79,11 +79,11 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; if(frame->len<=0) return NULL; // skipped frame - if(flags&3){ + if(frame->flags&3){ // framedrop: DMO_VideoDecoder_DecodeInternal(sh->context, frame->data, frame->len, sh->ds->flags&1, 0); return NULL; Modified: mplayerxp/libmpcodecs/vd_dshow.c =================================================================== --- mplayerxp/libmpcodecs/vd_dshow.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_dshow.c 2012-11-10 17:01:29 UTC (rev 324) @@ -3,6 +3,7 @@ #include <stdarg.h> #include "mp_config.h" +#include "mplayerxp.h" #include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */ #include "help_mp.h" @@ -83,7 +84,7 @@ default: DS_VideoDecoder_SetDestFmt(sh->context,out_fmt&255,0); // RGB/BGR } - DS_SetAttr_DivX("Quality",divx_quality); + DS_SetAttr_DivX("Quality",mp_data->output_quality); DS_VideoDecoder_StartInternal(sh->context); MSG_V("INFO: Win32/DShow init OK!\n"); return MPXP_Ok; @@ -95,11 +96,11 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; if(frame->len<=0) return NULL; // skipped frame - if(flags&3){ + if(frame->flags&3){ // framedrop: DS_VideoDecoder_DecodeInternal(sh->context, frame->data, frame->len, sh->ds->flags&1, 0); return NULL; Modified: mplayerxp/libmpcodecs/vd_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-10 17:01:29 UTC (rev 324) @@ -134,7 +134,6 @@ case VDCTRL_SET_PP_LEVEL: { int quality=*((int*)arg); if(quality<0 || quality>PP_QUALITY_MAX) quality=PP_QUALITY_MAX; - divx_quality = quality; return MPXP_Ok; } case VDCTRL_QUERY_FORMAT: @@ -646,7 +645,7 @@ } dp_hdr_t; // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ int got_picture=0; int ret,has_b_frames; unsigned len=frame->len; @@ -657,7 +656,7 @@ priv->ctx->opaque=sh; if(frame->len<=0) return NULL; // skipped frame - priv->ctx->skip_frame=(flags&3)?((flags&2)?AVDISCARD_NONKEY:AVDISCARD_DEFAULT):AVDISCARD_NONE; + priv->ctx->skip_frame=(frame->flags&3)?((frame->flags&2)?AVDISCARD_NONKEY:AVDISCARD_DEFAULT):AVDISCARD_NONE; if(priv->cap_slices) priv->use_slices= !(sh->vf_flags&VF_FLAGS_SLICES)?0:(priv->ctx->skip_frame!=AVDISCARD_NONE)?0:1; else priv->use_slices=0; /* @@ -707,7 +706,7 @@ priv->ctx->release_buffer= release_buffer; priv->ctx->reget_buffer= get_buffer; } - if(!(flags&3) && priv->use_slices) + if(!(frame->flags&3) && priv->use_slices) { mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_DRAW_CALLBACK|MP_IMGFLAG_DIRECT,sh->src_w, sh->src_h); priv->mpi = mpi; Modified: mplayerxp/libmpcodecs/vd_huffyuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-10 17:01:29 UTC (rev 324) @@ -463,7 +463,7 @@ * Decode a HuffYUV frame * */ -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags) +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame) { mp_image_t* mpi; int pixel_ptr; Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-11-10 17:01:29 UTC (rev 324) @@ -9,15 +9,13 @@ #include "vd.h" #include "vd_msg.h" -extern int divx_quality; - // prototypes: //static vd_info_t info; static const config_t options[]; static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...); static int __FASTCALL__ init(sh_video_t *sh,any_t* libinput); static void __FASTCALL__ uninit(sh_video_t *sh); -static mp_image_t* __FASTCALL__ decode(sh_video_t *sh,const enc_frame_t* frame,int flags); +static mp_image_t* __FASTCALL__ decode(sh_video_t *sh,const enc_frame_t* frame); #define LIBVD_EXTERN(x) const vd_functions_t mpcodecs_vd_##x = {\ &info,\ Modified: mplayerxp/libmpcodecs/vd_libdv.c =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_libdv.c 2012-11-10 17:01:29 UTC (rev 324) @@ -59,12 +59,12 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags) +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame) { mp_image_t* mpi; dv_decoder_t *priv=sh->context; - if(frame->len<=0 || (flags&3)){ + if(frame->len<=0 || (frame->flags&3)){ // fprintf(stderr,"decode() (rawdv) SKIPPED\n"); return NULL; // skipped frame } Modified: mplayerxp/libmpcodecs/vd_libmpeg2.c =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-10 17:01:29 UTC (rev 324) @@ -209,7 +209,7 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ priv_t *priv=sh->context; mp_image_t *mpi; const mpeg2_info_t *_info; Modified: mplayerxp/libmpcodecs/vd_mpegpes.c =================================================================== --- mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-10 17:01:29 UTC (rev 324) @@ -32,7 +32,7 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; static vo_mpegpes_t packet; mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0,sh->src_w, sh->src_h); Modified: mplayerxp/libmpcodecs/vd_null.c =================================================================== --- mplayerxp/libmpcodecs/vd_null.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_null.c 2012-11-10 17:01:29 UTC (rev 324) @@ -31,10 +31,12 @@ } // uninit driver -static void uninit(sh_video_t *sh) {} +static void uninit(sh_video_t *sh) { UNUSED(sh); } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ + UNUSED(sh); + UNUSED(frame); return NULL; } Modified: mplayerxp/libmpcodecs/vd_nuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_nuv.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_nuv.c 2012-11-10 17:01:29 UTC (rev 324) @@ -40,7 +40,7 @@ static void uninit(sh_video_t *sh) {} // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; if(frame->len<=0) return NULL; // skipped frame Modified: mplayerxp/libmpcodecs/vd_qtvideo.c =================================================================== --- mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-10 17:01:29 UTC (rev 324) @@ -303,7 +303,7 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ long result = 1; int i; mp_image_t* mpi; Modified: mplayerxp/libmpcodecs/vd_raw.c =================================================================== --- mplayerxp/libmpcodecs/vd_raw.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_raw.c 2012-11-10 17:01:29 UTC (rev 324) @@ -46,10 +46,10 @@ } // uninit driver -static void uninit(sh_video_t *sh) {} +static void uninit(sh_video_t *sh) { UNUSED(sh); } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; if(frame->len<=0) return NULL; // skipped frame Modified: mplayerxp/libmpcodecs/vd_real.c =================================================================== --- mplayerxp/libmpcodecs/vd_real.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_real.c 2012-11-10 17:01:29 UTC (rev 324) @@ -191,7 +191,7 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; unsigned long result; const dp_hdr_t* dp_hdr=(const dp_hdr_t*)frame->data; @@ -208,7 +208,7 @@ dp_hdr->timestamp,// timestamp (the integer value from the stream) }; - if(frame->len<=0 || flags&2) return NULL; // skipped frame || hardframedrop + if(frame->len<=0 || frame->flags&2) return NULL; // skipped frame || hardframedrop mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, 0 /*MP_IMGFLAG_ACCEPT_STRIDE*/, sh->src_w, sh->src_h); Modified: mplayerxp/libmpcodecs/vd_theora.c =================================================================== --- mplayerxp/libmpcodecs/vd_theora.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_theora.c 2012-11-10 17:01:29 UTC (rev 324) @@ -129,7 +129,7 @@ /* * decode frame */ -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags) +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame) { priv_t *priv = (priv_t *)sh->context; int errorCode = 0; Modified: mplayerxp/libmpcodecs/vd_vfw.c =================================================================== --- mplayerxp/libmpcodecs/vd_vfw.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_vfw.c 2012-11-10 17:01:29 UTC (rev 324) @@ -1,4 +1,5 @@ #include "mp_config.h" +#include "mplayerxp.h" #include <stdio.h> #include <stdlib.h> @@ -169,7 +170,7 @@ // avi_header.our_in_buffer=mp_malloc(avi_header.video.dwSuggestedBufferSize); // FIXME!!!! - ICSendMessage(priv->hic, ICM_USER+80, (long)(&divx_quality), 0); + ICSendMessage(priv->hic, ICM_USER+80, (long)(&mp_data->output_quality), 0); // don't do this palette mess always, it makes div3 dll crashing... if(sh_video->codec->outfmt[sh_video->outfmtidx]==IMGFMT_BGR8){ @@ -268,7 +269,7 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ priv_t *priv = sh->context; mp_image_t* mpi; HRESULT ret; @@ -289,13 +290,13 @@ if(priv->ex) ret = ICDecompressEx(priv->hic, ( (sh->ds->flags&1) ? 0 : ICDECOMPRESS_NOTKEYFRAME ) | - ( ((flags&3)==2 && !(sh->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ), - sh->bih, frame->data, priv->o_bih, (flags&3) ? 0 : mpi->planes[0]); + ( ((frame->flags&3)==2 && !(sh->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ), + sh->bih, frame->data, priv->o_bih, (frame->flags&3) ? 0 : mpi->planes[0]); else ret = ICDecompress(priv->hic, ( (sh->ds->flags&1) ? 0 : ICDECOMPRESS_NOTKEYFRAME ) | - ( ((flags&3)==2 && !(sh->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ), - sh->bih, frame->data, priv->o_bih, (flags&3) ? 0 : mpi->planes[0]); + ( ((frame->flags&3)==2 && !(sh->ds->flags&1))?(ICDECOMPRESS_HURRYUP|ICDECOMPRESS_PREROL):0 ), + sh->bih, frame->data, priv->o_bih, (frame->flags&3) ? 0 : mpi->planes[0]); if ((int)ret){ MSG_WARN("Error decompressing frame, err=%d\n",ret); Modified: mplayerxp/libmpcodecs/vd_xanim.c =================================================================== --- mplayerxp/libmpcodecs/vd_xanim.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_xanim.c 2012-11-10 17:01:29 UTC (rev 324) @@ -884,13 +884,13 @@ } // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ mp_image_t* mpi; xacodec_image_t* image; if(frame->len<=0) return NULL; // skipped frame - image=xacodec_decode_frame(frame->data,frame->len,(flags&3)?1:0); + image=xacodec_decode_frame(frame->data,frame->len,(frame->flags&3)?1:0); if(!image) return NULL; mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_PRESERVE, Modified: mplayerxp/libmpcodecs/vd_xvid.c =================================================================== --- mplayerxp/libmpcodecs/vd_xvid.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpcodecs/vd_xvid.c 2012-11-10 17:01:29 UTC (rev 324) @@ -394,7 +394,7 @@ // decode a frame -static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame,int flags){ +static mp_image_t* decode(sh_video_t *sh,const enc_frame_t* frame){ xvid_dec_frame_t dec; xvid_dec_stats_t stats; mp_image_t* mpi = NULL; @@ -420,7 +420,7 @@ if(priv->pp_level>4) dec.general |= XVID_DERINGUV; if(priv->resync) { dec.general |= XVID_DISCONTINUITY; priv->resync=0; } - if(flags&3) dec.general |= XVID_DEC_DROP; + if(frame->flags&3) dec.general |= XVID_DEC_DROP; dec.output.csp = priv->cs; mpi = mpcodecs_get_image(sh, priv->img_type, MP_IMGFLAG_ACCEPT_STRIDE, sh->src_w, sh->src_h); Modified: mplayerxp/libmpdemux/demux_lavf.c =================================================================== --- mplayerxp/libmpdemux/demux_lavf.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpdemux/demux_lavf.c 2012-11-10 17:01:29 UTC (rev 324) @@ -236,7 +236,7 @@ parse_cryptokey(avfc, opt_cryptokey); priv->pb = avio_alloc_context(priv->buffer, BIO_BUFFER_SIZE, 0, - demuxer->stream, mpxp_read, NULL, mpxp_seek); + demuxer->stream, mpxp_read, NULL/*mpxp_write*/, mpxp_seek); avfc->pb = priv->pb; if((err=avformat_open_input(&avfc, mp_filename, priv->avif, NULL))<0){ Modified: mplayerxp/libmpdemux/demux_pva.c =================================================================== --- mplayerxp/libmpdemux/demux_pva.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpdemux/demux_pva.c 2012-11-10 17:01:29 UTC (rev 324) @@ -433,7 +433,7 @@ buffer[255]=stream_read_char(d->stream); pes_head_len=stream_read_char(d->stream); stream_read(d->stream,buffer,pes_head_len); - if(!buffer[255]&0x80) //PES header does not contain PTS. + if(!(buffer[255]&0x80)) //PES header does not contain PTS. { MSG_V("Audio PES packet does not contain PTS. (pes_head_len=%d)\n",pes_head_len); payload->pts=priv->last_audio_pts; Modified: mplayerxp/libmpdemux/demuxer_r.h =================================================================== --- mplayerxp/libmpdemux/demuxer_r.h 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/libmpdemux/demuxer_r.h 2012-11-10 17:01:29 UTC (rev 324) @@ -22,6 +22,7 @@ float duration; unsigned len; any_t* data; + unsigned flags; // codec specific flags. filled by video_decode }enc_frame_t; extern enc_frame_t* new_enc_frame(enc_frame_type_e type,unsigned len,float pts,float duration); Modified: mplayerxp/mp_msg.c =================================================================== --- mplayerxp/mp_msg.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/mp_msg.c 2012-11-10 17:01:29 UTC (rev 324) @@ -95,8 +95,8 @@ unsigned mod=x&0x0FFFFFFF; static int was_eol=1; if(mp_data) priv=mp_data->msg_priv; - if(level>mp_conf.verbose+MSGL_V-1) return; /* do not display */ - if((mod&mp_conf.msg_filter)==0) return; /* do not display */ + if(level>mp_conf.verbose+MSGL_V-1) return 0; /* do not display */ + if((mod&mp_conf.msg_filter)==0) return 0; /* do not display */ if(priv) { pthread_mutex_lock(&priv->mp_msg_mutex); if(isatty(fileno(stderr))) Modified: mplayerxp/osdep/getch2.c =================================================================== --- mplayerxp/osdep/getch2.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/osdep/getch2.c 2012-11-10 17:01:29 UTC (rev 324) @@ -121,10 +121,11 @@ #endif } -int getch2(int time){ +int getch2(int _time){ int len=0; int code=0; int i=0; + int c; while(!getch2_len || (getch2_len==1 && getch2_buf[0]==27)){ fd_set rfds; @@ -133,7 +134,7 @@ /* Watch stdin (fd 0) to see when it has input. */ FD_ZERO(&rfds); FD_SET(0,&rfds); /* Wait up to 'time' microseconds. */ - tv.tv_sec=time/1000; tv.tv_usec = (time%1000)*1000; + tv.tv_sec=_time/1000; tv.tv_usec = (_time%1000)*1000; retval=select(1, &rfds, NULL, NULL, &tv); if(retval<=0) return -1; /* Data is available now. */ @@ -161,22 +162,22 @@ if(code==8 || code==127){ code=KEY_BS; goto found;} if(code==10 || code==13){ if(getch2_len>1){ - int c=getch2_buf[1]; + c=getch2_buf[1]; if(c==10 || c==13) if(c!=code) len=2; } code=KEY_ENTER; goto found; } } else if(getch2_len>1){ - int c=getch2_buf[1]; + c=getch2_buf[1]; if(c==27){ code=KEY_ESC; len=2; goto found;} if(c>='0' && c<='9'){ code=c-'0'+KEY_F; len=2; goto found;} if(getch2_len>=4 && c=='[' && getch2_buf[2]=='['){ - int c=getch2_buf[3]; + c=getch2_buf[3]; if(c>='A' && c<'A'+12){ code=KEY_F+1+c-'A';len=4;goto found;} } if(c=='[' || c=='O') if(getch2_len>=3){ - int c=getch2_buf[2]; + c=getch2_buf[2]; static short int ctable[]={ KEY_UP,KEY_DOWN,KEY_RIGHT,KEY_LEFT,0, KEY_END,KEY_PGDWN,KEY_HOME,KEY_PGUP,0,0,KEY_INS,0,0,0, KEY_F+1,KEY_F+2,KEY_F+3,KEY_F+4}; @@ -184,12 +185,12 @@ if(ctable[c-'A']){ code=ctable[c-'A']; len=3; goto found;} } if(getch2_len>=4 && c=='[' && getch2_buf[3]=='~'){ - int c=getch2_buf[2]; + c=getch2_buf[2]; int ctable[8]={KEY_HOME,KEY_INS,KEY_DEL,KEY_END,KEY_PGUP,KEY_PGDWN,KEY_HOME,KEY_END}; if(c>='1' && c<='8'){ code=ctable[c-'1']; len=4; goto found;} } if(getch2_len>=5 && c=='[' && getch2_buf[4]=='~'){ - int i=getch2_buf[2]-'0'; + i=getch2_buf[2]-'0'; int j=getch2_buf[3]-'0'; if(i>=0 && i<=9 && j>=0 && j<=9){ static short int ftable[20]={ @@ -202,7 +203,6 @@ } found: if((getch2_len-=len)>0){ - int i; for(i=0;i<getch2_len;i++) getch2_buf[i]=getch2_buf[len+i]; } return code; Modified: mplayerxp/postproc/vf_pp.c =================================================================== --- mplayerxp/postproc/vf_pp.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/postproc/vf_pp.c 2012-11-10 17:01:29 UTC (rev 324) @@ -125,8 +125,6 @@ //===========================================================================// -extern int divx_quality; - static unsigned int fmt_list[]={ IMGFMT_YV12, IMGFMT_I420, Modified: mplayerxp/xmpcore/xmp_vdecoder.c =================================================================== --- mplayerxp/xmpcore/xmp_vdecoder.c 2012-11-10 14:22:16 UTC (rev 323) +++ mplayerxp/xmpcore/xmp_vdecoder.c 2012-11-10 17:01:29 UTC (rev 324) @@ -212,7 +212,8 @@ else if(mp_conf.autoq) mpcv_set_quality(sh_video,our_quality>0?our_quality:0); } - blit_frame=mpcv_decode(sh_video,frame,drop_param); + frame->flags=drop_param; + blit_frame=mpcv_decode(sh_video,frame); MSG_DBG2("DECODER: %i[%i] %f\n",dae_curr_vdecoded(xp_core),in_size,v_pts); if(mp_data->output_quality) { if(drop_param) mpcv_set_quality(sh_video,mp_data->output_quality); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-11 13:44:24
|
Revision: 327 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=327&view=rev Author: nickols_k Date: 2012-11-11 13:44:14 +0000 (Sun, 11 Nov 2012) Log Message: ----------- use universal return codes + s_null.c Modified Paths: -------------- mplayerxp/libmpdemux/Makefile mplayerxp/libmpdemux/cache2.c mplayerxp/libmpdemux/cdd.h mplayerxp/libmpdemux/cdda.c mplayerxp/libmpdemux/cddb.c mplayerxp/libmpdemux/demux_aiff.c mplayerxp/libmpdemux/demux_asf.c mplayerxp/libmpdemux/demux_audio.c mplayerxp/libmpdemux/demux_avi.c mplayerxp/libmpdemux/demux_bmp.c mplayerxp/libmpdemux/demux_dv.c mplayerxp/libmpdemux/demux_film.c mplayerxp/libmpdemux/demux_fli.c mplayerxp/libmpdemux/demux_lavf.c mplayerxp/libmpdemux/demux_mkv.c mplayerxp/libmpdemux/demux_mov.c mplayerxp/libmpdemux/demux_mpg.c mplayerxp/libmpdemux/demux_mpxp64.c mplayerxp/libmpdemux/demux_nsv.c mplayerxp/libmpdemux/demux_null.c mplayerxp/libmpdemux/demux_nuv.c mplayerxp/libmpdemux/demux_ogg.c mplayerxp/libmpdemux/demux_pva.c mplayerxp/libmpdemux/demux_ra.c mplayerxp/libmpdemux/demux_rawaudio.c mplayerxp/libmpdemux/demux_rawvideo.c mplayerxp/libmpdemux/demux_real.c mplayerxp/libmpdemux/demux_roq.c mplayerxp/libmpdemux/demux_smjpeg.c mplayerxp/libmpdemux/demux_ts.c mplayerxp/libmpdemux/demux_ty.c mplayerxp/libmpdemux/demux_viv.c mplayerxp/libmpdemux/demux_vqf.c mplayerxp/libmpdemux/demux_y4m.c mplayerxp/libmpdemux/demuxer.c mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpdemux/parse_es.c mplayerxp/libmpdemux/parse_mp4.c mplayerxp/libmpdemux/parse_mp4.h mplayerxp/libmpdemux/s_cdd.c mplayerxp/libmpdemux/s_dvdnav.c mplayerxp/libmpdemux/s_dvdread.c mplayerxp/libmpdemux/s_ffmpeg.c mplayerxp/libmpdemux/s_file.c mplayerxp/libmpdemux/s_ftp.c mplayerxp/libmpdemux/s_network.c mplayerxp/libmpdemux/s_oss.c mplayerxp/libmpdemux/s_rtsp.c mplayerxp/libmpdemux/s_tv.c mplayerxp/libmpdemux/s_udp.c mplayerxp/libmpdemux/s_vcdnav.c mplayerxp/libmpdemux/stream.c mplayerxp/libmpdemux/stream.h mplayerxp/mplayerxp.c Added Paths: ----------- mplayerxp/libmpdemux/s_null.c Modified: mplayerxp/libmpdemux/Makefile =================================================================== --- mplayerxp/libmpdemux/Makefile 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/Makefile 2012-11-11 13:44:14 UTC (rev 327) @@ -6,7 +6,7 @@ DO_MAKE = @ for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit; done DO_ALL = @ for i in $(SUBDIRS); do $(MAKE) -C $$i all || exit; done -SRCS = s_file.c s_ffmpeg.c +SRCS = s_file.c s_ffmpeg.c s_null.c ifeq ($(HAVE_LIBCDIO_CDDA),yes) SRCS += s_cdd.c cdda.c ifeq ($(HAVE_STREAMING),yes) Modified: mplayerxp/libmpdemux/cache2.c =================================================================== --- mplayerxp/libmpdemux/cache2.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cache2.c 2012-11-11 13:44:14 UTC (rev 327) @@ -106,8 +106,7 @@ new_start = readpos - c->back_size; if(new_start<c->stream->start_pos) new_start=c->stream->start_pos; seek_eof=0; - if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) - { + if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) { /* seeking... */ MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); @@ -119,13 +118,10 @@ if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size) MSG_WARN("CACHE2: found wrong offset after seeking %lli (wanted: %lli)\n",c->packets[c->first].filepos,new_start); MSG_DBG2("Seek done. new pos: %lli\n",START_FILEPOS(c)); - } - else - { + } else { /* find new start of buffer according on readpos */ cidx=c->first; - do - { + do { if((new_start>=c->packets[cidx].filepos&&new_start<c->packets[cidx].filepos+c->packets[cidx].sp.len) && !c->packets[cidx].sp.type) break; cidx=CP_NEXT(c,cidx); @@ -134,8 +130,7 @@ c->first=cidx; } CACHE2_TUNLOCK(c); - if(CP_NEXT(c,c->last) == c->first || c->eof) - { + if(CP_NEXT(c,c->last) == c->first || c->eof) { MSG_DBG2("CACHE2: cache full\n"); return 0; /* cache full */ } @@ -152,17 +147,15 @@ c->stream->driver->read(c->stream,&c->packets[cidx].sp); MSG_DBG2("CACHE2: read_packet at %lli (wanted %u got %u type %i)",c->packets[cidx].filepos,c->sector_size,c->packets[cidx].sp.len,c->packets[cidx].sp.type); if(mp_conf.verbose>1) - if(c->packets[cidx].sp.len>8) - { + if(c->packets[cidx].sp.len>8) { int i; for(i=0;i<8;i++) MSG_DBG2("%02X ",(int)(unsigned char)c->packets[cidx].sp.buf[i]); - } + } MSG_DBG2("\n"); - if(c->stream->driver->control(c->stream,SCTRL_EOF,NULL)==SCTRL_OK) legacy_eof=1; + if(c->stream->driver->control(c->stream,SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; else legacy_eof=0; - if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) - { + if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { /* EOF */ MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(c),END_FILEPOS(c)); c->packets[cidx].state|=CPF_EOF; @@ -180,8 +173,7 @@ CACHE2_PACKET_TUNLOCK(cidx); cidx=CP_NEXT(c,cidx); MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(c),END_FILEPOS(c)); - if(cidx==c->first) - { + if(cidx==c->first) { MSG_DBG2("CACHE2: end of queue is reached: %p\n",c->first); break; } Modified: mplayerxp/libmpdemux/cdd.h =================================================================== --- mplayerxp/libmpdemux/cdd.h 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cdd.h 2012-11-11 13:44:14 UTC (rev 327) @@ -65,16 +65,16 @@ lsn_t end_sector; } cdda_priv; -cd_info_t* __FASTCALL__ cd_info_new(); -void __FASTCALL__ cd_info_free(cd_info_t *cd_info); +cd_info_t* __FASTCALL__ cd_info_new(); +void __FASTCALL__ cd_info_free(cd_info_t *cd_info); cd_track_t* __FASTCALL__ cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); cd_track_t* __FASTCALL__ cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb); -int __FASTCALL__ open_cdda(stream_t*,const char* dev,const char* track); -int __FASTCALL__ open_cddb(stream_t*,const char* dev,const char* track); -int __FASTCALL__ read_cdda(stream_t* s,char *buf,track_t* trackidx); -void __FASTCALL__ seek_cdda(stream_t* s,off_t pos,track_t *trackidx); -off_t __FASTCALL__ tell_cdda(stream_t* s); -void __FASTCALL__ close_cdda(stream_t* s); +MPXP_Rc __FASTCALL__ open_cdda(stream_t*,const char* dev,const char* track); +MPXP_Rc __FASTCALL__ open_cddb(stream_t*,const char* dev,const char* track); +int __FASTCALL__ read_cdda(stream_t* s,char *buf,track_t* trackidx); +void __FASTCALL__ seek_cdda(stream_t* s,off_t pos,track_t *trackidx); +off_t __FASTCALL__ tell_cdda(stream_t* s); +void __FASTCALL__ close_cdda(stream_t* s); void cdda_register_options(m_config_t* cfg); #endif // __CDD_H__ Modified: mplayerxp/libmpdemux/cdda.c =================================================================== --- mplayerxp/libmpdemux/cdda.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cdda.c 2012-11-11 13:44:14 UTC (rev 327) @@ -72,67 +72,66 @@ return rval; } -int __FASTCALL__ open_cdda(stream_t *st,const char* dev,const char* arg) { - unsigned cd_tracks; - cdda_priv* priv; - unsigned int audiolen=0; - unsigned i; - unsigned char arr[256]; - int st_inited; +MPXP_Rc __FASTCALL__ open_cdda(stream_t *st,const char* dev,const char* arg) { + unsigned cd_tracks; + cdda_priv* priv; + unsigned int audiolen=0; + unsigned i; + unsigned char arr[256]; + int st_inited; - priv = (cdda_priv*)mp_mallocz(sizeof(cdda_priv)); + priv = (cdda_priv*)mp_mallocz(sizeof(cdda_priv)); - priv->cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); + priv->cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); - if(!priv->cd) { - MSG_ERR("Can't open cdda device: %s\n",dev); - mp_free(priv); - return 0; - } + if(!priv->cd) { + MSG_ERR("Can't open cdda device: %s\n",dev); + mp_free(priv); + return MPXP_False; + } - cdio_cddap_verbose_set(priv->cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); + cdio_cddap_verbose_set(priv->cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); - if(cdio_cddap_open(priv->cd) != 0) { - MSG_ERR("Can't open disc\n"); - cdda_close(priv->cd); - mp_free(priv); - return 0; - } + if(cdio_cddap_open(priv->cd) != 0) { + MSG_ERR("Can't open disc\n"); + cdda_close(priv->cd); + mp_free(priv); + return MPXP_False; + } - cd_tracks=cdio_cddap_tracks(priv->cd); - MSG_V("Found %d tracks on disc\n",cd_tracks); - if(!arg[0]) - for(i=1;i<=cd_tracks;i++) priv->tracks[i-1].play=1; - cdda_parse_tracks(arr,sizeof(arr)/sizeof(unsigned),arg); - for(i=1;i<=256;i++) if (arr[i]) priv->tracks[i-1].play=1; + cd_tracks=cdio_cddap_tracks(priv->cd); + MSG_V("Found %d tracks on disc\n",cd_tracks); + if(!arg[0]) + for(i=1;i<=cd_tracks;i++) priv->tracks[i-1].play=1; + cdda_parse_tracks(arr,sizeof(arr)/sizeof(unsigned),arg); + for(i=1;i<=256;i++) if (arr[i]) priv->tracks[i-1].play=1; - st_inited=0; - MSG_V("[CDDA] Queued tracks:"); - for(i=0;i<cd_tracks;i++) { - if(priv->tracks[i].play) { - priv->tracks[i].start_sector=cdio_cddap_track_firstsector(priv->cd,i+1); - priv->tracks[i].end_sector=cdio_cddap_track_lastsector(priv->cd,i+1); - MSG_V(" %d[%d-%d]",i+1,priv->tracks[i].start_sector,priv->tracks[i].end_sector); - if(!st_inited) { priv->start_sector=priv->tracks[i].start_sector; st_inited=1; } - priv->end_sector=priv->tracks[i].end_sector; - audiolen += priv->tracks[i].end_sector-priv->tracks[i].start_sector+1; + st_inited=0; + MSG_V("[CDDA] Queued tracks:"); + for(i=0;i<cd_tracks;i++) { + if(priv->tracks[i].play) { + priv->tracks[i].start_sector=cdio_cddap_track_firstsector(priv->cd,i+1); + priv->tracks[i].end_sector=cdio_cddap_track_lastsector(priv->cd,i+1); + MSG_V(" %d[%d-%d]",i+1,priv->tracks[i].start_sector,priv->tracks[i].end_sector); + if(!st_inited) { priv->start_sector=priv->tracks[i].start_sector; st_inited=1; } + priv->end_sector=priv->tracks[i].end_sector; + audiolen += priv->tracks[i].end_sector-priv->tracks[i].start_sector+1; + } } - } - for(;i<256;i++) priv->tracks[i].play=0; - MSG_V("\n"); - priv->min = (unsigned int)(audiolen/(60*75)); - priv->sec = (unsigned int)((audiolen/75)%60); - priv->msec = (unsigned int)(audiolen%75); + for(;i<256;i++) priv->tracks[i].play=0; + MSG_V("\n"); + priv->min = (unsigned int)(audiolen/(60*75)); + priv->sec = (unsigned int)((audiolen/75)%60); + priv->msec = (unsigned int)(audiolen%75); - if(speed) - cdio_cddap_speed_set(priv->cd,speed); + if(speed) cdio_cddap_speed_set(priv->cd,speed); - priv->sector = priv->start_sector; - st->type = STREAMTYPE_SEEKABLE|STREAMTYPE_RAWAUDIO; - st->priv = priv; - st->start_pos = priv->start_sector*CDIO_CD_FRAMESIZE_RAW; - st->end_pos = priv->end_sector*CDIO_CD_FRAMESIZE_RAW; - return 1; + priv->sector = priv->start_sector; + st->type = STREAMTYPE_SEEKABLE|STREAMTYPE_RAWAUDIO; + st->priv = priv; + st->start_pos = priv->start_sector*CDIO_CD_FRAMESIZE_RAW; + st->end_pos = priv->end_sector*CDIO_CD_FRAMESIZE_RAW; + return MPXP_Ok; } static lsn_t map_sector(cdda_priv*p,lsn_t sector,track_t *tr) Modified: mplayerxp/libmpdemux/cddb.c =================================================================== --- mplayerxp/libmpdemux/cddb.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cddb.c 2012-11-11 13:44:14 UTC (rev 327) @@ -525,43 +525,41 @@ return 0; } -int __FASTCALL__ cddb_resolve(any_t*libinput,char **xmcd_file) { - char cddb_cache_dir[] = DEFAULT_CACHE_DIR; - char *home_dir = NULL; - cddb_data_t cddb_data; +MPXP_Rc __FASTCALL__ cddb_resolve(any_t*libinput,char **xmcd_file) { + char cddb_cache_dir[] = DEFAULT_CACHE_DIR; + char *home_dir = NULL; + cddb_data_t cddb_data; - cddb_data.libinput=libinput; - cddb_data.tracks = read_toc(); - cddb_data.disc_id = cddb_discid(cddb_data.tracks); - cddb_data.anonymous = 1; // Don't send user info by default - - home_dir = getenv("HOME"); - if( home_dir==NULL ) { - cddb_data.cache_dir = NULL; - } else { - cddb_data.cache_dir = (char*)mp_malloc(strlen(home_dir)+strlen(cddb_cache_dir)+1); - if( cddb_data.cache_dir==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return -1; - } - sprintf(cddb_data.cache_dir, "%s%s", home_dir, cddb_cache_dir ); - } + cddb_data.libinput=libinput; + cddb_data.tracks = read_toc(); + cddb_data.disc_id = cddb_discid(cddb_data.tracks); + cddb_data.anonymous = 1; // Don't send user info by default - // Check for a cached file - if( cddb_read_cache(&cddb_data)<0 ) { - // No Cache found - if( cddb_retrieve(&cddb_data)<0 ) { - return -1; - } + home_dir = getenv("HOME"); + if( home_dir==NULL ) { + cddb_data.cache_dir = NULL; + } else { + cddb_data.cache_dir = (char*)mp_malloc(strlen(home_dir)+strlen(cddb_cache_dir)+1); + if( cddb_data.cache_dir==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return MPXP_False; } - - if( cddb_data.xmcd_file!=NULL ) { -// printf("%s\n", cddb_data.xmcd_file ); - *xmcd_file = cddb_data.xmcd_file; - return 0; + sprintf(cddb_data.cache_dir, "%s%s", home_dir, cddb_cache_dir ); + } + // Check for a cached file + if( cddb_read_cache(&cddb_data)<0 ) { + // No Cache found + if( cddb_retrieve(&cddb_data)<0 ) { + return MPXP_False; } - - return -1; + } + + if( cddb_data.xmcd_file!=NULL ) { +// printf("%s\n", cddb_data.xmcd_file ); + *xmcd_file = cddb_data.xmcd_file; + return MPXP_Ok; + } + return MPXP_False; } /******************************************************************************************************************* @@ -571,15 +569,15 @@ *******************************************************************************************************************/ cd_info_t* __FASTCALL__ cd_info_new() { - cd_info_t *cd_info = NULL; - - cd_info = (cd_info_t*)mp_mallocz(sizeof(cd_info_t)); - if( cd_info==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; - } - - return cd_info; + cd_info_t *cd_info = NULL; + + cd_info = (cd_info_t*)mp_mallocz(sizeof(cd_info_t)); + if( cd_info==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return NULL; + } + + return cd_info; } void __FASTCALL__ cd_info_free(cd_info_t *cd_info) { @@ -781,19 +779,19 @@ return cd_info; } -int __FASTCALL__ open_cddb(stream_t *stream,const char *dev, const char *track) { - cd_info_t *cd_info = NULL; - char *xmcd_file = NULL; - int ret; - - ret = cddb_resolve(stream->streaming_ctrl->libinput,&xmcd_file); - if( ret==0 ) { - cd_info = cddb_parse_xmcd(xmcd_file); - mp_free(xmcd_file); - cd_info_debug( cd_info ); - } - ret = open_cdda(stream, dev, track); +MPXP_Rc __FASTCALL__ open_cddb(stream_t *stream,const char *dev, const char *track) { + cd_info_t *cd_info = NULL; + char *xmcd_file = NULL; + MPXP_Rc ret; - return ret; + ret = cddb_resolve(stream->streaming_ctrl->libinput,&xmcd_file); + if( ret==MPXP_False ) { + cd_info = cddb_parse_xmcd(xmcd_file); + mp_free(xmcd_file); + cd_info_debug( cd_info ); + } + ret = open_cdda(stream, dev, track); + + return ret; } #endif Modified: mplayerxp/libmpdemux/demux_aiff.c =================================================================== --- mplayerxp/libmpdemux/demux_aiff.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_aiff.c 2012-11-11 13:44:14 UTC (rev 327) @@ -34,15 +34,15 @@ int verc; }priv_t; -static int aiff_probe(demuxer_t* demuxer) +static MPXP_Rc aiff_probe(demuxer_t* demuxer) { char buf[12]; stream_t *s; s = demuxer->stream; stream_read(s,buf,12); - if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return 1; - if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','C')) return 1; - return 0; + if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return MPXP_Ok; + if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','C')) return MPXP_Ok; + return MPXP_False; } static demuxer_t* aiff_open(demuxer_t* demuxer) { @@ -216,9 +216,9 @@ mp_free(demuxer->priv); } -static int aiff_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc aiff_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_aiff = Modified: mplayerxp/libmpdemux/demux_asf.c =================================================================== --- mplayerxp/libmpdemux/demux_asf.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_asf.c 2012-11-11 13:44:14 UTC (rev 327) @@ -112,7 +112,7 @@ } } -static int asf_probe(demuxer_t *demuxer){ +static MPXP_Rc asf_probe(demuxer_t *demuxer){ const unsigned char asfhdrguid[16]= {0x30,0x26,0xB2,0x75,0x8E,0x66,0xCF,0x11,0xA6,0xD9,0x00,0xAA,0x00,0x62,0xCE,0x6C}; const unsigned char asf2hdrguid[16]={0xD1,0x29,0xE2,0xD6,0xDA,0x35,0xD1,0x11,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE}; asf_priv_t *apriv; @@ -129,20 +129,20 @@ if(memcmp(asf2hdrguid,apriv->asfh.objh.guid,16)==0){ MSG_ERR("ASF_check: found ASF v2 guid!\nCurrently is not supported - please report!\n"); mp_free(demuxer->priv); - return 0; // not ASF guid + return MPXP_False; // not ASF guid } if(memcmp(asfhdrguid,apriv->asfh.objh.guid,16)){ MSG_V("ASF_check: not ASF guid!\n"); mp_free(demuxer->priv); - return 0; // not ASF guid + return MPXP_False; // not ASF guid } if(apriv->asfh.cno>256){ MSG_V("ASF_check: invalid subchunks_no %d\n",(int) apriv->asfh.cno); mp_free(demuxer->priv); - return 0; // invalid header??? + return MPXP_False; // invalid header??? } demuxer->file_format=DEMUXER_TYPE_ASF; - return 1; + return MPXP_Ok; } static demuxer_t* asf_open(demuxer_t *demuxer){ @@ -712,9 +712,9 @@ mp_free(demuxer->priv); } -static int asf_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc asf_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_asf = Modified: mplayerxp/libmpdemux/demux_audio.c =================================================================== --- mplayerxp/libmpdemux/demux_audio.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_audio.c 2012-11-11 13:44:14 UTC (rev 327) @@ -792,7 +792,7 @@ return retval; } -static int audio_probe(demuxer_t* demuxer) +static MPXP_Rc audio_probe(demuxer_t* demuxer) { uint32_t fcc1,fcc2; stream_t *s; @@ -805,13 +805,13 @@ { stream_skip(s,4); fcc2 = stream_read_fourcc(s); - if(fcc2 == mmioFOURCC('W','A','V','E')) return 1; + if(fcc2 == mmioFOURCC('W','A','V','E')) return MPXP_Ok; } else - if(p[0] == 'I' && p[1] == 'D' && p[2] == '3' && (p[3] >= 2)) return 1; + if(p[0] == 'I' && p[1] == 'D' && p[2] == '3' && (p[3] >= 2)) return MPXP_Ok; else - if(audio_get_raw_id(demuxer,0,&fcc1,&fcc2,&fcc2)) return 1; - return 0; + if(audio_get_raw_id(demuxer,0,&fcc1,&fcc2,&fcc2)) return MPXP_Ok; + return MPXP_False; } #define FRAMES_FLAG 0x0001 @@ -1775,9 +1775,9 @@ mp_free(priv); } -static int audio_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc audio_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } /****************** Options stuff ******************/ Modified: mplayerxp/libmpdemux/demux_avi.c =================================================================== --- mplayerxp/libmpdemux/demux_avi.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_avi.c 2012-11-11 13:44:14 UTC (rev 327) @@ -1103,7 +1103,7 @@ id=stream_read_dword_le(demux->stream); // list type continue; } - + if(id==mmioFOURCC('R','I','F','F')){ MSG_V("additional RIFF header...\n"); id=stream_read_dword_le(demux->stream); // "AVIX" @@ -1517,7 +1517,7 @@ } #define formtypeON2 mmioFOURCC('O', 'N', '2', 'f') -static int avi_probe(demuxer_t *demuxer) +static MPXP_Rc avi_probe(demuxer_t *demuxer) { uint32_t riff,id; @@ -1525,9 +1525,9 @@ stream_read_dword_le(demuxer->stream); /*filesize */ id=stream_read_dword_le(demuxer->stream); /* "AVI " */ demuxer->file_format=DEMUXER_TYPE_AVI; - if(riff == mmioFOURCC('R','I','F','F') && id == formtypeAVI) return 1; - if(riff == mmioFOURCC('O','N','2',' ') && id == formtypeON2) return 1; - return 0; + if(riff == mmioFOURCC('R','I','F','F') && id == formtypeAVI) return MPXP_Ok; + if(riff == mmioFOURCC('O','N','2',' ') && id == formtypeON2) return MPXP_Ok; + return MPXP_False; } static void avi_close(demuxer_t *demuxer) @@ -1542,9 +1542,9 @@ mp_free(priv); } -static int avi_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc avi_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } static const config_t avi_options[] = { Modified: mplayerxp/libmpdemux/demux_bmp.c =================================================================== --- mplayerxp/libmpdemux/demux_bmp.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_bmp.c 2012-11-11 13:44:14 UTC (rev 327) @@ -80,13 +80,13 @@ static SDL_RWops my_rw; static SDL_Surface *img; -static int bmp_probe(demuxer_t *demuxer) +static MPXP_Rc bmp_probe(demuxer_t *demuxer) { demux_dup_rw_stream(demuxer,&my_rw); stream_reset(demuxer->stream); img = IMG_Load_RW(&my_rw,0); if(img) demuxer->file_format=DEMUXER_TYPE_BMP; - return img ? 1 : 0; + return img ? MPXP_Ok : MPXP_False; } static int bmp_demux(demuxer_t *demuxer,demux_stream_t *__ds) @@ -297,9 +297,9 @@ } #endif -static int bmp_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc bmp_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_bmp = Modified: mplayerxp/libmpdemux/demux_dv.c =================================================================== --- mplayerxp/libmpdemux/demux_dv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_dv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -67,7 +67,7 @@ frames->current_filepos=newpos*frames->frame_size; } -static int dv_probe(demuxer_t *demuxer) +static MPXP_Rc dv_probe(demuxer_t *demuxer) { unsigned char tmp_buffer[DV_PAL_FRAME_SIZE]; int bytes_read=0; @@ -78,26 +78,20 @@ bytes_read=stream_read(demuxer->stream,tmp_buffer,DV_PAL_FRAME_SIZE); if ((bytes_read!=DV_PAL_FRAME_SIZE) && (bytes_read!=DV_NTSC_FRAME_SIZE)) - return 0; + return MPXP_False; - td=dv_decoder_new(TRUE,TRUE,FALSE); - if (!td) - return 0; + if(!(td=dv_decoder_new(TRUE,TRUE,FALSE))) return MPXP_False; td->quality=DV_QUALITY_BEST; - result=dv_parse_header(td, tmp_buffer); - if (result<0) - return 0; + if((result=dv_parse_header(td, tmp_buffer))<0) return MPXP_False; if ((( td->num_dif_seqs==10) || (td->num_dif_seqs==12)) && (td->width==720) && ((td->height==576) || (td->height==480))) result=1; dv_decoder_free(td); - if (result) - return 1; - else - return 0; + if (result) return MPXP_Ok; + return MPXP_False; } // return value: @@ -237,8 +231,8 @@ mp_free(frames); } -static int dv_control(demuxer_t *demuxer,int cmd, any_t*arg) { - return DEMUX_UNKNOWN; +static MPXP_Rc dv_control(demuxer_t *demuxer,int cmd, any_t*arg) { + return MPXP_Unknown; } demuxer_driver_t demux_dv = { Modified: mplayerxp/libmpdemux/demux_film.c =================================================================== --- mplayerxp/libmpdemux/demux_film.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_film.c 2012-11-11 13:44:14 UTC (rev 327) @@ -8,7 +8,7 @@ Details of the FILM file format can be found at: http://www.pcisys.net/~melanson/codecs/ - + TODO: demuxer->movi_length */ @@ -183,16 +183,16 @@ return 1; } -static int film_probe(demuxer_t* demuxer) +static MPXP_Rc film_probe(demuxer_t* demuxer) { uint32_t chunk_type; // read the master chunk type chunk_type = le2me_32(stream_read_fourcc(demuxer->stream)); // validate the chunk type - if (chunk_type != CHUNK_FILM) return 0; + if (chunk_type != CHUNK_FILM) return MPXP_False; demuxer->file_format=DEMUXER_TYPE_FILM; - return 1; + return MPXP_Ok; } static demuxer_t* film_open(demuxer_t* demuxer) @@ -433,12 +433,12 @@ if(film_data->chunks) mp_free(film_data->chunks); mp_free(film_data); - + } -static int film_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc film_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_film = Modified: mplayerxp/libmpdemux/demux_fli.c =================================================================== --- mplayerxp/libmpdemux/demux_fli.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_fli.c 2012-11-11 13:44:14 UTC (rev 327) @@ -65,13 +65,13 @@ return 1; } -static int fli_probe(demuxer_t* demuxer){ +static MPXP_Rc fli_probe(demuxer_t* demuxer){ unsigned magic_number; demuxer->movi_end = stream_skip(demuxer->stream,4); - magic_number = stream_read_word_le(demuxer->stream); - if ((magic_number != 0xAF11) && (magic_number != 0xAF12)) return 0; + magic_number = stream_read_word_le(demuxer->stream); + if ((magic_number != 0xAF11) && (magic_number != 0xAF12)) return MPXP_False; demuxer->file_format=DEMUXER_TYPE_FLI; - return 1; + return MPXP_Ok; } static demuxer_t* fli_open(demuxer_t* demuxer){ @@ -191,9 +191,9 @@ mp_free(frames); } -static int fli_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc fli_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_fli = Modified: mplayerxp/libmpdemux/demux_lavf.c =================================================================== --- mplayerxp/libmpdemux/demux_lavf.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_lavf.c 2012-11-11 13:44:14 UTC (rev 327) @@ -170,7 +170,7 @@ *key++ = (char2int(str[0]) << 4) | char2int(str[1]); } -static int lavf_probe(demuxer_t *demuxer){ +static MPXP_Rc lavf_probe(demuxer_t *demuxer){ AVProbeData avpd; uint8_t buf[PROBE_BUF_SIZE]; lavf_priv_t *priv; @@ -184,7 +184,7 @@ if(stream_read(demuxer->stream, buf, PROBE_BUF_SIZE)!=PROBE_BUF_SIZE) { mp_free(demuxer->priv); - return 0; + return MPXP_False; } avpd.filename= "xxx"; avpd.buf= buf; @@ -193,26 +193,26 @@ if (opt_format) { if (strcmp(opt_format, "help") == 0) { list_formats(); - return 0; + return MPXP_False; } priv->avif= av_find_input_format(opt_format); if (!priv->avif) { MSG_FATAL("Unknown lavf format %s\n", opt_format); - return 0; + return MPXP_False; } MSG_INFO("Forced lavf %s demuxer\n", priv->avif->long_name); - return 1; + return MPXP_Ok; } priv->avif= av_probe_input_format(&avpd, 1); if(!priv->avif){ MSG_V("LAVF_check: file format not recognized!\n"); mp_free(demuxer->priv); - return 0; + return MPXP_False; }else MSG_V("LAVF_check: %s\n", priv->avif->long_name); demuxer->file_format=DEMUXER_TYPE_ASF; - return 1; + return MPXP_Ok; } extern const unsigned char ff_codec_bmp_tags[]; @@ -477,9 +477,9 @@ av_seek_frame(priv->avfc, -1, priv->last_pts + seeka->secs*AV_TIME_BASE, seeka->secs < 0 ? AVSEEK_FLAG_BACKWARD : 0); } -static int lavf_control(demuxer_t *demuxer, int cmd, any_t*arg) +static MPXP_Rc lavf_control(demuxer_t *demuxer, int cmd, any_t*arg) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } static void lavf_close(demuxer_t *demuxer) Modified: mplayerxp/libmpdemux/demux_mkv.c =================================================================== --- mplayerxp/libmpdemux/demux_mkv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mkv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -2774,31 +2774,30 @@ static int demux_mkv_reverse_id(mkv_demuxer_t *d, int num, int type) { int i, id; - + for (i=0, id=0; i < d->num_tracks; i++) if (d->tracks[i] != NULL && d->tracks[i]->type == type) { if (d->tracks[i]->tnum == num) return id; id++; } - + return -1; } -static int mkv_probe(demuxer_t *demuxer) +static MPXP_Rc mkv_probe(demuxer_t *demuxer) { - stream_t *s = demuxer->stream; - int version; - char *str; - stream_seek(s, s->start_pos); - str = ebml_read_header (s, &version); - if (str == NULL || strcmp (str, "matroska") || version > 1) - { - MSG_DBG2( "[mkv] no head found\n"); - return 0; + stream_t *s = demuxer->stream; + int version; + char *str; + stream_seek(s, s->start_pos); + str = ebml_read_header (s, &version); + if (str == NULL || strcmp (str, "matroska") || version > 1) { + MSG_DBG2( "[mkv] no head found\n"); + return MPXP_False; } - mp_free (str); - return 1; + mp_free (str); + return MPXP_Ok; } static demuxer_t* mkv_open (demuxer_t *demuxer) @@ -2811,11 +2810,10 @@ stream_seek(s, s->start_pos); str = ebml_read_header (s, &version); - if (str == NULL || strcmp (str, "matroska") || version > 2) - { + if (str == NULL || strcmp (str, "matroska") || version > 2) { MSG_DBG2( "[mkv] no head found\n"); return 0; - } + } mp_free (str); MSG_V( "[mkv] Found the head...\n"); @@ -4007,50 +4005,38 @@ } } -static int mkv_control (demuxer_t *demuxer, int cmd, any_t*arg) +static MPXP_Rc mkv_control (demuxer_t *demuxer, int cmd, any_t*arg) { - mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv; - - switch (cmd) - { + mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv; + switch (cmd) { #if 0 - case DEMUXER_CTRL_GET_TIME_LENGTH: - if (mkv_d->duration == 0) - return DEMUX_UNKNOWN; + case DEMUXER_CTRL_GET_TIME_LENGTH: + if (mkv_d->duration == 0) return MPXP_Unknown; + *((double *)arg) = (double)mkv_d->duration; + return MPXP_Ok; - *((double *)arg) = (double)mkv_d->duration; - return DEMUX_OK; - - case DEMUXER_CTRL_GET_PERCENT_POS: - if (mkv_d->duration == 0) - { - return DEMUX_UNKNOWN; - } - - *((int *) arg) = (int) (100 * mkv_d->last_pts / mkv_d->duration); - return DEMUX_OK; + case DEMUXER_CTRL_GET_PERCENT_POS: + if (mkv_d->duration == 0) return MPXP_Unknown; + *((int *) arg) = (int) (100 * mkv_d->last_pts / mkv_d->duration); + return MPXP_Ok; #endif - case DEMUX_CMD_SWITCH_AUDIO: - if (demuxer->audio && demuxer->audio->sh) { - sh_audio_t *sh = demuxer->a_streams[demuxer->audio->id]; - int aid = *(int*)arg; - if (aid < 0) - aid = (sh->aid + 1) % mkv_d->last_aid; - if (aid != sh->aid) { - mkv_track_t *track = demux_mkv_find_track_by_num (mkv_d, aid, MATROSKA_TRACK_AUDIO); - if (track) { - demuxer->audio->id = track->tnum; - sh = demuxer->a_streams[demuxer->audio->id]; - ds_free_packs(demuxer->audio); - } - } - *(int*)arg = sh->aid; - } else - *(int*)arg = -2; - return DEMUX_OK; - - default: - return DEMUX_UNKNOWN; + case DEMUX_CMD_SWITCH_AUDIO: + if (demuxer->audio && demuxer->audio->sh) { + sh_audio_t *sh = demuxer->a_streams[demuxer->audio->id]; + int aid = *(int*)arg; + if (aid < 0) aid = (sh->aid + 1) % mkv_d->last_aid; + if (aid != sh->aid) { + mkv_track_t *track = demux_mkv_find_track_by_num (mkv_d, aid, MATROSKA_TRACK_AUDIO); + if (track) { + demuxer->audio->id = track->tnum; + sh = demuxer->a_streams[demuxer->audio->id]; + ds_free_packs(demuxer->audio); + } + } + *(int*)arg = sh->aid; + } else *(int*)arg = -2; + return MPXP_Ok; + default: return MPXP_Unknown; } } Modified: mplayerxp/libmpdemux/demux_mov.c =================================================================== --- mplayerxp/libmpdemux/demux_mov.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mov.c 2012-11-11 13:44:14 UTC (rev 327) @@ -299,7 +299,7 @@ #define MOV_FOURCC(a,b,c,d) ((a<<24)|(b<<16)|(c<<8)|(d)) -static int mov_probe(demuxer_t* demuxer){ +static MPXP_Rc mov_probe(demuxer_t* demuxer){ int flags=0; int no=0; unsigned ver; @@ -346,43 +346,43 @@ switch(tmp) { case MOV_FOURCC('i','s','o','m'): MSG_V("MOV: File-Type Major-Brand: ISO Media File\n"); - break; + break; case MOV_FOURCC('m','p','4','1'): MSG_V("ISO: File Type Major Brand: ISO/IEC 14496-1 (MPEG-4 system) v1\n"); - break; + break; case MOV_FOURCC('m','p','4','2'): MSG_V("ISO: File Type Major Brand: ISO/IEC 14496-1 (MPEG-4 system) v2\n"); - break; + break; case MOV_FOURCC('M','4','A',' '): MSG_V("ISO: File Type Major Brand: Apple iTunes AAC-LC Audio\n"); - break; + break; case MOV_FOURCC('M','4','P',' '): MSG_V("ISO: File Type Major Brand: Apple iTunes AAC-LC Protected Audio\n"); - break; + break; case MOV_FOURCC('q','t',' ',' '): MSG_V("ISO: File Type Major Brand: Original QuickTime\n"); - break; + break; case MOV_FOURCC('3','g','p','1'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 1\n"); - break; + break; case MOV_FOURCC('3','g','p','2'): case MOV_FOURCC('3','g','2','a'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 2\n"); - break; + break; case MOV_FOURCC('3','g','p','3'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 3\n"); - break; + break; case MOV_FOURCC('3','g','p','4'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 4\n"); - break; + break; case MOV_FOURCC('3','g','p','5'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 5\n"); - break; + break; case MOV_FOURCC('m','m','p','4'): MSG_V("ISO: File Type Major Brand: Mobile ISO/IEC 14496-1 (MPEG-4 system)\n"); - break; + break; default: - tmp = BE_32(tmp); + tmp = BE_32(tmp); MSG_WARN("MOV: File-Type unknown Major-Brand: %.4s\n",&tmp); } ver=stream_read_dword(demuxer->stream); @@ -394,7 +394,7 @@ MSG_V("MOV: File-Type Compatible-Brands #%d: %.4s\n",i,&tmp); skipped += 4; } -#endif +#endif } break; case MOV_FOURCC('m','o','o','v'): // case MOV_FOURCC('c','m','o','v'): @@ -470,7 +470,7 @@ // if we're over the headers, then we can stop parsing here! demuxer->priv=priv; demuxer->file_format=DEMUXER_TYPE_MOV; - return 1; + return MPXP_Ok; } break; case MOV_FOURCC('f','r','e','e'): @@ -484,7 +484,7 @@ /* dunno what, but we shoudl ignore it */ break; default: - if(no==0){ mp_free(priv); return 0;} // first chunk is bad! + if(no==0){ mp_free(priv); return MPXP_False;} // first chunk is bad! id = BE_32(id); MSG_V("MOV: unknown chunk: %.4s %d\n",&id,(int)len); } @@ -496,21 +496,21 @@ if(flags==3){ demuxer->priv=priv; demuxer->file_format=DEMUXER_TYPE_MOV; - return 1; + return MPXP_Ok; } mp_free(priv); if ((flags==5) || (flags==7)) // reference & header sent { demuxer->file_format=DEMUXER_TYPE_MOV; - return 1; + return MPXP_Ok; } if(flags==1) MSG_WARN("MOV: missing data (mdat) chunk! Maybe broken file...\n"); else if(flags==2) MSG_WARN("MOV: missing header (moov/cmov) chunk! Maybe broken file...\n"); - return 0; + return MPXP_False; } static unsigned short afourcc2wtag(uint32_t fourcc) @@ -2085,9 +2085,9 @@ mp_free(priv); } -static int mov_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc mov_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_mov = Modified: mplayerxp/libmpdemux/demux_mpg.c =================================================================== --- mplayerxp/libmpdemux/demux_mpg.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mpg.c 2012-11-11 13:44:14 UTC (rev 327) @@ -89,11 +89,11 @@ unsigned char c, id, type; unsigned int plen, prog_len, es_map_len; mpg_demuxer_t *priv = (mpg_demuxer_t *) demux->priv; - + MSG_DBG2("PARSE_PSM, len=%d\n", len); if(! len) return 0; - + c = stream_read_char(demux->stream); if(! (c & 0x80)) { stream_skip(demux->stream, len - 1); //not yet valid, discard @@ -626,7 +626,7 @@ 0x000001FF - prog_stream_dir */ extern demuxer_driver_t demux_mpgps; -static int mpgps_probe(demuxer_t*demuxer) +static MPXP_Rc mpgps_probe(demuxer_t*demuxer) { uint32_t code,id; uint8_t d[4]; @@ -650,17 +650,16 @@ code=stream_read_dword_le(demuxer->stream); while((bswap_32(code) & 0xffffff00) != 0x100) code=stream_read_dword_le(demuxer->stream); } - else return 0; + else return MPXP_False; } - else return 0; + else return MPXP_False; } - else return 0; + else return MPXP_False; } code = bswap_32(code); /* test stream only if stream is started from 0000001XX */ - if ((code & 0xffffff00) == 0x100) - { + if ((code & 0xffffff00) == 0x100) { stream_seek(demuxer->stream,demuxer->stream->start_pos); memset(&mpg_stat,0,sizeof(struct mpg_stat_s)); @@ -722,37 +721,30 @@ if(mpg_stat.num_elementary_packets100>=2 && mpg_stat.num_elementary_packets101>=2 && abs(mpg_stat.num_elementary_packets101+8-mpg_stat.num_elementary_packets100)<16){ if(mpg_stat.num_elementary_packetsPES>=4 && mpg_stat.num_elementary_packetsPES>=mpg_stat.num_elementary_packets100-4){ - --pes;continue; /* tricky... */ + --pes; + continue; /* tricky... */ } demuxer->file_format=DEMUXER_TYPE_MPEG_ES; /* <-- hack is here :) */ demux_mpgps.name="MPG/ES (Elementary stream) parser"; - } else -#if 1 - /* fuzzy mpeg4-es detection. do NOT enable without heavy testing of mpeg formats detection! */ - if(mpg_stat.num_elementary_packets1B6>3 && mpg_stat.num_elementary_packets12x>=1 && + } else if(mpg_stat.num_elementary_packets1B6>3 && mpg_stat.num_elementary_packets12x>=1 && mpg_stat.num_elementary_packetsPES==0 && mpg_stat.num_elementary_packets100<=mpg_stat.num_elementary_packets12x && - demuxer->synced<2){ + demuxer->synced<2) { + /* fuzzy mpeg4-es detection. do NOT enable without heavy testing of mpeg formats detection! */ demuxer->file_format=DEMUXER_TYPE_MPEG4_ES; demux_mpgps.name="MPG/MPEG4-ES (MPEG-4 Elementary stream) parser"; - } else -#endif -#if 1 - /* fuzzy h264-es detection. do NOT enable without heavy testing of mpeg formats detection!*/ - if((mpg_stat.num_h264_slice>3 || (mpg_stat.num_h264_dpa>3 && mpg_stat.num_h264_dpb>3 && mpg_stat.num_h264_dpc>3)) && + } else if((mpg_stat.num_h264_slice>3 || (mpg_stat.num_h264_dpa>3 && mpg_stat.num_h264_dpb>3 && mpg_stat.num_h264_dpc>3)) && /* FIXME mpg_stat.num_h264_sps>=1 && */ mpg_stat.num_h264_pps>=1 && mpg_stat.num_h264_idr>=1 && mpg_stat.num_elementary_packets1B6==0 && mpg_stat.num_elementary_packetsPES==0 && - demuxer->synced<2){ + demuxer->synced<2) { + /* fuzzy h264-es detection. do NOT enable without heavy testing of mpeg formats detection!*/ demuxer->file_format=DEMUXER_TYPE_H264_ES; demux_mpgps.name="MPG/H264-ES (H264 Elementary stream) parser"; - } else -#endif - { + } else { if(demuxer->synced==2) MSG_ERR("MPEG: " MSGTR_MissingVideoStreamBug); - else - { + else { MSG_V("Not MPEG System Stream format...\n"); - return 0; + return MPXP_False; } } } @@ -761,32 +753,29 @@ if( demuxer->file_format==DEMUXER_TYPE_MPEG_ES || demuxer->file_format==DEMUXER_TYPE_MPEG4_ES || demuxer->file_format==DEMUXER_TYPE_H264_ES){ /* little hack, see above! */ - demux_mpgps.demux=mpges_demux; - if(!demuxer->v_streams[0]) new_sh_video(demuxer,0); - if(demuxer->video->id==-1) demuxer->video->id=0; - demuxer->video->sh=demuxer->v_streams[0]; - stream_seek(demuxer->stream,demuxer->stream->start_pos); - return mpges_demux(demuxer,demuxer->video); - } - else - { - /* - NK: Main hack is here !!! - We have something packetized - means both audio and video should be present! - But some streams are "badly" interleaved. - Since mpgps_demux() reads stream until first audio or video packet only - - we need force stream reading several times at least. - */ + demux_mpgps.demux=mpges_demux; + if(!demuxer->v_streams[0]) new_sh_video(demuxer,0); + if(demuxer->video->id==-1) demuxer->video->id=0; + demuxer->video->sh=demuxer->v_streams[0]; + stream_seek(demuxer->stream,demuxer->stream->start_pos); + return mpges_demux(demuxer,demuxer->video)?MPXP_Ok:MPXP_False; + } else { + /* + NK: Main hack is here !!! + We have something packetized - means both audio and video should be present! + But some streams are "badly" interleaved. + Since mpgps_demux() reads stream until first audio or video packet only + - we need force stream reading several times at least. + */ unsigned attempts=64; - while((!demuxer->video->sh || !demuxer->audio->sh) && attempts) - { + while((!demuxer->video->sh || !demuxer->audio->sh) && attempts) { mpgps_demux(demuxer,demuxer->video); /* try it again */ attempts--; } - return 1; + return MPXP_Ok; } } - return 0; + return MPXP_False; } static demuxer_t* mpgps_open(demuxer_t*demuxer) @@ -816,49 +805,46 @@ static void mpgps_close(demuxer_t*demuxer) { - mpg_demuxer_t* mpg_d = demuxer->priv; - if (mpg_d) mp_free(mpg_d); + mpg_demuxer_t* mpg_d = demuxer->priv; + if (mpg_d) mp_free(mpg_d); } -static int mpgps_control(demuxer_t *demuxer,int cmd,any_t*arg) +static MPXP_Rc mpgps_control(demuxer_t *demuxer,int cmd,any_t*arg) { mpg_demuxer_t *mpg_d=(mpg_demuxer_t*)demuxer->priv; - switch(cmd) - { + switch(cmd) { case DEMUX_CMD_SWITCH_AUDIO: - if (mpg_d && mpg_d->num_a_streams > 1 && demuxer->audio && demuxer->audio->sh) { - demux_stream_t *d_audio = demuxer->audio; - sh_audio_t *sh_audio = d_audio->sh; - sh_audio_t *sh_a=NULL; - int i; - if (*((int*)arg) < 0) - { - for (i = 0; i < mpg_d->num_a_streams; i++) { - if (d_audio->id == mpg_d->a_stream_ids[i]) break; - } - do { - i = (i+1) % mpg_d->num_a_streams; - sh_a = (sh_audio_t*)demuxer->a_streams[mpg_d->a_stream_ids[i]]; - } while (sh_a->wtag != sh_audio->wtag); - } - else { - for (i = 0; i < mpg_d->num_a_streams; i++) - if (*((int*)arg) == mpg_d->a_stream_ids[i]) break; - if (i < mpg_d->num_a_streams) - sh_a = (sh_audio_t*)demuxer->a_streams[*((int*)arg)]; - if (sh_a->wtag != sh_audio->wtag) - i = mpg_d->num_a_streams; - } - if (i < mpg_d->num_a_streams && d_audio->id != mpg_d->a_stream_ids[i]) { - d_audio->id = mpg_d->a_stream_ids[i]; - d_audio->sh = sh_a; - ds_free_packs(d_audio); - } - } - *((int*)arg) = demuxer->audio->id; - return DEMUX_OK; + if (mpg_d && mpg_d->num_a_streams > 1 && demuxer->audio && demuxer->audio->sh) { + demux_stream_t *d_audio = demuxer->audio; + sh_audio_t *sh_audio = d_audio->sh; + sh_audio_t *sh_a=NULL; + int i; + if (*((int*)arg) < 0) { + for (i = 0; i < mpg_d->num_a_streams; i++) { + if (d_audio->id == mpg_d->a_stream_ids[i]) break; + } + do { + i = (i+1) % mpg_d->num_a_streams; + sh_a = (sh_audio_t*)demuxer->a_streams[mpg_d->a_stream_ids[i]]; + } while (sh_a->wtag != sh_audio->wtag); + } else { + for (i = 0; i < mpg_d->num_a_streams; i++) + if (*((int*)arg) == mpg_d->a_stream_ids[i]) break; + if (i < mpg_d->num_a_streams) + sh_a = (sh_audio_t*)demuxer->a_streams[*((int*)arg)]; + if (sh_a->wtag != sh_audio->wtag) + i = mpg_d->num_a_streams; + } + if (i < mpg_d->num_a_streams && d_audio->id != mpg_d->a_stream_ids[i]) { + d_audio->id = mpg_d->a_stream_ids[i]; + d_audio->sh = sh_a; + ds_free_packs(d_audio); + } + } + *((int*)arg) = demuxer->audio->id; + return MPXP_Ok; } - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_mpgps = Modified: mplayerxp/libmpdemux/demux_mpxp64.c =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mpxp64.c 2012-11-11 13:44:14 UTC (rev 327) @@ -464,7 +464,7 @@ id=stream_read_qword_le(s); if(memcmp(&id,"HEADER64",8)!=0) return NULL; hsize=stream_read_qword_le(s); /* header size */ - + // priv struct: priv=mp_mallocz(sizeof(mpxpav64_priv_t)); demuxer->priv=(any_t*)priv; @@ -858,7 +858,7 @@ } } -static int mpxpav64_probe(demuxer_t *demuxer) +static MPXP_Rc mpxpav64_probe(demuxer_t *demuxer) { uint64_t id1,id2,id3; uint32_t id4; @@ -875,8 +875,8 @@ if(memcmp(&id1,"MPXPAV64",8)==0 && memcmp(&id2,"HEADER64",8)==0 && memcmp(&id3,"AVDATA64",8)==0 && - memcmp(&id4,"SEEK",4)==0) return 1; - return 0; + memcmp(&id4,"SEEK",4)==0) return MPXP_Ok; + return MPXP_False; } static void mpxpav64_close(demuxer_t *demuxer) @@ -888,9 +888,9 @@ mp_free(priv); } -static int mpxpav64_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc mpxpav64_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_mpxpav64 = Modified: mplayerxp/libmpdemux/demux_nsv.c =================================================================== --- mplayerxp/libmpdemux/demux_nsv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_nsv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -311,7 +311,7 @@ return demuxer; } -static int nsv_probe ( demuxer_t* demuxer ) +static MPXP_Rc nsv_probe ( demuxer_t* demuxer ) { unsigned int id; @@ -319,17 +319,16 @@ // off_t orig_pos = stream_tell(demuxer->stream); MSG_V("Checking for Nullsoft Streaming Video\n" ); - + //---- check NSVx header: id=stream_read_dword_le(demuxer->stream); if(id!=mmioFOURCC('N','S','V','f') && id!=mmioFOURCC('N','S','V','s')) - return 0; // not an NSV file - + return MPXP_False; // not an NSV file + stream_reset(demuxer->stream); // clear EOF stream_seek(demuxer->stream,demuxer->stream->start_pos); - - return 1; + return MPXP_Ok; } static void nsv_close(demuxer_t* demuxer) { @@ -341,9 +340,9 @@ } -static int nsv_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc nsv_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_nsv = Modified: mplayerxp/libmpdemux/demux_null.c =================================================================== --- mplayerxp/libmpdemux/demux_null.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_null.c 2012-11-11 13:44:14 UTC (rev 327) @@ -17,9 +17,9 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -static int null_probe(demuxer_t* demuxer) +static MPXP_Rc null_probe(demuxer_t* demuxer) { - return 0; + return MPXP_False; } static demuxer_t* null_open(demuxer_t* demuxer) { @@ -35,9 +35,9 @@ static void null_close(demuxer_t* demuxer) {} -static int null_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc null_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_null = Modified: mplayerxp/libmpdemux/demux_nuv.c =================================================================== --- mplayerxp/libmpdemux/demux_nuv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_nuv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -72,7 +72,7 @@ while(current_time < target_time ) { - if ((unsigned)stream_read ( demuxer->stream, (char*)& rtjpeg_frameheader, sizeof ( rtjpeg_frameheader ) ) < sizeof(rtjpeg_frameheader)) + if ((unsigned)stream_read ( demuxer->stream, (char*)& rtjpeg_frameheader, sizeof ( rtjpeg_frameheader ) ) < sizeof(rtjpeg_frameheader)) return; /* EOF */ le2me_rtframeheader(&rtjpeg_frameheader); @@ -287,26 +287,26 @@ return demuxer; } -static int nuv_probe ( demuxer_t* demuxer ) +static MPXP_Rc nuv_probe ( demuxer_t* demuxer ) { - struct nuv_signature ns; + struct nuv_signature ns; - /* Store original position */ - off_t orig_pos = stream_tell(demuxer->stream); + /* Store original position */ + off_t orig_pos = stream_tell(demuxer->stream); - MSG_V( "Checking for NuppelVideo\n" ); + MSG_V( "Checking for NuppelVideo\n" ); - stream_read(demuxer->stream,(char*)&ns,sizeof(ns)); + stream_read(demuxer->stream,(char*)&ns,sizeof(ns)); - if ( strncmp ( ns.finfo, "NuppelVideo", 12 ) ) - return 0; /* Not a NuppelVideo file */ - if ( strncmp ( ns.version, "0.05", 5 ) ) - return 0; /* Wrong version NuppelVideo file */ + if ( strncmp ( ns.finfo, "NuppelVideo", 12 ) ) + return MPXP_False; /* Not a NuppelVideo file */ + if ( strncmp ( ns.version, "0.05", 5 ) ) + return MPXP_False; /* Wrong version NuppelVideo file */ - /* Return to original position */ - stream_seek ( demuxer->stream, orig_pos ); - demuxer->file_format=DEMUXER_TYPE_NUV; - return 1; + /* Return to original position */ + stream_seek ( demuxer->stream, orig_pos ); + demuxer->file_format=DEMUXER_TYPE_NUV; + return MPXP_Ok; } static void nuv_close(demuxer_t* demuxer) { @@ -322,9 +322,9 @@ mp_free(priv); } -static int nuv_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc nuv_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_nuv = Modified: mplayerxp/libmpdemux/demux_ogg.c =================================================================== --- mplayerxp/libmpdemux/demux_ogg.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_ogg.c 2012-11-11 13:44:14 UTC (rev 327) @@ -159,14 +159,14 @@ static float clear_sub; //FILE* subout; -static int ogg_probe(demuxer_t *demuxer) +static MPXP_Rc ogg_probe(demuxer_t *demuxer) { uint32_t fcc; fcc=me2be_32(stream_read_dword(demuxer->stream)); - if(fcc != mmioFOURCC('O','g','g','S')) return 0; + if(fcc != mmioFOURCC('O','g','g','S')) return MPXP_False; demuxer->file_format=DEMUXER_TYPE_OGG; stream_seek(demuxer->stream,0); - return 1; + return MPXP_Ok; } @@ -1457,9 +1457,9 @@ mp_free(ogg_d); } -static int ogg_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc ogg_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_ogg = Modified: mplayerxp/libmpdemux/demux_pva.c =================================================================== --- mplayerxp/libmpdemux/demux_pva.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_pva.c 2012-11-11 13:44:14 UTC (rev 327) @@ -3,9 +3,9 @@ * like the Hauppauge WinTV DVBs, for MPlayer. * * Uses info from the PVA file specifications found at - * + * * http://www.technotrend.de/download/av_format_v1.pdf - * + * * WARNING: Quite a hack was required in order to get files by MultiDec played back correctly. * If it breaks anything else, just comment out the "#define DEMUX_PVA_MULTIDEC_HACK" below * and it will not be compiled in. @@ -108,22 +108,19 @@ } } -static int pva_probe(demuxer_t * demuxer) +static MPXP_Rc pva_probe(demuxer_t * demuxer) { - uint8_t buffer[5]={0,0,0,0,0}; - MSG_V("Checking for PVA\n"); - stream_read(demuxer->stream,buffer,5); - if(buffer[0]=='A' && buffer[1] == 'V' && buffer[4] == 0x55) - { - MSG_DBG2("Success: PVA\n"); - demuxer->file_format=DEMUXER_TYPE_PVA; - return 1; - } - else - { - MSG_DBG2("Failed: PVA\n"); - return 0; - } + uint8_t buffer[5]={0,0,0,0,0}; + MSG_V("Checking for PVA\n"); + stream_read(demuxer->stream,buffer,5); + if(buffer[0]=='A' && buffer[1] == 'V' && buffer[4] == 0x55) { + MSG_DBG2("Success: PVA\n"); + demuxer->file_format=DEMUXER_TYPE_PVA; + return MPXP_Ok; + } else { + MSG_DBG2("Failed: PVA\n"); + return MPXP_False; + } } static demuxer_t* pva_open (demuxer_t * demuxer) @@ -486,41 +483,40 @@ * the overhead caused by PVA and PES headers. * If the calculated SOF offset is negative, seek to the beginning of the file. */ - + dest_offset=(seeka->flags&DEMUX_SEEK_SET?demuxer->movi_start:stream_tell(demuxer->stream))+seeka->secs*total_bitrate; if(dest_offset<0) dest_offset=0; - + stream_seek(demuxer->stream,dest_offset); if(!pva_sync(demuxer)) { MSG_V("demux_pva: Couldn't seek!\n"); return ; } - + /* * Reset the PTS info inside the pva_priv_t structure. This way we don't deliver * data with the wrong PTSs (the ones we had before seeking). * */ - + priv->last_video_pts=-1; priv->last_audio_pts=-1; - + } static void pva_close(demuxer_t * demuxer) { - if(demuxer->priv) - { - mp_free(demuxer->priv); - demuxer->priv=NULL; - } + if(demuxer->priv) { + mp_free(demuxer->priv); + demuxer->priv=NULL; + } } -static int pva_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc pva_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } - + demuxer_driver_t demux_pva = { "PVA (for DVB boards) parser", Modified: mplayerxp/libmpdemux/demux_ra.c =================================================================== --- mplayerxp/libmpdemux/demux_ra.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_ra.c 2012-11-11 13:44:14 UTC (rev 327) @@ -44,15 +44,15 @@ -static int ra_probe(demuxer_t* demuxer) +static MPXP_Rc ra_probe(demuxer_t* demuxer) { - unsigned int chunk_id; - - chunk_id = stream_read_dword_le(demuxer->stream); - if (chunk_id == FOURCC_DOTRA) - return 1; - else - return 0; + unsigned int chunk_id; + + chunk_id = stream_read_dword_le(demuxer->stream); + if (chunk_id == FOURCC_DOTRA) + return MPXP_Ok; + else + return MPXP_False; } @@ -276,12 +276,10 @@ static void ra_close(demuxer_t *demuxer) { - ra_priv_t* ra_priv = demuxer->priv; - - if (ra_priv) - mp_free(ra_priv); - - return; + ra_priv_t* ra_priv = demuxer->priv; + if (ra_priv) + mp_free(ra_priv); + return; } @@ -301,9 +299,9 @@ } #endif -static int ra_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc ra_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_ra = Modified: mplayerxp/libmpdemux/demux_rawaudio.c =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_rawaudio.c 2012-11-11 13:44:14 UTC (rev 327) @@ -32,14 +32,13 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -static int rawaudio_probe(demuxer_t* demuxer) +static MPXP_Rc rawaudio_probe(demuxer_t* demuxer) { - if(demuxer->stream->type & STREAMTYPE_RAWAUDIO || use_rawaudio) - { - demuxer->file_format=DEMUXER_TYPE_RAWAUDIO; - return 1; - } - return 0; + if(demuxer->stream->type & STREAMTYPE_RAWAUDIO || use_rawaudio) { + demuxer->file_format=DEMUXER_TYPE_RAWAUDIO; + return MPXP_Ok; + } + return MPXP_False; } static demuxer_t* rawaudio_open(demuxer_t* demuxer) { @@ -109,9 +108,9 @@ static void rawaudio_close(demuxer_t* demuxer) {} -static int rawaudio_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc rawaudio_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_rawaudio = Modified: mplayerxp/libmpdemux/demux_rawvideo.c =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_rawvideo.c 2012-11-11 13:44:14 UTC (rev 327) @@ -56,14 +56,14 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -static int rawvideo_probe(demuxer_t* demuxer) +static MPXP_Rc rawvideo_probe(demuxer_t* demuxer) { - if(demuxer->stream->type & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { - priv.fps=25; - demuxer->file_format=DEMUXER_TYPE_RAWVIDEO; - return 1; - } - return 0; + if(demuxer->stream->type & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { + priv.fps=25; + demuxer->file_format=DEMUXER_TYPE_RAWVIDEO; + return MPXP_Ok; + } + return MPXP_False; } static demuxer_t* rawvideo_open(demuxer_t* demuxer) { @@ -142,9 +142,9 @@ static void rawvideo_close(demuxer_t *demuxer) { } -static int rawvideo_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc rawvideo_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_rawvideo = Modified: mplayerxp/libmpdemux/demux_real.c =================================================================== --- mplayerxp/libmpdemux/demux_real.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_real.c 2012-11-11 13:44:14 UTC (rev 327) @@ -1,7 +1,7 @@ /* Real parser & demuxer - + (C) Alex Beregszaszi <al...@na...> - + Based on FFmpeg's libav/rm.c. Audio codecs: (supported by RealPlayer8 for Linux) @@ -311,23 +311,23 @@ return 0; } -static int real_probe(demuxer_t* demuxer) +static MPXP_Rc real_probe(demuxer_t* demuxer) { real_priv_t *priv; int c; MSG_V("Checking for REAL\n"); - + c = stream_read_dword_le(demuxer->stream); if (c == -256) - return 0; /* EOF */ + return MPXP_False; /* EOF */ if (c != MKTAG('.', 'R', 'M', 'F')) - return 0; /* bad magic */ + return MPXP_False; /* bad magic */ priv = mp_mallocz(sizeof(real_priv_t)); demuxer->priv = priv; demuxer->file_format=DEMUXER_TYPE_REAL; - return 1; + return MPXP_Ok; } void hexdump(char *, unsigned long); @@ -1590,9 +1590,9 @@ return; } -static int real_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc real_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_real = Modified: mplayerxp/libmpdemux/demux_roq.c =================================================================== --- mplayerxp/libmpdemux/demux_roq.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_roq.c 2012-11-11 13:44:14 UTC (rev 327) @@ -52,19 +52,16 @@ // Check if a stream qualifies as a RoQ file based on the magic numbers // at the start of the file: // 84 10 FF FF FF FF xx xx -static int roq_probe(demuxer_t *demuxer) +static MPXP_Rc roq_probe(demuxer_t *demuxer) { - stream_reset(demuxer->stream); - stream_seek(demuxer->stream, demuxer->stream->start_pos); + stream_reset(demuxer->stream); + stream_seek(demuxer->stream, demuxer->stream->start_pos); - if ((stream_read_dword(demuxer->stream) == 0x8410FFFF) && - ((stream_read_dword(demu... [truncated message content] |
From: <nic...@us...> - 2012-11-12 09:03:40
|
Revision: 334 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=334&view=rev Author: nickols_k Date: 2012-11-12 09:03:29 +0000 (Mon, 12 Nov 2012) Log Message: ----------- use improved input2 formally: input v2.5 Modified Paths: -------------- mplayerxp/cfg-mplayerxp.h mplayerxp/fifo.c mplayerxp/fifo.h mplayerxp/input2/input.c mplayerxp/input2/input.h mplayerxp/input2/joystick.c mplayerxp/input2/joystick.h mplayerxp/input2/lirc.c mplayerxp/input2/lirc.h mplayerxp/mplayerxp.c mplayerxp/mplayerxp.h Modified: mplayerxp/cfg-mplayerxp.h =================================================================== --- mplayerxp/cfg-mplayerxp.h 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/cfg-mplayerxp.h 2012-11-12 09:03:29 UTC (rev 334) @@ -268,8 +268,6 @@ {"vc", &mp_conf.video_codec, CONF_TYPE_STRING, 0, 0, 0, "forces usage of specified video-decoder"}, /*UD*/ {"verbose", &mp_conf.verbose, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 0, 100, "verbose output"}, {"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, "verbose output (more -v means more verbosity)"}, - {"slave", &mp_conf.slave_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 0, 1, "turns MPlayerXP into slave mode as a backend for other programs"}, - {"use-stdin", &mp_conf.use_stdin, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, "forces reading of keyboard codes from STDIN instead of terminal's console"}, {"msgfilter", &mp_conf.msg_filter, CONF_TYPE_INT, CONF_RANGE, 0, 0xFFFFFFFF, "specifies filter for verbosed messages"}, {"core", &xpcore_config, CONF_TYPE_SUBCONFIG, 0, 0, 0, "XP-core related options" }, Modified: mplayerxp/fifo.c =================================================================== --- mplayerxp/fifo.c 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/fifo.c 2012-11-12 09:03:29 UTC (rev 334) @@ -2,82 +2,8 @@ #include "fifo.h" #include "osdep/mplib.h" -#ifndef min -#define min(a,b) ((a)<(b)?(a):(b)) -#endif +static inline int min(int a,int b) { return (a<b)?a:b; }; -// keyboard: -int keyb_fifo_put=-1; -int keyb_fifo_get=-1; - -void __FASTCALL__ fifo_make_pipe(int* pr,int* pw){ - int temp[2]; - if(pipe(temp)!=0) MSG_ERR("Cannot make PIPE!\n"); - *pr=temp[0]; - *pw=temp[1]; -} - -static inline int __FASTCALL__ my_write(int fd,unsigned char* mem,int len){ - int total=0; - int len2; - while(len>0){ - len2=write(fd,mem+total,len); if(len2<=0) break; - total+=len2;len-=len2; - } - return total; -} - -static inline int __FASTCALL__ my_read(int fd,unsigned char* mem,int len){ - int total=0; - int len2; - while(len>0){ - len2=read(fd,mem+total,len); if(len2<=0) break; - total+=len2;len-=len2; - } - return total; -} - -static void __FASTCALL__ send_cmd(int fd,int cmd){ - int fifo_cmd=cmd; - write(fd,&fifo_cmd,4); -// fflush(control_fifo); -} - - -void mplayer_put_key(int code){ - fd_set rfds; - struct timeval tv; - - /* Watch stdin (fd 0) to see when it has input. */ - FD_ZERO(&rfds); - FD_SET(keyb_fifo_put, &rfds); - tv.tv_sec = 0; - tv.tv_usec = 0; - - //retval = select(keyb_fifo_put+1, &rfds, NULL, NULL, &tv); - if(select(keyb_fifo_put+1, NULL, &rfds, NULL, &tv)>0){ - write(keyb_fifo_put,&code,4); - } -} - -int mplayer_get_key(void){ - fd_set rfds; - struct timeval tv; - int code=-1; - - /* Watch stdin (fd 0) to see when it has input. */ - FD_ZERO(&rfds); - FD_SET(keyb_fifo_get, &rfds); - tv.tv_sec = 0; - tv.tv_usec = 0; - - //retval = select(keyb_fifo_put+1, &rfds, NULL, NULL, &tv); - if(select(keyb_fifo_put+1, &rfds, NULL, NULL, &tv)>0){ - read(keyb_fifo_get,&code,4); - } - return code; -} - /* === Circular Buffer FIFO support === */ CBFifoBuffer *cb_fifo_alloc(unsigned int size) Modified: mplayerxp/fifo.h =================================================================== --- mplayerxp/fifo.h 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/fifo.h 2012-11-12 09:03:29 UTC (rev 334) @@ -11,12 +11,8 @@ #include <string.h> #include <unistd.h> -// keyboard: -extern int keyb_fifo_put; -extern int keyb_fifo_get; +// Note: this suff really is used by ao_jack only -extern void __FASTCALL__ fifo_make_pipe(int* pr,int* pw); - typedef struct CBFifoBuffer { uint8_t *buffer; uint8_t *rptr, *wptr, *end; Modified: mplayerxp/input2/input.c =================================================================== --- mplayerxp/input2/input.c 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/input2/input.c 2012-11-12 09:03:29 UTC (rev 334) @@ -1,4 +1,4 @@ -#include "../mp_config.h" +#include "mp_config.h" #include <stdlib.h> #include <string.h> @@ -54,7 +54,7 @@ #define CMD_QUEUE_SIZE 100 typedef struct mp_input_fd { - int fd; + any_t* opaque; any_t* read_func; mp_close_func_t close_func; int flags; @@ -91,8 +91,8 @@ unsigned int last_ar; int in_file_fd; + int tim; //for getch2 char key_str[12]; - int joystick_fd; }priv_t; typedef struct input_conf_s { @@ -438,19 +438,19 @@ { NULL, NULL, 0, 0, 0, 0, NULL} }; -static int mp_input_default_key_func(int fd); -static int mp_input_default_cmd_func(int fd,char* buf, int l); +static int mp_input_default_key_func(any_t* fd); +static int mp_input_default_cmd_func(any_t* fd,char* buf, int l); static char* mp_input_get_key_name(any_t*,int key); -MPXP_Rc mp_input_add_cmd_fd(any_t* handle,int fd, int sel, mp_cmd_func_t read_func, mp_close_func_t close_func) { +static MPXP_Rc mp_input_add_cmd_fd(any_t* handle,any_t* opaque, int sel, mp_cmd_func_t read_func, mp_close_func_t close_func) { priv_t* priv = (priv_t*)handle; if(priv->num_cmd_fd == MP_MAX_CMD_FD) { - MSG_ERR("Too much command fd, unable to register fd %d\n",fd); + MSG_ERR("Too much command fd, unable to register fd\n"); return MPXP_False; } memset(&priv->cmd_fds[priv->num_cmd_fd],0,sizeof(mp_input_fd_t)); - priv->cmd_fds[priv->num_cmd_fd].fd = fd; + priv->cmd_fds[priv->num_cmd_fd].opaque = opaque; priv->cmd_fds[priv->num_cmd_fd].read_func = read_func ? read_func : mp_input_default_cmd_func; priv->cmd_fds[priv->num_cmd_fd].close_func = close_func; if(!sel) priv->cmd_fds[priv->num_cmd_fd].flags = MP_FD_NO_SELECT; @@ -459,42 +459,42 @@ return MPXP_Ok; } -void mp_input_rm_cmd_fd(any_t* handle,int fd) { +static void mp_input_rm_cmd_fd(any_t* handle,any_t* fd) { priv_t* priv = (priv_t*)handle; unsigned int i; for(i = 0; i < priv->num_cmd_fd; i++) { - if(priv->cmd_fds[i].fd == fd) break; + if(priv->cmd_fds[i].opaque == fd) break; } if(i == priv->num_cmd_fd) return; - if(priv->cmd_fds[i].close_func) priv->cmd_fds[i].close_func(priv->cmd_fds[i].fd); + if(priv->cmd_fds[i].close_func) priv->cmd_fds[i].close_func(priv->cmd_fds[i].opaque); if(priv->cmd_fds[i].buffer) mp_free(priv->cmd_fds[i].buffer); - if(i + 1 < priv->num_cmd_fd) memmove(&priv->cmd_fds[i],&priv->cmd_fds[i+1],(priv->num_cmd_fd - i - 1)*sizeof(mp_input_fd_t)); + if(i + 1 < priv->num_cmd_fd) memmove(&priv->cmd_fds[i],&priv->cmd_fds[i+1],(priv->num_cmd_fd-i-1)*sizeof(mp_input_fd_t)); priv->num_cmd_fd--; } -void mp_input_rm_key_fd(any_t* handle,int fd) { +static void mp_input_rm_key_fd(any_t* handle,any_t* fd) { priv_t* priv = (priv_t*)handle; unsigned int i; for(i = 0; i < priv->num_key_fd; i++) { - if(priv->key_fds[i].fd == fd) break; + if(priv->key_fds[i].opaque == fd) break; } if(i == priv->num_key_fd) return; - if(priv->key_fds[i].close_func) priv->key_fds[i].close_func(priv->key_fds[i].fd); - if(i + 1 < priv->num_key_fd) memmove(&priv->key_fds[i],&priv->key_fds[i+1],(priv->num_key_fd - i - 1)*sizeof(mp_input_fd_t)); + if(priv->key_fds[i].close_func) priv->key_fds[i].close_func(priv->key_fds[i].opaque); + if(i + 1 < priv->num_key_fd) memmove(&priv->key_fds[i],&priv->key_fds[i+1],(priv->num_key_fd-i-1)*sizeof(mp_input_fd_t)); priv->num_key_fd--; } -MPXP_Rc mp_input_add_key_fd(any_t* handle,int fd, int sel, mp_key_func_t read_func, mp_close_func_t close_func) { +static MPXP_Rc mp_input_add_key_fd(any_t* handle,any_t* opaque, int sel, mp_key_func_t read_func, mp_close_func_t close_func) { priv_t* priv = (priv_t*)handle; if(priv->num_key_fd == MP_MAX_KEY_FD) { - MSG_ERR("Too much key fd, unable to register fd %d\n",fd); + MSG_ERR("Too much key fd, unable to register fd\n"); return MPXP_False; } memset(&priv->key_fds[priv->num_key_fd],0,sizeof(mp_input_fd_t)); - priv->key_fds[priv->num_key_fd].fd = fd; + priv->key_fds[priv->num_key_fd].opaque = opaque; priv->key_fds[priv->num_key_fd].read_func = read_func ? read_func : mp_input_default_key_func; priv->key_fds[priv->num_key_fd].close_func = close_func; if(!sel) priv->key_fds[priv->num_key_fd].flags |= MP_FD_NO_SELECT; @@ -614,15 +614,21 @@ return cmd; } -static int mp_input_default_key_func(int fd) { +static int mp_input_default_key_func(any_t* fd) { + priv_t* priv = (priv_t*)fd; int r,code=0; unsigned int l; l = 0; - while(l < sizeof(int)) { - r = read(fd,(&code)+l,sizeof(int)-l); - if(r <= 0) break; - l +=r; - } + if(priv->in_file_fd == 0) { // stdin is handled by getch2 + code = getch2(priv->tim); + if(code < 0) code = MP_INPUT_NOTHING; + } else + fcntl(priv->in_file_fd,F_SETFL,fcntl(priv->in_file_fd,F_GETFL)|O_NONBLOCK); + while(l < sizeof(int)) { + r = read(priv->in_file_fd,(&code)+l,sizeof(int)-l); + if(r <= 0) break; + l +=r; + } return code; } @@ -639,14 +645,14 @@ } // Get some data if needed/possible - while( !(mp_fd->flags & MP_FD_GOT_CMD) && !(mp_fd->flags & MP_FD_EOF) && (mp_fd->size - mp_fd->pos > 1) ) { - int r = ((mp_cmd_func_t)mp_fd->read_func)(mp_fd->fd,mp_fd->buffer+mp_fd->pos,mp_fd->size - 1 - mp_fd->pos); + while( !(mp_fd->flags & MP_FD_GOT_CMD) && !(mp_fd->flags & MP_FD_EOF) && (mp_fd->size-mp_fd->pos>1)) { + int r = ((mp_cmd_func_t)mp_fd->read_func)(mp_fd->opaque,mp_fd->buffer+mp_fd->pos,mp_fd->size-1-mp_fd->pos); // Error ? if(r < 0) { switch(r) { case MP_INPUT_ERROR: case MP_INPUT_DEAD: - MSG_ERR("Error while reading cmd fd %d : %s\n",mp_fd->fd,strerror(errno)); + MSG_ERR("Error while reading cmd fd: %s\n",strerror(errno)); case MP_INPUT_NOTHING: return r; } // EOF ? @@ -668,7 +674,7 @@ if(!end) { // If buffer is full we must drop all until the next \n if(mp_fd->size - mp_fd->pos <= 1) { - MSG_ERR("Cmd buffer of fd %d is full : dropping content\n",mp_fd->fd); + MSG_ERR("Cmd buffer is full: dropping content\n"); mp_fd->pos = 0; mp_fd->flags |= MP_FD_DROP; } @@ -695,9 +701,11 @@ else return MP_INPUT_NOTHING; } -static int mp_input_default_cmd_func(int fd,char* buf, int l) { +static int mp_input_default_cmd_func(any_t* fd,char* buf, int l) { + priv_t* priv=(priv_t*)fd; + fcntl(priv->in_file_fd,F_SETFL,fcntl(priv->in_file_fd,F_GETFL)|O_NONBLOCK); while(1) { - int r = read(fd,buf,l); + int r = read(priv->in_file_fd,buf,l); // Error ? if(r < 0) { if(errno == EINTR) continue; @@ -740,12 +748,11 @@ return binds[j].cmd; } -static mp_cmd_t* mp_input_get_cmd_from_keys(any_t* handle,int n,int* keys, int paused) { +mp_cmd_t* mp_input_get_cmd_from_keys(any_t* handle,int n,int* keys) { priv_t* priv = (priv_t*)handle; char* cmd = NULL; mp_cmd_t* ret; - UNUSED(paused); if(priv->cmd_binds) cmd = mp_input_find_bind_for_key(priv->cmd_binds,n,keys); if(cmd == NULL) cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); if(cmd == NULL) { @@ -771,81 +778,39 @@ static int mp_input_read_key_code(any_t* handle,int tim) { priv_t* priv = (priv_t*)handle; -#ifndef HAVE_NO_POSIX_SELECT - fd_set fds; - struct timeval tv,*time_val; -#endif - int i,n=0,max_fd = 0; - static int last_loop = 0; + int n=0; + unsigned i; if(priv->num_key_fd == 0) return MP_INPUT_NOTHING; -#ifndef HAVE_NO_POSIX_SELECT - FD_ZERO(&fds); -#endif // Remove fd marked as dead and build the fd_set // n == number of fd's to be select() checked for(i = 0; (unsigned int)i < priv->num_key_fd; i++) { if( (priv->key_fds[i].flags & MP_FD_DEAD) ) { - mp_input_rm_key_fd(priv,priv->key_fds[i].fd); + mp_input_rm_key_fd(priv,priv->key_fds[i].opaque); i--; continue; } else if(priv->key_fds[i].flags & MP_FD_NO_SELECT) continue; - if(priv->key_fds[i].fd > max_fd) max_fd = priv->key_fds[i].fd; -#ifndef HAVE_NO_POSIX_SELECT - FD_SET(priv->key_fds[i].fd,&fds); -#endif n++; } if(priv->num_key_fd == 0) return MP_INPUT_NOTHING; -#ifndef HAVE_NO_POSIX_SELECT - // if we have fd's without MP_FD_NO_SELECT flag, call select(): - if(n>0){ - if(tim >= 0 ) { - tv.tv_sec=tim/1000; - tv.tv_usec = (tim%1000)*1000; - time_val = &tv; - } else time_val = NULL; - while(1) { - if(select(max_fd+1,&fds,NULL,NULL,time_val) < 0) { - if(errno == EINTR) continue; - MSG_ERR("Select error : %s\n",strerror(errno)); - } - break; - } - } -#endif - for(i = last_loop + 1 ; i != last_loop ; i++) { + for(i = 0; i < priv->num_key_fd; i++) { int code = -1; - // This is to check all fd in turn - if((unsigned int)i >= priv->num_key_fd) { - i = -1; - last_loop++; - last_loop %= (priv->num_key_fd+1); - continue; - } -#ifndef HAVE_NO_POSIX_SELECT - // No input from this fd - if(! (priv->key_fds[i].flags & MP_FD_NO_SELECT) && ! FD_ISSET(priv->key_fds[i].fd,&fds)) - continue; -#endif - if(priv->key_fds[i].fd == 0) { // stdin is handled by getch2 - code = getch2(tim); - if(code < 0) code = MP_INPUT_NOTHING; - } else code = ((mp_key_func_t)priv->key_fds[i].read_func)(priv->key_fds[i].fd); + priv->tim = tim; + code = ((mp_key_func_t)priv->key_fds[i].read_func)(priv->key_fds[i].opaque); if(code >= 0) return code; - if(code == MP_INPUT_ERROR) MSG_ERR("Error on key input fd %d\n",priv->key_fds[i].fd); + if(code == MP_INPUT_ERROR) MSG_ERR("Error on key input fd\n"); else if(code == MP_INPUT_DEAD) { - MSG_ERR("Dead key input on fd %d\n",priv->key_fds[i].fd); - priv->key_fds[i].flags |= MP_FD_DEAD; + MSG_ERR("Dead key input on fd\n"); + mp_input_rm_key_fd(priv,priv->key_fds[i].opaque); } } return MP_INPUT_NOTHING; } -static mp_cmd_t* mp_input_read_keys(any_t*handle,int tim,int paused) { +static mp_cmd_t* mp_input_read_keys(any_t*handle,int tim) { priv_t* priv = (priv_t*)handle; int code = mp_input_read_key_code(priv,tim); unsigned int j; @@ -896,7 +861,7 @@ priv->last_key_down = 1; } // We ignore key from last combination - ret = priv->last_key_down ? mp_input_get_cmd_from_keys(priv,priv->num_key_down,priv->key_down,paused) : NULL; + ret = priv->last_key_down ? mp_input_get_cmd_from_keys(priv,priv->num_key_down,priv->key_down):NULL; // Remove the key if(j+1 < priv->num_key_down) memmove(&priv->key_down[j],&priv->key_down[j+1],(priv->num_key_down-(j+1))*sizeof(int)); priv->num_key_down--; @@ -914,7 +879,7 @@ unsigned int t = GetTimer(); // First time : wait delay if(priv->ar_state == 0 && (t - priv->last_key_down) >= libinput_conf.ar_delay*1000) { - priv->ar_cmd = mp_input_get_cmd_from_keys(priv,priv->num_key_down,priv->key_down,paused); + priv->ar_cmd = mp_input_get_cmd_from_keys(priv,priv->num_key_down,priv->key_down); if(!priv->ar_cmd) { priv->ar_state = -1; return NULL; @@ -931,68 +896,30 @@ return NULL; } -static mp_cmd_t* mp_input_read_cmds(any_t* handle,int tim) { +static mp_cmd_t* mp_input_read_cmds(any_t* handle) { priv_t* priv = (priv_t*)handle; -#ifndef HAVE_NO_POSIX_SELECT - fd_set fds; - struct timeval tv,*time_val; -#endif - int i,n = 0,max_fd = 0,got_cmd = 0; + int i,n = 0,got_cmd = 0; mp_cmd_t* ret; static int last_loop = 0; if(priv->num_cmd_fd == 0) return NULL; -#ifndef HAVE_NO_POSIX_SELECT - FD_ZERO(&fds); -#endif for(i = 0; (unsigned int)i < priv->num_cmd_fd ; i++) { - if( (priv->cmd_fds[i].flags & MP_FD_DEAD) || (priv->cmd_fds[i].flags & MP_FD_EOF) ) { - mp_input_rm_cmd_fd(priv,priv->cmd_fds[i].fd); + if(priv->cmd_fds[i].flags&MP_FD_EOF) { + mp_input_rm_cmd_fd(priv,priv->cmd_fds[i].opaque); i--; continue; } else if(priv->cmd_fds[i].flags & MP_FD_NO_SELECT) continue; if(priv->cmd_fds[i].flags & MP_FD_GOT_CMD) got_cmd = 1; - if(priv->cmd_fds[i].fd > max_fd) max_fd = priv->cmd_fds[i].fd; -#ifndef HAVE_NO_POSIX_SELECT - FD_SET(priv->cmd_fds[i].fd,&fds); -#endif n++; } if(priv->num_cmd_fd == 0) return NULL; -#ifndef HAVE_NO_POSIX_SELECT - if(tim >= 0) { - tv.tv_sec=tim/1000; - tv.tv_usec = (tim%1000)*1000; - time_val = &tv; - } else time_val = NULL; - while(n > 0) { - if((i = select(max_fd+1,&fds,NULL,NULL,time_val)) <= 0) { - if(i < 0) { - if(errno == EINTR) continue; - MSG_ERR("Select error : %s\n",strerror(errno)); - } - if(!got_cmd) return NULL; - } - break; - } -#endif - for(i = last_loop + 1; i != last_loop ; i++) { + for(i = 0; i < priv->num_cmd_fd; i++) { int r = 0; char* cmd; - if((unsigned int)i >= priv->num_cmd_fd) { - i = -1; - last_loop++; - last_loop %= (priv->num_cmd_fd+1); - continue; - } -#ifndef HAVE_NO_POSIX_SELECT - if(!(priv->cmd_fds[i].flags&MP_FD_NO_SELECT) && !FD_ISSET(priv->cmd_fds[i].fd,&fds) && !(priv->cmd_fds[i].flags & MP_FD_GOT_CMD)) - continue; -#endif r = mp_input_read_cmd(&priv->cmd_fds[i],&cmd); if(r < 0) { - if(r == MP_INPUT_ERROR) MSG_ERR("Error on cmd fd %d\n",priv->cmd_fds[i].fd); + if(r == MP_INPUT_ERROR) MSG_ERR("Error on cmd fd\n"); else if(r == MP_INPUT_DEAD) priv->cmd_fds[i].flags |= MP_FD_DEAD; continue; } @@ -1040,17 +967,13 @@ mp_cmd_filter_t* cf; int from_queue; - while(1) { - from_queue = 1; - ret = mp_input_get_queued_cmd(priv,peek_only); - if(ret) break; + from_queue = 1; + ret = mp_input_get_queued_cmd(priv,peek_only); + if(!ret) { from_queue = 0; - ret = mp_input_read_keys(priv,tim,paused); - if(ret) break; - ret = mp_input_read_cmds(priv,tim); - break; + ret = mp_input_read_keys(priv,tim); + if(!ret) ret = mp_input_read_cmds(priv); } - if(!ret) return NULL; for(cf = priv->cmd_filters ; cf ; cf = cf->next) { @@ -1341,16 +1264,17 @@ } #ifdef HAVE_JOYSTICK if(libinput_conf.use_joystick) { - priv->joystick_fd = mp_input_joystick_init(libinput_conf.js_dev); - if(priv->joystick_fd<=0) MSG_ERR("Can't init input joystick with using: %s\n",libinput_conf.js_dev); - else mp_input_add_key_fd(priv,priv->joystick_fd,1,mp_input_joystick_read,(mp_close_func_t)close); + any_t* joystick_fd; + joystick_fd = mp_input_joystick_open(libinput_conf.js_dev); + if(!joystick_fd) MSG_ERR("Can't init input joystick with using: %s\n",libinput_conf.js_dev); + else mp_input_add_key_fd(priv,joystick_fd,1,mp_input_joystick_read,(mp_close_func_t)mp_input_joystick_close); } #endif #ifdef HAVE_LIRC if(libinput_conf.use_lirc) { - int fd = mp_input_lirc_init(); - if(fd > 0) mp_input_add_cmd_fd(fd,0,mp_input_lirc_read,mp_input_lirc_close); + any_t* lirc_fd = mp_input_lirc_init(); + if(fd > 0) mp_input_add_cmd_fd(priv,lirc_fd,0,mp_input_lirc_read_cmd,mp_input_lirc_close); } #endif @@ -1364,10 +1288,14 @@ struct stat st; if(stat(libinput_conf.in_file,&st)) MSG_ERR("Can't stat %s: %s\n",libinput_conf.in_file,strerror(errno)); else { - priv->in_file_fd = open(libinput_conf.in_file,S_ISFIFO(st.st_mode) ? O_RDWR : O_RDONLY); - if(priv->in_file_fd >= 0) mp_input_add_cmd_fd(priv,priv->in_file_fd,1,NULL,(mp_close_func_t)close); + priv->in_file_fd = open(libinput_conf.in_file,(S_ISFIFO(st.st_mode)?O_RDWR:O_RDONLY)|O_NONBLOCK); + if(priv->in_file_fd >= 0) mp_input_add_cmd_fd(priv,priv,1,NULL,(mp_close_func_t)close); else MSG_ERR("Can't open %s: %s\n",libinput_conf.in_file,strerror(errno)); } + } else { + priv->in_file_fd = 0; + getch2_enable(); // prepare stdin for hotkeys... + mp_input_add_cmd_fd(priv,priv,1,NULL,(mp_close_func_t)close); } } @@ -1376,11 +1304,11 @@ unsigned int i; for(i=0; i < priv->num_key_fd; i++) { - if(priv->key_fds[i].close_func) priv->key_fds[i].close_func(priv->key_fds[i].fd); + if(priv->key_fds[i].close_func) priv->key_fds[i].close_func(priv->key_fds[i].opaque); } for(i=0; i < priv->num_cmd_fd; i++) { - if(priv->cmd_fds[i].close_func) priv->cmd_fds[i].close_func(priv->cmd_fds[i].fd); + if(priv->cmd_fds[i].close_func) priv->cmd_fds[i].close_func(priv->cmd_fds[i].opaque); } if(priv->cmd_binds) { @@ -1391,6 +1319,7 @@ mp_free(priv->cmd_binds); priv->cmd_binds=NULL; } + if(priv->in_file_fd==0) getch2_disable(); } any_t* mp_input_open(void) { Modified: mplayerxp/input2/input.h =================================================================== --- mplayerxp/input2/input.h 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/input2/input.h 2012-11-12 09:03:29 UTC (rev 334) @@ -136,32 +136,14 @@ // These typedefs are for the drivers. They are the functions used to retrive // the next key code or command. -typedef int (*mp_key_func_t)(int fd); // These functions should return the key code or one of the error code -typedef int (*mp_cmd_func_t)(int fd,char* dest,int size); // These functions should act like read but they must use our error code (if needed ;-) -typedef void (*mp_close_func_t)(int fd); // These are used to close the driver +typedef int (*mp_key_func_t)(any_t* ctx); // These functions should return the key code or one of the error code +typedef int (*mp_cmd_func_t)(any_t* ctx,char* dest,int size); // These functions should act like read but they must use our error code (if needed ;-) +typedef void (*mp_close_func_t)(any_t* ctx); // These are used to close the driver typedef int (*mp_input_cmd_filter)(mp_cmd_t* cmd, int paused, any_t* ctx); // Should return 1 if the command was processed extern void (*mp_input_key_cb)(int code); // Set this to grab all incoming key code -// This function add a new key driver. -// The first arg is a file descriptor (use a negative value if you don't use any fd) -// The second arg tell if we use select on the fd to know if something is avaible. -// The third arg is optional. If null a default function wich read an int from the -// fd will be used. -// The last arg can be NULL if nothing is needed to close the driver. The close -// function can be used -extern MPXP_Rc mp_input_add_cmd_fd(any_t* handle,int fd, int select, mp_cmd_func_t read_func, mp_close_func_t close_func); - -// This remove a cmd driver, you usally don't need to use it -extern void mp_input_rm_cmd_fd(any_t* handle,int fd); - -// The args are the sames as for the keys drivers. If you don't use any valid fd you MUST -// give a read_func. -extern MPXP_Rc mp_input_add_key_fd(any_t*handle,int fd, int select, mp_key_func_t read_func, mp_close_func_t close_func); - -// As for the cmd one you usally don't need this function -extern void mp_input_rm_key_fd(any_t* handle,int fd); - +extern mp_cmd_t* mp_input_get_cmd_from_keys(any_t* handle,int n,int* keys); // This function can be used to reput a command in the system. It's used by libmpdemux // when it perform a blocking operation to resend the command it received to the main // loop. Modified: mplayerxp/input2/joystick.c =================================================================== --- mplayerxp/input2/joystick.c 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/input2/joystick.c 2012-11-12 09:03:29 UTC (rev 334) @@ -1,10 +1,9 @@ +#include "mp_config.h" -#include "../mp_config.h" - #ifdef HAVE_JOYSTICK - #include "joystick.h" #include "input.h" +#include "osdep/mplib.h" #include <stdlib.h> #include <stdio.h> @@ -23,32 +22,34 @@ #define JS_DEV "/dev/input/js0" #endif -#ifdef TARGET_LINUX - #include <linux/joystick.h> -int axis[10]; -int btns = 0; +typedef struct priv_s { + int axis[10]; + int btns; + int fd; +}priv_t; #include "in_msg.h" -int mp_input_joystick_init(const char* dev) { - int fd,l=0; +any_t* mp_input_joystick_open(const char* dev) { + int l=0; int inited = 0; struct js_event ev; + priv_t* priv=mp_mallocz(sizeof(priv_t)); MSG_INFO("Opening joystick device %s\n",dev ? dev : JS_DEV); - fd = open( dev ? dev : JS_DEV , O_RDONLY | O_NONBLOCK ); - if(fd < 0) { + if((priv->fd=open(dev?dev:JS_DEV,O_RDONLY|O_NONBLOCK))<0) { MSG_ERR("Can't open joystick device %s : %s\n",dev ? dev : JS_DEV,strerror(errno)); - return -1; + mp_free(priv); + return NULL; } while(! inited) { l = 0; while((unsigned int)l < sizeof(struct js_event)) { - int r = read(fd,((char*)&ev)+l,sizeof(struct js_event)-l); + int r = read(priv->fd,((char*)&ev)+l,sizeof(struct js_event)-l); if(r < 0) { if(errno == EINTR) continue; else if(errno == EAGAIN) { @@ -56,8 +57,9 @@ break; } MSG_ERR("Error while reading joystick device : %s\n",strerror(errno)); - close(fd); - return -1; + close(priv->fd); + mp_free(priv); + return NULL; } l += r; } @@ -66,18 +68,25 @@ break; } ev.type &= ~JS_EVENT_INIT; - if(ev.type == JS_EVENT_BUTTON) btns |= (ev.value << ev.number); - if(ev.type == JS_EVENT_AXIS) axis[ev.number] = ev.value; + if(ev.type == JS_EVENT_BUTTON) priv->btns |= (ev.value << ev.number); + if(ev.type == JS_EVENT_AXIS) priv->axis[ev.number] = ev.value; } - return fd; + return priv; } -int mp_input_joystick_read(int fd) { +void mp_input_joystick_close(any_t* ctx) { + priv_t* priv = (priv_t*)ctx; + close(priv->fd); + mp_free(priv); +} + +int mp_input_joystick_read(any_t* ctx) { + priv_t* priv = (priv_t*)ctx; struct js_event ev; int l=0; while((unsigned int)l < sizeof(struct js_event)) { - int r = read(fd,&ev+l,sizeof(struct js_event)-l); + int r = read(priv->fd,&ev+l,sizeof(struct js_event)-l); if(r <= 0) { if(errno == EINTR) continue; else if(errno == EAGAIN) return MP_INPUT_NOTHING; @@ -97,34 +106,34 @@ MSG_WARN("Joystick : warning init event, we have lost sync with driver\n"); ev.type &= ~JS_EVENT_INIT; if(ev.type == JS_EVENT_BUTTON) { - int s = (btns >> ev.number) & 1; + int s = (priv->btns >> ev.number) & 1; if(s == ev.value) // State is the same : ignore return MP_INPUT_NOTHING; } if(ev.type == JS_EVENT_AXIS) { - if( ( axis[ev.number] == 1 && ev.value > JOY_AXIS_DELTA) || - (axis[ev.number] == -1 && ev.value < -JOY_AXIS_DELTA) || - (axis[ev.number] == 0 && ev.value >= -JOY_AXIS_DELTA && ev.value <= JOY_AXIS_DELTA)) + if( (priv->axis[ev.number] == 1 && ev.value > JOY_AXIS_DELTA) || + (priv->axis[ev.number] == -1 && ev.value < -JOY_AXIS_DELTA) || + (priv->axis[ev.number] == 0 && ev.value >= -JOY_AXIS_DELTA && ev.value <= JOY_AXIS_DELTA)) // State is the same : ignore return MP_INPUT_NOTHING; } } if(ev.type & JS_EVENT_BUTTON) { - btns &= ~(1 << ev.number); - btns |= (ev.value << ev.number); + priv->btns &= ~(1 << ev.number); + priv->btns |= (ev.value << ev.number); if(ev.value == 1) return ((JOY_BTN0+ev.number) | MP_KEY_DOWN); else return (JOY_BTN0+ev.number); } else if(ev.type & JS_EVENT_AXIS) { - if(ev.value < -JOY_AXIS_DELTA && axis[ev.number] != -1) { - axis[ev.number] = -1; + if(ev.value < -JOY_AXIS_DELTA && priv->axis[ev.number] != -1) { + priv->axis[ev.number] = -1; return (JOY_AXIS0_MINUS+(2*ev.number)) | MP_KEY_DOWN; - } else if(ev.value > JOY_AXIS_DELTA && axis[ev.number] != 1) { - axis[ev.number] = 1; + } else if(ev.value > JOY_AXIS_DELTA && priv->axis[ev.number] != 1) { + priv->axis[ev.number] = 1; return (JOY_AXIS0_PLUS+(2*ev.number)) | MP_KEY_DOWN; - } else if(ev.value <= JOY_AXIS_DELTA && ev.value >= -JOY_AXIS_DELTA && axis[ev.number] != 0) { - int r = axis[ev.number] == 1 ? JOY_AXIS0_PLUS+(2*ev.number) : JOY_AXIS0_MINUS+(2*ev.number); - axis[ev.number] = 0; + } else if(ev.value <= JOY_AXIS_DELTA && ev.value >= -JOY_AXIS_DELTA && priv->axis[ev.number] != 0) { + int r = priv->axis[ev.number] == 1 ? JOY_AXIS0_PLUS+(2*ev.number) : JOY_AXIS0_MINUS+(2*ev.number); + priv->axis[ev.number] = 0; return r; } else return MP_INPUT_NOTHING; @@ -134,13 +143,8 @@ } return MP_INPUT_NOTHING; } - #else - -// dummy function - -int mp_input_joystick_init(const char* dev) { return -1; } -int mp_input_joystick_read(int fd) { return MP_INPUT_NOTHING; } - +any_t* mp_input_joystick_open(const char* dev) { UNUNSED(dev); return NULL; } +void mp_input_joystick_close(any_t* ctx) { UNUSED(ctx); } +int mp_input_joystick_read(any_t* ctx) { UNUSED(ctx); return MP_INPUT_NOTHING; } #endif -#endif Modified: mplayerxp/input2/joystick.h =================================================================== --- mplayerxp/input2/joystick.h 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/input2/joystick.h 2012-11-12 09:03:29 UTC (rev 334) @@ -38,6 +38,7 @@ JOY_BTN9 =(JOY_BTN_BASE+9) }; -extern int mp_input_joystick_init(const char* dev); -extern int mp_input_joystick_read(int fd); +extern any_t* mp_input_joystick_open(const char* dev); +extern void mp_input_joystick_close(any_t* ctx); +extern int mp_input_joystick_read(any_t* ctx); #endif Modified: mplayerxp/input2/lirc.c =================================================================== --- mplayerxp/input2/lirc.c 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/input2/lirc.c 2012-11-12 09:03:29 UTC (rev 334) @@ -19,47 +19,53 @@ static struct lirc_config *lirc_config; char *lirc_configfile; -static char* cmd_buf = NULL; +typedef struct priv_s { + int lirc_sock; + char* cmd_buf; +}priv_t; -int mp_input_lirc_init(void) { - int lirc_sock; +any_t* mp_input_lirc_init(void) { + priv_t* priv=mp_mallocz(sizeof(priv_t)); MSG_INFO(MSGTR_SettingUpLIRC); - if((lirc_sock=lirc_init("mplayer",1))==-1){ + if((priv->lirc_sock=lirc_init("mplayer",1))==-1){ MSG_ERR(MSGTR_LIRCopenfailed MSGTR_LIRCdisabled); - return -1; + mo_free(priv); + return NULL; } if(lirc_readconfig( lirc_configfile,&lirc_config,NULL )!=0 ){ MSG_ERR(MSGTR_LIRCcfgerr MSGTR_LIRCdisabled, lirc_configfile == NULL ? "~/.lircrc" : lirc_configfile); lirc_deinit(); - return -1; + mp_free(priv); + return NULL; } - return lirc_sock; + return priv; } -int mp_input_lirc_read(int fd,char* dest, int s) { +int mp_input_lirc_read(any_t* ctx,char* dest, int s) { + priv_t* priv = (priv_t*)ctx; fd_set fds; struct timeval tv; int r,cl = 0; char *code = NULL,*c = NULL; // We have something in the buffer return it - if(cmd_buf != NULL) { - int l = strlen(cmd_buf), w = l > s ? s : l; - memcpy(dest,cmd_buf,w); + if(priv->cmd_buf != NULL) { + int l = strlen(priv->cmd_buf), w = l > s ? s : l; + memcpy(dest,priv->cmd_buf,w); l -= w; - if(l > 0) memmove(cmd_buf,&cmd_buf[w],l+1); + if(l > 0) memmove(priv->cmd_buf,&cmd_buf[w],l+1); else { - mp_free(cmd_buf); - cmd_buf = NULL; + mp_free(priv->cmd_buf); + priv->cmd_buf = NULL; } return w; } // Nothing in the buffer, pool the lirc fd FD_ZERO(&fds); - FD_SET(fd,&fds); + FD_SET(priv->lirc_sock,&fds); memset(&tv,0,sizeof(tv)); while((r = select(fd+1,&fds,NULL,NULL,&tv)) <= 0) { if(r < 0) { @@ -81,28 +87,30 @@ while((r = lirc_code2char(lirc_config,code,&c))==0 && c!=NULL) { int l = strlen(c); if(l <= 0) continue; - cmd_buf = mp_realloc(cmd_buf,cl+l+2); - memcpy(&cmd_buf[cl],c,l); + priv->cmd_buf = mp_realloc(priv->cmd_buf,cl+l+2); + memcpy(&priv->cmd_buf[cl],c,l); cl += l+1; - cmd_buf[cl-1] = '\n'; - cmd_buf[cl] = '\0'; + priv->cmd_buf[cl-1] = '\n'; + priv->cmd_buf[cl] = '\0'; } mp_free(code); if(r < 0) return MP_INPUT_DEAD; - else if(cmd_buf) // return the first command in the buffer - return mp_input_lirc_read(fd,dest,s); + else if(priv->cmd_buf) // return the first command in the buffer + return mp_input_lirc_read(priv->lirc_sock,dest,s); else return MP_INPUT_NOTHING; } -void mp_input_lirc_close(int fd) { - if(cmd_buf) { - mp_free(cmd_buf); - cmd_buf = NULL; +void mp_input_lirc_close(any_t* ctx) { + priv_t* priv = (priv_t*)ctx; + if(priv->cmd_buf) { + mp_free(priv->cmd_buf); + priv->cmd_buf = NULL; } lirc_freeconfig(lirc_config); lirc_deinit(); + mp_free(priv); } #endif Modified: mplayerxp/input2/lirc.h =================================================================== --- mplayerxp/input2/lirc.h 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/input2/lirc.h 2012-11-12 09:03:29 UTC (rev 334) @@ -1,7 +1,7 @@ #ifndef __LIRC_H_INCLUDED #define __LIRC_H_INCLUDED 1 -extern int mp_input_lirc_init(void); -extern int mp_input_lirc_read(int fd,char* dest, int s); -extern void mp_input_lirc_close(int fd); +extern any_t* mp_input_lirc_open(void); +extern int mp_input_lirc_read_cmd(any_t* ctx,char* dest, int s); +extern void mp_input_lirc_close(any_t* ctx); #endif Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/mplayerxp.c 2012-11-12 09:03:29 UTC (rev 334) @@ -108,7 +108,7 @@ #define INITED_VO 0x00000001 #define INITED_AO 0x00000002 -#define INITED_GETCH2 0x00000004 +#define INITED_RESERVED 0x00000004 #define INITED_LIRC 0x00000008 #define INITED_SPUDEC 0x00000010 #define INITED_STREAM 0x00000020 @@ -311,13 +311,6 @@ ao_data=NULL; } - if(mask&INITED_GETCH2){ - priv->inited_flags&=~INITED_GETCH2; - MP_UNIT("uninit_getch2"); - // restore terminal: - getch2_disable(); - } - if(mask&INITED_DEMUXER){ priv->inited_flags&=~INITED_DEMUXER; MP_UNIT("free_priv->demuxer"); @@ -825,19 +818,20 @@ #ifdef HAVE_TERMCAP load_termcap(NULL); // load key-codes #endif - fifo_make_pipe(&keyb_fifo_get,&keyb_fifo_put); /* Init input system */ MP_UNIT("init_input"); priv->libinput=mp_input_open(); - if(keyb_fifo_get > 0) - mp_input_add_key_fd(priv->libinput,keyb_fifo_get,1,NULL,NULL); - if(mp_conf.slave_mode) - mp_input_add_cmd_fd(priv->libinput,0,1,NULL,NULL); - else if(!mp_conf.use_stdin) - mp_input_add_key_fd(priv->libinput,0,1,NULL,NULL); priv->inited_flags|=INITED_INPUT; } +void mplayer_put_key(int code){ + priv_t*priv=mp_data->priv; + mp_cmd_t* cmd; + cmd=mp_input_get_cmd_from_keys(priv->libinput,1,&code); + mp_input_queue_cmd(priv->libinput,cmd); +} + + static void mpxp_init_osd(void) { // check font #ifdef USE_OSD @@ -1742,13 +1736,6 @@ // ******************* Now, let's see the per-file stuff ******************** play_next_file: - // We must enable getch2 here to be able to interrupt network connection - // or cache filling - if(!mp_conf.use_stdin && !mp_conf.slave_mode){ - getch2_enable(); // prepare stdin for hotkeys... - priv->inited_flags|=INITED_GETCH2; - } - ao_subdevice=mpxp_init_output_subsystems(); if(filename) MSG_OK(MSGTR_Playing, filename); @@ -2019,7 +2006,6 @@ eof |= xp_core->audio->eof; /*========================== UPDATE TIMERS ============================*/ MP_UNIT("Update timers"); - if(sh_video && input_state.need_repaint) goto repaint; if(sh_audio) eof = xp_core->audio->eof; if(sh_video) eof|=dae_played_eof(xp_core->video); if(!sh_video) { @@ -2027,11 +2013,9 @@ else mpxp_print_audio_status(); } usleep(250000); -//read_input: if(sh_video) vo_check_events(vo_data); -repaint: #ifdef USE_OSD - if((mpxp_paint_osd(&osd.visible,&in_pause))!=0) goto repaint; + while((mpxp_paint_osd(&osd.visible,&in_pause))!=0); #endif //================= Keyboard events, SEEKing ==================== Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-11-11 18:04:17 UTC (rev 333) +++ mplayerxp/mplayerxp.h 2012-11-12 09:03:29 UTC (rev 334) @@ -9,8 +9,6 @@ int has_video; int has_audio; int has_dvdsub; - int use_stdin; - int slave_mode; uint32_t msg_filter; int test_av; int malloc_debug; @@ -123,5 +121,4 @@ extern void __exit_sighandler(void); extern void mplayer_put_key(int code); -extern int mplayer_get_key(void); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-12 09:27:33
|
Revision: 336 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=336&view=rev Author: nickols_k Date: 2012-11-12 09:27:21 +0000 (Mon, 12 Nov 2012) Log Message: ----------- remove duplicate stuff Modified Paths: -------------- mplayerxp/Makefile mplayerxp/libao2/ao_jack.c Removed Paths: ------------- mplayerxp/fifo.c mplayerxp/fifo.h Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-11-12 09:23:05 UTC (rev 335) +++ mplayerxp/Makefile 2012-11-12 09:27:21 UTC (rev 336) @@ -24,7 +24,7 @@ LDFLAGS += -Wl,-rpath,${CODECDIR}/codecs SRCS_COMMON = mp_msg.c -SRCS_MPLAYER = mplayerxp.c fifo.c $(SRCS_COMMON) mp-opt-reg.c dump.c +SRCS_MPLAYER = mplayerxp.c $(SRCS_COMMON) mp-opt-reg.c dump.c OBJS_MPLAYER = $(SRCS_MPLAYER:.c=.o) Deleted: mplayerxp/fifo.c =================================================================== --- mplayerxp/fifo.c 2012-11-12 09:23:05 UTC (rev 335) +++ mplayerxp/fifo.c 2012-11-12 09:27:21 UTC (rev 336) @@ -1,86 +0,0 @@ -#include "mplayerxp.h" -#include "fifo.h" -#include "osdep/mplib.h" - -static inline int min(int a,int b) { return (a<b)?a:b; }; - -/* === Circular Buffer FIFO support === */ - -CBFifoBuffer *cb_fifo_alloc(unsigned int size) -{ - CBFifoBuffer *f= mp_mallocz(sizeof(CBFifoBuffer)); - if(!f) - return NULL; - f->buffer = mp_malloc(size); - f->end = f->buffer + size; - cb_fifo_reset(f); - if (!f->buffer) - mp_free(f); - return f; -} - -int cb_fifo_realloc2(CBFifoBuffer *f, unsigned int new_size) { - unsigned int old_size= f->end - f->buffer; - - if(old_size < new_size){ - int len= cb_fifo_size(f); - CBFifoBuffer *f2= cb_fifo_alloc(new_size); - - if (!f2) - return -1; - cb_fifo_generic_read(f, f2->buffer, len, NULL); - f2->wptr += len; - f2->wndx += len; - mp_free(f->buffer); - *f= *f2; - mp_free(f2); - } - return 0; -} - -void cb_fifo_free(CBFifoBuffer *f) -{ - if(f){ - mp_free(f->buffer); - mp_free(f); - } -} - -int cb_fifo_generic_write(CBFifoBuffer *f, any_t*src, int size, int (*func)(any_t*, any_t*, int)) -{ - int total = size; - do { - int len = min(f->end - f->wptr, size); - if(func) { - if(func(src, f->wptr, len) <= 0) - break; - } else { - memcpy(f->wptr, src, len); - src = (uint8_t*)src + len; - } -// Write memory barrier needed for SMP here in theory - f->wptr += len; - if (f->wptr >= f->end) - f->wptr = f->buffer; - f->wndx += len; - size -= len; - } while (size > 0); - return total - size; -} - -int cb_fifo_generic_read(CBFifoBuffer *f, any_t*dest, int buf_size, void (*func)(any_t*, any_t*, int)) -{ -// Read memory barrier needed for SMP here in theory - do { - int len = min(f->end - f->rptr, buf_size); - if(func) func(dest, f->rptr, len); - else{ - memcpy(dest, f->rptr, len); - dest = (uint8_t*)dest + len; - } -// memory barrier needed for SMP here in theory - cb_fifo_drain(f, len); - buf_size -= len; - } while (buf_size > 0); - return 0; -} Deleted: mplayerxp/fifo.h =================================================================== --- mplayerxp/fifo.h 2012-11-12 09:23:05 UTC (rev 335) +++ mplayerxp/fifo.h 2012-11-12 09:27:21 UTC (rev 336) @@ -1,117 +0,0 @@ -/** - * @file libavutil/fifo.h - * a very simple circular buffer FIFO implementation - */ -#include "mp_config.h" -#include "mp_msg.h" - -#include <stdint.h> -#include <stddef.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -// Note: this suff really is used by ao_jack only - -typedef struct CBFifoBuffer { - uint8_t *buffer; - uint8_t *rptr, *wptr, *end; - uint32_t rndx, wndx; -} CBFifoBuffer; - -/** - * Initializes an CBFifoBuffer. - * @param size of FIFO - * @return CBFifoBuffer or NULL if mem allocation failure - */ -CBFifoBuffer *cb_fifo_alloc(unsigned int size); - -/** - * Frees an CBFifoBuffer. - * @param *f CBFifoBuffer to mp_free - */ -void cb_fifo_free(CBFifoBuffer *f); - -/** - * Resets the CBFifoBuffer to the state right after cb_fifo_alloc, in particular it is emptied. - * @param *f CBFifoBuffer to reset - */ -static inline void cb_fifo_reset(CBFifoBuffer *f) -{ - f->wptr = f->rptr = f->buffer; - f->wndx = f->rndx = 0; -} - -/** - * Returns the amount of data in bytes in the CBFifoBuffer, that is the - * amount of data you can read from it. - * @param *f CBFifoBuffer to read from - * @return size - */ -static inline int cb_fifo_size(CBFifoBuffer *f) -{ - return (uint32_t)(f->wndx - f->rndx); -} - -/** - * Returns the amount of space in bytes in the CBFifoBuffer, that is the - * amount of data you can write into it. - * @param *f CBFifoBuffer to write into - * @return size - */ -static inline int cb_fifo_space(CBFifoBuffer *f) -{ - return f->end - f->buffer - cb_fifo_size(f); -} - -/** - * Feeds data from an CBFifoBuffer to a user-supplied callback. - * @param *f CBFifoBuffer to read from - * @param buf_size number of bytes to read - * @param *func generic read function - * @param *dest data destination - */ -int cb_fifo_generic_read(CBFifoBuffer *f, any_t*dest, int buf_size, void (*func)(any_t*, any_t*, int)); - -/** - * Feeds data from a user-supplied callback to an CBFifoBuffer. - * @param *f CBFifoBuffer to write to - * @param *src data source - * @param size number of bytes to write - * @param *func generic write function; the first parameter is src, - * the second is dest_buf, the third is dest_buf_size. - * func must return the number of bytes written to dest_buf, or <= 0 to - * indicate no more data available to write. - * If func is NULL, src is interpreted as a simple byte array for source data. - * @return the number of bytes written to the FIFO - */ -int cb_fifo_generic_write(CBFifoBuffer *f, any_t*src, int size, int (*func)(any_t*, any_t*, int)); - -/** - * Resizes an CBFifoBuffer. - * @param *f CBFifoBuffer to resize - * @param size new CBFifoBuffer size in bytes - * @return <0 for failure, >=0 otherwise - */ -int cb_fifo_realloc2(CBFifoBuffer *f, unsigned int size); - -/** - * Reads and discards the specified amount of data from an CBFifoBuffer. - * @param *f CBFifoBuffer to read from - * @param size amount of data to read in bytes - */ -static inline void cb_fifo_drain(CBFifoBuffer *f, int size) -{ - f->rptr += size; - if (f->rptr >= f->end) - f->rptr -= f->end - f->buffer; - f->rndx += size; -} - -static inline uint8_t cb_fifo_peek(CBFifoBuffer *f, int offs) -{ - uint8_t *ptr = f->rptr + offs; - if (ptr >= f->end) - ptr -= f->end - f->buffer; - return *ptr; -} Modified: mplayerxp/libao2/ao_jack.c =================================================================== --- mplayerxp/libao2/ao_jack.c 2012-11-12 09:23:05 UTC (rev 335) +++ mplayerxp/libao2/ao_jack.c 2012-11-12 09:27:21 UTC (rev 336) @@ -36,7 +36,7 @@ #include "osdep/mplib.h" #include "ao_msg.h" -#include "fifo.h" +#include "libavutil/fifo.h" #include <jack/jack.h> static const ao_info_t info = @@ -63,7 +63,7 @@ volatile float callback_interval; volatile float callback_time; - CBFifoBuffer * buffer; //! buffer for audio data + AVFifoBuffer * buffer; //! buffer for audio data }priv_t; @@ -85,9 +85,9 @@ */ static int write_buffer(ao_data_t* ao,unsigned char* data, int len) { priv_t*priv=ao->priv; - int _free = cb_fifo_space(priv->buffer); + int _free = av_fifo_space(priv->buffer); if (len > _free) len = _free; - return cb_fifo_generic_write(priv->buffer, data, len, NULL); + return av_fifo_generic_write(priv->buffer, data, len, NULL); } static void silence(float **bufs, int cnt, int num_bufs); @@ -129,12 +129,12 @@ static unsigned read_buffer(ao_data_t* ao,float **bufs, unsigned cnt, unsigned num_bufs) { priv_t*priv=ao->priv; struct deinterleave di = {bufs, num_bufs, 0, 0}; - unsigned buffered = cb_fifo_size(priv->buffer); + unsigned buffered = av_fifo_size(priv->buffer); if (cnt * sizeof(float) * num_bufs > buffered) { silence(bufs, cnt, num_bufs); cnt = buffered / sizeof(float) / num_bufs; } - cb_fifo_generic_read(priv->buffer, &di, cnt * num_bufs * sizeof(float), deinterleave); + av_fifo_generic_read(priv->buffer, &di, cnt * num_bufs * sizeof(float), deinterleave); return cnt; } @@ -259,7 +259,7 @@ MSG_FATAL("[JACK] cannot open server\n"); goto err_out; } - priv->buffer = cb_fifo_alloc(BUFFSIZE); + priv->buffer = av_fifo_alloc(BUFFSIZE); jack_set_process_callback(priv->client, outputaudio, ao); // list matching priv->ports @@ -316,7 +316,7 @@ mp_free(port_name); mp_free(client_name); if (priv->client) jack_client_close(priv->client); - cb_fifo_free(priv->buffer); + av_fifo_free(priv->buffer); priv->buffer = NULL; return MPXP_False; } @@ -328,7 +328,7 @@ reset(ao); usec_sleep(100 * 1000); jack_client_close(priv->client); - cb_fifo_free(priv->buffer); + av_fifo_free(priv->buffer); priv->buffer = NULL; mp_free(priv); } @@ -339,7 +339,7 @@ static void reset(ao_data_t* ao) { priv_t*priv=ao->priv; priv->paused = 1; - cb_fifo_reset(priv->buffer); + av_fifo_reset(priv->buffer); priv->paused = 0; } @@ -361,7 +361,7 @@ static unsigned get_space(ao_data_t* ao) { priv_t*priv=ao->priv; - return cb_fifo_space(priv->buffer); + return av_fifo_space(priv->buffer); } /** @@ -376,7 +376,7 @@ static float get_delay(ao_data_t* ao) { priv_t*priv=ao->priv; - int buffered = cb_fifo_size(priv->buffer); // could be less + int buffered = av_fifo_size(priv->buffer); // could be less float in_jack = priv->latency; if (priv->estimate && priv->callback_interval > 0) { float elapsed = (float)GetTimer() / 1000000.0 - priv->callback_time; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-12 09:30:37
|
Revision: 337 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=337&view=rev Author: nickols_k Date: 2012-11-12 09:30:30 +0000 (Mon, 12 Nov 2012) Log Message: ----------- remove obsolete fibmap_player Modified Paths: -------------- mplayerxp/Makefile Removed Paths: ------------- mplayerxp/fibmap_mplayer.c Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-11-12 09:27:21 UTC (rev 336) +++ mplayerxp/Makefile 2012-11-12 09:30:30 UTC (rev 337) @@ -10,7 +10,6 @@ include mp_config.mak PRG = $(PROGNAME) -PRG_FIBMAP = fibmap_mplayerxp PRG_CFG = codec-cfg-xp # these subdirectories required installation due binaries within them SUBDIRS = libmpdemux libmpsub libplaytree libmpcodecs libmpconf libao2 osdep postproc input2 nls libvo xmpcore @@ -55,9 +54,6 @@ CFLAGS = $(OPTFLAGS) $(EXTRA_INC) ALL_PRG = $(PRG) -ifeq ($(HAVE_CSS),yes) -ALL_PRG += $(PRG_FIBMAP) -endif .SUFFIXES: .c .o @@ -78,9 +74,6 @@ $(SRCS_MPLAYER): version.h #$(OBJS_MPLAYER): $(SRCS_MPLAYER) -$(PRG_FIBMAP): fibmap_mplayer.o - $(CC) -o $(PRG_FIBMAP) fibmap_mplayer.o - $(PRG_CFG): version.h codec-cfg.c codec-cfg.h $(CC) $(CFLAGS) -g codec-cfg.c -o $(PRG_CFG) -DCODECS2HTML @@ -100,21 +93,10 @@ echo "*** for OSD/Subtitles support and extract to $(DATADIR)/font/" ; \ fi -ifeq ($(HAVE_CSS),yes) - @echo "Following task requires root privs. If it fails don't panic" - @echo "however it means you can't use fibmap_mplayer." - @echo "Without this (or without running mplayer as root) you won't be" - @echo "able to play encrypted DVDs." - -$(INSTALL) -D -o 0 -g 0 -m 4755 -s $(PRG_FIBMAP) $(DESTDIR)$(BINDIR)/$(PRG_FIBMAP) -endif - uninstall: rm -f $(DESTDIR)$(BINDIR)/$(PRG) rm -f $(DESTDIR)$(DATADIR)/font/* rmdir -p --ignore-fail-on-non-empty $(DESTDIR)$(DATADIR)/font -ifeq ($(HAVE_CSS),yes) - rm -f $(DESTDIR)$(BINDIR)/$(PRG_FIBMAP) -endif rmdir -p --ignore-fail-on-non-empty $(DESTDIR)$(BINDIR) clean: @@ -123,7 +105,7 @@ distclean: $(DO_MAKE) - -rm -f *~ $(PRG) $(PRG_FIBMAP) $(OBJS) + -rm -f *~ $(PRG) $(OBJS) -rm -f *.o *.a .depend configure.log -rm -f mp_config.h mp_config.mak version.h -rm -f cpuinfo help_mp.h Deleted: mplayerxp/fibmap_mplayer.c =================================================================== --- mplayerxp/fibmap_mplayer.c 2012-11-12 09:27:21 UTC (rev 336) +++ mplayerxp/fibmap_mplayer.c 2012-11-12 09:30:30 UTC (rev 337) @@ -1,38 +0,0 @@ -/* (C)2001,2002 by LGB (G\xE1bor L\xE9n\xE1rt), lg...@lg... - Part of MPlayer project, this source is copyrighted according to GNU/GPL. */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> - -#ifndef FIBMAP -#define FIBMAP 1 -#endif - -int main ( int argc , char ** argv ) -{ - int fd,lba=0; - if (argc!=2) { - fprintf(stderr,"Bad usage.\n"); - return 1; - } - if ((fd = open(argv[1], O_RDONLY)) == -1) { - fprintf(stderr,"Cannot open file %s: %s\n", - argv[1] ? argv[1] : "(NULL)", strerror(errno)); - return 1; - } - if (ioctl(fd, FIBMAP, &lba) != 0) { - fprintf(stderr,"fibmap ioctl: %s (Hint: %s is not suid root?)\n",strerror(errno),argv[0]); - close(fd); - return 1; - } - close(fd); - printf("%d\n",lba); - return 0; -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-12 10:34:40
|
Revision: 340 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=340&view=rev Author: nickols_k Date: 2012-11-12 10:34:29 +0000 (Mon, 12 Nov 2012) Log Message: ----------- add still one additional test Modified Paths: -------------- mplayerxp/libmpdemux/demuxer_r.h mplayerxp/mplayerxp.c mplayerxp/mplayerxp.h mplayerxp/osdep/mp_malloc.c mplayerxp/osdep/mplib.h mplayerxp/postproc/postprocess.c mplayerxp/xmpcore/xmp_vdecoder.c Modified: mplayerxp/libmpdemux/demuxer_r.h =================================================================== --- mplayerxp/libmpdemux/demuxer_r.h 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/libmpdemux/demuxer_r.h 2012-11-12 10:34:29 UTC (rev 340) @@ -12,7 +12,7 @@ #endif typedef enum enc_frame_type { - AudioFrame =0, + AudioFrame=1, VideoFrame }enc_frame_type_e; Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/mplayerxp.c 2012-11-12 10:34:29 UTC (rev 340) @@ -343,7 +343,7 @@ MP_UNIT(NULL); } -void exit_player(char* how){ +void exit_player(const char* why){ fflush(stdout); fflush(stderr); @@ -352,12 +352,12 @@ MP_UNIT("exit_player"); sws_uninit(); - if(how) MSG_HINT(MSGTR_Exiting,how); + if(why) MSG_HINT(MSGTR_Exiting,why); MSG_DBG2("max framesize was %d bytes\n",max_framesize); if(mp_data->mconfig) m_config_free(mp_data->mconfig); mp_msg_uninit(); mpxp_uninit_structs(); - if(how) exit(0); + if(why) exit(0); return; /* Still try coredump!!!*/ } Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/mplayerxp.h 2012-11-12 10:34:29 UTC (rev 340) @@ -4,6 +4,7 @@ #include <pthread.h> #include <stdint.h> #include "mp_config.h" +#include "osdep/mplib.h" typedef struct mp_conf_s { int has_video; @@ -115,7 +116,12 @@ extern pthread_mutex_t audio_timer_mutex; -extern void exit_player(char* how); +extern void exit_player(const char* why); +static inline void escape_player(const char* why,unsigned num_calls) { + show_backtrace(why,num_calls); + exit_player(why); +} + extern void mpxp_resync_audio_stream(void); extern void mpxp_reset_vcache(void); extern void __exit_sighandler(void); Modified: mplayerxp/osdep/mp_malloc.c =================================================================== --- mplayerxp/osdep/mp_malloc.c 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/osdep/mp_malloc.c 2012-11-12 10:34:29 UTC (rev 340) @@ -12,7 +12,6 @@ #include <limits.h> #include <time.h> #include <unistd.h> -#include <execinfo.h> typedef struct mp_slot_s { any_t* page_ptr; @@ -186,7 +185,15 @@ uninit_bt_cache(cache); } -void print_backtrace(unsigned num) { __print_backtrace(num); } +void print_backtrace(const char *why,any_t** stack,unsigned num) { + bt_cache_t* cache=init_bt_cache(); + unsigned i; + MSG_INFO(why?why:"*** Backtrace for suspect call ***\n"); + for(i=0;i<num;i++) { + MSG_INFO(" %p -> %s\n",stack[i],addr2line(cache,stack[i])); + } + uninit_bt_cache(cache); +} static void __prot_free_append(any_t*ptr) { any_t *page_ptr=prot_page_align(ptr); Modified: mplayerxp/osdep/mplib.h =================================================================== --- mplayerxp/osdep/mplib.h 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/osdep/mplib.h 2012-11-12 10:34:29 UTC (rev 340) @@ -8,6 +8,7 @@ */ #ifndef __MPLIB_H_INCLUDED__ #define __MPLIB_H_INCLUDED__ 1 +#include <execinfo.h> #include <stddef.h> #include <sys/mman.h> #include "mp_config.h" @@ -62,5 +63,13 @@ }; extern int __FASTCALL__ mp_mprotect(const any_t* addr,size_t len,enum mp_prot_e flags); -extern void print_backtrace(unsigned num); +extern void print_backtrace(const char *why,any_t** stack,unsigned num); + +static inline void show_backtrace(const char *why,unsigned num_calls) { + any_t* stack[num_calls]; + unsigned ncalls; + ncalls=backtrace(stack,num_calls); + print_backtrace(why,stack,ncalls); +} + #endif Modified: mplayerxp/postproc/postprocess.c =================================================================== --- mplayerxp/postproc/postprocess.c 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/postproc/postprocess.c 2012-11-12 10:34:29 UTC (rev 340) @@ -13,7 +13,6 @@ #define MSGT_CLASS MSGT_PP #include "mp_msg.h" -extern void exit_player(char *); pp_context *pp2_get_context(int width, int height, int flags) { flags &= 0x00FFFFFFUL; /* kill cpu related flags */ Modified: mplayerxp/xmpcore/xmp_vdecoder.c =================================================================== --- mplayerxp/xmpcore/xmp_vdecoder.c 2012-11-12 09:54:33 UTC (rev 339) +++ mplayerxp/xmpcore/xmp_vdecoder.c 2012-11-12 10:34:29 UTC (rev 340) @@ -188,6 +188,7 @@ if(cur_time - mp_data->seek_time > (xp_core->num_v_buffs/sh_video->fps)*100) xp_n_frame_to_drop=compute_frame_dropping(sh_video,frame->pts,drop_barrier); } /* if( mp_conf.frame_dropping ) */ if(!finite(frame->pts)) MSG_WARN("Bug of demuxer! Value of video pts=%f\n",frame->pts); + if(frame->type!=VideoFrame) escape_player("VideoDecoder doesn't parse non video frames",10); #if 0 /* We can't seriously examine question of too slow machines This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-13 06:22:35
|
Revision: 351 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=351&view=rev Author: nickols_k Date: 2012-11-13 06:22:26 +0000 (Tue, 13 Nov 2012) Log Message: ----------- initial QoS protection for input2 Modified Paths: -------------- mplayerxp/configure mplayerxp/input2/input.c mplayerxp/input2/input.h mplayerxp/mplayerxp.c Modified: mplayerxp/configure =================================================================== --- mplayerxp/configure 2012-11-13 05:37:16 UTC (rev 350) +++ mplayerxp/configure 2012-11-13 06:22:26 UTC (rev 351) @@ -756,7 +756,42 @@ enabled joystick && test linux || disable joystick print_config HAVE_ mp_config.h mp_config.mak joystick +# pseudo-ramdom names +cat > $TMPC << EOF +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +int main(void) { + srand(time(0)); + printf("%u %u %u %u %u %u %u %u %u %u\n" + ,rand(),rand(),rand(),rand(),rand(),rand(),rand(),rand(),rand(),rand()); } +EOF +cc_check || die "Canot generate pseudo-random numbers" +rnd_arr=`$TMPO` + +rnd0=`echo $rnd_arr | cut -d ' ' -f 1` +rnd1=`echo $rnd_arr | cut -d ' ' -f 2` +rnd2=`echo $rnd_arr | cut -d ' ' -f 3` +rnd3=`echo $rnd_arr | cut -d ' ' -f 4` +rnd4=`echo $rnd_arr | cut -d ' ' -f 5` +rnd5=`echo $rnd_arr | cut -d ' ' -f 6` +rnd6=`echo $rnd_arr | cut -d ' ' -f 7` +rnd7=`echo $rnd_arr | cut -d ' ' -f 8` +rnd8=`echo $rnd_arr | cut -d ' ' -f 9` +rnd9=`echo $rnd_arr | cut -d ' ' -f 10` + +crnd0=$(($rnd0 % 255)) +crnd1=$(($rnd1 % 255)) +crnd2=$(($rnd2 % 255)) +crnd3=$(($rnd3 % 255)) +crnd4=$(($rnd4 % 255)) +crnd5=$(($rnd5 % 255)) +crnd6=$(($rnd6 % 255)) +crnd7=$(($rnd7 % 255)) +crnd8=$(($rnd8 % 255)) +crnd9=$(($rnd9 % 255)) + ############################################################################# echo "Creating mp_config.mak" cat >> mp_config.mak << EOF @@ -778,6 +813,17 @@ # OPTFLAGS = -O3 $profile $debug $gcov $march $mcpu -pipe -fomit-frame-pointer -ffast-math OPTFLAGS = $CFLAGS DEBUG = -DDEBUG +#-- Compile-time random numbers +RND_NUMBER0 = $rnd0 +RND_NUMBER1 = $rnd1 +RND_NUMBER2 = $rnd2 +RND_NUMBER3 = $rnd3 +RND_NUMBER4 = $rnd4 +RND_NUMBER5 = $rnd5 +RND_NUMBER6 = $rnd6 +RND_NUMBER7 = $rnd7 +RND_NUMBER8 = $rnd8 +RND_NUMBER9 = $rnd9 # --- HAZARDOUS STUFF @@ -935,6 +981,52 @@ /* Removes warning about unused arguments */ # define UNUSED(x) ((any_t)(x)) +/* Compile-time random numbers */ +#define RND_CHAR0 $crnd0 +#define RND_CHAR1 $crnd1 +#define RND_CHAR2 $crnd2 +#define RND_CHAR3 $crnd3 +#define RND_CHAR4 $crnd4 +#define RND_CHAR5 $crnd5 +#define RND_CHAR6 $crnd6 +#define RND_CHAR7 $crnd7 +#define RND_CHAR8 $crnd8 +#define RND_CHAR9 $crnd9 + +#define RND_NUMBER0 $rnd0 +#define RND_NUMBER1 $rnd1 +#define RND_NUMBER2 $rnd2 +#define RND_NUMBER3 $rnd3 +#define RND_NUMBER4 $rnd4 +#define RND_NUMBER5 $rnd5 +#define RND_NUMBER6 $rnd6 +#define RND_NUMBER7 $rnd7 +#define RND_NUMBER8 $rnd8 +#define RND_NUMBER9 $rnd9 + +#define RND_STR0 "$rnd0" +#define RND_STR1 "$rnd1" +#define RND_STR2 "$rnd2" +#define RND_STR3 "$rnd3" +#define RND_STR4 "$rnd4" +#define RND_STR5 "$rnd5" +#define RND_STR6 "$rnd6" +#define RND_STR7 "$rnd7" +#define RND_STR8 "$rnd8" +#define RND_STR9 "$rnd9" + + +#define RND_RENAME0(a) a ## $rnd0 +#define RND_RENAME1(a) a ## $rnd1 +#define RND_RENAME2(a) a ## $rnd2 +#define RND_RENAME3(a) a ## $rnd3 +#define RND_RENAME4(a) a ## $rnd4 +#define RND_RENAME5(a) a ## $rnd5 +#define RND_RENAME6(a) a ## $rnd6 +#define RND_RENAME7(a) a ## $rnd7 +#define RND_RENAME8(a) a ## $rnd8 +#define RND_RENAME9(a) a ## $rnd9 + #endif /* MPXP_CONFIG_H */ EOF Modified: mplayerxp/input2/input.c =================================================================== --- mplayerxp/input2/input.c 2012-11-13 05:37:16 UTC (rev 350) +++ mplayerxp/input2/input.c 2012-11-13 06:22:26 UTC (rev 351) @@ -1,5 +1,3 @@ -#include "mp_config.h" - #include <stdlib.h> #include <string.h> #include <stdio.h> @@ -53,6 +51,22 @@ #define CMD_QUEUE_SIZE 100 +typedef int (*mp_key_func_t)(any_t* ctx); // These functions should return the key code or one of the error code +typedef int (*mp_cmd_func_t)(any_t* ctx,char* dest,int size); // These functions should act like read but they must use our error code (if needed ;-) +typedef void (*mp_close_func_t)(any_t* ctx); // These are used to close the driver + + +typedef struct mp_cmd_bind { + int input[MP_MAX_KEY_DOWN+1]; + char* cmd; +} mp_cmd_bind_t; + +typedef struct mp_key_name { + int key; + char* name; +} mp_key_name_t; + + typedef struct mp_input_fd { any_t* opaque; any_t* read_func; @@ -76,6 +90,8 @@ mp_cmd_bind_t* cmd_binds; mp_cmd_filter_t* cmd_filters; + char antiviral_hole[RND_CHAR1]; + mp_input_fd_t key_fds[MP_MAX_KEY_FD]; unsigned int num_key_fd; mp_input_fd_t cmd_fds[MP_MAX_CMD_FD]; @@ -403,6 +419,7 @@ // Callback to allow the menu filter to grab the incoming keys void (*mp_input_key_cb)(int code) = NULL; +static mp_cmd_t* mp_cmd_clone(mp_cmd_t* cmd); // This create a copy of a command (used by the auto repeat stuff) static int mp_input_print_key_list(any_t*,const config_t* cfg); static int mp_input_print_cmd_list(any_t*,const config_t* cfg); @@ -1001,7 +1018,7 @@ mp_free(cmd); } -mp_cmd_t* mp_cmd_clone(mp_cmd_t* cmd) { +static mp_cmd_t* mp_cmd_clone(mp_cmd_t* cmd) { mp_cmd_t* ret; int i; #ifdef MP_DEBUG @@ -1322,7 +1339,7 @@ if(priv->in_file_fd==0) getch2_disable(); } -any_t* mp_input_open(void) { +any_t* RND_RENAME0(mp_input_open)(void) { priv_t* priv; priv=mp_mallocz(sizeof(priv_t)); priv->ar_state=-1; Modified: mplayerxp/input2/input.h =================================================================== --- mplayerxp/input2/input.h 2012-11-13 05:37:16 UTC (rev 350) +++ mplayerxp/input2/input.h 2012-11-13 06:22:26 UTC (rev 351) @@ -1,6 +1,6 @@ #ifndef INPUT_H_INCLUDED #define INPUT_H_INCLUDED 1 - +#include "mp_config.h" #include "xmpcore/xmp_enums.h" // All commands id @@ -94,6 +94,7 @@ MP_INPUT_DEAD =-2,// A fatal error occured, this driver should be removed MP_INPUT_NOTHING =-3 // No input were avaible }; + // For the keys drivers, if possible you can send key up and key down // events. Key up is the default, to send a key down you must or the key // code with MP_KEY_DOWN @@ -122,25 +123,10 @@ mp_cmd_arg_t args[MP_CMD_MAX_ARGS]; } mp_cmd_t; - -typedef struct mp_cmd_bind { - int input[MP_MAX_KEY_DOWN+1]; - char* cmd; -} mp_cmd_bind_t; - -typedef struct mp_key_name { - int key; - char* name; -} mp_key_name_t; - // These typedefs are for the drivers. They are the functions used to retrive // the next key code or command. -typedef int (*mp_key_func_t)(any_t* ctx); // These functions should return the key code or one of the error code -typedef int (*mp_cmd_func_t)(any_t* ctx,char* dest,int size); // These functions should act like read but they must use our error code (if needed ;-) -typedef void (*mp_close_func_t)(any_t* ctx); // These are used to close the driver typedef int (*mp_input_cmd_filter)(mp_cmd_t* cmd, int paused, any_t* ctx); // Should return 1 if the command was processed - extern void (*mp_input_key_cb)(int code); // Set this to grab all incoming key code extern mp_cmd_t* mp_input_get_cmd_from_keys(any_t* handle,int n,int* keys); @@ -158,16 +144,12 @@ /// These filter allow you to process the command before mplayer /// If a filter return a true value mp_input_get_cmd will return NULL extern void mp_input_add_cmd_filter(any_t* handle,mp_input_cmd_filter, any_t* ctx); - // After getting a command from mp_input_get_cmd you need to mp_free it using this // function extern void mp_cmd_free(mp_cmd_t* cmd); -// This create a copy of a command (used by the auto repeat stuff) -extern mp_cmd_t* mp_cmd_clone(mp_cmd_t* cmd); - // When you create a new driver you should add it in this 2 functions. -extern any_t* mp_input_open(void); +extern any_t* RND_RENAME0(mp_input_open)(void); extern void mp_input_close(any_t* handle); // Interruptible usleep: (used by libmpdemux) @@ -175,5 +157,6 @@ extern void mp_input_print_keys(any_t*handle); extern void mp_input_print_cmds(any_t*handle); + extern void mp_input_print_binds(any_t*handle); #endif Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-13 05:37:16 UTC (rev 350) +++ mplayerxp/mplayerxp.c 2012-11-13 06:22:26 UTC (rev 351) @@ -818,7 +818,7 @@ #endif /* Init input system */ MP_UNIT("init_input"); - priv->libinput=mp_input_open(); + priv->libinput=RND_RENAME0(mp_input_open)(); priv->inited_flags|=INITED_INPUT; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-13 08:37:28
|
Revision: 353 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=353&view=rev Author: nickols_k Date: 2012-11-13 08:37:15 +0000 (Tue, 13 Nov 2012) Log Message: ----------- trim trailing spaces + unexpand Modified Paths: -------------- mplayerxp/cfg-mplayerxp.h mplayerxp/dump.c mplayerxp/input2/input.c mplayerxp/libao2/afmt.h mplayerxp/libao2/ao_alsa9.c mplayerxp/libao2/ao_jack.c mplayerxp/libao2/ao_nas.c mplayerxp/libao2/ao_null.c mplayerxp/libao2/ao_openal.c mplayerxp/libao2/ao_oss.c mplayerxp/libao2/audio_out.c mplayerxp/libao2/audio_out_internal.h mplayerxp/libmpcodecs/ad_a52.c mplayerxp/libmpcodecs/ad_acm.c mplayerxp/libmpcodecs/ad_dvdpcm.c mplayerxp/libmpcodecs/ad_faad.c mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/ad_hwac3.c mplayerxp/libmpcodecs/ad_libdv.c mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/ad_qtaudio.c mplayerxp/libmpcodecs/ad_real.c mplayerxp/libmpcodecs/ad_twin.c mplayerxp/libmpcodecs/ad_vorbis.c mplayerxp/libmpcodecs/dec_audio.h mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/liba52/bitstream.c mplayerxp/libmpcodecs/liba52/bitstream.h mplayerxp/libmpcodecs/liba52/crc.c mplayerxp/libmpcodecs/liba52/downmix_mmx.h mplayerxp/libmpcodecs/liba52/imdct_mmx.h mplayerxp/libmpcodecs/liba52/parse.c mplayerxp/libmpcodecs/liba52/resample_c.c mplayerxp/libmpcodecs/liba52/resample_mmx.c mplayerxp/libmpcodecs/libdca/bitstream.c mplayerxp/libmpcodecs/libdca/bitstream.h mplayerxp/libmpcodecs/libdca/dca.h mplayerxp/libmpcodecs/libdca/dca_internal.h mplayerxp/libmpcodecs/libdca/downmix.c mplayerxp/libmpcodecs/libdca/downmix_mmx.h mplayerxp/libmpcodecs/libdca/parse.c mplayerxp/libmpcodecs/libdca/resample.c mplayerxp/libmpcodecs/libdca/resample_c.c mplayerxp/libmpcodecs/libdca/resample_mmx.c mplayerxp/libmpcodecs/libdca/tables_huffman.h mplayerxp/libmpcodecs/libdca/tables_quantization.h mplayerxp/libmpcodecs/libdca/tables_vq.h mplayerxp/libmpcodecs/libnuppelvideo/RTjpegN.c mplayerxp/libmpcodecs/libnuppelvideo/RTjpegN.h mplayerxp/libmpcodecs/libnuppelvideo/lzoconf.h mplayerxp/libmpcodecs/libnuppelvideo/minilzo.h mplayerxp/libmpcodecs/libnuppelvideo/nuppelvideo.c mplayerxp/libmpcodecs/libnuppelvideo/nuppelvideo.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_dmo.c mplayerxp/libmpcodecs/vd_dshow.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_qtvideo.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_vfw.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/libmpconf/cfgparser.c mplayerxp/libmpconf/codec-cfg.c mplayerxp/libmpconf/m_option.c mplayerxp/libmpconf/m_property.c mplayerxp/libmpconf/m_property.h mplayerxp/libmpconf/m_struct.c mplayerxp/libmpconf/subopt-helper.c mplayerxp/libmpdemux/asf.h mplayerxp/libmpdemux/asf_mmst_streaming.c mplayerxp/libmpdemux/asf_streaming.c mplayerxp/libmpdemux/aviprint.c mplayerxp/libmpdemux/cache2.c mplayerxp/libmpdemux/cddb.c mplayerxp/libmpdemux/cookies.c mplayerxp/libmpdemux/cookies.h mplayerxp/libmpdemux/demux_aiff.c mplayerxp/libmpdemux/demux_asf.c mplayerxp/libmpdemux/demux_audio.c mplayerxp/libmpdemux/demux_avi.c mplayerxp/libmpdemux/demux_bmp.c mplayerxp/libmpdemux/demux_film.c mplayerxp/libmpdemux/demux_lavf.c mplayerxp/libmpdemux/demux_mkv.c mplayerxp/libmpdemux/demux_mov.c mplayerxp/libmpdemux/demux_mpg.c mplayerxp/libmpdemux/demux_mpxp64.c mplayerxp/libmpdemux/demux_nsv.c mplayerxp/libmpdemux/demux_nuv.c mplayerxp/libmpdemux/demux_ogg.c mplayerxp/libmpdemux/demux_pva.c mplayerxp/libmpdemux/demux_real.c mplayerxp/libmpdemux/demux_roq.c mplayerxp/libmpdemux/demux_smjpeg.c mplayerxp/libmpdemux/demux_ts.c mplayerxp/libmpdemux/demux_ty.c mplayerxp/libmpdemux/demux_viv.c mplayerxp/libmpdemux/demux_vqf.c mplayerxp/libmpdemux/demux_y4m.c mplayerxp/libmpdemux/demuxer.c mplayerxp/libmpdemux/freesdp/common.c mplayerxp/libmpdemux/freesdp/common.h mplayerxp/libmpdemux/freesdp/parser.c mplayerxp/libmpdemux/freesdp/parser.h mplayerxp/libmpdemux/freesdp/parserpriv.h mplayerxp/libmpdemux/freesdp/priv.h mplayerxp/libmpdemux/frequencies.c mplayerxp/libmpdemux/frequencies.h mplayerxp/libmpdemux/genres.h mplayerxp/libmpdemux/http.c mplayerxp/libmpdemux/http.h mplayerxp/libmpdemux/librtsp/rtsp.c mplayerxp/libmpdemux/librtsp/rtsp.h mplayerxp/libmpdemux/librtsp/rtsp_rtp.c mplayerxp/libmpdemux/librtsp/rtsp_session.c mplayerxp/libmpdemux/matroska.h mplayerxp/libmpdemux/mp3_hdr.c mplayerxp/libmpdemux/mp3_hdr.h mplayerxp/libmpdemux/mpeg_hdr.c mplayerxp/libmpdemux/mux_lavf.c mplayerxp/libmpdemux/mux_mpxp64.c mplayerxp/libmpdemux/network.c mplayerxp/libmpdemux/network.h mplayerxp/libmpdemux/parse_es.c mplayerxp/libmpdemux/parse_mp4.c mplayerxp/libmpdemux/pnm.c mplayerxp/libmpdemux/qtpalette.h mplayerxp/libmpdemux/realrtsp/asmrp.c mplayerxp/libmpdemux/realrtsp/md5.c mplayerxp/libmpdemux/realrtsp/real.c mplayerxp/libmpdemux/realrtsp/real.h mplayerxp/libmpdemux/realrtsp/rmff.c mplayerxp/libmpdemux/realrtsp/rmff.h mplayerxp/libmpdemux/realrtsp/sdpplin.c mplayerxp/libmpdemux/realrtsp/sdpplin.h mplayerxp/libmpdemux/realrtsp/xbuffer.c mplayerxp/libmpdemux/realrtsp/xbuffer.h mplayerxp/libmpdemux/rtp.c mplayerxp/libmpdemux/s_dvdnav.c mplayerxp/libmpdemux/s_dvdread.c mplayerxp/libmpdemux/s_ffmpeg.c mplayerxp/libmpdemux/s_ftp.c mplayerxp/libmpdemux/s_network.c mplayerxp/libmpdemux/s_rtsp.c mplayerxp/libmpdemux/s_tv.c mplayerxp/libmpdemux/s_udp.c mplayerxp/libmpdemux/s_vcdnav.c mplayerxp/libmpdemux/stream.c mplayerxp/libmpdemux/sub_cc.c mplayerxp/libmpdemux/sub_ty.c mplayerxp/libmpdemux/tcp.c mplayerxp/libmpdemux/test.c mplayerxp/libmpdemux/tvi_bsdbt848.c mplayerxp/libmpdemux/tvi_dummy.c mplayerxp/libmpdemux/tvi_v4l.c mplayerxp/libmpdemux/udp.c mplayerxp/libmpdemux/url.c mplayerxp/libmpdemux/url.h mplayerxp/libmpdemux/video.c mplayerxp/libmpdemux/yuv4mpeg.c mplayerxp/libmpdemux/yuv4mpeg.h mplayerxp/libmpdemux/yuv4mpeg_intern.h mplayerxp/libmpdemux/yuv4mpeg_ratio.c mplayerxp/libmpsub/find_sub.c mplayerxp/libmpsub/spudec.c mplayerxp/libmpsub/subreader.c mplayerxp/libmpsub/vobsub.c mplayerxp/libplaytree/asxparser.c mplayerxp/libplaytree/playtree.c mplayerxp/libplaytree/playtree.h mplayerxp/libplaytree/playtreeparser.c mplayerxp/libvo/aspect.c mplayerxp/libvo/dri_vo.h mplayerxp/libvo/font_load.c mplayerxp/libvo/img_format.c mplayerxp/libvo/jpeg_enc.c mplayerxp/libvo/jpeg_enc.h mplayerxp/libvo/osd.c mplayerxp/libvo/osd_template.c mplayerxp/libvo/screenshot.c mplayerxp/libvo/sub.c mplayerxp/libvo/video_out.c mplayerxp/libvo/video_out.h mplayerxp/libvo/video_out_internal.h mplayerxp/libvo/videodev_mjpeg.h mplayerxp/libvo/vo_dga.c mplayerxp/libvo/vo_fbdev.c mplayerxp/libvo/vo_null.c mplayerxp/libvo/vo_opengl.c mplayerxp/libvo/vo_sdl.c mplayerxp/libvo/vo_vesa.c mplayerxp/libvo/vo_x11.c mplayerxp/libvo/vo_xv.c mplayerxp/libvo/vo_xvidix.c mplayerxp/libvo/vosub_vidix.c mplayerxp/libvo/x11_common.c mplayerxp/loader/afl.c mplayerxp/loader/com.h mplayerxp/loader/dmo/DMO_AudioDecoder.c mplayerxp/loader/dmo/DMO_VideoDecoder.c mplayerxp/loader/dmo/buffer.c mplayerxp/loader/dmo/dmo.c mplayerxp/loader/dshow/DS_AudioDecoder.c mplayerxp/loader/dshow/DS_Filter.c mplayerxp/loader/dshow/DS_VideoDecoder.c mplayerxp/loader/dshow/allocator.c mplayerxp/loader/dshow/cmediasample.c mplayerxp/loader/dshow/inputpin.c mplayerxp/loader/dshow/libwin32.h mplayerxp/loader/dshow/mediatype.c mplayerxp/loader/dshow/mediatype.h mplayerxp/loader/dshow/outputpin.c mplayerxp/loader/dshow/test.c mplayerxp/loader/elfdll.c mplayerxp/loader/ext.c mplayerxp/loader/ldt_keeper.c mplayerxp/loader/loader.h mplayerxp/loader/module.c mplayerxp/loader/pe_image.c mplayerxp/loader/pe_resource.c mplayerxp/loader/qtx/qtxsdk/components.h mplayerxp/loader/registry.c mplayerxp/loader/resource.c mplayerxp/loader/vfl.c mplayerxp/loader/win32.c mplayerxp/loader/wine/avifmt.h mplayerxp/loader/wine/driver.h mplayerxp/loader/wine/heap.h mplayerxp/loader/wine/ldt.h mplayerxp/loader/wine/mmreg.h mplayerxp/loader/wine/module.h mplayerxp/loader/wine/msacm.h mplayerxp/loader/wine/msacmdrv.h mplayerxp/loader/wine/ntdef.h mplayerxp/loader/wine/pe_image.h mplayerxp/loader/wine/vfw.h mplayerxp/loader/wine/winbase.h mplayerxp/loader/wine/windef.h mplayerxp/loader/wine/winerror.h mplayerxp/loader/wine/winnt.h mplayerxp/loader/wine/winreg.h mplayerxp/loader/wine/winuser.h mplayerxp/mplayerxp.c mplayerxp/nls/help_mp-cz.h mplayerxp/nls/help_mp-de.h mplayerxp/nls/help_mp-dk.h mplayerxp/nls/help_mp-es.h mplayerxp/nls/help_mp-fr.h mplayerxp/nls/help_mp-hu.h mplayerxp/nls/help_mp-ko.h mplayerxp/nls/help_mp-nl.h mplayerxp/nls/help_mp-pl.h mplayerxp/nls/help_mp-ro.h mplayerxp/nls/help_mp-sk.h mplayerxp/nls/help_mp-sv.h mplayerxp/nls/help_mp-tr.h mplayerxp/nls/help_mp-zh.h mplayerxp/osdep/bswap.h mplayerxp/osdep/cpudetect.c mplayerxp/osdep/cputable.h mplayerxp/osdep/getch2.c mplayerxp/osdep/shmem.c mplayerxp/osdep/timer-lx.c mplayerxp/osdep/vbelib.c mplayerxp/postproc/af.c mplayerxp/postproc/af.h mplayerxp/postproc/af_center.c mplayerxp/postproc/af_channels.c mplayerxp/postproc/af_comp.c mplayerxp/postproc/af_control.h mplayerxp/postproc/af_crystality.c mplayerxp/postproc/af_delay.c mplayerxp/postproc/af_dummy.c mplayerxp/postproc/af_dyn.c mplayerxp/postproc/af_echo3d.c mplayerxp/postproc/af_equalizer.c mplayerxp/postproc/af_export.c mplayerxp/postproc/af_extrastereo.c mplayerxp/postproc/af_ffenc.c mplayerxp/postproc/af_format.c mplayerxp/postproc/af_format_alaw.c mplayerxp/postproc/af_format_ulaw.c mplayerxp/postproc/af_gate.c mplayerxp/postproc/af_hrtf.c mplayerxp/postproc/af_karaoke.c mplayerxp/postproc/af_lp.c mplayerxp/postproc/af_pan.c mplayerxp/postproc/af_raw.c mplayerxp/postproc/af_scaletempo.c mplayerxp/postproc/af_sinesuppress.c mplayerxp/postproc/af_sub.c mplayerxp/postproc/af_surround.c mplayerxp/postproc/af_tools.c mplayerxp/postproc/af_volume.c mplayerxp/postproc/aflib.c mplayerxp/postproc/aflib.h mplayerxp/postproc/aflib_accel.h mplayerxp/postproc/libmenu/menu.c mplayerxp/postproc/libmenu/menu.h mplayerxp/postproc/libmenu/menu_cmdlist.c mplayerxp/postproc/libmenu/menu_console.c mplayerxp/postproc/libmenu/menu_filesel.c mplayerxp/postproc/libmenu/menu_list.c mplayerxp/postproc/libmenu/menu_param.c mplayerxp/postproc/libmenu/menu_pt.c mplayerxp/postproc/libmenu/menu_txt.c mplayerxp/postproc/mpc_info.h mplayerxp/postproc/swscale.c mplayerxp/postproc/vf.c mplayerxp/postproc/vf.h mplayerxp/postproc/vf_1bpp.c mplayerxp/postproc/vf_2xsai.c mplayerxp/postproc/vf_delogo.c mplayerxp/postproc/vf_denoise3d.c mplayerxp/postproc/vf_dint.c mplayerxp/postproc/vf_down3dright.c mplayerxp/postproc/vf_eq.c mplayerxp/postproc/vf_expand.c mplayerxp/postproc/vf_flip.c mplayerxp/postproc/vf_format.c mplayerxp/postproc/vf_framestep.c mplayerxp/postproc/vf_il.c mplayerxp/postproc/vf_menu.c mplayerxp/postproc/vf_mirror.c mplayerxp/postproc/vf_noise.c mplayerxp/postproc/vf_ow.c mplayerxp/postproc/vf_palette.c mplayerxp/postproc/vf_panscan.c mplayerxp/postproc/vf_perspective.c mplayerxp/postproc/vf_pp.c mplayerxp/postproc/vf_raw.c mplayerxp/postproc/vf_rectangle.c mplayerxp/postproc/vf_rgb2bgr.c mplayerxp/postproc/vf_rotate.c mplayerxp/postproc/vf_scale.c mplayerxp/postproc/vf_smartblur.c mplayerxp/postproc/vf_softpulldown.c mplayerxp/postproc/vf_test.c mplayerxp/postproc/vf_unsharp.c mplayerxp/postproc/vf_vo.c mplayerxp/postproc/vf_yuvcsp.c mplayerxp/postproc/vf_yuy2.c mplayerxp/postproc/vf_yvu9.c mplayerxp/pvector/pvector.h mplayerxp/xmpcore/mp_aframe.h mplayerxp/xmpcore/xmp_adecoder.c mplayerxp/xmpcore/xmp_aplayer.c mplayerxp/xmpcore/xmp_vdecoder.c Modified: mplayerxp/cfg-mplayerxp.h =================================================================== --- mplayerxp/cfg-mplayerxp.h 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/cfg-mplayerxp.h 2012-11-13 08:37:15 UTC (rev 353) @@ -26,7 +26,7 @@ /* * CONF_TYPE_FUNC_FULL : * allows own implemtations for passing the params - * + * * the function receives parameter name and argument (if it does not start with - ) * useful with a conf.name like 'aa*' to parse several parameters to a function * return 0 =ok, but we didn't need the param (could be the filename) @@ -163,9 +163,9 @@ {"file", &mp_conf.sub_name, CONF_TYPE_STRING, 0, 0, 0, "specifies the subtitle file"}, #ifdef USE_ICONV {"cp", &sub_data.cp, CONF_TYPE_STRING, 0, 0, 0, "specifies codepage of subtitles"}, -#endif +#endif {"fps", &mp_conf.sub_fps, CONF_TYPE_FLOAT, 0, 0.0, 10.0, "specifies frame/sec rate of subtitle file"}, - {"noauto", &mp_conf.sub_auto, CONF_TYPE_FLAG, 0, 1, 0, "disable autodetection of vobsub for textsubs if vobsub found"}, + {"noauto", &mp_conf.sub_auto, CONF_TYPE_FLAG, 0, 1, 0, "disable autodetection of vobsub for textsubs if vobsub found"}, {"unicode", &sub_data.unicode, CONF_TYPE_FLAG, 0, 0, 1, "tells MPlayerXP to handle the subtitle file as UNICODE"}, {"nounicode", &sub_data.unicode, CONF_TYPE_FLAG, 0, 1, 0, "tells MPlayerXP to handle the subtitle file as non-UNICODE"}, {"utf8", &sub_data.utf8, CONF_TYPE_FLAG, 0, 0, 1, "tells MPlayerXP to handle the subtitle file as UTF8"}, Modified: mplayerxp/dump.c =================================================================== --- mplayerxp/dump.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/dump.c 2012-11-13 08:37:15 UTC (rev 353) @@ -351,7 +351,7 @@ float a_pts; while(sha->timer < (shv?priv->vtimer:HUGE) || !shv || veof) /* autolimitation of audio reading */ { - /* we should try to keep structure of audio packets here + /* we should try to keep structure of audio packets here and don't generate badly interlaved stream. The ideal case is: type=read_packet(ANY_TYPE); put_packet(type); */ @@ -361,7 +361,7 @@ else a_duration=(float)in_size/(float)(sha->i_bps); if(mpeg_atimer==HUGE) mpeg_atimer=a_pts; - else + else { if( mpeg_atimer-a_duration<a_pts) mpeg_atimer=a_pts; else mpeg_atimer+=a_duration; Modified: mplayerxp/input2/input.c =================================================================== --- mplayerxp/input2/input.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/input2/input.c 2012-11-13 08:37:15 UTC (rev 353) @@ -440,7 +440,7 @@ { "cmdlist", mp_input_print_cmd_list, CONF_TYPE_FUNC, CONF_GLOBAL, 0, 0, "prints all commands that can be bound to keys" }, { "file", &libinput_conf.in_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, "specifes file with commands (useful for FIFO)" }, #ifdef HAVE_LIRC - { "lircconf", &lirc_configfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, "specifies a config.file for LIRC"}, + { "lircconf", &lirc_configfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, "specifies a config.file for LIRC"}, #endif { "lirc", &libinput_conf.use_lirc, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, "enables using of lirc" }, { "nolirc", &libinput_conf.use_lirc, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, "disables using of lirc" }, Modified: mplayerxp/libao2/afmt.h =================================================================== --- mplayerxp/libao2/afmt.h 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/afmt.h 2012-11-13 08:37:15 UTC (rev 353) @@ -4,7 +4,7 @@ #ifdef HAVE_SYS_SOUNDCARD_H #include <sys/soundcard.h> /* For AFMT_* on linux */ -#else +#else #ifdef HAVE_SOUNDCARD_H #include <soundcard.h> /* OpenBSD have this instead of <sys/soundcard> */ #endif Modified: mplayerxp/libao2/ao_alsa9.c =================================================================== --- mplayerxp/libao2/ao_alsa9.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/ao_alsa9.c 2012-11-13 08:37:15 UTC (rev 353) @@ -362,7 +362,7 @@ MSG_ERR("alsa-init: memory allocation error: %s\n", snd_strerror(err)); return MPXP_False; } - + if ((tmp_device = snd_pcm_info_get_device(alsa_info)) < 0) { MSG_ERR("alsa-init: cant get device\n"); return MPXP_False; @@ -552,7 +552,7 @@ } #else { - int dir=0; + int dir=0; unsigned period_time=100000; /* period time in us */ snd_pcm_uframes_t size; if ((err = snd_pcm_hw_params_set_period_time_near(priv->handler, priv->hwparams, &period_time, &dir)) < 0) { @@ -570,7 +570,7 @@ chunk_size=size; } #endif - // gets buffersize for control + // gets buffersize for control if ((err = snd_pcm_hw_params_get_buffer_size(priv->hwparams,&dummy)) < 0) { MSG_ERR("alsa-conf: unable to get buffersize: %s\n", snd_strerror(err)); return MPXP_False; @@ -804,10 +804,10 @@ MSG_ERR("alsa-play: xrun reset error"); return 0; } - } else if (res == -ESTRPIPE) { /* suspend */ + } else if (res == -ESTRPIPE) { /* suspend */ MSG_WARN("alsa-play: pcm in suspend mode. trying to resume\n"); while ((res = snd_pcm_resume(priv->handler)) == -EAGAIN) sleep(1); - } else if (res < 0) { + } else if (res < 0) { MSG_ERR("alsa-play: unknown status, trying to reset soundcard\n"); if ((res = snd_pcm_prepare(priv->handler)) < 0) { MSG_ERR("alsa-play: snd prepare error"); Modified: mplayerxp/libao2/ao_jack.c =================================================================== --- mplayerxp/libao2/ao_jack.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/ao_jack.c 2012-11-13 08:37:15 UTC (rev 353) @@ -197,19 +197,19 @@ static void print_help (void) { MSG_FATAL( - "\n-ao jack commandline help:\n" - "Example: mplayer -ao jack:port=myout\n" - " connects MPlayer to the jack priv->ports named myout\n" - "\nOptions:\n" - " port=<port name>\n" - " Connects to the given priv->ports instead of the default physical ones\n" - " name=<client name>\n" - " priv->client name to pass to JACK\n" - " priv->estimate\n" - " priv->estimates the amount of data in priv->buffers (experimental)\n" - " autostart\n" - " Automatically start JACK server if necessary\n" - ); + "\n-ao jack commandline help:\n" + "Example: mplayer -ao jack:port=myout\n" + " connects MPlayer to the jack priv->ports named myout\n" + "\nOptions:\n" + " port=<port name>\n" + " Connects to the given priv->ports instead of the default physical ones\n" + " name=<client name>\n" + " priv->client name to pass to JACK\n" + " priv->estimate\n" + " priv->estimates the amount of data in priv->buffers (experimental)\n" + " autostart\n" + " Automatically start JACK server if necessary\n" + ); } #endif static MPXP_Rc init(ao_data_t* ao,unsigned flags) { Modified: mplayerxp/libao2/ao_nas.c =================================================================== --- mplayerxp/libao2/ao_nas.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/ao_nas.c 2012-11-13 08:37:15 UTC (rev 353) @@ -314,8 +314,8 @@ } } if (nas_readBuffer(priv, - priv->server_buffer_size - - priv->server_buffer_used) != 0) { + priv->server_buffer_size - + priv->server_buffer_used) != 0) { event->cur_state = AuStateStart; break; } @@ -403,7 +403,7 @@ AuSetElementParameters(priv->aud, 1, &aep, &as); if (as != AuSuccess) { nas_print_error(priv->aud, - "control(): AuSetElementParameters", as); + "control(): AuSetElementParameters", as); retval = MPXP_Error; } else retval = MPXP_Ok; break; @@ -574,7 +574,7 @@ AuStartFlow(priv->aud, priv->flow, &as); if (as != AuSuccess) nas_print_error(priv->aud, - "play(): AuStartFlow", as); + "play(): AuStartFlow", as); } Modified: mplayerxp/libao2/ao_null.c =================================================================== --- mplayerxp/libao2/ao_null.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/ao_null.c 2012-11-13 08:37:15 UTC (rev 353) @@ -60,7 +60,7 @@ /* init with default values */ static struct WaveHeader wavhdr = { WAV_ID_RIFF, - /* same conventions than in sox/wav.c/wavwritehdr() */ + /* same conventions than in sox/wav.c/wavwritehdr() */ 0, //le2me_32(0x7ffff024), WAV_ID_WAVE, WAV_ID_FMT, Modified: mplayerxp/libao2/ao_openal.c =================================================================== --- mplayerxp/libao2/ao_openal.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/ao_openal.c 2012-11-13 08:37:15 UTC (rev 353) @@ -68,8 +68,8 @@ ALfloat volume; ao_control_vol_t *vol = (ao_control_vol_t *)arg; if (cmd == AOCONTROL_SET_VOLUME) { - volume = (vol->left + vol->right) / 200.0; - alListenerf(AL_GAIN, volume); + volume = (vol->left + vol->right) / 200.0; + alListenerf(AL_GAIN, volume); } alGetListenerf(AL_GAIN, &volume); vol->left = vol->right = volume * 100; @@ -85,10 +85,10 @@ */ static void print_help(void) { MSG_FATAL( - "\n-ao openal commandline help:\n" - "Example: mplayer -ao openal\n" - "\nOptions:\n" - ); + "\n-ao openal commandline help:\n" + "Example: mplayer -ao openal\n" + "\nOptions:\n" + ); } #endif static MPXP_Rc init(ao_data_t* ao,unsigned flags) @@ -252,9 +252,9 @@ for (i = 0; i < len; i++) { for (ch = 0; ch < ao->channels; ch++) { for (j = 0, k = ch; j < CHUNK_SIZE / 2; j++, k += ao->channels) - priv->tmpbuf[j] = d[k]; + priv->tmpbuf[j] = d[k]; alBufferData(priv->buffers[ch][priv->cur_buf[ch]], AL_FORMAT_MONO16, priv->tmpbuf, - CHUNK_SIZE, ao->samplerate); + CHUNK_SIZE, ao->samplerate); alSourceQueueBuffers(priv->sources[ch], 1, &priv->buffers[ch][priv->cur_buf[ch]]); priv->cur_buf[ch] = (priv->cur_buf[ch] + 1) % NUM_BUF; } Modified: mplayerxp/libao2/ao_oss.c =================================================================== --- mplayerxp/libao2/ao_oss.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/ao_oss.c 2012-11-13 08:37:15 UTC (rev 353) @@ -107,13 +107,13 @@ { if (cmd == AOCONTROL_GET_VOLUME) { - ioctl(fd, MIXER_READ(priv->mixer_channel), &v); + ioctl(fd, MIXER_READ(priv->mixer_channel), &v); vol->right = (v & 0xFF00) >> 8; vol->left = v & 0x00FF; } else { - v = ((int)vol->right << 8) | (int)vol->left; + v = ((int)vol->right << 8) | (int)vol->left; ioctl(fd, MIXER_WRITE(priv->mixer_channel), &v); } } @@ -159,7 +159,7 @@ if(rval & AFMT_S32_BE) MSG_INFO("AFMT_S32_BE "); if(rval & AFMT_U32_LE) MSG_INFO("AFMT_U32_LE "); if(rval & AFMT_U32_BE) MSG_INFO("AFMT_U32_LE "); - MSG_INFO("\n"); + MSG_INFO("\n"); } } @@ -444,7 +444,7 @@ ierr=ioctl(priv->fd, SNDCTL_DSP_GETODELAY, &r); if(ierr!=-1) { - return ((float)r)/(float)ao->bps; + return ((float)r)/(float)ao->bps; } #endif priv->delay_method=1; // fallback if not supported @@ -454,7 +454,7 @@ ierr=ioctl(priv->fd, SNDCTL_DSP_GETOSPACE, &priv->zz); if(ierr!=-1) { - return ((float)(ao->buffersize-priv->zz.bytes))/(float)ao->bps; + return ((float)(ao->buffersize-priv->zz.bytes))/(float)ao->bps; } priv->delay_method=0; // fallback if not supported } Modified: mplayerxp/libao2/audio_out.c =================================================================== --- mplayerxp/libao2/audio_out.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/audio_out.c 2012-11-13 08:37:15 UTC (rev 353) @@ -38,10 +38,10 @@ static const ao_functions_t* audio_out_drivers[] = { #ifdef USE_OSS_AUDIO - &audio_out_oss, + &audio_out_oss, #endif #ifdef HAVE_SDL - &audio_out_sdl, + &audio_out_sdl, #endif #ifdef HAVE_ALSA &audio_out_alsa, @@ -61,8 +61,8 @@ #ifdef HAVE_JACK &audio_out_jack, #endif - &audio_out_wav, - &audio_out_null, + &audio_out_wav, + &audio_out_null, NULL }; @@ -84,7 +84,7 @@ return("Unsigned 8-bit"); case AFMT_U16_LE: return("Unsigned 16-bit (Little-Endian)"); - case AFMT_U16_BE: + case AFMT_U16_BE: return("Unsigned 16-bit (Big-Endian)"); case AFMT_S16_LE: return("Signed 16-bit (Little-Endian)"); @@ -92,7 +92,7 @@ return("Signed 16-bit (Big-Endian)"); case AFMT_U24_LE: return("Unsigned 24-bit (Little-Endian)"); - case AFMT_U24_BE: + case AFMT_U24_BE: return("Unsigned 24-bit (Big-Endian)"); case AFMT_S24_LE: return("Signed 24-bit (Little-Endian)"); @@ -100,7 +100,7 @@ return("Signed 24-bit (Big-Endian)"); case AFMT_U32_LE: return("Unsigned 32-bit (Little-Endian)"); - case AFMT_U32_BE: + case AFMT_U32_BE: return("Unsigned 32-bit (Big-Endian)"); case AFMT_S32_LE: return("Signed 32-bit (Little-Endian)"); @@ -154,7 +154,7 @@ case AFMT_S16_LE: case AFMT_S16_BE: return 16;//16 bits - + case AFMT_MU_LAW: case AFMT_A_LAW: case AFMT_IMA_ADPCM: @@ -164,7 +164,7 @@ case AFMT_AC3: default: return 8;//default 1 byte - + } return 8; } Modified: mplayerxp/libao2/audio_out_internal.h =================================================================== --- mplayerxp/libao2/audio_out_internal.h 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libao2/audio_out_internal.h 2012-11-13 08:37:15 UTC (rev 353) @@ -18,7 +18,7 @@ control,\ init,\ configure,\ - uninit,\ + uninit,\ reset,\ get_space,\ play,\ Modified: mplayerxp/libmpcodecs/ad_a52.c =================================================================== --- mplayerxp/libmpcodecs/ad_a52.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_a52.c 2012-11-13 08:37:15 UTC (rev 353) @@ -32,7 +32,7 @@ #include "osdep/bswap.h" #include "osdep/mplib.h" -static const ad_info_t info = +static const ad_info_t info = { "liba52 AC3 driver", "liba52", Modified: mplayerxp/libmpcodecs/ad_acm.c =================================================================== --- mplayerxp/libmpcodecs/ad_acm.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_acm.c 2012-11-13 08:37:15 UTC (rev 353) @@ -61,10 +61,10 @@ MSACM_RegisterDriver((const char *)sh_audio->codec->dll_name, sh_audio->wtag, 0); ret=acmStreamOpen(&priv->srcstream,(HACMDRIVER)NULL,in_fmt,&priv->o_wf,NULL,0,0,0); if(ret){ - if(ret==ACMERR_NOTPOSSIBLE) - MSG_ERR("ACM_Decoder: Unappropriate audio format\n"); - else - MSG_ERR("ACM_Decoder: acmStreamOpen error: %d", (int)ret); + if(ret==ACMERR_NOTPOSSIBLE) + MSG_ERR("ACM_Decoder: Unappropriate audio format\n"); + else + MSG_ERR("ACM_Decoder: acmStreamOpen error: %d", (int)ret); priv->srcstream=0; return 0; } @@ -74,8 +74,8 @@ srcsize*=2; //if(srcsize<MAX_OUTBURST) srcsize=MAX_OUTBURST; if(!srcsize){ - MSG_WARN("Warning! ACM codec reports srcsize=0\n"); - srcsize=16384; + MSG_WARN("Warning! ACM codec reports srcsize=0\n"); + srcsize=16384; } // limit srcsize to 4-16kb //while(srcsize && srcsize<4096) srcsize*=2; @@ -129,8 +129,8 @@ float pts; int ret=decode(sh_audio,sh_audio->a_buffer,4096,sh_audio->a_buffer_size,&pts); if(ret<0){ - MSG_INFO("ACM decoding error: %d\n",ret); - return MPXP_False; + MSG_INFO("ACM decoding error: %d\n",ret); + return MPXP_False; } sh_audio->a_buffer_len=ret; return MPXP_Ok; @@ -214,7 +214,7 @@ memset(&ash, 0, sizeof(ash)); ash.cbStruct=sizeof(ash); ash.fdwStatus=0; - ash.dwUser=0; + ash.dwUser=0; ash.pbSrc=sh_audio->a_in_buffer; ash.cbSrcLength=sh_audio->a_in_buffer_len; ash.pbDst=buf; Modified: mplayerxp/libmpcodecs/ad_dvdpcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-13 08:37:15 UTC (rev 353) @@ -97,49 +97,49 @@ // not sure if the "& 0xf0" and "<< 4" are the right way around // can somebody clarify? for (j = 0; j < minlen; j += 12) { - char tmp[10]; - len = demux_read_data_r(sh_audio->ds, tmp, 10,j?&null_pts:pts); - if (len < 10) break; - // first sample - buf[j + 0] = tmp[0]; - buf[j + 1] = tmp[1]; - buf[j + 2] = tmp[8] & 0xf0; - // second sample - buf[j + 3] = tmp[2]; - buf[j + 4] = tmp[3]; - buf[j + 5] = tmp[8] << 4; - // third sample - buf[j + 6] = tmp[4]; - buf[j + 7] = tmp[5]; - buf[j + 8] = tmp[9] & 0xf0; - // fourth sample - buf[j + 9] = tmp[6]; - buf[j + 10] = tmp[7]; - buf[j + 11] = tmp[9] << 4; + char tmp[10]; + len = demux_read_data_r(sh_audio->ds, tmp, 10,j?&null_pts:pts); + if (len < 10) break; + // first sample + buf[j + 0] = tmp[0]; + buf[j + 1] = tmp[1]; + buf[j + 2] = tmp[8] & 0xf0; + // second sample + buf[j + 3] = tmp[2]; + buf[j + 4] = tmp[3]; + buf[j + 5] = tmp[8] << 4; + // third sample + buf[j + 6] = tmp[4]; + buf[j + 7] = tmp[5]; + buf[j + 8] = tmp[9] & 0xf0; + // fourth sample + buf[j + 9] = tmp[6]; + buf[j + 10] = tmp[7]; + buf[j + 11] = tmp[9] << 4; } len = j; } else { // 24 bit for (j = 0; j < minlen; j += 12) { - char tmp[12]; - len = demux_read_data_r(sh_audio->ds, tmp, 12, j?&null_pts:pts); - if (len < 12) break; - // first sample - buf[j + 0] = tmp[0]; - buf[j + 1] = tmp[1]; - buf[j + 2] = tmp[8]; - // second sample - buf[j + 3] = tmp[2]; - buf[j + 4] = tmp[3]; - buf[j + 5] = tmp[9]; - // third sample - buf[j + 6] = tmp[4]; - buf[j + 7] = tmp[5]; - buf[j + 8] = tmp[10]; - // fourth sample - buf[j + 9] = tmp[6]; - buf[j + 10] = tmp[7]; - buf[j + 11] = tmp[11]; + char tmp[12]; + len = demux_read_data_r(sh_audio->ds, tmp, 12, j?&null_pts:pts); + if (len < 12) break; + // first sample + buf[j + 0] = tmp[0]; + buf[j + 1] = tmp[1]; + buf[j + 2] = tmp[8]; + // second sample + buf[j + 3] = tmp[2]; + buf[j + 4] = tmp[3]; + buf[j + 5] = tmp[9]; + // third sample + buf[j + 6] = tmp[4]; + buf[j + 7] = tmp[5]; + buf[j + 8] = tmp[10]; + // fourth sample + buf[j + 9] = tmp[6]; + buf[j + 10] = tmp[7]; + buf[j + 11] = tmp[11]; } len = j; } Modified: mplayerxp/libmpcodecs/ad_faad.c =================================================================== --- mplayerxp/libmpcodecs/ad_faad.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_faad.c 2012-11-13 08:37:15 UTC (rev 353) @@ -1,5 +1,5 @@ /* ad_faad.c - MPlayer AAC decoder using libfaad2 - * This file is part of MPlayer, see http://mplayerhq.hu/ for info. + * This file is part of MPlayer, see http://mplayerhq.hu/ for info. * (c)2002 by Felix Buenemann <atmosfear at users.sourceforge.net> * File licensed under the GPL, see http://www.fsf.org/ for more info. */ @@ -301,7 +301,7 @@ if(NeAAC_finfo.error > 0) { MSG_WARN("FAAD: error: %s, trying to resync!\n", - NeAACDecGetErrorMessage(NeAAC_finfo.error)); + NeAACDecGetErrorMessage(NeAAC_finfo.error)); j++; } else break; Modified: mplayerxp/libmpcodecs/ad_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-13 08:37:15 UTC (rev 353) @@ -207,7 +207,7 @@ if(len==0) len=len2; else len+=len2; buf+=len2; } - MSG_DBG2("Decoded %d -> %d \n",y,len2); + MSG_DBG2("Decoded %d -> %d \n",y,len2); } *pts=apts; return len; Modified: mplayerxp/libmpcodecs/ad_hwac3.c =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-13 08:37:15 UTC (rev 353) @@ -30,44 +30,44 @@ }; static const struct frmsize_s frmsizecod_tbl[64] = { - { 32 ,{64 ,69 ,96 } }, - { 32 ,{64 ,70 ,96 } }, - { 40 ,{80 ,87 ,120 } }, - { 40 ,{80 ,88 ,120 } }, - { 48 ,{96 ,104 ,144 } }, - { 48 ,{96 ,105 ,144 } }, - { 56 ,{112 ,121 ,168 } }, - { 56 ,{112 ,122 ,168 } }, - { 64 ,{128 ,139 ,192 } }, - { 64 ,{128 ,140 ,192 } }, - { 80 ,{160 ,174 ,240 } }, - { 80 ,{160 ,175 ,240 } }, - { 96 ,{192 ,208 ,288 } }, - { 96 ,{192 ,209 ,288 } }, - { 112 ,{224 ,243 ,336 } }, - { 112 ,{224 ,244 ,336 } }, - { 128 ,{256 ,278 ,384 } }, - { 128 ,{256 ,279 ,384 } }, - { 160 ,{320 ,348 ,480 } }, - { 160 ,{320 ,349 ,480 } }, - { 192 ,{384 ,417 ,576 } }, - { 192 ,{384 ,418 ,576 } }, - { 224 ,{448 ,487 ,672 } }, - { 224 ,{448 ,488 ,672 } }, - { 256 ,{512 ,557 ,768 } }, - { 256 ,{512 ,558 ,768 } }, - { 320 ,{640 ,696 ,960 } }, - { 320 ,{640 ,697 ,960 } }, - { 384 ,{768 ,835 ,1152 } }, - { 384 ,{768 ,836 ,1152 } }, - { 448 ,{896 ,975 ,1344 } }, - { 448 ,{896 ,976 ,1344 } }, - { 512 ,{1024 ,1114 ,1536 } }, - { 512 ,{1024 ,1115 ,1536 } }, - { 576 ,{1152 ,1253 ,1728 } }, - { 576 ,{1152 ,1254 ,1728 } }, - { 640 ,{1280 ,1393 ,1920 } }, - { 640 ,{1280 ,1394 ,1920 } } + { 32 ,{64 ,69 ,96 } }, + { 32 ,{64 ,70 ,96 } }, + { 40 ,{80 ,87 ,120 } }, + { 40 ,{80 ,88 ,120 } }, + { 48 ,{96 ,104 ,144 } }, + { 48 ,{96 ,105 ,144 } }, + { 56 ,{112 ,121 ,168 } }, + { 56 ,{112 ,122 ,168 } }, + { 64 ,{128 ,139 ,192 } }, + { 64 ,{128 ,140 ,192 } }, + { 80 ,{160 ,174 ,240 } }, + { 80 ,{160 ,175 ,240 } }, + { 96 ,{192 ,208 ,288 } }, + { 96 ,{192 ,209 ,288 } }, + { 112 ,{224 ,243 ,336 } }, + { 112 ,{224 ,244 ,336 } }, + { 128 ,{256 ,278 ,384 } }, + { 128 ,{256 ,279 ,384 } }, + { 160 ,{320 ,348 ,480 } }, + { 160 ,{320 ,349 ,480 } }, + { 192 ,{384 ,417 ,576 } }, + { 192 ,{384 ,418 ,576 } }, + { 224 ,{448 ,487 ,672 } }, + { 224 ,{448 ,488 ,672 } }, + { 256 ,{512 ,557 ,768 } }, + { 256 ,{512 ,558 ,768 } }, + { 320 ,{640 ,696 ,960 } }, + { 320 ,{640 ,697 ,960 } }, + { 384 ,{768 ,835 ,1152 } }, + { 384 ,{768 ,836 ,1152 } }, + { 448 ,{896 ,975 ,1344 } }, + { 448 ,{896 ,976 ,1344 } }, + { 512 ,{1024 ,1114 ,1536 } }, + { 512 ,{1024 ,1115 ,1536 } }, + { 576 ,{1152 ,1253 ,1728 } }, + { 576 ,{1152 ,1254 ,1728 } }, + { 640 ,{1280 ,1393 ,1920 } }, + { 640 ,{1280 ,1394 ,1920 } } }; struct syncframe { Modified: mplayerxp/libmpcodecs/ad_libdv.c =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_libdv.c 2012-11-13 08:37:15 UTC (rev 353) @@ -110,9 +110,9 @@ for (i=0; i < decoder->audio->samples_this_frame; i++) { - int ch; - for (ch=0; ch < decoder->audio->num_channels; ch++) - bufP[len++] = priv->audioBuffers[ch][i]; + int ch; + for (ch=0; ch < decoder->audio->num_channels; ch++) + bufP[len++] = priv->audioBuffers[ch][i]; } } len+=decoder->audio->samples_this_frame; Modified: mplayerxp/libmpcodecs/ad_mp3.c =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_mp3.c 2012-11-13 08:37:15 UTC (rev 353) @@ -89,7 +89,7 @@ MPG123_RVA, /**< one of the RVA choices above (integer) */ MPG123_DOWNSPEED, /**< play a frame N times (integer) */ MPG123_UPSPEED, /**< play every Nth frame (integer) */ - MPG123_START_FRAME, /**< start with this frame (skip frames before that, integer) */ + MPG123_START_FRAME, /**< start with this frame (skip frames before that, integer) */ MPG123_DECODE_FRAMES,/**< decode only this number of frames (integer) */ MPG123_ICY_INTERVAL,/**< stream contains ICY metadata with this interval (integer) */ MPG123_OUTSCALE, /**< the scale for output samples (amplitude - integer or float according to mpg123 output format, normally integer) */ Modified: mplayerxp/libmpcodecs/ad_qtaudio.c =================================================================== --- mplayerxp/libmpcodecs/ad_qtaudio.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_qtaudio.c 2012-11-13 08:37:15 UTC (rev 353) @@ -64,8 +64,8 @@ unsigned long *outputBytes ); typedef int (__cdecl* LPFUNC8)(SoundConverter sc, any_t*outputPtr, - unsigned long *outputFrames, - unsigned long *outputBytes); + unsigned long *outputFrames, + unsigned long *outputBytes); typedef int (__cdecl* LPFUNC9)(SoundConverter sc); static HINSTANCE qtml_dll; Modified: mplayerxp/libmpcodecs/ad_real.c =================================================================== --- mplayerxp/libmpcodecs/ad_real.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_real.c 2012-11-13 08:37:15 UTC (rev 353) @@ -235,16 +235,16 @@ unsigned char *p=sh->a_in_buffer; demux_read_data_r(sh->ds, p, h*w,pts); for(n=0;n<38;n++){ - int i=bs*sipr_swaps[n][0]; - int o=bs*sipr_swaps[n][1]; + int i=bs*sipr_swaps[n][0]; + int o=bs*sipr_swaps[n][1]; // swap nibbles of block 'i' with 'o' TODO: optimize for(j=0;j<bs;j++){ int x=(i&1) ? (p[(i>>1)]>>4) : (p[(i>>1)]&15); int y=(o&1) ? (p[(o>>1)]>>4) : (p[(o>>1)]&15); if(o&1) p[(o>>1)]=(p[(o>>1)]&0x0F)|(x<<4); - else p[(o>>1)]=(p[(o>>1)]&0xF0)|x; + else p[(o>>1)]=(p[(o>>1)]&0xF0)|x; if(i&1) p[(i>>1)]=(p[(i>>1)]&0x0F)|(y<<4); - else p[(i>>1)]=(p[(i>>1)]&0xF0)|y; + else p[(i>>1)]=(p[(i>>1)]&0xF0)|y; ++i;++o; } } @@ -272,7 +272,7 @@ priv->pts=FIX_APTS(sh,priv->pts,sh->wf->nBlockAlign); return len; // return value: number of _bytes_ written to output buffer, - // or -1 for EOF (or uncorrectable error) + // or -1 for EOF (or uncorrectable error) } static MPXP_Rc control(sh_audio_t *sh,int cmd,any_t* arg, ...){ Modified: mplayerxp/libmpcodecs/ad_twin.c =================================================================== --- mplayerxp/libmpcodecs/ad_twin.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_twin.c 2012-11-13 08:37:15 UTC (rev 353) @@ -225,7 +225,7 @@ #endif vqf_dll = LoadLibraryA((LPCSTR)libname); if( vqf_dll == NULL ) { - MSG_ERR("failed loading dll\n" ); + MSG_ERR("failed loading dll\n" ); return 0; } TvqInitialize_ptr = GetProcAddress(vqf_dll,(LPCSTR)"TvqInitialize"); @@ -366,7 +366,7 @@ unsigned char mask, tmpdat; int retval; priv_t *priv=sh->context; - + /*--- Main operation ---*/ retval = 0; mask = 0x1; @@ -386,7 +386,7 @@ tmpdat = (unsigned char)priv->buf[ibufadr]; tmpdat >>= (BYTE_BIT-ibufbit-1); /* current data bit */ - + idata = ibits*size; /* output data address */ data[idata] = (char)(tmpdat & mask); /* set output data */ for (icl=1; icl<size; icl++) @@ -413,7 +413,7 @@ unsigned work; char tmpbit[BITS_INT]; int retval; - + if ( nbits > BITS_INT ){ MSG_ERR( "get_bstm(): %d: %d Error.\n", nbits, BITS_INT); @@ -512,7 +512,7 @@ int bitcount = 0; priv_t*priv=sh->context; float pts; - + for ( idiv=0; idiv<cf->N_DIV_P; idiv++ ){ bitcount += get_bstm(&(_index->pls[idiv]), priv->bits_0[BLK_PPC][idiv],sh,&pts); /*CB0*/ bitcount += get_bstm(&(_index->pls[idiv+cf->N_DIV_P]), priv->bits_1[BLK_PPC][idiv],sh,&pts);/*CB1*/ @@ -521,7 +521,7 @@ bitcount += get_bstm(&(_index->pit[i_sup]), cf->BASF_BIT,sh,&pts); bitcount += get_bstm(&(_index->pgain[i_sup]), cf->PGAIN_BIT,sh,&pts); } - + return bitcount; } @@ -539,7 +539,7 @@ } } } - + return bitcount; } @@ -552,7 +552,7 @@ int numFixedBitsPerFrame = TvqGetNumFixedBitsPerFrame(); int btype; priv_t *priv=sh->context; - + /*--- Initialization ---*/ variableBits = 0; bitcount = 0; @@ -570,10 +570,10 @@ cfg = &priv->cf.cfg[btype]; // set the block dependent paremeters table bitcount += variableBits; - + /* Interleaved vector quantization */ bitcount += GetVqInfo( cfg, priv->bits_0[btype], priv->bits_1[btype], variableBits, _index, sh ); - + /* Bark-scale envelope */ bitcount += GetBseInfo( &priv->cf, cfg, _index, sh ); /* Gain */ @@ -588,7 +588,7 @@ if ( cfg->ebc_enable ){ bitcount += GetEbcInfo( &priv->cf, cfg, _index, sh ); } - + return bitcount == numFixedBitsPerFrame ? bitcount/8 : 0; } @@ -601,7 +601,7 @@ unsigned ismp, ich; float *ptr; register float dtmp; - + for ( ich=0; ich<numChannels; ich++ ){ ptr = out+ich*frameSize; for ( ismp=0; ismp<frameSize; ismp++ ){ Modified: mplayerxp/libmpcodecs/ad_vorbis.c =================================================================== --- mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-13 08:37:15 UTC (rev 353) @@ -135,12 +135,12 @@ static unsigned decode(sh_audio_t *sh,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts) { - unsigned len = 0; - int samples; - float **pcm; - ogg_packet op; - priv_t *ov = sh->context; - op.b_o_s = op.e_o_s = 0; + unsigned len = 0; + int samples; + float **pcm; + ogg_packet op; + priv_t *ov = sh->context; + op.b_o_s = op.e_o_s = 0; while(len < minlen) { /* if file contains audio only steam there is no pts */ op.bytes = ds_get_packet_r(sh->ds,&op.packet,pts); @@ -153,7 +153,7 @@ int clipflag=0; int convsize=(maxlen-len)/(2*ov->vi.channels); // max size! int bout=(samples<convsize?samples:convsize); - + if(bout<=0) break; if(afmt2bps(sh->afmt)==4) { Modified: mplayerxp/libmpcodecs/dec_audio.h =================================================================== --- mplayerxp/libmpcodecs/dec_audio.h 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/dec_audio.h 2012-11-13 08:37:15 UTC (rev 353) @@ -19,8 +19,8 @@ unsigned out_samplerate, unsigned out_channels,mpaf_format_e out_format, unsigned out_minsize, unsigned out_maxsize); extern MPXP_Rc mpca_preinit_filters(sh_audio_t *sh_audio, - unsigned in_samplerate, unsigned in_channels, unsigned in_format, - unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format); + unsigned in_samplerate, unsigned in_channels, unsigned in_format, + unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format); extern MPXP_Rc mpca_reinit_filters(sh_audio_t *sh_audio, unsigned in_samplerate, unsigned in_channels, mpaf_format_e in_format, unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, Modified: mplayerxp/libmpcodecs/dec_video.c =================================================================== --- mplayerxp/libmpcodecs/dec_video.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/dec_video.c 2012-11-13 08:37:15 UTC (rev 353) @@ -292,8 +292,8 @@ if(mp_conf.sub_fps==0) mp_conf.sub_fps=sh_video->fps; MP_UNIT("find_sub"); if (pts > sub_last_pts || pts < sub_last_pts-1.0 ) { - find_sub(mp_data->subtitles,sub_uses_time?(100*pts):(pts*mp_conf.sub_fps),vo_data); // FIXME! frame counter... - sub_last_pts = pts; + find_sub(mp_data->subtitles,sub_uses_time?(100*pts):(pts*mp_conf.sub_fps),vo_data); // FIXME! frame counter... + sub_last_pts = pts; } MP_UNIT(NULL); } Modified: mplayerxp/libmpcodecs/liba52/bitstream.c =================================================================== --- mplayerxp/libmpcodecs/liba52/bitstream.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/liba52/bitstream.c 2012-11-13 08:37:15 UTC (rev 353) @@ -89,7 +89,7 @@ if (num_bits != 0) result = (result << num_bits) | (state->current_word >> (32 - num_bits)); - + state->bits_left = 32 - num_bits; return result; Modified: mplayerxp/libmpcodecs/liba52/bitstream.h =================================================================== --- mplayerxp/libmpcodecs/liba52/bitstream.h 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/liba52/bitstream.h 2012-11-13 08:37:15 UTC (rev 353) @@ -53,7 +53,7 @@ static inline uint32_t bitstream_get (a52_state_t * state, uint32_t num_bits) { uint32_t result; - + if (num_bits < state->bits_left) { result = (state->current_word << (32 - state->bits_left)) >> (32 - num_bits); state->bits_left -= num_bits; @@ -66,7 +66,7 @@ static inline int32_t bitstream_get_2 (a52_state_t * state, uint32_t num_bits) { int32_t result; - + if (num_bits < state->bits_left) { result = (((int32_t)state->current_word) << (32 - state->bits_left)) >> (32 - num_bits); state->bits_left -= num_bits; Modified: mplayerxp/libmpcodecs/liba52/crc.c =================================================================== --- mplayerxp/libmpcodecs/liba52/crc.c 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/liba52/crc.c 2012-11-13 08:37:15 UTC (rev 353) @@ -1,23 +1,23 @@ -/* +/* * crc.c * * Copyright (C) Aaron Holtzman - May 1999 * * This file is part of ac3dec, a mp_free Dolby AC-3 stream decoder. - * + * * ac3dec is mp_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, or (at your option) * any later version. - * + * * ac3dec 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 GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * */ @@ -25,7 +25,7 @@ #include <stdio.h> #include <inttypes.h> -static const uint16_t crc_lut[256] = +static const uint16_t crc_lut[256] = { 0x0000,0x8005,0x800f,0x000a,0x801b,0x001e,0x0014,0x8011, 0x8033,0x0036,0x003c,0x8039,0x0028,0x802d,0x8027,0x0022, Modified: mplayerxp/libmpcodecs/liba52/downmix_mmx.h =================================================================== --- mplayerxp/libmpcodecs/liba52/downmix_mmx.h 2012-11-13 07:51:55 UTC (rev 352) +++ mplayerxp/libmpcodecs/liba52/downmix_mmx.h 2012-11-13 08:37:15 UTC (rev 353) @@ -35,10 +35,10 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps (%0, %%"REG_S"), %%xmm0 \n\t" - "movaps 16(%0, %%"REG_S"), %%xmm1 \n\t" - "addps (%1, %%"REG_S"), %%xmm0 \n\t" - "addps 16(%1, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 16(%0, %%"REG_S"), %%xmm1 \n\t" + "addps (%1, %%"REG_S"), %%xmm0 \n\t" + "addps 16(%1, %%"REG_S"), %%xmm1 \n\t" "addps %%xmm7, %%xmm0 \n\t" "addps %%xmm7, %%xmm1 \n\t" "movaps %%xmm0, (%1, %%"REG_S") \n\t" @@ -59,13 +59,13 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq (%0, %%"REG_S"), %%mm0 \n\t" + "movq (%0, %%"REG_S"), %%mm0 \n\t" "movq 8(%0, %%"REG_S"), %%mm1 \n\t" - "movq 16(%0, %%"REG_S"), %%mm2 \n\t" + "movq 16(%0, %%"REG_S"), %%mm2 \n\t" "movq 24(%0, %%"REG_S"), %%mm3 \n\t" - "pfadd (%1, %%"REG_S"), %%mm0 \n\t" + "pfadd (%1, %%"REG_S"), %%mm0 \n\t" "pfadd 8(%1, %%"REG_S"), %%mm1 \n\t" - "pfadd 16(%1, %%"REG_S"), %%mm2 \n\t" + "pfadd 16(%1, %%"REG_S"), %%mm2 \n\t" "pfadd 24(%1, %%"REG_S"), %%mm3 \n\t" "pfadd %%mm7, %%mm0 \n\t" "pfadd %%mm7, %%mm1 \n\t" @@ -104,9 +104,9 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps (%0, %%"REG_S"), %%xmm0 \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm1 \n\t" - "addps 2048(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps (%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm1 \n\t" + "addps 2048(%0, %%"REG_S"), %%xmm0 \n\t" "addps %%xmm7, %%xmm1 \n\t" "addps %%xmm1, %%xmm0 \n\t" "movaps %%xmm0, (%0, %%"REG_S") \n\t" @@ -126,11 +126,11 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq (%0, %%"REG_S"), %%mm0 \n\t" + "movq (%0, %%"REG_S"), %%mm0 \n\t" "movq 8(%0, %%"REG_S"), %%mm1 \n\t" - "movq 1024(%0, %%"REG_S"), %%mm2 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm2 \n\t" "movq 1032(%0, %%"REG_S"), %%mm3 \n\t" - "pfadd 2048(%0, %%"REG_S"), %%mm0 \n\t" + "pfadd 2048(%0, %%"REG_S"), %%mm0 \n\t" "pfadd 2056(%0, %%"REG_S"), %%mm1 \n\t" "pfadd %%mm7, %%mm0 \n\t" "pfadd %%mm7, %%mm1 \n\t" @@ -167,10 +167,10 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps (%0, %%"REG_S"), %%xmm0 \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm1 \n\t" - "addps 2048(%0, %%"REG_S"), %%xmm0 \n\t" - "addps 3072(%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm1 \n\t" + "addps 2048(%0, %%"REG_S"), %%xmm0 \n\t" + "addps 3072(%0, %%"REG_S"), %%xmm1 \n\t" "addps %%xmm7, %%xmm0 \n\t" "addps %%xmm1, %%xmm0 \n\t" "movaps %%xmm0, (%0, %%"REG_S") \n\t" @@ -190,13 +190,13 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq (%0, %%"REG_S"), %%mm0 \n\t" + "movq (%0, %%"REG_S"), %%mm0 \n\t" "movq 8(%0, %%"REG_S"), %%mm1 \n\t" - "movq 1024(%0, %%"REG_S"), %%mm2 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm2 \n\t" "movq 1032(%0, %%"REG_S"), %%mm3 \n\t" - "pfadd 2048(%0, %%"REG_S"), %%mm0 \n\t" + "pfadd 2048(%0, %%"REG_S"), %%mm0 \n\t" "pfadd 2056(%0, %%"REG_S"), %%mm1 \n\t" - "pfadd 3072(%0, %%"REG_S"), %%mm2 \n\t" + "pfadd 3072(%0, %%"REG_S"), %%mm2 \n\t" "pfadd 3080(%0, %%"REG_S"), %%mm3 \n\t" "pfadd %%mm7, %%mm0 \n\t" "pfadd %%mm7, %%mm1 \n\t" @@ -234,12 +234,12 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps (%0, %%"REG_S"), %%xmm0 \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm1 \n\t" - "addps 2048(%0, %%"REG_S"), %%xmm0 \n\t" - "addps 3072(%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm1 \n\t" + "addps 2048(%0, %%"REG_S"), %%xmm0 \n\t" + "addps 3072(%0, %%"REG_S"), %%xmm1 \n\t" "addps %%xmm7, %%xmm0 \n\t" - "addps 4096(%0, %%"REG_S"), %%xmm1 \n\t" + "addps 4096(%0, %%"REG_S"), %%xmm1 \n\t" "addps %%xmm1, %%xmm0 \n\t" "movaps %%xmm0, (%0, %%"REG_S") \n\t" "addl $16, %%"REG_S" \n\t" @@ -258,17 +258,17 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq (%0, %%"REG_S"), %%mm0 \n\t" + "movq (%0, %%"REG_S"), %%mm0 \n\t" "movq 8(%0, %%"REG_S"), %%mm1 \n\t" - "movq 1024(%0, %%"REG_S"), %%mm2 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm2 \n\t" "movq 1032(%0, %%"REG_S"), %%mm3 \n\t" - "pfadd 2048(%0, %%"REG_S"), %%mm0 \n\t" + "pfadd 2048(%0, %%"REG_S"), %%mm0 \n\t" "pfadd 2056(%0, %%"REG_S"), %%mm1 \n\t" - "pfadd 3072(%0, %%"REG_S"), %%mm2 \n\t" + "pfadd 3072(%0, %%"REG_S"), %%mm2 \n\t" "pfadd 3080(%0, %%"REG_S"), %%mm3 \n\t" "pfadd %%mm7, %%mm0 \n\t" "pfadd %%mm7, %%mm1 \n\t" - "pfadd 4096(%0, %%"REG_S"), %%mm2 \n\t" + "pfadd 4096(%0, %%"REG_S"), %%mm2 \n\t" "pfadd 4104(%0, %%"REG_S"), %%mm3 \n\t" "pfadd %%mm2, %%mm0 \n\t" "pfadd %%mm3, %%mm1 \n\t" @@ -304,9 +304,9 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" "addps %%xmm7, %%xmm0 \n\t" //common - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm1 \n\t" "movaps 2048(%0, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm0, %%xmm1 \n\t" "addps %%xmm0, %%xmm2 \n\t" @@ -328,11 +328,11 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" "movq 1032(%0, %%"REG_S"), %%mm1 \n\t" "pfadd %%mm7, %%mm0 \n\t" //common "pfadd %%mm7, %%mm1 \n\t" //common - "movq (%0, %%"REG_S"), %%mm2 \n\t" + "movq (%0, %%"REG_S"), %%mm2 \n\t" "movq 8(%0, %%"REG_S"), %%mm3 \n\t" "movq 2048(%0, %%"REG_S"), %%mm4 \n\t" "movq 2056(%0, %%"REG_S"), %%mm5 \n\t" @@ -377,9 +377,9 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 1024(%1, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%1, %%"REG_S"), %%xmm0 \n\t" "addps %%xmm7, %%xmm0 \n\t" //common - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm1 \n\t" "movaps (%1, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm0, %%xmm1 \n\t" "addps %%xmm0, %%xmm2 \n\t" @@ -401,11 +401,11 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq 1024(%1, %%"REG_S"), %%mm0 \n\t" + "movq 1024(%1, %%"REG_S"), %%mm0 \n\t" "movq 1032(%1, %%"REG_S"), %%mm1 \n\t" "pfadd %%mm7, %%mm0 \n\t" //common "pfadd %%mm7, %%mm1 \n\t" //common - "movq (%0, %%"REG_S"), %%mm2 \n\t" + "movq (%0, %%"REG_S"), %%mm2 \n\t" "movq 8(%0, %%"REG_S"), %%mm3 \n\t" "movq (%1, %%"REG_S"), %%mm4 \n\t" "movq 8(%1, %%"REG_S"), %%mm5 \n\t" @@ -451,7 +451,7 @@ ".balign 16\n\t" "1: \n\t" "movaps 2048(%0, %%"REG_S"), %%xmm0 \n\t" // surround - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm1 \n\t" "movaps 1024(%0, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm7, %%xmm1 \n\t" "addps %%xmm7, %%xmm2 \n\t" @@ -477,7 +477,7 @@ "1: \n\t" "movq 2048(%0, %%"REG_S"), %%mm0 \n\t" // surround "movq 2056(%0, %%"REG_S"), %%mm1 \n\t" // surround - "movq (%0, %%"REG_S"), %%mm2 \n\t" + "movq (%0, %%"REG_S"), %%mm2 \n\t" "movq 8(%0, %%"REG_S"), %%mm3 \n\t" "movq 1024(%0, %%"REG_S"), %%mm4 \n\t" "movq 1032(%0, %%"REG_S"), %%mm5 \n\t" @@ -526,10 +526,10 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" - "addps 3072(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" + "addps 3072(%0, %%"REG_S"), %%xmm0 \n\t" "addps %%xmm7, %%xmm0 \n\t" // common - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm1 \n\t" "movaps 2048(%0, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm0, %%xmm1 \n\t" "addps %%xmm0, %%xmm2 \n\t" @@ -551,13 +551,13 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" "movq 1032(%0, %%"REG_S"), %%mm1 \n\t" - "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" + "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" "pfadd 3080(%0, %%"REG_S"), %%mm1 \n\t" "pfadd %%mm7, %%mm0 \n\t" // common "pfadd %%mm7, %%mm1 \n\t" // common - "movq (%0, %%"REG_S"), %%mm2 \n\t" + "movq (%0, %%"REG_S"), %%mm2 \n\t" "movq 8(%0, %%"REG_S"), %%mm3 \n\t" "movq 2048(%0, %%"REG_S"), %%mm4 \n\t" "movq 2056(%0, %%"REG_S"), %%mm5 \n\t" @@ -602,10 +602,10 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" "movaps 3072(%0, %%"REG_S"), %%xmm3 \n\t" // surround "addps %%xmm7, %%xmm0 \n\t" // common - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm1 \n\t" "movaps 2048(%0, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm0, %%xmm1 \n\t" "addps %%xmm0, %%xmm2 \n\t" @@ -629,13 +629,13 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" "movq 1032(%0, %%"REG_S"), %%mm1 \n\t" - "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" + "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" "pfadd 3080(%0, %%"REG_S"), %%mm1 \n\t" "pfadd %%mm7, %%mm0 \n\t" // common "pfadd %%mm7, %%mm1 \n\t" // common - "movq (%0, %%"REG_S"), %%mm2 \n\t" + "movq (%0, %%"REG_S"), %%mm2 \n\t" "movq 8(%0, %%"REG_S"), %%mm3 \n\t" "movq 2048(%0, %%"REG_S"), %%mm4 \n\t" "movq 2056(%0, %%"REG_S"), %%mm5 \n\t" @@ -681,9 +681,9 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 2048(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 2048(%0, %%"REG_S"), %%xmm0 \n\t" "addps 3072(%0, %%"REG_S"), %%xmm0 \n\t" // surround - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" + "movaps (%0, %%"REG_S"), %%xmm1 \n\t" "movaps 1024(%0, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm7, %%xmm1 \n\t" "addps %%xmm7, %%xmm2 \n\t" @@ -707,11 +707,11 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq 2048(%0, %%"REG_S"), %%mm0 \n\t" + "movq 2048(%0, %%"REG_S"), %%mm0 \n\t" "movq 2056(%0, %%"REG_S"), %%mm1 \n\t" "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" // surround "pfadd 3080(%0, %%"REG_S"), %%mm1 \n\t" // surround - "movq (%0, %%"REG_S"), %%mm2 \n\t" + "movq (%0, %%"REG_S"), %%mm2 \n\t" "movq 8(%0, %%"REG_S"), %%mm3 \n\t" "movq 1024(%0, %%"REG_S"), %%mm4 \n\t" "movq 1032(%0, %%"REG_S"), %%mm5 \n\t" @@ -760,13 +760,13 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" "addps %%xmm7, %%xmm0 \n\t" // common "movaps %%xmm0, %%xmm1 \n\t" // common - "addps (%0, %%"REG_S"), %%xmm0 \n\t" - "addps 2048(%0, %%"REG_S"), %%xmm1 \n\t" - "addps 3072(%0, %%"REG_S"), %%xmm0 \n\t" - "addps 4096(%0, %%"REG_S"), %%xmm1 \n\t" + "addps (%0, %%"REG_S"), %%xmm0 \n\t" + "addps 2048(%0, %%"REG_S"), %%xmm1 \n\t" + "addps 3072(%0, %%"REG_S"), %%xmm0 \n\t" + "addps 4096(%0, %%"REG_S"), %%xmm1 \n\t" "movaps %%xmm0, (%0, %%"REG_S") \n\t" "movaps %%xmm1, 1024(%0, %%"REG_S") \n\t" "addl $16, %%"REG_S" \n\t" @@ -785,19 +785,19 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" + "movq 1024(%0, %%"REG_S"), %%mm0 \n\t" "movq 1032(%0, %%"REG_S"), %%mm1 \n\t" "pfadd %%mm7, %%mm0 \n\t" // common "pfadd %%mm7, %%mm1 \n\t" // common "movq %%mm0, %%mm2 \n\t" // common "movq %%mm1, %%mm3 \n\t" // common - "pfadd (%0, %%"REG_S"), %%mm0 \n\t" + "pfadd (%0, %%"REG_S"), %%mm0 \n\t" "pfadd 8(%0, %%"REG_S"), %%mm1 \n\t" - "pfadd 2048(%0, %%"REG_S"), %%mm2 \n\t" + "pfadd 2048(%0, %%"REG_S"), %%mm2 \n\t" "pfadd 2056(%0, %%"REG_S"), %%mm3 \n\t" - "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" + "pfadd 3072(%0, %%"REG_S"), %%mm0 \n\t" "pfadd 3080(%0, %%"REG_S"), %%mm1 \n\t" - "pfadd 4096(%0, %%"REG_S"), %%mm2 \n\t" + "pfadd 4096(%0, %%"REG_S"), %%mm2 \n\t" "pfadd 4104(%0, %%"REG_S"), %%mm3 \n\t" "movq %%mm0, (%0, %%"REG_S") \n\t" "movq %%mm1, 8(%0, %%"REG_S") \n\t" @@ -836,16 +836,16 @@ "movl $-1024, %%"REG_S" \n\t" ".balign 16\n\t" "1: \n\t" - "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" - "movaps 3072(%0, %%"REG_S"), %%xmm2 \n\t" + "movaps 1024(%0, %%"REG_S"), %%xmm0 \n\t" + "movaps 3072(%0, %%"REG_S"), %%xmm2 \n\t" "addps %%xmm7, %%xmm0 \n\t" // common - "addps 4096(%0, %%"REG_S"), %%xmm2 \n\t" // surround - "movaps (%0, %%"REG_S"), %%xmm1 \n\t" - "movaps 2048(%0,... [truncated message content] |
From: <nic...@us...> - 2012-11-13 11:51:44
|
Revision: 355 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=355&view=rev Author: nickols_k Date: 2012-11-13 11:51:33 +0000 (Tue, 13 Nov 2012) Log Message: ----------- size optimization Modified Paths: -------------- mplayerxp/cfg-mplayerxp.h mplayerxp/input2/input.c mplayerxp/libmpconf/cfgparser.c mplayerxp/libmpconf/cfgparser.h mplayerxp/libmpconf/m_option.c mplayerxp/libmpconf/m_option.h mplayerxp/mplayerxp.c Modified: mplayerxp/cfg-mplayerxp.h =================================================================== --- mplayerxp/cfg-mplayerxp.h 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/cfg-mplayerxp.h 2012-11-13 11:51:33 UTC (rev 355) @@ -23,19 +23,6 @@ extern af_cfg_t af_cfg; // Configuration for audio filters extern vf_cfg_t vf_cfg; // Configuration for audio filters -/* - * CONF_TYPE_FUNC_FULL : - * allows own implemtations for passing the params - * - * the function receives parameter name and argument (if it does not start with - ) - * useful with a conf.name like 'aa*' to parse several parameters to a function - * return 0 =ok, but we didn't need the param (could be the filename) - * return 1 =ok, we accepted the param - * negative values: see cfgparser.h, ERR_XXX - * - * by Folke - */ - static const config_t xpcore_config[]={ {"xp", &mp_conf.xp, CONF_TYPE_INT, CONF_RANGE, 0, UINT_MAX, "specifies number cpus to use for playback"}, {"dump", &mp_conf.stream_dump, CONF_TYPE_STRING, 0, 0, 0, "specifies dump type and name for the dump of stream"}, @@ -256,7 +243,7 @@ static const config_t mplayer_opts[]={ /* name, pointer, type, flags, min, max, help */ - {"include", cfg_include, CONF_TYPE_FUNC_PARAM, CONF_NOSAVE, 0, 0, ""}, /* this don't need anymore to be the first!!! */ + {"include", NULL, CONF_TYPE_INCLUDE, CONF_NOSAVE, 0, 0, ""}, /* this don't need anymore to be the first!!! */ //---------------------- libao/libvo/mplayer options ------------------------ {"vo", &mp_conf.video_driver, CONF_TYPE_STRING, 0, 0, 0, "select video output driver and optinaly device"}, @@ -268,7 +255,7 @@ {"ac", &mp_conf.audio_codec, CONF_TYPE_STRING, 0, 0, 0, "forces usage of specified audio-decoder"}, {"vc", &mp_conf.video_codec, CONF_TYPE_STRING, 0, 0, 0, "forces usage of specified video-decoder"}, /*UD*/ {"verbose", &mp_conf.verbose, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 0, 100, "verbose output"}, - {"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, "verbose output (more -v means more verbosity)"}, + {"v", &mp_conf.verbose, CONF_TYPE_INC, 0, 0, 0, "verbose output (more -v means more verbosity)"}, {"msgfilter", &mp_conf.msg_filter, CONF_TYPE_INT, CONF_RANGE, 0, 0xFFFFFFFF, "specifies filter for verbosed messages"}, {"core", &xpcore_config, CONF_TYPE_SUBCONFIG, 0, 0, 0, "XP-core related options" }, Modified: mplayerxp/input2/input.c =================================================================== --- mplayerxp/input2/input.c 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/input2/input.c 2012-11-13 11:51:33 UTC (rev 355) @@ -116,8 +116,9 @@ unsigned ar_delay,ar_rate; const char* js_dev; const char* in_file; + int print_key_list,print_cmd_list; }input_conf_t; -static input_conf_t libinput_conf = { 1, 1, 1, 100, 8, "/dev/input/js0", NULL }; +static input_conf_t libinput_conf = { 1, 1, 1, 100, 8, "/dev/input/js0", NULL, 0, 0 }; /// This array defines all know commands. /// The first field is an id used to recognize the command without too many strcmp @@ -420,8 +421,8 @@ void (*mp_input_key_cb)(int code) = NULL; static mp_cmd_t* mp_cmd_clone(mp_cmd_t* cmd); // This create a copy of a command (used by the auto repeat stuff) -static int mp_input_print_key_list(any_t*,const config_t* cfg); -static int mp_input_print_cmd_list(any_t*,const config_t* cfg); +static int mp_input_print_key_list(any_t*); +static int mp_input_print_cmd_list(any_t*); static const config_t joystick_conf[] = { { "on", &libinput_conf.use_joystick, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, "enables using of joystick" }, @@ -436,8 +437,8 @@ { "conf", &config_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, "specifies alternative input.conf" }, { "ar-delay", &libinput_conf.ar_delay, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, "autorepeate a key delay in milliseconds (0 to disable)" }, { "ar-rate", &libinput_conf.ar_rate, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, "number of key-presses per second generating on autorepeat" }, - { "keylist", mp_input_print_key_list, CONF_TYPE_FUNC, CONF_GLOBAL, 0, 0, "prints all keys that can be bound to commands" }, - { "cmdlist", mp_input_print_cmd_list, CONF_TYPE_FUNC, CONF_GLOBAL, 0, 0, "prints all commands that can be bound to keys" }, + { "keylist", &libinput_conf.print_key_list, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, "prints all keys that can be bound to commands" }, + { "cmdlist", &libinput_conf.print_cmd_list, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, "prints all commands that can be bound to keys" }, { "file", &libinput_conf.in_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, "specifes file with commands (useful for FIFO)" }, #ifdef HAVE_LIRC { "lircconf", &lirc_configfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, "specifies a config.file for LIRC"}, @@ -1346,6 +1347,8 @@ priv->ar_state=-1; priv->in_file_fd=-1; mp_input_init(priv); + if(libinput_conf.print_key_list) mp_input_print_key_list(priv); + if(libinput_conf.print_cmd_list) mp_input_print_cmd_list(priv); return priv; } @@ -1365,8 +1368,7 @@ for(i= 0; key_names[i].name != NULL ; i++) MSG_INFO("%s\n",key_names[i].name); } -static int mp_input_print_key_list(any_t*handle,const config_t* cfg) { - UNUSED(cfg); +static int mp_input_print_key_list(any_t*handle) { mp_input_print_keys(handle); exit(0); } @@ -1412,8 +1414,7 @@ } } -static int mp_input_print_cmd_list(any_t*handle,const config_t* cfg) { - UNUSED(cfg); +static int mp_input_print_cmd_list(any_t*handle) { mp_input_print_cmds(handle); exit(0); } Modified: mplayerxp/libmpconf/cfgparser.c =================================================================== --- mplayerxp/libmpconf/cfgparser.c 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/libmpconf/cfgparser.c 2012-11-13 11:51:33 UTC (rev 355) @@ -16,6 +16,7 @@ #include <string.h> #include <errno.h> #include "mp_config.h" +#include "osdep/mplib.h" #define COMMAND_LINE 0 #define CONFIG_FILE 1 @@ -90,6 +91,7 @@ switch(conf->type) { case CONF_TYPE_FLAG : + case CONF_TYPE_INC : case CONF_TYPE_INT : save[sl].param.as_int = *((int*)conf->p); break; @@ -99,13 +101,9 @@ case CONF_TYPE_STRING : save[sl].param.as_pointer = *((char**)conf->p); break; - case CONF_TYPE_FUNC_FULL : - if(strcasecmp(conf->name,opt) != 0) save->opt_name = mp_strdup(opt); - case CONF_TYPE_FUNC_PARAM : + case CONF_TYPE_INCLUDE : if(param) save->param.as_pointer = mp_strdup(param); - case CONF_TYPE_FUNC : - break; default : MSG_ERR("Should never append in m_config_save_option : conf->type=%d\n",conf->type); } @@ -129,7 +127,8 @@ MSG_DBG2("Reverting option %s\n",arg); switch(save->opt->type) { - case CONF_TYPE_FLAG : + case CONF_TYPE_FLAG: + case CONF_TYPE_INC : case CONF_TYPE_INT : *((int*)save->opt->p) = save->param.as_int; break; @@ -139,9 +138,7 @@ case CONF_TYPE_STRING : *((char**)save->opt->p) = save->param.as_pointer; break; - case CONF_TYPE_FUNC_PARAM : - case CONF_TYPE_FUNC_FULL : - case CONF_TYPE_FUNC : + case CONF_TYPE_INCLUDE : if(config->cs_level > 0) { for(i = config->cs_level - 1 ; i >= 0 ; i--){ if(config->config_stack[i] == NULL) continue; @@ -159,11 +156,7 @@ if(i < 0) break; arg = iter->opt_name ? iter->opt_name : iter->opt->name; switch(iter->opt->type) { - case CONF_TYPE_FUNC : - if ((((cfg_func_t) iter->opt->p)(iter->opt)) < 0) - return -1; - break; - case CONF_TYPE_FUNC_PARAM : + case CONF_TYPE_INCLUDE : if (iter->param.as_pointer == NULL) { MSG_ERR("We lost param for option %s?\n",iter->opt->name); return -1; @@ -171,16 +164,6 @@ if ((((cfg_func_param_t) iter->opt->p)(iter->opt, (char*)iter->param.as_pointer)) < 0) return -1; break; - case CONF_TYPE_FUNC_FULL : - if (iter->param.as_pointer != NULL && ((char*)iter->param.as_pointer)[0]=='-'){ - if( ((cfg_func_arg_param_t) iter->opt->p)(iter->opt, arg, NULL) < 0) - return -1; - }else { - if (((cfg_func_arg_param_t) save->opt->p)(iter->opt, arg, (char*)iter->param.as_pointer) < 0) - return -1; - - } - break; } break; default : @@ -330,6 +313,12 @@ return 0; } +static MPXP_Rc cfg_include(m_config_t* conf,const char *filename){ + return m_config_parse_config_file(conf, filename); +} + +static int cfg_inc_int(int value){ return ++value; } + static int config_read_option(m_config_t *config,const config_t** conf_list,const char *opt,const char *param) { int i=0,nconf = 0; @@ -344,7 +333,6 @@ assert(conf_list != NULL); assert(opt != NULL); #endif - MSG_DBG3( "read_option: conf=%p opt='%s' param='%s'\n", conf, opt, param); for(nconf = 0 ; conf_list[nconf] != NULL; nconf++) { @@ -507,33 +495,19 @@ MSG_DBG3("assigning %s=%s as string value\n",conf[i].name,param); ret = 1; break; - case CONF_TYPE_FUNC_PARAM: + case CONF_TYPE_INC: + *((int *) conf[i].p) = cfg_inc_int(*((int *) conf[i].p)); + ret = 1; + break; + case CONF_TYPE_INCLUDE: if (param == NULL) goto err_missing_param; - if ((((cfg_func_param_t) conf[i].p)(conf + i, param)) < 0) { + if (cfg_include(config, param) < 0) { ret = ERR_FUNC_ERR; goto out; } ret = 1; break; - case CONF_TYPE_FUNC_FULL: - if (param!=NULL && param[0]=='-'){ - ret=((cfg_func_arg_param_t) conf[i].p)(conf + i, opt, NULL); - if (ret>=0) ret=0; - /* if we return >=0: param is processed again (if there is any) */ - }else{ - ret=((cfg_func_arg_param_t) conf[i].p)(conf + i, opt, param); - /* if we return 0: need no param, precess it again */ - /* if we return 1: accepted param */ - } - break; - case CONF_TYPE_FUNC: - if ((((cfg_func_t) conf[i].p)(conf + i)) < 0) { - ret = ERR_FUNC_ERR; - goto out; - } - ret = 0; - break; #if 0 // we have handled it in other function case CONF_TYPE_SUBCONFIG: @@ -696,7 +670,7 @@ return config_read_option(config,config->opt_list,opt,param); } -MPXP_Rc m_config_parse_config_file(m_config_t *config, char *conffile) +MPXP_Rc m_config_parse_config_file(m_config_t *config,const char *conffile) { #define PRINT_LINENUM MSG_ERR("%s(%d): ", conffile, line_num) #define MAX_LINE_LEN 1000 Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/libmpconf/cfgparser.h 2012-11-13 11:51:33 UTC (rev 355) @@ -12,10 +12,9 @@ CONF_TYPE_FLOAT =2, CONF_TYPE_STRING =3, CONF_TYPE_PRINT =4, - CONF_TYPE_FUNC =5, - CONF_TYPE_FUNC_PARAM=6, - CONF_TYPE_FUNC_FULL =7, - CONF_TYPE_SUBCONFIG =8 + CONF_TYPE_INC =5, + CONF_TYPE_INCLUDE =6, + CONF_TYPE_SUBCONFIG =7 }; enum { ERR_NOT_AN_OPTION =-1, @@ -82,7 +81,7 @@ * 0 if can't open configfile * 1 on success */ -MPXP_Rc m_config_parse_config_file(m_config_t *config, char *conffile); +MPXP_Rc m_config_parse_config_file(m_config_t *config,const char *conffile); /* parse_command_line returns: * -1 on error (invalid option...) Modified: mplayerxp/libmpconf/m_option.c =================================================================== --- mplayerxp/libmpconf/m_option.c 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/libmpconf/m_option.c 2012-11-13 11:51:33 UTC (rev 355) @@ -691,163 +691,11 @@ #undef VAL #define VAL(x) (*(m_func_save_t**)(x)) -static void free_func_pf(any_t* src) { - m_func_save_t *s,*n; - - if(!src) return; - - s = VAL(src); - - while(s) { - n = s->next; - mp_free(s->name); - if(s->param) mp_free(s->param); - mp_free(s); - s = n; - } - VAL(src) = NULL; -} - -// Parser for func_param and func_full -static int parse_func_pf(const m_option_t* opt,const char *name, char *param, any_t* dst, int src) { - m_func_save_t *s,*p; - - if(!dst) - return 1; - - s = mp_calloc(1,sizeof(m_func_save_t)); - s->name = mp_strdup(name); - s->param = param ? mp_strdup(param) : NULL; - - p = VAL(dst); - if(p) { - for( ; p->next != NULL ; p = p->next) - /**/; - p->next = s; - } else - VAL(dst) = s; - - return 1; -} - -static void copy_func_pf(const m_option_t* opt,any_t* dst, any_t* src) { - m_func_save_t *d = NULL, *s,* last = NULL; - - if(!(dst && src)) return; - s = VAL(src); - - if(VAL(dst)) - free_func_pf(dst); - - while(s) { - d = mp_calloc(1,sizeof(m_func_save_t)); - d->name = mp_strdup(s->name); - d->param = s->param ? mp_strdup(s->param) : NULL; - if(last) - last->next = d; - else - VAL(dst) = d; - last = d; - s = s->next; - } - - -} - -/////////////////// Func_param - -static void set_func_param(const m_option_t* opt, any_t* dst, any_t* src) { - m_func_save_t* s; - - if(!src) return; - s = VAL(src); - - if(!s) return; - - // Revert if needed - if(opt->priv) ((m_opt_default_func_t)opt->priv)(opt,opt->name); - for( ; s != NULL ; s = s->next) - ((m_opt_func_param_t) opt->p)(opt,s->param); -} - -const m_option_type_t m_option_type_func_param = { - "Func param", - "", - sizeof(m_func_save_t*), - M_OPT_TYPE_INDIRECT, - parse_func_pf, - NULL, - NULL, // Nothing to do on save - set_func_param, - copy_func_pf, - free_func_pf -}; - -/////////////////// Func_full - -static void set_func_full(const m_option_t* opt, any_t* dst, any_t* src) { - m_func_save_t* s; - - if(!src) return; - - for(s = VAL(src) ; s ; s = s->next) { - // Revert if needed - if(opt->priv) ((m_opt_default_func_t)opt->priv)(opt,s->name); - ((m_opt_func_full_t) opt->p)(opt,s->name,s->param); - } -} - -const m_option_type_t m_option_type_func_full = { - "Func full", - "", - sizeof(m_func_save_t*), - M_OPT_TYPE_ALLOW_WILDCARD|M_OPT_TYPE_INDIRECT, - parse_func_pf, - NULL, - NULL, // Nothing to do on save - set_func_full, - copy_func_pf, - free_func_pf -}; - -/////////////// Func - -#undef VAL -#define VAL(x) (*(int*)(x)) - -static int parse_func(const m_option_t* opt,const char *name, char *param, any_t* dst, int src) { - if(dst) - VAL(dst) += 1; - return 0; -} - -static void set_func(const m_option_t* opt,any_t* dst, any_t* src) { - int i; - if(opt->priv) ((m_opt_default_func_t)opt->priv)(opt,opt->name); - for(i = 0 ; i < VAL(src) ; i++) - ((m_opt_func_t) opt->p)(opt); -} - -const m_option_type_t m_option_type_func = { - "Func", - "", - sizeof(int), - M_OPT_TYPE_INDIRECT, - parse_func, - NULL, - NULL, // Nothing to do on save - set_func, - NULL, - NULL -}; - /////////////////// Print static int parse_print(const m_option_t* opt,const char *name, char *param, any_t* dst, int src) { if(opt->type == MCONF_TYPE_PRINT_INDIRECT) MSG_INFO("%s", *(char **) opt->p); - else if(opt->type == MCONF_TYPE_PRINT_FUNC) - return ((m_opt_func_full_t) opt->p)(opt,name,param); else MSG_INFO("%s", (char *) opt->p); Modified: mplayerxp/libmpconf/m_option.h =================================================================== --- mplayerxp/libmpconf/m_option.h 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/libmpconf/m_option.h 2012-11-13 11:51:33 UTC (rev 355) @@ -38,23 +38,9 @@ extern const m_option_type_t m_option_type_imgfmt; extern const m_option_type_t m_option_type_afmt; -// Func-based types -extern const m_option_type_t m_option_type_func_full; -extern const m_option_type_t m_option_type_func_param; -extern const m_option_type_t m_option_type_func; - /// Callback used to reset func options. typedef void (*m_opt_default_func_t)(const m_option_t *, const char*); -/// Callback used by m_option_type_func_full options. -typedef int (*m_opt_func_full_t)(const m_option_t *, const char *, char *); - -/// Callback used by m_option_type_func_param options. -typedef int (*m_opt_func_param_t)(const m_option_t *, const char *); - -/// Callback used by m_option_type_func options. -typedef int (*m_opt_func_t)(const m_option_t *); - enum { END_AT_NONE=0, END_AT_TIME=1, @@ -136,10 +122,7 @@ #define MCONF_TYPE_FLOAT (&m_option_type_float) #define MCONF_TYPE_DOUBLE (&m_option_type_double) #define MCONF_TYPE_STRING (&m_option_type_string) -#define MCONF_TYPE_FUNC (&m_option_type_func) -#define MCONF_TYPE_FUNC_PARAM (&m_option_type_func_param) #define MCONF_TYPE_PRINT (&m_option_type_print) -#define MCONF_TYPE_FUNC_FULL (&m_option_type_func_full) #define MCONF_TYPE_SUBCONFIG (&m_option_type_subconfig) #define MCONF_TYPE_POSITION (&m_option_type_position) #define MCONF_TYPE_IMGFMT (&m_option_type_imgfmt) Modified: mplayerxp/mplayerxp.c =================================================================== --- mplayerxp/mplayerxp.c 2012-11-13 10:42:13 UTC (rev 354) +++ mplayerxp/mplayerxp.c 2012-11-13 11:51:33 UTC (rev 355) @@ -154,12 +154,6 @@ /************************************************************************** Config file **************************************************************************/ -static int cfg_inc_verbose(struct config *conf){ UNUSED(conf); ++mp_conf.verbose; return 0;} - -static MPXP_Rc cfg_include(struct config *conf, char *filename){ - UNUSED(conf); - return m_config_parse_config_file(mp_data->mconfig, filename); -} #include "cfg-mplayerxp.h" /**************************************************************************/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-11-13 17:34:58
|
Revision: 358 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=358&view=rev Author: nickols_k Date: 2012-11-13 17:34:45 +0000 (Tue, 13 Nov 2012) Log Message: ----------- full preview of new technology which for native versions but not for Win32Loader Modified Paths: -------------- mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_a52.c mplayerxp/libmpcodecs/ad_acm.c mplayerxp/libmpcodecs/ad_dca.c mplayerxp/libmpcodecs/ad_dmo.c mplayerxp/libmpcodecs/ad_dshow.c mplayerxp/libmpcodecs/ad_dvdpcm.c mplayerxp/libmpcodecs/ad_faad.c mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/ad_hwac3.c mplayerxp/libmpcodecs/ad_internal.h mplayerxp/libmpcodecs/ad_libdv.c mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/ad_null.c mplayerxp/libmpcodecs/ad_pcm.c mplayerxp/libmpcodecs/ad_qtaudio.c mplayerxp/libmpcodecs/ad_real.c mplayerxp/libmpcodecs/ad_twin.c mplayerxp/libmpcodecs/ad_vorbis.c mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_dmo.c mplayerxp/libmpcodecs/vd_dshow.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpcodecs/vd_mpegpes.c mplayerxp/libmpcodecs/vd_null.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_qtvideo.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_vfw.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/pvector/pvector_f32_x86.h Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad.h 2012-11-13 17:34:45 UTC (rev 358) @@ -6,6 +6,7 @@ #include "libmpconf/cfgparser.h" #include "xmpcore/xmp_enums.h" +#include "libao2/afmt.h" typedef struct ad_info_s { @@ -24,13 +25,7 @@ Audio_MaxOutSample =16, }; -// Outfmt flags: typedef enum { - AudioFlag_Flip =0x00000001, - AudioFlag_YUVHack =0x00000002 -}audio_flags_e; - -typedef enum { ACodecStatus_Working =3, ACodecStatus_Problems =2, ACodecStatus_Untested =1, @@ -39,11 +34,10 @@ typedef struct audio_probe_s { const char* driver; - uint32_t wtag; const char* codec_dll; + uint32_t wtag; acodec_status_e status; - uint16_t sample_fmt[Audio_MaxOutSample]; - audio_flags_e flags[Audio_MaxOutSample]; + unsigned sample_fmt[Audio_MaxOutSample]; }audio_probe_t; /* interface of video decoder drivers */ @@ -51,7 +45,7 @@ { const ad_info_t* info; const config_t* options;/**< Optional: MPlayerXP's option related */ - audio_probe_t (* __FASTCALL__ probe)(uint32_t wtag); + const audio_probe_t*(* __FASTCALL__ probe)(sh_audio_t *,uint32_t wtag); MPXP_Rc (* __FASTCALL__ preinit)(sh_audio_t *); MPXP_Rc (* __FASTCALL__ init)(sh_audio_t *sh); void (* __FASTCALL__ uninit)(sh_audio_t *sh); Modified: mplayerxp/libmpcodecs/ad_a52.c =================================================================== --- mplayerxp/libmpcodecs/ad_a52.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_a52.c 2012-11-13 17:34:45 UTC (rev 358) @@ -46,8 +46,24 @@ LIBAD_EXTERN(a52) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "liba52", "liba52", 0x2000, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "liba52", "liba52", 0x20736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "liba52", "liba52", FOURCC_TAG('a','c','-','3'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "liba52", "liba52", FOURCC_TAG('A','C','-','3'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "liba52", "liba52", FOURCC_TAG('d','n','e','t'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "liba52", "liba52", FOURCC_TAG('s','a','c','3'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + int a52_fillbuff(sh_audio_t *sh_audio,float *pts){ int length=0; int flags=0; Modified: mplayerxp/libmpcodecs/ad_acm.c =================================================================== --- mplayerxp/libmpcodecs/ad_acm.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_acm.c 2012-11-13 17:34:45 UTC (rev 358) @@ -31,9 +31,8 @@ HACMSTREAM srcstream; // handle }priv_t; -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } - static int init_acm_audio_codec(sh_audio_t *sh_audio){ HRESULT ret; WAVEFORMATEX *in_fmt=sh_audio->wf; Modified: mplayerxp/libmpcodecs/ad_dca.c =================================================================== --- mplayerxp/libmpcodecs/ad_dca.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_dca.c 2012-11-13 17:34:45 UTC (rev 358) @@ -45,8 +45,27 @@ LIBAD_EXTERN(dca) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "libdca", "libdca", 0x86, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", 0x2001, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('d','t','s',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('D','T','S',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('d','t','s','b'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('d','t','s','c'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('d','t','s','e'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('d','t','s','h'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "libdca", "libdca", FOURCC_TAG('d','t','s','l'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + int dca_fillbuff(sh_audio_t *sh_audio,float *pts){ int length=0,flen=0; int flags=0; Modified: mplayerxp/libmpcodecs/ad_dmo.c =================================================================== --- mplayerxp/libmpcodecs/ad_dmo.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_dmo.c 2012-11-13 17:34:45 UTC (rev 358) @@ -32,7 +32,7 @@ DMO_AudioDecoder* ds_adec; }priv_t; -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } static MPXP_Rc init(sh_audio_t *sh) { Modified: mplayerxp/libmpcodecs/ad_dshow.c =================================================================== --- mplayerxp/libmpcodecs/ad_dshow.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_dshow.c 2012-11-13 17:34:45 UTC (rev 358) @@ -27,7 +27,7 @@ DS_AudioDecoder* ds_adec; }priv_t; -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } MPXP_Rc init(sh_audio_t *sh) { Modified: mplayerxp/libmpcodecs/ad_dvdpcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_dvdpcm.c 2012-11-13 17:34:45 UTC (rev 358) @@ -18,8 +18,19 @@ LIBAD_EXTERN(dvdpcm) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "dvdpcm", "dvdpcm", 0x10001, ACodecStatus_Working, {AFMT_S24_LE, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + MPXP_Rc init(sh_audio_t *sh) { /* DVD PCM Audio:*/ Modified: mplayerxp/libmpcodecs/ad_faad.c =================================================================== --- mplayerxp/libmpcodecs/ad_faad.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_faad.c 2012-11-13 17:34:45 UTC (rev 358) @@ -40,8 +40,31 @@ float pts; }priv_t; -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "faad", "libfaad", 0xFF, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", 0x4143, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", 0x706D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", 0xA106, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", 0xAAC0, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('A','A','C',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('A','A','C','P'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('M','P','4','A'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('M','P','4','L'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('M','P','4','A'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('R','A','A','C'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('R','A','A','P'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad", FOURCC_TAG('V','L','B',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + typedef any_t*NeAACDecHandle; typedef struct NeAACDecConfiguration { unsigned char defObjectType; Modified: mplayerxp/libmpcodecs/ad_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-13 17:34:45 UTC (rev 358) @@ -21,13 +21,12 @@ typedef struct priv_s { AVCodecContext *lavc_ctx; + audio_probe_t* probe; }priv_t; -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } - -struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t* sh) { +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { unsigned i; - struct codecs_st* acodec = NULL; + audio_probe_t* acodec = NULL; const char *what="AVCodecID"; priv_t* priv=sh->context; enum AVCodecID id = ff_codec_get_id(ff_codec_wav_tags,sh->wtag); @@ -36,7 +35,7 @@ MSG_ERR("Cannot find %s for for '0x%X' tag! Try force -ac option\n" ,what ,sh->wtag); - return 0; + return NULL; } if(!priv){ priv=mp_mallocz(sizeof(priv_t)); @@ -47,18 +46,33 @@ AVCodec *codec=avcodec_find_decoder(id); if(!codec) { what="AVCodec"; goto prn_err; } - acodec=mp_mallocz(sizeof(struct codecs_st)); - strcpy(acodec->dll_name,avcodec_get_name(id)); - strcpy(acodec->driver_name,"ffmpeg"); - strcpy(acodec->codec_name,acodec->dll_name); + acodec=mp_mallocz(sizeof(audio_probe_t)); + acodec->codec_dll=mp_strdup(avcodec_get_name(id)); + acodec->driver="ffmpeg"; + acodec->wtag=wtag; if(codec->sample_fmts) - for(i=0;i<CODECS_MAX_OUTFMT;i++) { + for(i=0;i<Audio_MaxOutSample;i++) { if(codec->sample_fmts[i]==-1) break; - acodec->outfmt[i]=ff_codec_get_tag(ff_codec_wav_tags,codec->sample_fmts[i]); + acodec->sample_fmt[i]=ff_codec_get_tag(ff_codec_wav_tags,codec->sample_fmts[i]); } + priv->probe=acodec; return acodec; } +struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t* sh) { + unsigned i; + audio_probe_t* aprobe=probe(sh,sh->wtag); + struct codecs_st* acodec = NULL; + if(aprobe) { + acodec=mp_mallocz(sizeof(struct codecs_st)); + strcpy(acodec->dll_name,aprobe->codec_dll); + strcpy(acodec->driver_name,aprobe->driver); + strcpy(acodec->codec_name,acodec->dll_name); + memcpy(acodec->outfmt,aprobe->sample_fmt,sizeof(aprobe->sample_fmt)); + } + return acodec; +} + #ifndef FF_INPUT_BUFFER_PADDING_SIZE #define FF_INPUT_BUFFER_PADDING_SIZE 8 #endif Modified: mplayerxp/libmpcodecs/ad_hwac3.c =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_hwac3.c 2012-11-13 17:34:45 UTC (rev 358) @@ -11,6 +11,7 @@ #include "help_mp.h" #include "codecs_ld.h" #include "osdep/cpudetect.h" +#include "osdep/bswap.h" #include "libao2/afmt.h" @@ -159,8 +160,24 @@ static a52_state_t * (*a52_init_ptr) (uint32_t mm_accel); #define a52_init(a) (*a52_init_ptr)(a) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "hwac3", "hwac3", 0x2000, ACodecStatus_Working, {AFMT_AC3} }, + { "hwac3", "hwac3", 0x2001, ACodecStatus_Working, {AFMT_AC3} }, + { "hwac3", "hwac3", FOURCC_TAG('A','C','_','3'), ACodecStatus_Working, {AFMT_AC3} }, + { "hwac3", "hwac3", FOURCC_TAG('D','N','E','T'), ACodecStatus_Working, {AFMT_AC3} }, + { "hwac3", "hwac3", FOURCC_TAG('S','A','C','3'), ACodecStatus_Working, {AFMT_AC3} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + + MPXP_Rc preinit(sh_audio_t *sh) { /* Dolby AC3 audio: */ Modified: mplayerxp/libmpcodecs/ad_internal.h =================================================================== --- mplayerxp/libmpcodecs/ad_internal.h 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-11-13 17:34:45 UTC (rev 358) @@ -12,7 +12,7 @@ #include "ad_msg.h" -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag); +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag); static MPXP_Rc __FASTCALL__ init(sh_audio_t *sh); static MPXP_Rc __FASTCALL__ preinit(sh_audio_t *sh); static void __FASTCALL__ uninit(sh_audio_t *sh); Modified: mplayerxp/libmpcodecs/ad_libdv.c =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_libdv.c 2012-11-13 17:34:45 UTC (rev 358) @@ -16,6 +16,7 @@ #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" #include "libao2/afmt.h" +#include "osdep/bswap.h" #include "ad_internal.h" @@ -32,8 +33,19 @@ LIBAD_EXTERN(libdv) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "libdv", "libdv", FOURCC_TAG('R','A','D','V'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + // defined in vd_libdv.c: dv_decoder_t* init_global_rawdv_decoder(void); Modified: mplayerxp/libmpcodecs/ad_mp3.c =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_mp3.c 2012-11-13 17:34:45 UTC (rev 358) @@ -9,6 +9,7 @@ #include "osdep/mm_accel.h" #include "osdep/fastmemcpy.h" #include "osdep/mplib.h" +#include "osdep/bswap.h" #include "codecs_ld.h" #include "libao2/afmt.h" #include "libao2/audio_out.h" @@ -27,8 +28,26 @@ LIBAD_EXTERN(mp3) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "libmp3", "libmpg123", 0x50, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", 0x55, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", 0x55005354, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", 0x5000736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", 0x5500736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", FOURCC_TAG('.','M','P','3'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", FOURCC_TAG('L','A','M','E'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "libmp3", "libmpg123", FOURCC_TAG('M','P','3',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + /** Opaque structure for the libmpg123 decoder handle. */ struct mpg123_handle_struct; typedef struct mpg123_handle_struct mpg123_handle; Modified: mplayerxp/libmpcodecs/ad_null.c =================================================================== --- mplayerxp/libmpcodecs/ad_null.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_null.c 2012-11-13 17:34:45 UTC (rev 358) @@ -16,7 +16,7 @@ LIBAD_EXTERN(null) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } MPXP_Rc init(sh_audio_t *sh) { Modified: mplayerxp/libmpcodecs/ad_pcm.c =================================================================== --- mplayerxp/libmpcodecs/ad_pcm.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_pcm.c 2012-11-13 17:34:45 UTC (rev 358) @@ -3,6 +3,7 @@ #include <unistd.h> #include "ad_internal.h" #include "libao2/afmt.h" +#include "osdep/bswap.h" static const ad_info_t info = { "Uncompressed PCM audio decoder", @@ -17,8 +18,34 @@ LIBAD_EXTERN(pcm) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "pcm", "pcm", 0x0, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", 0x1, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", 0x3, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", 0xFFFE,ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('F','L','3','2'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('2','3','L','F'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('N','O','N','E'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('I','N','2','4'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('4','2','N','I'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('I','N','3','2'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('2','3','N','I'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('L','P','C','M'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('R','A','W',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('T','W','O','S'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "pcm", "pcm", FOURCC_TAG('S','O','W','T'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + + MPXP_Rc init(sh_audio_t *sh_audio) { WAVEFORMATEX *h=sh_audio->wf; Modified: mplayerxp/libmpcodecs/ad_qtaudio.c =================================================================== --- mplayerxp/libmpcodecs/ad_qtaudio.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_qtaudio.c 2012-11-13 17:34:45 UTC (rev 358) @@ -31,7 +31,7 @@ LIBAD_EXTERN(qtaudio) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } typedef struct OpaqueSoundConverter* SoundConverter; typedef unsigned long OSType; Modified: mplayerxp/libmpcodecs/ad_real.c =================================================================== --- mplayerxp/libmpcodecs/ad_real.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_real.c 2012-11-13 17:34:45 UTC (rev 358) @@ -12,6 +12,7 @@ #include "codecs_ld.h" #include "ad_msg.h" #include "osdep/mplib.h" +#include "osdep/bswap.h" #include "libao2/afmt.h" static const ad_info_t info = { "RealAudio decoder", @@ -26,8 +27,23 @@ LIBAD_EXTERN(real) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "realaudio", "14_4.so.6.0", FOURCC_TAG('1','4','_','4'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "realaudio", "28_8.so.6.0", FOURCC_TAG('2','8','_','8'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "realaudio", "cook.so.6.0", FOURCC_TAG('C','O','O','K'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "realaudio", "sipr.so.6.0", FOURCC_TAG('S','I','P','R'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { "realaudio", "atrc.so.6.0", FOURCC_TAG('A','T','R','C'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE, AFMT_S8} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + static any_t*handle=NULL; any_t*__builtin_new(unsigned long size) { Modified: mplayerxp/libmpcodecs/ad_twin.c =================================================================== --- mplayerxp/libmpcodecs/ad_twin.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_twin.c 2012-11-13 17:34:45 UTC (rev 358) @@ -26,7 +26,7 @@ LIBAD_EXTERN(twin) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } /************************/ /*** General settings ***/ Modified: mplayerxp/libmpcodecs/ad_vorbis.c =================================================================== --- mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/ad_vorbis.c 2012-11-13 17:34:45 UTC (rev 358) @@ -8,6 +8,7 @@ #include "libao2/afmt.h" #include "libao2/audio_out.h" #include "osdep/mplib.h" +#include "osdep/bswap.h" extern ao_data_t* ao_data; @@ -24,8 +25,20 @@ LIBAD_EXTERN(vorbis) -static audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } +static const audio_probe_t probes[] = { + { "vorbis", "vorbis", 0x566F, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "vorbis", "vorbis", FOURCC_TAG('V','R','B','S'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} +}; +static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(wtag==probes[i].wtag) + return &probes[i]; + return NULL; +} + #include <math.h> #include <vorbis/codec.h> Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd.h 2012-11-13 17:34:45 UTC (rev 358) @@ -24,8 +24,8 @@ typedef struct video_probe_s { const char* driver; + const char* codec_dll; uint32_t fourcc; - const char* codec_dll; vcodec_status_e status; uint32_t pix_fmt[Video_MaxOutFmt]; video_flags_e flags[Video_MaxOutFmt]; @@ -44,7 +44,7 @@ { const vd_info_t* info; const config_t* options;/**< Optional: MPlayerXP's option related */ - video_probe_t* (*__FASTCALL__ probe)(uint32_t fourcc); + const video_probe_t*(*__FASTCALL__ probe)(sh_video_t *sh,uint32_t fourcc); MPXP_Rc (*__FASTCALL__ init)(sh_video_t *sh,any_t* libinput); void (*__FASTCALL__ uninit)(sh_video_t *sh); MPXP_Rc (* control)(sh_video_t *sh,int cmd,any_t* arg, ...); Modified: mplayerxp/libmpcodecs/vd_divx4.c =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_divx4.c 2012-11-13 17:34:45 UTC (rev 358) @@ -21,6 +21,7 @@ #include "codecs_ld.h" #include "libvo/video_out.h" #include "osdep/mplib.h" +#include "osdep/bswap.h" static const vd_info_t info = { "DivX4Linux lib (divx4/5 mode)", @@ -35,8 +36,25 @@ LIBVD_EXTERN(divx4) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "divx", "libdivx.so",FOURCC_TAG('D','Y','U','V'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "divx", "libdivx.so",FOURCC_TAG('D','I','V','3'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "divx", "libdivx.so",FOURCC_TAG('D','I','V','4'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "divx", "libdivx.so",FOURCC_TAG('D','I','V','5'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "divx", "libdivx.so",FOURCC_TAG('D','I','V','6'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "divx", "libdivx.so",FOURCC_TAG('D','I','V','X'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "divx", "libdivx.so",FOURCC_TAG('D','X','5','0'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { 0 }} +}; +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(fourcc==probes[i].fourcc) + return &probes[i]; + return NULL; +} + #define DIVX4LINUX_BETA 0 #define DIVX4LINUX 1 #define DIVX5LINUX 2 Modified: mplayerxp/libmpcodecs/vd_dmo.c =================================================================== --- mplayerxp/libmpcodecs/vd_dmo.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_dmo.c 2012-11-13 17:34:45 UTC (rev 358) @@ -27,7 +27,7 @@ LIBVD_EXTERN(dmo) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { return NULL; } // to set/get/query special features/parameters static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ Modified: mplayerxp/libmpcodecs/vd_dshow.c =================================================================== --- mplayerxp/libmpcodecs/vd_dshow.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_dshow.c 2012-11-13 17:34:45 UTC (rev 358) @@ -12,6 +12,7 @@ #include "loader/dshow/DS_VideoDecoder.h" #include "codecs_ld.h" +#include "osdep/bswap.h" static const vd_info_t info = { "Win32/DirectShow video codecs", @@ -26,7 +27,7 @@ LIBVD_EXTERN(dshow) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { return NULL; } // to set/get/query special features/parameters static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ Modified: mplayerxp/libmpcodecs/vd_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_ffmpeg.c 2012-11-13 17:34:45 UTC (rev 358) @@ -98,6 +98,7 @@ int b_count; int vo_inited; int hello_printed; + video_probe_t* probe; }priv_t; static pp_context* ppContext=NULL; static void draw_slice(struct AVCodecContext *s, const AVFrame *src, int offset[4], int y, int type, int height); @@ -186,35 +187,49 @@ return MPXP_Unknown; } -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } - -static MPXP_Rc find_vdecoder(sh_video_t* sh) { +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fcc) { unsigned i; unsigned char flag = CODECS_FLAG_NOFLIP; - enum AVCodecID id = ff_codec_get_id(ff_codec_bmp_tags,sh->fourcc); + video_probe_t* vprobe = NULL; + priv_t* priv=sh->context; + enum AVCodecID id = ff_codec_get_id(ff_codec_bmp_tags,fcc); if (id <= 0) { const char *fourcc; prn_err: - fourcc=&sh->fourcc; + fourcc=&fcc; MSG_ERR("Cannot find AVCodecID for for '%c%c%c%c' fourcc! Try force -vc option\n" ,fourcc[0],fourcc[1],fourcc[2],fourcc[3]); - return MPXP_False; + return NULL; } AVCodec *codec=avcodec_find_decoder(id); if(!codec) goto prn_err; - sh->codec=mp_mallocz(sizeof(struct codecs_st)); - strcpy(sh->codec->dll_name,"ffmpeg"); - strcpy(sh->codec->driver_name,"ffmpeg"); - strcpy(sh->codec->codec_name,avcodec_get_name(id)); + vprobe=mp_mallocz(sizeof(video_probe_t)); + vprobe->driver="ffmpeg"; + vprobe->codec_dll=mp_strdup(avcodec_get_name(id)); if(codec->pix_fmts) for(i=0;i<CODECS_MAX_OUTFMT;i++) { if(codec->pix_fmts[i]==-1) break; - sh->codec->outfmt[i]=avcodec_pix_fmt_to_codec_tag(codec->pix_fmts[i]); - sh->codec->outflags[i]=flag; + vprobe->pix_fmt[i]=avcodec_pix_fmt_to_codec_tag(codec->pix_fmts[i]); + vprobe->flags[i]=flag; } - return MPXP_Ok; + priv->probe=vprobe; + return vprobe; } +static MPXP_Rc find_vdecoder(sh_video_t* sh) { + unsigned i; + const video_probe_t* vprobe=probe(sh,sh->fourcc); + if(vprobe) { + sh->codec=mp_mallocz(sizeof(struct codecs_st)); + strcpy(sh->codec->dll_name,vprobe->codec_dll); + strcpy(sh->codec->driver_name,vprobe->driver); + strcpy(sh->codec->codec_name,sh->codec->dll_name); + memcpy(sh->codec->outfmt,vprobe->pix_fmt,sizeof(vprobe->pix_fmt)); + return MPXP_Ok; + } + return MPXP_False; +} + extern unsigned xp_num_cpu; static MPXP_Rc init(sh_video_t *sh,any_t* libinput){ unsigned avc_version=0; Modified: mplayerxp/libmpcodecs/vd_huffyuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_huffyuv.c 2012-11-13 17:34:45 UTC (rev 358) @@ -24,6 +24,7 @@ #include "vd_internal.h" #include "help_mp.h" #include "osdep/mplib.h" +#include "osdep/bswap.h" static const vd_info_t info = { "HuffYUV Video decoder", @@ -38,8 +39,19 @@ LIBVD_EXTERN(huffyuv) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "huffyuv", "huffyuv", FOURCC_TAG('H','F','Y','U'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2'),FOURCC_TAG('B','G','R',32),FOURCC_TAG('B','G','R',24)}, {0, 0} }, + { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { 0 }} +}; +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(fourcc==probes[i].fourcc) + return &probes[i]; + return NULL; +} + /* * Bitmap types */ Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-11-13 17:34:45 UTC (rev 358) @@ -13,7 +13,7 @@ //static vd_info_t info; static const config_t options[]; -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc); +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc); static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...); static int __FASTCALL__ init(sh_video_t *sh,any_t* libinput); static void __FASTCALL__ uninit(sh_video_t *sh); Modified: mplayerxp/libmpcodecs/vd_libdv.c =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_libdv.c 2012-11-13 17:34:45 UTC (rev 358) @@ -8,6 +8,7 @@ #include "mp_config.h" #include "libvo/img_format.h" +#include "osdep/bswap.h" #include <libdv/dv.h> #include <libdv/dv_types.h> @@ -31,8 +32,33 @@ LIBVD_EXTERN(libdv) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "libdv", "libdv", FOURCC_TAG('A','V','d','1'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('A','V','d','v'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','C',' '), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','C','P'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','5','0'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','5','N'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','5','P'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','H','3'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','H','5'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','H','6'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','H','Q'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','H','P'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','P','P'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','S','C'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { "libdv", "libdv", FOURCC_TAG('D','V','S','D'), VCodecStatus_Working, {FOURCC_TAG('Y','U','Y','2')}, {0, 0} }, + { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { 0 }} +}; +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(fourcc==probes[i].fourcc) + return &probes[i]; + return NULL; +} + // to set/get/query special features/parameters static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ return MPXP_Unknown; Modified: mplayerxp/libmpcodecs/vd_libmpeg2.c =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-13 17:34:45 UTC (rev 358) @@ -18,6 +18,7 @@ #include "postproc/postprocess.h" #include "codecs_ld.h" #include "osdep/mplib.h" +#include "osdep/bswap.h" static const vd_info_t info = { "libmpeg2 MPEG 1/2 Video decoder", @@ -32,9 +33,82 @@ LIBVD_EXTERN(libmpeg2) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "mpeg2", "libmpeg2", 0x10000001, VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", 0x10000002, VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('A','V','M','P'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('D','V','R',' '), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('L','M','P','2'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','1','V',' '), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','1','V','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','2','V','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','7','0','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','M','E','S'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','2','V'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','V'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','E','G'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','2'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','5','P'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('P','I','M','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('P','I','M','2'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','2'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','3'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','4'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','5'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','6'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','7'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','8'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','9'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','A'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','3','N'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','3','P'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','4','N'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','4','P'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','5','N'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','2'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','3'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','4'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','5'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','6'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','7'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','8'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','9'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','A'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','B'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','C'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','D'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','E'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','F'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','1'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','2'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','3'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','4'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','5'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','6'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','7'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','8'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','9'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','A'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','B'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','C'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','D'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','E'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','F'), VCodecStatus_Working, {FOURCC_TAG('Y','V','1','2'), FOURCC_TAG('I','4','2','0'), FOURCC_TAG('4','2','2','P')}, {0, 0} }, + { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { 0 }} +}; +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(fourcc==probes[i].fourcc) + return &probes[i]; + return NULL; +} + #include "libmpdemux/parse_es.h" #include "libvo/video_out.h" #ifdef ATTRIBUTE_ALIGNED_MAX Modified: mplayerxp/libmpcodecs/vd_mpegpes.c =================================================================== --- mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_mpegpes.c 2012-11-13 17:34:45 UTC (rev 358) @@ -2,8 +2,8 @@ #include <stdlib.h> #include "mp_config.h" - #include "vd_internal.h" +#include "osdep/bswap.h" static const vd_info_t info = { "MPEG 1/2 Video passthrough", @@ -18,8 +18,81 @@ LIBVD_EXTERN(mpegpes) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "mpeg2", "libmpeg2", 0x10000001, VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", 0x10000002, VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('A','V','M','P'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('D','V','R',' '), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('L','M','P','2'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','1','V',' '), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','1','V','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','2','V','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','7','0','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','M','E','S'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','2','V'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','V'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','E','G'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','2'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','5','P'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('P','I','M','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('P','I','M','2'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','2'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','3'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','4'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','5'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','6'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','7'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','8'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','9'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','A'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','3','N'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','3','P'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','4','N'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','4','P'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','5','N'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','2'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','3'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','4'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','5'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','6'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','7'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','8'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','9'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','A'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','B'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','C'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','D'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','E'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','F'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','1'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','2'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','3'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','4'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','5'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','6'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','7'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','8'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','9'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','A'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','B'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','C'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','D'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','E'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','F'), VCodecStatus_Working, {FOURCC_TAG('M','P','E','S')}, {0} }, + { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { 0 }} +}; +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(fourcc==probes[i].fourcc) + return &probes[i]; + return NULL; +} + // to set/get/query special features/parameters static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ return MPXP_Unknown; Modified: mplayerxp/libmpcodecs/vd_null.c =================================================================== --- mplayerxp/libmpcodecs/vd_null.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_null.c 2012-11-13 17:34:45 UTC (rev 358) @@ -18,7 +18,7 @@ LIBVD_EXTERN(null) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { return NULL; } // to set/get/query special features/parameters static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ Modified: mplayerxp/libmpcodecs/vd_nuv.c =================================================================== --- mplayerxp/libmpcodecs/vd_nuv.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_nuv.c 2012-11-13 17:34:45 UTC (rev 358) @@ -4,6 +4,7 @@ #include "libnuppelvideo/nuppelvideo.h" #include "vd_internal.h" #include "codecs_ld.h" +#include "osdep/bswap.h" static const vd_info_t info = { "NuppelVideo decoder", @@ -18,8 +19,20 @@ LIBVD_EXTERN(nuv) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "nuv", "nuv", FOURCC_TAG('N','U','V','1'), VCodecStatus_Working, {FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { "nuv", "nuv", FOURCC_TAG('R','J','P','G'), VCodecStatus_Working, {FOURCC_TAG('I','4','2','0')}, {0, 0} }, + { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { 0 }} +}; +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { + unsigned i; + for(i=0;probes[i].driver;i++) + if(fourcc==probes[i].fourcc) + return &probes[i]; + return NULL; +} + // to set/get/query special features/parameters static MPXP_Rc control(sh_video_t *sh,int cmd,any_t* arg,...){ switch(cmd) { Modified: mplayerxp/libmpcodecs/vd_qtvideo.c =================================================================== --- mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_qtvideo.c 2012-11-13 17:34:45 UTC (rev 358) @@ -28,7 +28,7 @@ LIBVD_EXTERN(qtvideo) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t* __FASTCALL__ probe(sh_video_t *sh,uint32_t fourcc) { return NULL; } #include "osdep/bswap.h" Modified: mplayerxp/libmpcodecs/vd_raw.c =================================================================== --- mplayerxp/libmpcodecs/vd_raw.c 2012-11-13 12:42:38 UTC (rev 357) +++ mplayerxp/libmpcodecs/vd_raw.c 2012-11-13 17:34:45 UTC (rev 358) @@ -2,8 +2,8 @@ #include <stdlib.h> #include "mp_config.h" - #include "vd_internal.h" +#include "osdep/bswap.h" static const vd_info_t info = { "RAW Uncompressed Video", @@ -18,8 +18,65 @@ LIBVD_EXTERN(raw) -static video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } +static const video_probe_t probes[] = { + { "raw", "raw", 0x0, VCodecStatus_Working, {FOURCC_TAG('R','G','B',32),FOURCC_TAG('R','G','B',24),FOURCC_TAG('R','G','B',16),FOURCC_TAG('Y','U','Y','2'),FOURCC_TAG('Y... [truncated message content] |
From: <nic...@us...> - 2012-11-14 09:59:00
|
Revision: 364 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=364&view=rev Author: nickols_k Date: 2012-11-14 09:58:47 +0000 (Wed, 14 Nov 2012) Log Message: ----------- use new decoder auto-probe technology Modified Paths: -------------- TODO mplayerxp/libmpcodecs/ad.c mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/ad_mp3.c mplayerxp/libmpcodecs/ad_real.c mplayerxp/libmpcodecs/ad_vorbis.c mplayerxp/libmpcodecs/dec_audio.c mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/vd.c mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpcodecs/vd_huffyuv.c mplayerxp/libmpcodecs/vd_libdv.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpcodecs/vd_mpegpes.c mplayerxp/libmpcodecs/vd_nuv.c mplayerxp/libmpcodecs/vd_raw.c mplayerxp/libmpcodecs/vd_real.c mplayerxp/libmpcodecs/vd_theora.c mplayerxp/libmpcodecs/vd_xanim.c mplayerxp/libmpcodecs/vd_xvid.c mplayerxp/libmpconf/Makefile mplayerxp/libmpdemux/stheader.h mplayerxp/mplayerxp.c mplayerxp/osdep/bswap.h mplayerxp/xmpcore/mp_image.c Added Paths: ----------- etc/win32codecs.conf Removed Paths: ------------- etc/codecs.conf Modified: TODO =================================================================== --- TODO 2012-11-14 09:55:18 UTC (rev 363) +++ TODO 2012-11-14 09:58:47 UTC (rev 364) @@ -1,5 +1,7 @@ TODO for mplayerxp: +- use c++ instead of plain c +- use libavfilter instead of some af_* vf_* - test frame-dropping - replace suspect codecs.conf with built-in database [ mpcX-probe] - remove all #define with values (they maybe intercepted in other .h files) Deleted: etc/codecs.conf =================================================================== --- etc/codecs.conf 2012-11-14 09:55:18 UTC (rev 363) +++ etc/codecs.conf 2012-11-14 09:58:47 UTC (rev 364) @@ -1,3586 +0,0 @@ -;============================================================================= -; VIDEO CODECS -;============================================================================= -videocodec mpegpes - info "Mpeg PES output (.mpg or DXR3/IVTV/DVB/V4L2 card)" - comment "for hardware decoding" - status working - format 0x10000001 ; mpeg 1 - format 0x10000002 ; mpeg 2 - fourcc mpg1,MPG1,mpg2,MPG2 - fourcc MPEG - fourcc hdv1,hdv2,hdv3 - fourcc hdv5 - fourcc hdv6,hdv7,hdv8 - fourcc xdv1,xdv2,xdv3 - fourcc xdv4,xdv5,xdv6 - fourcc xdv7,xdv8,xdv9 - fourcc xdva,xdvb,xdvc - fourcc xdvd,xdve,xdvf - fourcc xd5a,xd5b,xd5c - fourcc xd5d,xd5e,xd5f - fourcc xd59 - fourcc mx5n,mx4n,mx4p - fourcc mx3n,mx3p - fourcc AVmp - fourcc mp2v,mpgv - fourcc m2v1,m1v1 - fourcc PIM1 ; Pinnacle hardware-MPEG-1 - fourcc PIM2 ; Pinnacle hardware-MPEG-2 - fourcc VCR2 - fourcc LMP2 ; Lead mpeg2 in avi - driver mpegpes - dll "mpegpes" - out MPES - -videocodec ffmpeg12mc - info "FFmpeg MPEG 1/2 (XvMC)" - status buggy - format 0x10000001 ; mpeg 1 - format 0x10000002 ; mpeg 2 - fourcc mpg1,MPG1 - fourcc mpg2,MPG2 - fourcc hdv2,HDV2 - fourcc PIM1 ; Pinnacle hardware-mpeg1 - fourcc VCR2 - fourcc MMES,mmes ; matrox mpeg2 in avi - fourcc hdv6,hdv7,hdv8 - fourcc xdv1,xdv2,xdv3 - fourcc xdv4,xdv5,xdv6 - fourcc xdv7,xdv8,xdv9 - fourcc xdva,xdvb,xdvc - fourcc xdvd,xdve,xdvf - fourcc xd5a,xd5b,xd5c - fourcc xd5d,xd5e,xd5f - fourcc xd59 - fourcc mx5n,mx4n,mx4p - fourcc mx3n,mx3p - fourcc AVmp - fourcc mp2v,mpgv - driver ffmpeg - dll "mpegvideo_xvmc" - out IDCT_MPEG2 - out MOCO_MPEG2 - -videocodec mpeg12 - info "MPEG 1 or 2" - comment "with postprocessing" - status working ; for versions > 0.5 - format 0x10000001 ; mpeg 1 - format 0x10000002 ; mpeg 2 - fourcc "DVR " - fourcc hdv2,HDV2 - fourcc mpg1,MPG1,mpg2,MPG2 - fourcc MPEG - fourcc PIM1 ; Pinnacle hardware-MPEG-1 - fourcc hdv1,hdv3 - fourcc hdv5 - fourcc hdv6,hdv7,hdv8 - fourcc xdv1,xdv2,xdv3 - fourcc xdv4,xdv5,xdv6 - fourcc xdv7,xdv8,xdv9 - fourcc xdva,xdvb,xdvc - fourcc xdvd,xdve,xdvf - fourcc xd5a,xd5b,xd5c - fourcc xd5d,xd5e,xd5f - fourcc xd59 - fourcc mx5n,mx4n,mx4p ; MPEG IMX 625/50 (50 Mb/s) - fourcc mx3n,mx3p - fourcc AVmp - fourcc mp2v,mpgv - fourcc VCR2 - fourcc MMES,mmes ; matrox mpeg2 in avi - fourcc LMP2 ; Lead mpeg2 in avi - fourcc slif ; SoftLab MPEG-2 I-frames Codec - driver libmpeg2 - dll "libmpeg2" - out YV12 - -videocodec xvid - info "XviD MPEG4 codec" - status working - fourcc FMP4,fmp4 - fourcc DIVX,divx - fourcc xvid,XVID,XviD,XVIX - fourcc DIV1,div1 divx - fourcc MP4S,mp4s ; ISO MPEG-4 Video V1 - fourcc M4S2,m4s2 - fourcc DX50,dx50,BLZ0 DX50 - fourcc mp4v,MP4V - format 0x4 - fourcc UMP4 - fourcc RMP4 - fourcc 3IV2,3iv2 ; 3ivx Delta 4 - fourcc DXGM - fourcc SEDG ; diskless camcorder Samsung Miniket VP-M110 - fourcc SMP4,smp4 ; Samsung SMP4 video codec - format 0x10000004 ; mpeg 4 es - driver xvid - dll "libxvidcore.so" - out I420,IYUV - out YV12 - -videocodec ffv210 - info "FFmpeg V210 - 10-bit" - status untested - fourcc v210 - driver ffmpeg - dll v210 - out 422P16 - -; ============== MPLAYER OPENSOURCE CODECS ========= - -videocodec cvid - info "Cinepak Video (native codec)" - status working - fourcc cvid,CVID - driver cinepak - out YV12 - out YUY2 - out BGR32,BGR24 - -videocodec mphuffyuv - info "HuffYUV Mplayer Native Decoder" - status working - fourcc HFYU - driver huffyuv - out YUY2 - out BGR32,BGR24 - -videocodec nuv - info "NuppelVideo" - status working - fourcc NUV1 - fourcc RJPG - driver nuv - out I420,IYUV - -videocodec mpng - info "mPNG codec" - status working - comment "Gray scaled PNG with Alpha channel not supported" - fourcc mpng,MPNG - fourcc "png " ; for PNG-encoded Quicktime files - driver mpng - out BGR32,BGR24,BGR8,Y800 - -videocodec ijpg - info "IJPG codec" - status working - comment "Hm." - fourcc ijpg,IJPG - fourcc jpeg ; MOV Photo Jpeg - fourcc AVRn,AVDJ ; AVID - driver ijpg - out BGR24,BGR8 - -; =============== WINDOWS DLL's ============== - -videocodec vmnc - info "VMware video" - status working - fourcc VMnc - driver vfw - dll "vmnc.dll" - out BGR24,BGR15,BGR8 flip - -videocodec vivo - info "Vivo H.263" - status working - fourcc VIVO,vivo vivo - fourcc viv1,viv2 vivo - driver vfw - dll "ivvideo.dll" - out BGR32,BGR24,BGR15 flip - cpuflags mmx - -videocodec xan - info "XAN Video" - status working - fourcc Xxan - driver vfw - dll "xanlib.dll" - out BGR24,BGR15,BGR8 flip - -videocodec nogatech - status working - fourcc NTN1,NTN2 - driver vfw - dll "nuvision.ax" - out BGR24 flip - -videocodec geomp4 - info "GeoVision Advanced MPEG-4" - status working - fourcc GMP4,GM40 - driver vfw - dll "GXAMP4.dll" - out BGR24 flip - -videocodec frwuvfw - info "Forward Uncompressed Video Codec" - status working - fourcc FRWU - driver vfw - dll "FRWU.dll" - out BGR24 flip - -videocodec frwdvfw - info "Forward JPEG Video Codec" - status working - fourcc FRWD - driver vfw - dll "FRWD.dll" - out BGR24 flip - -videocodec frwtvfw - info "Forward JPEG+Alpha Video" - status working - fourcc FRWT - driver vfw - dll "FRWT.dll" - out BGR24 flip - -videocodec u263 - info "UB Video H.263/H.263+/H.263++ Decoder" - comment "added by Juanjo" - status working - fourcc U263 - fourcc vivo,VIVO U263 - fourcc viv1 U263 - driver dshow - dll "ubv263d+.ax" - guid 0x00af1181, 0x6ebb, 0x11d4, 0x9d, 0x5a, 0x00, 0x50, 0x04, 0x79, 0x6c, 0xc0 - out BGR24 flip - cpuflags mmx - -videocodec divxds - info "DivX ;-) (MS MPEG-4 v3)" - comment "with postprocessing" - status working - fourcc MP43,mp43 div3 ; fourcc mapping to div3 - fourcc DIV5,div5 div3 - fourcc DIV6,div6 div4 - fourcc DIV3,div3,DIV4,div4 - fourcc AP41 div3 ; AngelPotion stuff - driver dshow - dll "divx_c32.ax" - guid 0x82CCd3E0, 0xF71A, 0x11D0, 0x9f, 0xe5, 0x00, 0x60, 0x97, 0x78, 0xaa, 0xaa -; out YV12 - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - cpuflags mmx - -videocodec mpeg4ds - info "Microsoft MPEG-4 v1/v2" - status working - comment "with postprocessing" - fourcc DIV2,div2 - fourcc MP4S,mp4s ; ISO MPEG-4 Video V1 - fourcc MPG4,mpg4 - fourcc MP42,mp42 - driver dshow - dll "mpg4ds32.ax" - guid 0x82CCD3E0, 0xF71A, 0x11D0, 0x9F, 0xE5, 0x00, 0x60, 0x97, 0x78, 0xEA, 0x66 - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - cpuflags mmx - -videocodec mpeg4 - info "Microsoft MPEG-4 v1/v2" - status working - fourcc MPG4,mpg4 - fourcc MP42,mp42 - fourcc DIV2 mp42 - driver vfw - dll "mpg4c32.dll" - out YUY2 yuvhack - out BGR32,BGR24,BGR15 - cpuflags mmx - - -videocodec divx - info "DivX ;-) (MS MPEG-4 v3)" - status working - fourcc MP43,mp43 div3 ; M$ MPEG4 v3 (fourcc mapping to div3) - fourcc DIV5,div5 div3 ; DivX 3.20 - fourcc DIV6,div6 div4 ; -||- - fourcc DIV3,div3,DIV4,div4 - fourcc AP41 div3 ; AngelPotion stuff - driver vfw - dll "divxc32.dll" - out YUY2 yuvhack - out BGR32,BGR24,BGR15 - cpuflags mmx - -videocodec divx4vfw - info "DivX4Windows-VFW (DivX 3.x, DivX4)" - status working - comment "with postprocessing!!!" - fourcc DIVX,divx ; opendivx / divx4 - fourcc DIV1,div1 divx - fourcc MP4S,mp4s ; ISO MPEG-4 Video V1 - fourcc MP43,mp43,DIV3,div3,DIV4,div4 DIV3 ; for DivX4Linux only! - fourcc AP41 DIV3 ; AngelPotion stuff - format 0x4 - driver vfw - dll "divx.dll" -; out YV12 ; buggy - out YUY2 - out BGR32,BGR24,BGR15 - cpuflags mmx - - -videocodec i263 - info "I263" - status working - fourcc I263,i263,I420,i420 - fourcc vivo,VIVO I263 - fourcc viv1 I263 - driver vfw - dll "i263_32.drv" -; out I420,IYUV - out YUY2 - out BGR32,BGR24,BGR15 - cpuflags mmx - -videocodec m3jpeg - info "Morgan Motion JPEG Codec" - status working - fourcc MJPG - fourcc mjpa,mjpb,mjpg MJPG ; MOV files - fourcc dmb1 MJPG ; MJPEG by Matrox Rainbow Runner - driver vfw - dll "m3jpeg32.dll" - out YUY2 - out UYVY - out BGR32,BGR24,BGR15 - cpuflags mmx - -videocodec mjpeg - info "MainConcept Motion JPEG" - status working - fourcc MJPG - fourcc mjpa,mjpb,mjpg MJPG ; MOV files - fourcc AVRn,AVDJ MJPG ; AVID - driver vfw - dll "mcmjpg32.dll" - out YUY2 - out UYVY - out BGR32,BGR24,BGR15 - cpuflags mmx - -videocodec vp3 - info "On2 OpenSource VP3-Codec" - status working - comment "For SSE-systems use hacked dll from ftp://mplayerhq.hu/MPlayer/samples/drivers32/" - fourcc VP30,vp30,VP31,vp31 - driver vfwex - dll "vp31vfw.dll" - out YUY2 - out BGR32,BGR24,BGR15 - cpuflags mmx - -videocodec indeo5ds - info "Intel Indeo 5" - status working - fourcc IV50,iv50 - driver dshow - dll "ir50_32.dll" - guid 0x30355649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 - out YV12 - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - cpuflags mmx - -videocodec indeo5 - info "Intel Indeo 5" - status working - fourcc IV50,iv50 - driver vfw - dll "ir50_32.dll" -; out YV12,I420,IYUV ; flickering - out YUY2 - out BGR32,BGR24,BGR15 - - -videocodec sp4x - info "SP4x codec - used by Aiptek MegaCam" - status working - fourcc SP40,SP41,SP42,SP43,SP44,SP45 - fourcc SP46,SP47 - driver vfw - dll "SP4X_32.DLL" - out BGR24,BGR15 flip - -videocodec sp5x - info "SP5x codec - used by Aiptek MegaCam" - status working - fourcc SP53,SP54,SP55,SP56,SP57,SP58 - driver vfw - dll "sp5x_32.dll" - out BGR24,BGR15 flip - -videocodec indeo4 - info "Intel Indeo 4.1" - status working -; comment "upside-down" - fourcc IV41,iv41 - driver vfw - dll "ir41_32.dll" - out BGR24,BGR15 - cpuflags mmx - -videocodec indeo3 - info "Intel Indeo 3.1/3.2" - status buggy - comment "upside-down with some vo drivers, (no yuv)" - fourcc IV31,iv31 - fourcc IV32,iv32 - driver vfwex - dll "ir32_32.dll" - out BGR24 - cpuflags mmx - -videocodec cvidvfw - info "Cinepak Video" - status working - fourcc cvid - driver vfw - dll "iccvid.dll" -; out YUY2 -; out UYVY - out BGR24,BGR15 - cpuflags mmx - -videocodec msuscls - info "MSU Screen Capture Lossless Codec" - status working - fourcc SCLS - driver vfw - dll "SCLS.DLL" - out BGR32,BGR24,BGR16 flip - -videocodec cram - info "Microsoft Video 1" - comment "Input bpp = output bpp (8bpp is only supported by vo_ggi)" - status working - fourcc cram,CRAM CRAM - fourcc msvc,MSVC CRAM - fourcc wham,WHAM CRAM - driver vfw - dll "msvidc32.dll" - out BGR24,BGR15,BGR8 - -videocodec vcr1 - info "ATI VCR-1" - status buggy - fourcc VCR1 - driver vfw - dll "ativcr1.dll" - out RGB24 flip - -videocodec vcr2 - info "ATI VCR-2" - status crashing - comment "segfault" - fourcc VCR2 - driver vfw - dll "ativcr2.dll" - out YV12 - out BGR24 - cpuflags mmx - -videocodec alpary - info "Alparysoft lossless codec dshow" - status working - fourcc ASLC - driver dshow - dll "aslcodec_dshow.dll" - guid 0x7f9de066, 0xbf3d, 0x4c17, 0x86, 0xb7, 0x33, 0xe4, 0x3e, 0xbe, 0xae, 0xf0 - out BGR24 flip - -videocodec LEADMW20 - info "Lead CMW wavelet 2.0" - status working - fourcc LCW2 - driver dshow - dll "LCODCCMW2E.dll"; eval need also LCMW2.dll - guid 0xe2b7dc56, 0x38c5, 0x11d5, 0x91, 0xf6, 0x00, 0x10, 0x4b, 0xdb, 0x8f, 0xf9 - out BGR24,BGR8 flip - -videocodec lagarith - info "Lagarith Lossless Video Codec" - comment "http://lags.leetcode.net/codec.html, requires an MMX2 CPU." - status working - fourcc LAGS - driver vfw - dll "lagarith.dll" - out BGR32,BGR24 flip - -videocodec psiv - info "Infinite Video PSI_V" - status working - fourcc PSIV - driver vfw - dll "psiv.dll" - out BGR32,BGR24 flip - -videocodec midivid3 - info "www.midivid.com/codec/mv3codec.html" - status working - fourcc MV30 - driver vfw - dll "MV3.dll" - out BGR24,BGR16 - -videocodec moyea - info "Moyea Flash to Video Converter" - comment "requires zlib1.dll" ; c7d4d685a0af2a09cbc21cb474358595 - status working - fourcc MFZ0 - driver vfw - dll "MyFlashZip0.ax" - out BGR24 flip - -videocodec nsvideo - info "Power VideoWorks video" - status working - fourcc NSVI - driver vfw - dll "nsvideo.dll" - out BGR24 flip - -videocodec smv2vfw - info "DideoNET SMV2" - status working - fourcc SMV2 - driver vfw - dll "smv2vfw.dll" - out BGR32,BGR24,BGR8,RGB32,RGB24,RGB8 flip - -videocodec canopushq - status working - info "Canopus HQ Codec" - comment "requires csehqa.dll and cseuvec.dll" - fourcc CUVC - driver vfw - dll "CUVCcodc.dll" - out BGR24 - -videocodec canopusll - status working - info "Canopus Lossless Codec" - comment "requires csellc.dll" - fourcc CLLC - driver vfw - dll "CLLCcodc.dll" - out BGR24 - -videocodec wavcvfw - info "centre for wavelets, approximation and infromation processing" - status working - fourcc wavc - driver vfw - dll "WavCWAIP.dll" - out BGR24 flip - -videocodec slifvfw - info "SoftLab-NSK Forward MPEG2 I-frames" - status working - fourcc slif - driver vfw - dll "slif.dll" - out RGB32 flip - -videocodec cjpg - info "Creative Labs Video Blaster Webcam" - comment "sequential jpeg files?" - status working - fourcc CJPG - driver vfw - dll "CtWbJpg.DLL" - out YUY2 - out UYVY - out BGR24,BGR15 - -videocodec kensington - info "kensington webcam" - status working - fourcc AJPG,ABYR - fourcc LBYR,JBYR ; untested, creative labs cam - fourcc UV12 ; untested - driver vfw - dll "aoxdxipl.ax" - out BGR24 flip - -videocodec xjpg - info "xiricam Veo PC Camera" - status working - fourcc XJPG - driver vfw - dll "camfc.dll" - out BGR24 flip - -videocodec tm2xvfw - info "TrueMotion 2.0" - status working - fourcc TM2X - fourcc TM2A - driver vfw - dll "tm2X.dll" - out BGR32,BGR24,BGR16 flip - -videocodec tr20 - info "TrueMotion RT" - status working - fourcc TR20 - driver vfw - dll "tr2032.dll" - out BGR15 - -videocodec sif1vfw - info "sif1 alpha4" - status working - fourcc SIF1 - driver vfw - dll "Sif1_vfw.dll" - out YV12,YUY2 - -videocodec bt411 - info "Brooktree 411 codec" - status working - fourcc BT20,Y41P - driver vfwex - dll "btvvc32.drv" - out BGR24 - -videocodec bwmpeg - info "Broadway MPEG Capture Codec" - status working - fourcc BW10 - driver vfwex - dll "bw10.dll" ;requires vtaccess.dll - out YV12,YUY2,I420 - -videocodec zdsoft - info "zdsoft screen recorder" - status working - fourcc ZDSV - driver vfwex - dll "scrvid.dll" - out BGR32 - -videocodec webtrain - info "WebTrain Communication lossless screen recorder" - status working - fourcc WTVC - driver vfw - dll "wtvc.dll" - out BGR16 flip - -videocodec kegavideo - info "Kega Video" - comment "requires MSVCR80.DLL on windows" - status working - fourcc KGV1 - driver vfw - dll "KGV1-VFW.dll" - out BGR16 flip - -videocodec xfire - info "xfire video" - status working - fourcc XFR1 - driver vfw - dll "xfcodec.dll" - out YV12,YUY2 - -videocodec vfapi - info "VFAPI rgb transcode codec" - status untested - fourcc vifp - driver vfwex - dll "VFCodec.dll" - out BGR24 flip - -videocodec eyecon - info "nokia eti camcorder eyecon" - status working - fourcc NUB0,NUB1,NUB2 - driver vfw - dll "nub2.dll" - out YV12,YUY2 - -videocodec smsvvfw - info "WorldConnect Wavelet Video" - comment "found in visualmail videos" - status working - fourcc SMSV - driver vfw - dll "wv32vfw.dll" - out BGR24 flip - -videocodec foxmotion - info "fox motion video" - status working - fourcc FMVC - driver vfw - dll "fmcodec.dll" - out BGR32,BGR24,BGR15 flip - -videocodec tridvfw - status untested - fourcc ty2c,TY2C,ty0n - fourcc TY2N,TY0N,T565 - driver vfw - dll "TRICDC32.DRV" - out BGR24 flip - -videocodec vdtzvfw - info "Telegeny VDTZ" - status working - fourcc VDTZ - driver vfw - dll "VTZ32.DLL" - out BGR24 flip - -; ======= DMO Video codecs ============= -videocodec wmv9dmo - info "Windows Media Video 9 DMO" - status working - fourcc WMV3 - fourcc WMVP - driver dmo - dll "wmv9dmod.dll" - guid 0x724bb6a4, 0xe526, 0x450f, 0xaf, 0xfa, 0xab, 0x9b, 0x45, 0x12, 0x91, 0x11 - out YV12 ;,I420,IYUV - out YUY2,UYVY - out BGR32,BGR24,BGR16 ;,BGR15 - -videocodec wmvdmo - info "Windows Media Video DMO" - status working - fourcc WMV1 - fourcc WMV2 - fourcc WMV3 - fourcc WMVP - driver dmo - dll "wmvdmod.dll" - guid 0x82d353df, 0x90bd, 0x4382, 0x8b, 0xc2, 0x3f, 0x61, 0x92, 0xb7, 0x6e, 0x34 - out YV12 ;,I420,IYUV - out YUY2,UYVY - out BGR32,BGR24,BGR16 ;,BGR15 - -videocodec wmvadmo - info "Windows Media Video Adv DMO" - status working - fourcc WMVA - fourcc WVP2 - driver dmo - dll "wmvadvd.dll" - guid 0x03be3ac4, 0x84b7, 0x4e0e, 0xa7, 0x8d, 0xd3, 0x52, 0x4e, 0x60, 0x39, 0x5a - out YV12 ;,I420,IYUV - out YUY2,UYVY - out BGR32,BGR24,BGR16 ;,BGR15 - -videocodec 3ivX - info "3ivX Delta 3.5" - status crashing - fourcc 3IV1 - driver dshow - dll "3ivxdmo.dll" - guid 0x0E6772C0, 0xDD80, 0x11D4, 0xB5, 0x8f, 0xA8, 0x6B, 0x66, 0xd0, 0x61, 0x1c - out YV12 - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - -videocodec wmsdmod - info "Windows Media Screen Codec 2" - status working - fourcc MSS1 - fourcc MSS2 - driver dmo - dll "wmsdmod.dll" - guid 0x7bafb3b1, 0xd8f4, 0x4279, 0x92, 0x53, 0x27, 0xda, 0x42, 0x31, 0x08, 0xde - out BGR32,BGR24,BGR16 - -videocodec gotomeeting - info "GoToMeeting codec" - status working - fourcc G2M2,G2M3 - driver dmo - dll "G2M.dll" - guid 0x23F891A4, 0x572B, 0x474A, 0x86, 0xDA, 0x66, 0xCD, 0xD3, 0xD1, 0xAC, 0x2E - out BGR24,RGB24 flip - -videocodec wmv7 - info "Windows Media Video 7" - status working - fourcc WMV1 - driver dshow - dll "wmvds32.ax" - guid 0x4facbba1, 0xffd8, 0x4cd7, 0x82, 0x28, 0x61, 0xe2, 0xf6, 0x5c, 0xb1, 0xae -; out I420,IYUV - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - cpuflags mmx - -videocodec wmv8 - info "Windows Media Video 8" - status working - fourcc WMV2 - driver dshow - dll "wmv8ds32.ax" - guid 0x521fb373, 0x7654, 0x49f2, 0xbd, 0xb1, 0x0c, 0x6e, 0x66, 0x60, 0x71, 0x4f - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - cpuflags mmx - -videocodec tm20 - info "TrueMotion 2.0" - status crashing - comment "segfault in the DLL" - fourcc TM20 - driver dshow - dll "tm20dec.ax" - guid 0x4cb63e61, 0xc611, 0x11D0, 0x83, 0xaa, 0x00, 0x00, 0x92, 0x90, 0x01, 0x84 -; out UYVY -; out YUY2 ; YUV output faulting - out BGR32,BGR24,BGR16,BGR15 - -videocodec sif1ds - info "sif1 alpha4" - status buggy - comment "one frame every 5 seconds?" - fourcc SIF1 - driver dshow - dll "Sif1Dec.ax" - guid 0x31666973, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 - out BGR32 - -videocodec libdv - info "Raw DV decoder (libdv)" - status working - fourcc DVSD,dvsd ; PAL - fourcc DVCS,dvcs ; NTSC ? - fourcc "dvcp" ; PAL DV in .mov - fourcc "dvc " ; NTSC DV in .mov - fourcc dvpp ; DVCPRO - PAL - fourcc AVdv ; AVID DV - driver libdv - dll libdv.so.2 - out YUY2 - -videocodec qdv - info "Sony Digital Video (DV)" - status working - fourcc dvsl,dvsd,dvhd ; ???? - fourcc DVSD dvsd ; pal .avi - fourcc "dvcp" dvsd ; pal .mov - fourcc "dvc " dvsd ; ntsc .mov - driver dshow - dll "qdv.dll" - guid 0xB1B77C00, 0xC3E4, 0x11CF, 0xAF, 0x79, 0x00, 0xAA, 0x00, 0xB6, 0x7A, 0x42 - out YUY2 - out UYVY - out BGR32,BGR24,BGR16,BGR15 - cpuflags mmx - -videocodec mcdv - info "MainConcept DV Codec" - status working - fourcc DVSD,dvsd ; PAL - fourcc DVCS,dvcs ; NTSC ? - fourcc CDVC,cdvc ; ??? - fourcc "dvcp" dvsd ; PAL DV in .mov - fourcc "dvc " dvcs ; NTSC DV in .mov - driver vfw - dll "mcdvd_32.dll" - out YUY2 - out UYVY - out BGR32,BGR24,BGR15 - -videocodec morgands - info "Morgan MJPEG" - status crashing - fourcc MJPG mjpg - driver dshow - dll "M3JPEGdec.ax" - guid 0x6988b440, 0x8352, 0x11d3, 0x9b, 0xda, 0xca, 0x86, 0x73, 0x7c, 0x71, 0x68 - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - -videocodec pegasusm - info "Pegasus Motion JPEG" - status buggy - fourcc MJPG - driver vfw -; dll "pvmjpg20.dll" ; v2.0 - dll "pvmjpg21.dll" ; v2.1 - out BGR24 flip - -videocodec pegasusl - info "Pegasus Lossless JPEG" - status buggy - fourcc JPGL - fourcc MJPG JPGL - driver vfw - dll "pvljpg20.dll" - out BGR24 flip - -videocodec pegasusmwv - info "Pegasus Motion Wavelet 2000" - status buggy - fourcc PVW2 - driver vfw - dll "pvwv220.dll" - out BGR24 flip - -videocodec ubmp4 - info "UB Video MPEG 4" - status buggy - fourcc UMP4 - driver vfw - dll "ubvmp4d.dll" - out I420 - out UYVY - -videocodec huffyuv - info "HuffYUV" - status buggy - comment "YUY2 _or_ 24/32bpp only (depending on file encoding)" - fourcc HFYU - driver vfw - dll "huffyuv.dll" - out YUY2 flip,noflip -; out UYVY flip - out BGR32,BGR24 flip - -videocodec mszh - info "AVImszh" - status buggy - comment "24bpp only" - fourcc MSZH - driver vfw - dll "avimszh.dll" -; out YUY2 -; out BGR32,BGR24,BGR15 - out BGR24 - -videocodec zlib - info "AVIzlib" - status buggy - comment "24bpp only" - fourcc ZLIB - driver vfw - dll "avizlib.dll" -; out YUY2 -; out BGR32,BGR24,BGR15 - out BGR24 - -videocodec mwv1 - info "Motion Wavelets" - status buggy - comment "no yuv, flip requires" - fourcc MWV1 - driver vfw - dll "icmw_32.dll" -; out YV12 flip -; out YUY2 flip - out BGR32,BGR24,BGR15 flip - cpuflags mmx - -videocodec m261 - info "M261" - status untested - fourcc m261,M261 - driver vfw - dll "msh261.drv" - out BGR32,BGR24,BGR15 - -videocodec asv2 - info "ASUS V2" - status buggy - comment "rgb upside down, yuv ok" - fourcc ASV2 - driver vfw - dll "asusasv2.dll" -; out YVYU - out UYVY - out BGR32,BGR24,BGR15 flip - cpuflags mmx - -videocodec asv1 - info "ASUS V1" - status buggy - comment "rgb upside down, yuv ok" - fourcc ASV1 - driver vfw - dll "asusasvd.dll" -; out YVYU - out UYVY - out BGR32,BGR24,BGR15 flip - cpuflags mmx - -videocodec mss1 - info "Windows Screen Video" - status working - fourcc MSS1 - driver dshow - dll "msscds32.ax" - guid 0x3301a7c4, 0x0a8d, 0x11d4, 0x91, 0x4d, 0x00, 0xc0, 0x4f, 0x61, 0x0d, 0x24 -; out I420,IYUV -; out YUY2 - out BGR32,BGR24,BGR16,BGR15 - -; CLRVIDDC.DLL needed too, with uppercase -videocodec ucod - info "UCOD-ClearVideo" - status working - fourcc UCOD - driver vfw - dll "clrviddd.dll" - out UYVY - out BGR32,BGR24,BGR15 flip - -videocodec pim1 - info "PIM1" - status buggy - comment "no picture. use ffmpeg12!" - fourcc PIM1 - driver vfw - dll "pclepim1.dll" - out BGR24 flip -; out I420,IYUV -; out YUY2 -; out BGR32,BGR24,BGR16,BGR15 - -videocodec qpeg - info "Q-Team's QPEG (www.q-team.de)" - status working - comment "BGR8 only!" - fourcc Q1.0,QPEG - fourcc Q1.1,qpeg - driver vfw - dll "qpeg32.dll" - out BGR8 flip - - -; sample videos: http://www.techsmith.com/products/camtasia/examplevideos.asp -videocodec camtasia - info "TechSmith Camtasia Screen Codec" - status buggy - fourcc TSCC,tscc - driver vfw - dll "tsccvid.dll" - out BGR15 flip - -; Fraps - Realtime Video Capture - http://www.fraps.com/ -videocodec fraps - info "FRAPS: Realtime Video Capture" - comment "Requires a processor with SSE???" - status working - fourcc FPS1,fps1 - driver vfw - dll "frapsvid.dll" - out BGR32 flip - -videocodec rricm - info "rricm" - status buggy - fourcc dmb1 - driver vfw - dll "rricm.dll" - out YUY2 - out BGR24 flip - -videocodec 3ivXqtx - info "3ivX Delta 3.5" - status crashing - fourcc 3IV1 - driver vfw - dll "qtx/3ivx.qtx" - out YV12 - out YUY2 - out BGR32,BGR24,BGR16,BGR15 - -videocodec alaris - info "Alaris VideoGramPiX" -; http://www.alaris.com/movies/toocool.vgm -; Martin Schuster <sch...@ap...> - status buggy - comment "only produces strange patterns" - fourcc VGPX,VTLP VGPX - driver vfwex - dll "vgpix32d.dll" - out UYVY - -videocodec avid - info "AVID" - status working - fourcc AVRn - fourcc AVDJ AVRn - fourcc MJPG,mjpg AVRn - driver vfw - dll "AvidAVICodec.dll" - out BGR24 flip - -videocodec LEAD - info "LEAD (M)Jpeg" - status working - comment "supports interlaced MJPEG" - fourcc MJPG - fourcc jpeg,JPEG - fourcc LEAD - driver vfw - dll "LCodcCMP.dll" - out BGR24,BGR15 - -videocodec CJPG - info "CJPG" - status untested - fourcc CJPG - driver vfw - dll "CtWbJpg.DLL" - out YUY2 - out UYVY - out BGR24,BGR15 - -videocodec imagepower - info "ImagePower MJPEG2000" - status buggy - fourcc IPJ2 - driver vfw - dll "jp2avi.dll" - out BGR32,BGR24,BGR15 - -videocodec ylc - info "YUY2 Lossless Codec" - status working - fourcc YLC0 - driver vfw - dll "ylc.vcm" - out BGR24 flip - -videocodec smartsight - info "Verint Video Manager" - status working - fourcc SN40 - fourcc SN41,SJPG ; untested - driver vfw - dll "SN4Codec.dll" - out BGR24 flip - -videocodec wincam - info "wincam screen capture codec" - comment "requires Zlib.dll" - status working - fourcc WCMV - driver vfw - dll "wcmv.dll" ; requires Zlib.dll - out BGR15 flip - -videocodec m3jpeg2k - info "Morgan MJPEG2000" - status working - fourcc MJ2C - driver vfw - dll "m3jp2k32.dll" - out YV12,I420,IYUV - out YUY2,UYVY - out BGR32,BGR24,BGR15 - -; http://www.morgan-multimedia.com/dev/directshow_dec_spec.htm -videocodec m3jpegds - info "Morgan MJPEG" - status crashing - fourcc MJPG mjpg - fourcc mjpa,mjpb,mjpg mjpg ; MOV files - fourcc dmb1 mjpg ; MJPEG by Matrox Rainbow Runner - driver dshow - dll "m3jpegdec.ax" - guid 0x6988b440, 0x8352, 0x11d3, 0x9b, 0xda, 0xca, 0x86, 0x73, 0x7c, 0x71, 0x68 - out I420 - out YUY2,UYVY - out BGR32,BGR24,BGR16,BGR15 - -videocodec vp4 - info "On2 VP4 Personal Codec" - comment "Decodes also VP3" - status working - fourcc VP40 - fourcc VP31,VP30,vp31,vp30 - driver vfwex - dll "vp4vfw.dll" - out YUY2 - out BGR32,BGR24 - -videocodec vp5 - info "On2 VP5 Personal Codec" - status working - fourcc VP50 - driver vfwex - dll "vp5vfw.dll" - out YUY2 - out BGR32,BGR24 - -videocodec vp6 - info "On2 VP6 Personal Codec" - status working - fourcc VP60,VP61,VP62 - driver vfwex - dll "vp6vfw.dll" - out YUY2 - out BGR32,BGR24 - -videocodec vp7 - info "On2 VP7 Personal Codec" - status working - fourcc VP70 - driver vfwex - dll "vp7vfw.dll" - out YUY2 - out BGR32,BGR24 - - -videocodec vivd2 - info "SoftMedia ViVD V2 codec Vfw" - status working - fourcc GXVE,gxve - driver vfw - dll "ViVD2.dll" - out YUY2,YV12,I420,YVU9 - out BGR32,BGR24,BGR15 - -videocodec winx - info "Winnov Videum winx codec" - status working - fourcc WINX - driver vfwex - dll "wnvwinx.dll" - out BGR32,BGR24,BGR15 - -videocodec wnv1 - info "Winnov Videum wnv1 codec" - status working - fourcc WNV1 - driver vfwex - dll "wnvplay1.dll" - out BGR32,BGR24,BGR15 - -videocodec vdom - info "VDOWave codec" - status working - fourcc VDOM,VDOW - driver vfw - dll "vdowave.drv" ; Need also VDODEC32.dll and DECVW_32.DLL - out BGR24 - -videocodec lsv - info "Vianet Lsvx Video Decoder" - status working - fourcc lsvx - fourcc lsvm - fourcc lsvc - driver vfw - dll "lsvxdec.dll" - out BGR32,BGR24,BGR16 flip - -videocodec vsslight - info "VSS Codec Light" - status working - fourcc VSSV - driver vfw - dll "vsslight.dll" - out BGR24 flip - -videocodec vssh264 - info "VSS H.264" - status working - fourcc VSSH - driver vfw - dll "vssh264.dll" ; need also vssh264core.dll, vssh264dec.dll - out BGR24 flip - -videocodec vsswlt - info "VSS Wavelet Video Codec" - status working - fourcc VSSW - driver vfw - dll "vsswlt.dll" - out BGR24 flip - -videocodec blackmagic - info "Blackmagic 10-bit" - status working - comment "requires libguide40.dll" - fourcc r210 - driver vfw - dll "BMDCodecLib.dll" - out BGR32,RGB32 - -; =============== Native but buggy stuff == - -videocodec divx4 - info "DivX-6.1.1 (requires libstc++.so from GCC-3.4.x)" - comment "with buggy postprocessing" - status working - fourcc DYUV,dyuv - fourcc DIV3,div3 - fourcc DIV4,div4 - fourcc DIV5,div5 - fourcc DIV6,div6 - fourcc DIVX,divx - fourcc DX50,dx50 - driver divx4 - dll "libdivx.so" - out YV12,I420,IYUV - -; =============== XANIM DLL's ============= - -videocodec indeo5xa - info "Intel Indeo 5" - status working - fourcc IV50,iv50 - driver xanim - dll "vid_iv50.xa" - out YV12,I420,IYUV - -videocodec indeo4xa - info "Intel Indeo 4.1" - status working - fourcc IV41,iv41 - driver xanim - dll "vid_iv41.xa" - out YV12,I420,IYUV - -videocodec indeo3xa - info "Intel Indeo 3.1/3.2" - status working - fourcc IV31,iv31 - fourcc IV32,iv32 - driver xanim - dll "vid_iv32.xa" - out YV12,I420,IYUV - -videocodec cvidxa - info "Radius Cinepak Video" - status working - fourcc cvid - driver xanim - dll "vid_cvid.xa" - out YV12,I420,IYUV - -videocodec 3ivXxa - info "3ivX Delta 3.5" - status working - fourcc 3IV1 - driver xanim - dll "vid_3ivX.xa" - out YV12,I420,IYUV - -videocodec h263xa - info "CCITT H.263" - status working - fourcc H263,h263 - fourcc viv1 H263 - fourcc VIVO,vivo H263 - driver xanim - dll "vid_h263.xa" - out YV12,I420,IYUV - -videocodec h261xa - info "CCITT H.261" - status untested - fourcc H261,h261 - driver xanim - dll "vid_h261.xa" - out YV12,I420,IYUV - -videocodec cyuvxa - info "Creative CYUV" - status untested - fourcc CYUV,cyuv - driver xanim - dll "vid_cyuv.xa" - out YV12,I420,IYUV - -; ====== QT VIDEO ======== -videocodec qth263 - info "win32/quicktime H.263 decoder" - status crashing - fourcc h263 - driver qtvideo - dll "QuickTime.qts" - out YUY2 - -videocodec qtrlerpza - info "win32/quicktime RLE/RPZA decoder" - comment "no colorspace accepted" - status crashing - fourcc rpza - format 0x20656C72 ; "rle " - driver qtvideo - dll "QuickTime.qts" - out BGR32,BGR24,BGR15 - -videocodec qtvp3 - info "win32/quicktime VP3 decoder" - status crashing - fourcc VP31 - driver qtvideo - dll "On2_VP3.qtx" - out YUY2 - -videocodec qtzygo - info "win32/quicktime ZyGo decoder" - status buggy - comment "wrong colors" - fourcc ZyGo,zygo,lsvx - driver qtvideo - dll "ZyGoVideo.qtx" - out BGR32,RGB32 - -videocodec qtbhiv - info "win32/quicktime BeHereiVideo decoder" - comment "sample file wanted!" - status untested - fourcc bhiv - driver qtvideo - dll "BeHereiVideo.qtx" - out YUY2 - -videocodec qtcvid - info "win32/quicktime Cinepak decoder" - status working - fourcc cvid - driver qtvideo - dll "QuickTime.qts" - out YUY2 - -videocodec qtindeo - info "win32/quicktime Indeo decoder" - status crashing - fourcc IV31,iv31 - fourcc IV32,iv32 - fourcc IV41 - driver qtvideo - dll "QuickTime.qts" - out YUY2 - -videocodec qtmjpeg - info "win32/quicktime MJPEG decoder" - status crashing - fourcc dmb1 - fourcc mjpa - fourcc mjpb - driver qtvideo - dll "QuickTime.qts" - out YUY2 - -videocodec qtmpeg4 - info "win32/quicktime MPEG-4 decoder" - status crashing - fourcc mp4v - driver qtvideo - dll "QuickTime.qts" - out YUY2 - -videocodec qtsvq3 - info "win32/quicktime SVQ3 decoder" - status working - fourcc SVQ3 - driver qtvideo - dll "QuickTimeEssentials.qtx" - out YUY2 - -videocodec qtsvq1 - info "win32/quicktime SVQ1 decoder" - status buggy - fourcc SVQ1 - driver qtvideo - dll "QuickTime.qts" - out YVU9 - -videocodec qtavui - info "win32/quicktime Avid Meridien Uncompressed" - status working - fourcc AVUI - driver qtvideo - dll "AvidQTAVUICodec.qtx" - out YUY2 - -videocodec qt261 - info "QuickTime H.261 video decoder" - status working - fourcc H261,h261 - driver qtvideo - dll "QuickTime.qts" - out YUY2 - -videocodec qt3ivx - info "win32/quicktime 3IV1 (3ivx) decoder" - status working - fourcc 3IV1 - driver qtvideo - dll "3ivx Delta 3.5.qtx" - out YUY2 - -videocodec qtactl - info "Win32/QuickTime Streambox ACT-L2" - status working - fourcc ACTL - driver qtvideo - dll ACTLComponent.qtx - out YUY2 - -videocodec theora - info "Theora (free, reworked VP3)" - status working - fourcc theo,Thra - format 0xFFFC - driver theora - dll libtheora - out YV12 - -videocodec sp6x - info "SP6x codec" - status working - fourcc SP60,SP61,SP62 - driver vfw - dll "sp6x_32.dll" - out BGR24 flip - -videocodec zmbv - info "Zip Motion-Block Video" - status working - fourcc ZMBV - driver vfw - dll "zmbv.dll" - out BGR24,BGR15,BGR8 flip - -; =============== FFMPEG MPEG CODECS ========================= - -videocodec ffmjpeg - info "FFmpeg MJPEG decoder" - status working - fourcc MJPG,mjpg - fourcc AVRn,AVDJ ; AVID - fourcc ADJV ; Avid Motion JPEG - fourcc jpeg,JPEG ; MOV photo-jpeg - fourcc mjpa,MJPA ; Apple MJPEG-A (Quicktime) - fourcc jfif,JFIF ; SMJPEG (Loki) - fourcc ijpg,IJPG ; -mf type=jpeg - fourcc gepj,GEPJ ; some avis have swapped fourcc - fourcc jpgl,JPGL ; lossless jpeg (pegasus codec) - fourcc ljpg,LJPG ; lossless jpeg - fourcc dmb1,DMB1 ; MJPEG by Matrox Rainbow Runner - fourcc MJLS ; JPEG-LS custom FOURCC for avi - encoder - fourcc MMJP,QIVG - fourcc ACDV ; ACDSee jpeg - fourcc SLMJ ; SL M-JPEG - fourcc MVJP ; Midvid JPEG Video Codec - fourcc IJLV ; Intel JPEG Library Video Codec - fourcc avi1,avi2 - fourcc MTSJ - driver ffmpeg - dll mjpeg - out YV12,I420,IYUV - out BGR32 ; lossless JPEG - out RGB24 ; JPEG-LS - out Y800 - -videocodec ffmjpegb - info "FFmpeg MJPEG-B decoder" - status working - fourcc mjpb,MJPB ; Apple MJPEG-B (Quicktime) - driver ffmpeg - dll mjpegb - out 444P - out 422P - out YUY2 ; queryed (conversion from yuv422p) - out YV12,I420,IYUV - -videocodec ffi263 - info "FFmpeg I263 decoder" - status working - fourcc I263,i263 - driver ffmpeg - dll h263i - out YV12,I420,IYUV - -videocodec ffh263 - info "FFmpeg H263+ decoder" - status working - fourcc T263 - fourcc D263 ; DEC H263 - fourcc ILVR ; ITU H263+ - fourcc L263 ; Lead H263 - fourcc VX1K ; Agora Labs VX1000S H263 - fourcc H263,h263 - fourcc M263,m263 - fourcc S263,s263 - fourcc U263,u263 - fourcc X263,x263 - fourcc viv1,VIV1 - driver ffmpeg - dll h263 - out YV12,I420,IYUV - -videocodec ffh261 - info "CCITT H.261" - status working - fourcc H261,h261 - driver ffmpeg - dll h261 - out YV12 - -videocodec rv40 - info "Linux RealPlayer 9 RV40 decoder" - status working - fourcc RV40,rv40 - driver realvid - dll "/opt/RealPlayer8/Codecs/drv4.so.6.0" - out I420 - -videocodec rv30 - info "RealPlayer 8 RV30 decoder" - status working - fourcc RV30,rv30 - driver realvid - dll "/opt/RealPlayer8/Codecs/drv3.so.6.0" - out I420 - -videocodec rv20 - info "RealPlayer 8 RV20 decoder" - status working - fourcc RV20,rv20 - driver realvid - dll "/opt/RealPlayer8/Codecs/drv2.so.6.0" - out I420 - -videocodec ffrv10 - info "FFmpeg RV10 decoder" - status working - fourcc RV10,rv10 - fourcc RV13,rv13 - driver ffmpeg - dll rv10 - out YV12,I420,IYUV - -videocodec ffrv20 - info "FFmpeg RV20 decoder" - status untested - fourcc RV20,rv20 - fourcc RVTR - driver ffmpeg - dll rv20 - out YV12,I420,IYUV - -videocodec ffdivx - info "FFmpeg DivX ;-) (MS MPEG-4 v3)" - status working - fourcc MPG3,mpg3 - fourcc MP43,mp43 ; M$ MPEG4 v3 (fourcc mapping to div3) - fourcc DIV3,div3 - fourcc DIVF,divf ; divx4.12 - fourcc DIV4,div4 - fourcc DIV5,div5 ; DivX 3.20 - fourcc DIV6,div6 ; -||- - fourcc AP41,ap41 ; AngelPotion stuff - fourcc COL0,col0 - fourcc COL1,col1 ; Cool codec (based on mpg4ds32.ax) - fourcc 3IVD,3ivd ; divxdoctored files (3ivx.com) - fourcc DVX3 - driver ffmpeg - dll msmpeg4 - out YV12,I420,IYUV - -videocodec ffmp42 - info "FFmpeg M$ MPEG-4 v2" - status working - fourcc DIV1,div1 - fourcc DIV2,div2 - fourcc MP42,mp42 - driver ffmpeg - dll msmpeg4v2 - out YV12,I420,IYUV - -videocodec ffmp41 - info "FFmpeg M$ MPEG-4 v1" - status working - fourcc DIV1,div1 - fourcc MPG4,mpg4 - driver ffmpeg - dll msmpeg4v1 - out YV12,I420,IYUV - -videocodec ffwmv1 - info "FFmpeg M$ WMV1/WMV7" - status working - fourcc WMV1,wmv1 - driver ffmpeg - dll wmv1 - out YV12,I420,IYUV - -videocodec ffwmv2 - info "FFmpeg M$ WMV2/WMV8" - status buggy - fourcc WMV2,wmv2 - driver ffmpeg - dll wmv2 - out YV12,I420,IYUV - -videocodec ffhuffyuv - info "FFHuffYUV" - status working - fourcc HFYU,hfyu - fourcc FFVH,ffvh - driver ffmpeg - dll huffyuv - out YV12,YUY2,422P - out BGR32,BGR24 - -videocodec ffcyuv - info "Creative YUV" - status working - fourcc cyuv,CYUV - driver ffmpeg - dll cyuv - out 411P - -videocodec ffaura - info "Auravision Aura (libavcodec)" - status working - fourcc aura,AURA - driver ffmpeg - dll "aura" - out 411P - -videocodec ffaura2 - info "Auravision Aura 2 (libavcodec)" - status working - fourcc aur2,AUR2 - driver ffmpeg - dll "aura2" - out 422P - -videocodec ffsvq1 - info "Sorenson video codec v1" - status working - fourcc SVQ1,svq1 - driver ffmpeg - dll svq1 - out YVU9 - -videocodec ffr210 - info "FFmpeg R210 - 10-bit RGB" - status working - fourcc r210 - driver ffmpeg - dll "r210" - out RGB48BE,RGB48LE - -videocodec ff4xm - info "FFmpeg 4XM video" - status working - fourcc 4XMV,4xmv - driver ffmpeg - dll 4xm - out BGR16 - -videocodec ffflv - info "FFmpeg Flash video" - status working - fourcc FLV1,flv1 - driver ffmpeg - dll flv - out YV12 - -videocodec ffh264 - info "FFmpeg H.264" - status working - fourcc H264,h264 - fourcc X264,x264 - fourcc avc1,AVC1 - fourcc davc,DAVC - format 0x10000005 - driver ffmpeg - dll h264 - out YV12,I420,IYUV - - -videocodec ffodivx - info "FFmpeg OpenDivX" - status working - fourcc FMP4,fmp4 - fourcc DIVX,divx - fourcc DIV1,div1 - fourcc MP4S,mp4s ; ISO MPEG-4 Video V1 - fourcc M4S2,m4s2 - fourcc xvid,XVID - fourcc XviD,XVIX - fourcc DX50,dx50 - fourcc BLZ0,blz0 - fourcc mp4v,MP4V - format 0x4 - format 0x10000004 ; mpeg 4 es - fourcc UMP4,ump4 - fourcc RMP4,rmp4 - fourcc 3IV2,3iv2 ; 3ivx Delta 4 - fourcc DXGM,dxgm - fourcc SEDG ; diskless camcorder Samsung Miniket VP-M110 - fourcc SMP4,smp4 ; Samsung SMP4 video codec - fourcc VIDM ; vidm 4.01 codec - fourcc m4cc,M4CC - fourcc hdx4,HDX4 - fourcc FVFW,fvfw - fourcc FFDS - fourcc DCOD,MVXM,EM4A,PM4V - fourcc M4T3,DMK2,DIGI,INMC - fourcc EPHV,SN40 - driver ffmpeg - dll mpeg4 ;opendivx - out YV12,I420,IYUV - -videocodec ffmpeg1 - info "FFmpeg MPEG 1" - status working - format 0x10000001 ; mpeg 1 - fourcc mpg1,MPG1 - fourcc PIM1 ; Pinnacle hardware-mpeg1 - fourcc VCR2 - fourcc MPEG - driver ffmpeg - dll "mpeg1video" - out YV12,I420,IYUV - -videocodec ffmpeg2 - info "FFmpeg MPEG 2" - status working - format 0x10000002 ; mpeg 2 - fourcc mpg2,MPG2 - fourcc "DVR " - fourcc hdv2 - fourcc MPEG - fourcc hdv3 ; HDV 1080i50 - fourcc mx5p ; MPEG IMX 625/50 (50 Mb/s) - fourcc MMES,mmes ; matrox mpeg2 in avi - driver ffmpeg - dll "mpeg2video" - out YV12,I420,IYUV - out 422P,444P - -videocodec ffmpeg12 - info "FFmpeg-1" - status working - format 0x10000001 ; mpeg 1 - format 0x10000002 ; mpeg 2 - fourcc mpg1,MPG1 - fourcc mpg2,MPG2 - fourcc "DVR " - fourcc hdv2,HDV2 - fourcc PIM1 - fourcc VCR2 - driver ffmpeg - dll "mpegvideo" - out YV12,I420,IYUV - out 422P,444P - -;videocodec ffmpeg12mc -; info "FFmpeg MPEG 1/2 (XvMC)" -; status buggy -; format 0x10000001 ; mpeg 1 -; format 0x10000002 ; mpeg 2 -; fourcc mpg1,mpg2 -; fourcc MPG1,MPG2 -; fourcc PIM1 ; Pinnacle hardware-mpeg1 -; driver ffmpeg -; dll "mpegvideo_xvmc" -; out IDCT_MPEG2 -; out MOCO_MPEG2 - - -videocodec ffdv - info "Raw DV decoder using libavcodec" - status working - fourcc CDVC,cdvc - fourcc CDVH,cdvh ; Canopus DVCPRO HD - fourcc DVSD,dvsd ; PAL - fourcc DVCS,dvcs ; NTSC ? - fourcc "dvcp" ; PAL DV in .mov - fourcc "dvc " ; NTSC DV in .mov - fourcc dvpp ; DVCPRO - PAL - fourcc dv50 ; DVCPRO 50 - fourcc dv5n ; DVCPRO 50 NTSC in .mov - fourcc dv5p ; DVCPRO 50 PAL in .mov - fourcc AVdv,AVd1 - fourcc dvhq,dvhp - fourcc dvh5,dvh6,dvh3 - fourcc dvhd,dvsl,dv25 - fourcc dvs1,dvh1 - driver ffmpeg - dll dvvideo - out YV12,411P - -videocodec ffindeo3 - info "FFmpeg Intel Indeo 3.1/3.2" - status working - fourcc IV31,iv31 - fourcc IV32,iv32 - driver ffmpeg - dll indeo3 - out YVU9 - -videocodec ffqtrle - info "Quicktime Animation (RLE)" - status working - fourcc "rle " - driver ffmpeg - dll "qtrle" - out BGR32,RGB24,BGR15,BGR8 - -videocodec ffvp3 - info "FFmpeg On2 VP3-Codec" - status untested - fourcc VP30,vp30,VP31,vp31 - fourcc "VP3 " ; (used in .nsv files) - driver ffmpeg - dll vp3 - out YV12 - -videocodec ffrpza - info "Quicktime Apple Video" - status working - fourcc rpza,azpr - driver ffmpeg - dll "rpza" - out BGR15 - -videocodec ffsmc - info "Apple Graphics (SMC) codec" - status working - fourcc "smc " - driver ffmpeg - dll "smc" - out BGR8 - -videocodec ff8bps - info "Planar RGB (Photoshop)" - status working - fourcc 8BPS - driver ffmpeg - dll "8bps" - out BGR32,BGR24,BGR8 - -videocodec ffmsrle - info "Microsoft RLE" - status working - format 0x1 - format 0x2 - fourcc WRLE - driver ffmpeg - dll "msrle" - out BGR8 - -videocodec ffcvid - info "Cinepak Video (native codec)" - status working - fourcc cvid,CVID - driver ffmpeg - dll "cinepak" - out YV12,BGR8 - -videocodec ffsvq3 - info "FFmpeg SVQ3" - status working - fourcc SVQ3 - driver ffmpeg - dll svq3 - out YV12,I420,IYUV - -videocodec ffv1 - info "FFV1" - status working - fourcc FFV1 - driver ffmpeg - dll ffv1 - out YV12,I420,IYUV,YVU9,411P,444P,422P - out BGR32 - -videocodec ffsnow - info "FFSNOW (Michael's wavelet codec)" - status working - fourcc snow,SNOW - driver ffmpeg - dll snow - out YV12 - -videocodec ffasv1 - info "FFmpeg ASUS V1" - status working - fourcc ASV1 - driver ffmpeg - dll asv1 - out YV12,I420,IYUV - -videocodec ffasv2 - info "FFmpeg ASUS V2" - status working - fourcc ASV2 - driver ffmpeg - dll asv2 - out YV12,I420,IYUV - -videocodec ffvideo1 - info "Microsoft Video 1 (native codec)" - status working - fourcc cram,CRAM - fourcc msvc,MSVC - fourcc wham,WHAM - driver ffmpeg - dll "msvideo1" - out BGR15,BGR8 - -videocodec ffmszh - info "AVImszh (native codec)" - status working - fourcc MSZH - driver ffmpeg - dll "mszh" - out YV12,YUY2,BGR24 - -videocodec ffzlib - info "AVIzlib (native codec)" - status working - fourcc ZLIB - driver ffmpeg - dll "zlib" - out YV12,YUY2,BGR24 - -videocodec ffvcr1 - info "FFmpeg ATI VCR1" - status working - fourcc VCR1 - driver ffmpeg - dll vcr1 - out YVU9 - -videocodec ffcljr - info "FFmpeg Cirrus Logic AccuPak (CLJR)" - status working - fourcc CLJR - driver ffmpeg - dll cljr - out 411P - -videocodec ffzygo - info "FFmpeg ZyGo" - status untested - fourcc ZyGo - driver ffmpeg - dll h263 - out YV12,I420,IYUV flip - -videocodec fftheora - info "FFmpeg's Theora" - status untested - fourcc theo,Thra - driver ffmpeg - dll "theora" - out YV12 - -videocodec ffduck - info "Duck Truemotion1" - status working - fourcc DUCK - fourcc PVEZ - driver ffmpeg - dll "truemotion1" - out BGR15 - -videocodec ffsp5x - info "SP5x codec - used by Aiptek MegaCam" - status working - fourcc SP53,SP54,SP55,SP56,SP57,SP58 - driver ffmpeg - dll "sp5x" - out YV12 - -videocodec ffultimotion - info "IBM Ultimotion native decoder" - status working - fourcc ULTI - driver ffmpeg - dll "ultimotion" - out YVU9 - -videocodec ffcamtasia - info "TechSmith Camtasia Screen Codec (native)" - status working - fourcc TSCC,tscc - driver ffmpeg - dll "camtasia" - out BGR24,BGR15,BGR8 - -videocodec ffcamstudio - info "CamStudio Screen Codec" - status working - fourcc CSCD,cscd - driver ffmpeg - dll "camstudio" - out BGR32,BGR24,BGR16 - -videocodec ffvixl - info "Miro VideoXL codec" - status working - fourcc VIXL - fourcc PIXL ; this is Pinnacle one - fourcc XIXL - driver ffmpeg - dll xl - out 411P - -videocodec ffqtdrw - info "QuickDraw native decoder" - status working - fourcc qdrw - driver ffmpeg - dll qdraw - out RGB8 - -videocodec ffwv1f - info "WV1F MPEG-4" - status working - fourcc WV1F - driver ffmpeg - dll mpeg4 - out YV12,I420,IYUV flip - -videocodec fflibschroedinger - info "Dirac (through FFmpeg libschroedinger)" - status working - fourcc drac - driver ffmpeg - dll libschroedinger - out I420,IYUV,422P,444P - -videocodec ffaasc - info "Autodesk RLE decoder" - status working - fourcc AASC - driver ffmpeg - dll "aasc" - out BGR24 - -videocodec ffloco - info "LOCO video decoder" - status working - fourcc LOCO - driver ffmpeg - dll "loco" - out 422P,YV12,BGR32,BGR24 - -videocodec ffwnv1 - info "FFmpeg wnv1 native codec" - status working - fourcc WNV1 - driver ffmpeg - dll wnv1 - out 422P - -videocodec ffindeo2 - info "Indeo 2 native decoder" - status working - fourcc RT21 - fourcc IV20 - driver ffmpeg - dll indeo2 - out YVU9 - -videocodec fffraps - info "Lossless Fraps decoder" - status working - fourcc FPS1,fps1 - driver ffmpeg - dll fraps - out YV12,BGR24 - -videocodec ffqpeg - info "Q-Team's QPEG (www.q-team.de)" - status working - comment "BGR8 only!" - fourcc Q1.0,QPEG - fourcc Q1.1,qpeg - driver ffmpeg - dll qpeg - out BGR8 flip - -videocodec ffwmv3 - info "Windows Media Video 9 DMO" - status working - fourcc WMV3,wmv3 - fourcc WMVP,wmvp - driver ffmpeg - dll wmv3 - out YV12,I420,IYUV - -videocodec ffvc9 - info "Windows Media Video 9 DMO" - status untested - fourcc VC-9,vc-9,VC90,vc90 - driver ffmpeg - dll vc9 - out YV12 - -videocodec ffvc1 - info "FFmpeg M$ WVC1" - status buggy - fourcc WVC1,wvc1,WMVA - fourcc vc-1,VC-1 - driver ffmpeg - dll vc1 - out YV12,I420,IYUV - -videocodec fffsv - info "FFmpeg Flash Screen video" - status working - fourcc FSV1 - driver ffmpeg - dll flashsv - out BGR24 - -; works with libavformat right now only -videocodec ffcavs - info "Chinese AVS Video" - status working - fourcc CAVS - fourcc avs2 - driver ffmpeg - dll "cavs" - out I420 - -videocodec ffvmnc - info "FFmpeg VMware video" - status working - fourcc VMnc - driver ffmpeg - dll "VMware video" - out BGR32,BGR15,BGR8 - -videocodec ffvp5 - info "On2 VP5 Personal Codec" - status working - fourcc VP50 - driver ffmpeg - dll "vp5" - out YV12 - -videocodec ffvp6 - info "On2 VP6 Personal Codec" - status working - fourcc VP60,VP61,VP62,VP6F - driver ffmpeg - dll "vp6" - out YV12 flip - -; TODO: -;videocodec ffvp7 -; info "On2 VP7 Personal Codec" -; status working -; fourcc VP70 -; driver ffmpeg -; dll "vp7" -; out YV12 - -videocodec ffsiff - info "FFmpeg Beam Software SIFF decoder" - status working - fourcc VBV1 - driver ffmpeg - dll vb - out BGR8 - -videocodec ffmimic - info "FFmpeg Mimic video" - status working - fourcc ML20 - out I420 - driver ffmpeg - dll "mimic" - -videocodec ffkmvc - fourcc KMVC - out BGR8 - driver ffmpeg - dll "kmvc" - -videocodec ffbmp - info "FFmpeg BMP decoder" - status working - fourcc "bmp " ; for BMP-encoded QuickTime files - format 0x706D62 ; AVI - driver ffmpeg - dll bmp - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 - -videocodec ffgif - info "FFmpeg GIF decoder" - status working - fourcc "gif " ; for GIF-encoded QuickTime files - driver ffmpeg - dll gif - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 - -videocodec fftiff - info "FFmpeg TIFF decoder" - status working - fourcc "tiff" ; for TIFF-encoded QuickTime files - driver ffmpeg - dll tiff - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 - -videocodec ffpcx - info "FFmpeg PCX decoder" - status working - fourcc "pcx " - driver ffmpeg - dll pcx - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 - -videocodec ffpng - info "FFmpeg PNG decoder" - status working - fourcc mpng,MPNG - fourcc "png " ; for PNG-encoded QuickTime files - driver ffmpeg - dll png - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 - -videocodec fftga - info "FFmpeg TGA decoder" - status untested - fourcc mtga,MTGA - fourcc "tga " ; for TGA-encoded QuickTime files - driver ffmpeg - dll targa - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 - -videocodec ffsmkvid - info "FFmpeg Smacker Video" - status working - fourcc SMK2 - fourcc SMK4 - out BGR8 - driver ffmpeg - dll "smackvid" - -videocodec ffzmbv - info "FFmpeg Zip Motion-Block Video" - status working - fourcc ZMBV - driver ffmpeg - dll "zmbv" - out RGB24 - -audiocodec ffqdm2 - info "FFmpeg QDM2 audio decoder" - status working - fourcc QDM2 - driver ffmpeg - dll "qdm2" - -videocodec fffli - info "Autodesk FLI/FLC Animation" - status working - fourcc FLIC ; FLIC is an internal MPlayer FOURCC - driver ffmpeg - dll "flic" - out BGR8 - -videocodec ffnuv - info "NuppelVideo" - status working - fourcc NUV1 ; NUV1 is an internal MPlayer FOURCC - fourcc RJPG - driver ffmpeg - dll nuv - out I420 - -videocodec ffroqvideo - info "Id RoQ File Video Decoder" - status working - fourcc RoQV ; RoQV is an internal MPlayer FOURCC - driver ffmpeg - dll "roqvideo" - out YV12 - -videocodec fftiertexseq - info "FFmpeg Tiertex SEQ" - status working - fourcc TSEQ ; internal MPlayer FourCC - driver ffmpeg - dll "tiertexseqvideo" - out BGR8 - -videocodec ffvmd - info "FFmpeg Sierra VMD video" - status working - fourcc VMDV ; internal MPlayer FourCC - driver ffmpeg - dll "vmdvideo" - out BGR8 - -videocodec ffdsicinvideo - info "FFmpeg Delphine CIN video" - status working - fourcc DCIV ; internal MPlayer FourCC - driver ffmpeg - dll "dsicinvideo" - out BGR8 - -videocodec ffwc3 - info "FFmpeg XAN wc3" - status buggy - fourcc WC3V ; internal MPlayer FourCC - driver ffmpeg - dll "xan_wc3" - out BGR8 - -videocodec ffidcin - info "FFmpeg Id CIN video" - status buggy - fourcc IDCI ; internal MPlayer FourCC - driver ffmpeg - dll "idcinvideo" - out BGR8 - -videocodec ffinterplay - info "FFmpeg Interplay Video" - status buggy - fourcc INPV ; internal MPlayer FourCC - driver ffmpeg - dll "interplayvideo" - out BGR8 - -videocodec ffvqa - info "FFmpeg VQA Video" - status buggy - fourcc VQAV ; internal MPlayer FourCC - driver ffmpeg - dll "vqavideo" - out BGR8 - -videocodec ffamv - info "Modified MJPEG, used in AMV files" - status working - fourcc AMVV ; internal MPlayer FourCC - driver ffmpeg - dll "amv" - out YV12 - -videocodec ffbethsoftvid - info "FFmpeg Bethesda Software VID" - comment "video plays much too fast" - status buggy - fourcc BETH ; internal MPlayer FourCC - driver ffmpeg - dll bethsoftvid - out BGR8 - -videocodec fftxd - info "FFmpeg Renderware TeXture Dictionary decoder" - status working - fourcc TXDV ; internal MPlayer FourCC - driver ffmpeg - dll txd - out BGR32 - -videocodec ffc93 - info "FFmpeg C93 Video" - status buggy - fourcc C93V ; internal MPlayer FourCC - driver ffmpeg - dll c93 - out BGR8 - -videocodec fffrwu - info "FFmpeg Forward Uncompressed Video Codec" - status working - fourcc FRWU - driver ffmpeg - dll "FRWU" - out UYVY - -; ============== RAW (uncompressed) and NULL CODECS ========= - -; these raw codecs are used mostly by tv input -; 0x20776172 is used by Quicktime ('raw ') -; 0x0 is used by AVI -; YV12,RGB|32,RGB|24.. is created by MPlayer - -videocodec rawy800 - info "RAW Y800" - comment "pre-postprocessing support" - status working - driver raw - format 0x0 - format 0x20776172 ; " waY" - fourcc "Y8 " - fourcc y800,Y800 - out Y800 - -videocodec rawyvu9 - info "RAW YVU9" - comment "pre-postprocessing support" - status working - driver raw - format 0x0 - format 0x20776172 - fourcc yvu9,YVU9 - out YVU9 - -videocodec rawif09 - info "RAW IF09" - comment "pre-postprocessing support" - status working - driver raw - format 0x0 - format 0x20776172 - fourcc if09,IF09 - out IF09 - -videocodec rawyv12 - info "RAW YV12" - comment "pre-postprocessing support" - status working - driver raw - format 0x0 - format 0x20776172 - fourcc yv12,YV12 - out YV12 - -videocodec rawi420 - info "RAW I420" - status working - driver raw - format 0x0 - format 0x20776172 - fourcc i420,I420 - out I420 - -videocodec rawyuy2 - info "RAW YUY2" - status working - driver raw - format 0x0 - format 0x20776172 - fourcc yuy2,YUY2 - fourcc vyuy,VYUY - out YUY2 - -videocodec rawuyvy - info "RAW UYVY" - status working - driver raw - format 0x0 - format 0x79757632 - format 0x20776172 - fourcc UYVY # 2vuy as created by QuickTime captures - out UYVY - -videocodec rawrgb32 - info "RAW RGB32" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x52474220 - out RGB32 - -videocodec rawrgb24 - info "RAW RGB24" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x52474218 - out RGB24 - -videocodec rawrgb16 - info "RAW RGB16" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x52474210 - out RGB16 - -videocodec rawrgb15 - info "RAW RGB16" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x5247420F - out RGB16 - -videocodec rawrgb8 - info "RAW RGB8" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x52474208 - out RGB8 - -videocodec rawbgr32 - info "RAW BGR32" - status working - driver raw - format 0x0 - format 0x42475220 - out BGR32 - -videocodec rawbgr24 - info "RAW BGR24" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x42475218 - out BGR24 - -videocodec rawbgr16 - info "RAW BGR16" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x42475210 - out BGR16 - -videocodec rawbgr15 - info "RAW BGR15" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x4247520F - out BGR15 - -videocodec rawbgr8 - info "RAW BGR8" - status working - driver raw - format 0x0 - format 0x20776172 - format 0x42475208 - out BGR8 - -videocodec null - info "NULL codec (no decoding!)" - status working - comment "for unknown/unsupported codecs or testing" - driver null - out YV12 - out I420 - out YUY2 - out UYVY - out BGR32,BGR24,BGR16,BGR15 - -;============================================================================= -; AUDIO CODECS -;============================================================================= -audiocodec pcm - info "Uncompressed PCM" - status working - format 0x1 - format 0x3 ; IEEE float - format 0xfffe ; Extended - fourcc "raw " ; (MOV files) - fourcc "twos","sowt" ; (MOV files) - fourcc "fl32","23lf" ; (MOV files) - fourcc "NONE" ; (MOV files from Kodak CX6320) - fourcc "in24","42ni" ; (MOV files) - fourcc "in32","23ni" ; (MOV files) -;;;; these are for hardware support only: (alaw,ulaw,ima-adpcm,mpeg,ac3) -; format 0x6 -; format 0x7 -; format 0x11 -; format 0x50 -; format 0x2000 -;;;; - driver pcm - dll "uncompressed" - -;=========== NATIVE CODECS ============= - -audiocodec mp3 - info "MPEG layer-123" - status working - comment "Optimized to MMX/SSE/3Dnow!" - format 0x50 - format 0x55 - fourcc ".mp3" ; CBR/VBR MP3 (MOV files) - format 0x5500736d ; "ms\0\x55" older mp3 fcc (MOV files) - fourcc "MP3 " ; used in .nsv files - fourcc "LAME" ; used in mythtv .nuv files - driver mp3lib - dll "mp3lib (mpglib)" - flags seekable - -audiocodec dvdpcm - info "Uncompressed DVD PCM" - status working - format 0x10001 - driver dvdpcm - dll "uncompressed" - -audiocodec a52 - info "AC3-liba52" - status working - format 0x2000 - fourcc dnet - driver liba52 - dll "liba52" - -audiocodec hwac3 - info "AC3 through SPDIF" - status working - format 0x2000 - fourcc dnet - driver hwac3 - -audiocodec dts - info "DTS Coherent Acoustics" - status working - format 0x2001 - driver libdca - dll "libdca" - -audiocodec hwdts - info "DTS through SPDIF" - status working - format 0x2001 - driver hwac3 - -audiocodec vorbis - info "OggVorbis Audio Decoder" - status working - comment "OggVorbis driver using libvorbis" - fourcc vrbs - format 0x566F - driver libvorbis - dll "libvorbis" - flags seekable -; acm codec doesn't work, haven't tried zorannt dshow codec -; driver acm -; dll "vorbis.acm" - -audiocodec TwinVQ - info "VQF codec by NTTLabs" - status working - fourcc TWIN - driver vqf - dll "tvqdec.dll" - -audiocodec libdv - info "raw DV audio (libdv)" - status working - fourcc RADV - driver libdv - dll libdv.so.2 -;==========RealCodecs================== - -audiocodec ra144 - info "RealAudio 1.0" - status working - fourcc 14_4 - driver realaud - dll "/opt/RealPlayer8/Codecs/14_4.so.6.0" - -audiocodec ra288 - info "RealAudio 2.0" - status working - fourcc 28_8 - driver realaud - dll "/opt/RealPlayer8/Codecs/28_8.so.6.0" - -audiocodec ra10cook - info "RealPlayer 10 COOK audio" - comment "supports cook 5.1" - status working - fourcc cook - driver realaud - dll "/opt/RealPlayer10/Codecs/cook.so" - -audiocodec racook - info "RealAudio COOK" - status working - fourcc cook - driver realaud - dll "/opt/RealPlayer8/Codecs/cook.so.6.0" - -audiocodec ra10sipr - info "RealPlayer 10 RealAudio Sipro" - status working - fourcc sipr - driver realaud - dll "/opt/RealPlayer10/Codecs/sipr.so" - -audiocodec rasipr - info "RealAudio Sipro" - status working - fourcc sipr - driver realaud - dll "/opt/RealPlayer8/Codecs/sipr.so.6.0" - -audiocodec ra10atrc - info "RealPlayer 10 RealAudio ATRAC3" - status working - fourcc atrc - driver realaud - dll "/opt/RealPlayer10/Codecs/atrc.so" - -audiocodec raatrc - info "RealAudio ATRAC3" - status working - fourcc atrc - driver realaud - dll "/opt/RealPlayer8/Codecs/atrc.so.6.0" - - -audiocodec wma9dmo - info "Windows Media Audio 9 DMO" - status working - format 0x162 - format 0x163 - driver dmo - dll "wma9dmod.dll" - guid 0x27ca0808, 0x01f5, 0x4e7a, 0x8b, 0x05, 0x87, 0xf8, 0x07, 0xa2, 0x33, 0xd1 - -audiocodec wmadmo - info "Windows Media Audio DMO" - status working - format 0x160 - format 0x161 - format 0x162 - format 0x163 - driver dmo - dll "wmadmod.dll" - guid 0x2eeb4adf, 0x4578, 0x4d10, 0xbc, 0xa7, 0xbb, 0x95, 0x5f, 0x56, 0x32, 0x0a - -audiocodec wma9spdmo - info "Windows Media Audio 9 Speech DMO" - status working - format 0xa - driver dmo - dll "wmspdmod.dll" - guid 0x874131cb, 0x4ecc, 0x443b, 0x89, 0x48, 0x74, 0x6b, 0x89, 0x59, 0x5d, 0x20 - -audiocodec wma9spdshow - info "Windows Media Audio 9 Speech DShow" - s... [truncated message content] |
From: <nic...@us...> - 2012-11-14 14:34:31
|
Revision: 366 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=366&view=rev Author: nickols_k Date: 2012-11-14 14:34:20 +0000 (Wed, 14 Nov 2012) Log Message: ----------- fix some security holes + constantization Modified Paths: -------------- mplayerxp/libao2/ao_alsa9.c mplayerxp/libao2/ao_arts.c mplayerxp/libao2/ao_esd.c mplayerxp/libao2/ao_jack.c mplayerxp/libao2/ao_nas.c mplayerxp/libao2/ao_null.c mplayerxp/libao2/ao_openal.c mplayerxp/libao2/ao_oss.c mplayerxp/libao2/ao_sdl.c mplayerxp/libao2/ao_wav.c mplayerxp/libao2/audio_out.c mplayerxp/libao2/audio_out.h mplayerxp/libao2/audio_out_internal.h mplayerxp/libao2/mixer.c mplayerxp/libao2/mixer.h mplayerxp/libmpcodecs/ad.c mplayerxp/libmpcodecs/ad_ffmpeg.c mplayerxp/libmpcodecs/dec_audio.c mplayerxp/libmpcodecs/dec_audio.h mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpcodecs/vd.c mplayerxp/libmpcodecs/vd_ffmpeg.c mplayerxp/libmpdemux/cache2.c mplayerxp/libmpdemux/cdd.h mplayerxp/libmpdemux/cdda.c mplayerxp/libmpdemux/demux_aiff.c mplayerxp/libmpdemux/demux_asf.c mplayerxp/libmpdemux/demux_audio.c mplayerxp/libmpdemux/demux_avi.c mplayerxp/libmpdemux/demux_bmp.c mplayerxp/libmpdemux/demux_dv.c mplayerxp/libmpdemux/demux_film.c mplayerxp/libmpdemux/demux_fli.c mplayerxp/libmpdemux/demux_lavf.c mplayerxp/libmpdemux/demux_mkv.c mplayerxp/libmpdemux/demux_mov.c mplayerxp/libmpdemux/demux_mpg.c mplayerxp/libmpdemux/demux_mpxp64.c mplayerxp/libmpdemux/demux_nsv.c mplayerxp/libmpdemux/demux_null.c mplayerxp/libmpdemux/demux_nuv.c mplayerxp/libmpdemux/demux_ogg.c mplayerxp/libmpdemux/demux_pva.c mplayerxp/libmpdemux/demux_ra.c mplayerxp/libmpdemux/demux_rawaudio.c mplayerxp/libmpdemux/demux_rawvideo.c mplayerxp/libmpdemux/demux_real.c mplayerxp/libmpdemux/demux_roq.c mplayerxp/libmpdemux/demux_smjpeg.c mplayerxp/libmpdemux/demux_ts.c mplayerxp/libmpdemux/demux_ty.c mplayerxp/libmpdemux/demux_viv.c mplayerxp/libmpdemux/demux_vqf.c mplayerxp/libmpdemux/demux_y4m.c mplayerxp/libmpdemux/demuxer.c mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpdemux/s_cdd.c mplayerxp/libmpdemux/s_dvdnav.c mplayerxp/libmpdemux/s_dvdread.c mplayerxp/libmpdemux/s_ffmpeg.c mplayerxp/libmpdemux/s_file.c mplayerxp/libmpdemux/s_ftp.c mplayerxp/libmpdemux/s_network.c mplayerxp/libmpdemux/s_null.c mplayerxp/libmpdemux/s_oss.c mplayerxp/libmpdemux/s_rtsp.c mplayerxp/libmpdemux/s_tv.c mplayerxp/libmpdemux/s_udp.c mplayerxp/libmpdemux/s_vcdnav.c mplayerxp/libmpdemux/stheader.h mplayerxp/libmpdemux/stream.c mplayerxp/libmpdemux/stream.h mplayerxp/libvo/video_out.c mplayerxp/libvo/video_out.h mplayerxp/libvo/video_out_internal.h mplayerxp/libvo/vo_dga.c mplayerxp/libvo/vo_fbdev.c mplayerxp/libvo/vo_null.c mplayerxp/libvo/vo_opengl.c mplayerxp/libvo/vo_sdl.c mplayerxp/libvo/vo_vesa.c mplayerxp/libvo/vo_x11.c mplayerxp/libvo/vo_xv.c mplayerxp/libvo/vo_xvidix.c mplayerxp/libvo/vosub_vidix.c mplayerxp/libvo/vosub_vidix.h mplayerxp/libvo/x11_common.c mplayerxp/libvo/x11_common.h mplayerxp/mplayerxp.c mplayerxp/postproc/af.c mplayerxp/postproc/af.h mplayerxp/postproc/af_ao2.c mplayerxp/postproc/af_format.c mplayerxp/postproc/aflib.c mplayerxp/postproc/libmenu/menu_console.c mplayerxp/postproc/vf.c mplayerxp/postproc/vf_expand.c mplayerxp/postproc/vf_unsharp.c mplayerxp/xmpcore/xmp_adecoder.c mplayerxp/xmpcore/xmp_aplayer.c mplayerxp/xmpcore/xmp_vdecoder.c Modified: mplayerxp/libao2/ao_alsa9.c =================================================================== --- mplayerxp/libao2/ao_alsa9.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_alsa9.c 2012-11-14 14:34:20 UTC (rev 366) @@ -131,7 +131,7 @@ } /* to set/get/query special features/parameters */ -static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc __FASTCALL__ control(const ao_data_t* ao,int cmd, long arg) { priv_t*priv=ao->priv; int rval; @@ -729,7 +729,7 @@ #endif /* I/O error handler */ -static int __FASTCALL__ xrun(ao_data_t* ao,const char *str_mode) +static int __FASTCALL__ xrun(const ao_data_t* ao,const char *str_mode) { priv_t*priv=ao->priv; int err; @@ -760,10 +760,10 @@ return 1; /* ok, data should be accepted again */ } -static unsigned __FASTCALL__ play_normal(ao_data_t* ao,any_t* data, unsigned len); -static unsigned __FASTCALL__ play_mmap(ao_data_t* ao,any_t* data, unsigned len); +static unsigned __FASTCALL__ play_normal(ao_data_t* ao,const any_t* data, unsigned len); +static unsigned __FASTCALL__ play_mmap(ao_data_t* ao,const any_t* data, unsigned len); -static unsigned __FASTCALL__ play(ao_data_t* ao,any_t* data, unsigned len, unsigned flags) +static unsigned __FASTCALL__ play(ao_data_t* ao,const any_t* data, unsigned len, unsigned flags) { unsigned result; UNUSED(flags); @@ -780,7 +780,7 @@ thanxs for marius <ma...@ro...> for giving us the light ;) */ -static unsigned __FASTCALL__ play_normal(ao_data_t* ao,any_t* data, unsigned len) +static unsigned __FASTCALL__ play_normal(ao_data_t* ao,const any_t* data, unsigned len) { priv_t*priv=ao->priv; //priv->bytes_per_sample is always 4 for 2 chn S16_LE @@ -834,7 +834,7 @@ * 'An overview of the ALSA API' http://people.debian.org/~joshua/x66.html * and some help by Paul Davis <pb...@op...> */ -static unsigned __FASTCALL__ play_mmap(ao_data_t* ao,any_t* data, unsigned len) +static unsigned __FASTCALL__ play_mmap(ao_data_t* ao,const any_t* data, unsigned len) { priv_t*priv=ao->priv; snd_pcm_sframes_t commitres, frames_available; @@ -944,7 +944,7 @@ GET_SPACE_UNDEFINED }space_status; /* how many byes are mp_free in the buffer */ -static unsigned get_space(ao_data_t* ao) +static unsigned get_space(const ao_data_t* ao) { priv_t*priv=ao->priv; snd_pcm_status_t *status; @@ -1013,7 +1013,7 @@ } /* delay in seconds between first and last sample in buffer */ -static float get_delay(ao_data_t* ao) +static float get_delay(const ao_data_t* ao) { priv_t*priv=ao->priv; if (priv->handler) { Modified: mplayerxp/libao2/ao_arts.c =================================================================== --- mplayerxp/libao2/ao_arts.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_arts.c 2012-11-14 14:34:20 UTC (rev 366) @@ -45,7 +45,7 @@ LIBAO_EXTERN(arts) -static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc control(const ao_data_t* ao,int cmd, long arg) { UNUSED(ao); UNUSED(cmd); @@ -143,7 +143,7 @@ arts_free(); } -static unsigned play(ao_data_t* ao,any_t* data,unsigned len,unsigned flags) +static unsigned play(ao_data_t* ao,const any_t* data,unsigned len,unsigned flags) { arts_stream_t stream=ao->priv; UNUSED(flags); @@ -158,13 +158,13 @@ static void audio_resume(ao_data_t* ao) { UNUSED(ao); } static void reset(ao_data_t* ao) { UNUSED(ao); } -static unsigned get_space(ao_data_t* ao) +static unsigned get_space(const ao_data_t* ao) { arts_stream_t stream=ao->priv; return arts_stream_get(stream, ARTS_P_BUFFER_SPACE); } -static float get_delay(ao_data_t* ao) +static float get_delay(const ao_data_t* ao) { arts_stream_t stream=ao->priv; return ((float) (ao->buffersize - arts_stream_get(stream, Modified: mplayerxp/libao2/ao_esd.c =================================================================== --- mplayerxp/libao2/ao_esd.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_esd.c 2012-11-14 14:34:20 UTC (rev 366) @@ -93,7 +93,7 @@ /* * to set/get/query special features/parameters */ -static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc control(const ao_data_t* ao,int cmd, long arg) { priv_t*priv=ao->priv; esd_player_info_t *esd_pi; @@ -323,7 +323,7 @@ * it should round it down to outburst*n * return: number of bytes played */ -static unsigned play(ao_data_t* ao,any_t* data, unsigned len, unsigned flags) +static unsigned play(ao_data_t* ao,const any_t* data, unsigned len, unsigned flags) { priv_t*priv=ao->priv; unsigned offs; @@ -422,7 +422,7 @@ /* * return: how many bytes can be played without blocking */ -static unsigned get_space(ao_data_t* ao) +static unsigned get_space(const ao_data_t* ao) { priv_t*priv=ao->priv; struct timeval tmout; @@ -467,7 +467,7 @@ /* * return: delay in seconds between first and last sample in buffer */ -static float get_delay(ao_data_t* ao) +static float get_delay(const ao_data_t* ao) { priv_t*priv=ao->priv; struct timeval now; Modified: mplayerxp/libao2/ao_jack.c =================================================================== --- mplayerxp/libao2/ao_jack.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_jack.c 2012-11-14 14:34:20 UTC (rev 366) @@ -83,7 +83,7 @@ * * If there is not enough room, the priv->buffer is filled up */ -static int write_buffer(ao_data_t* ao,unsigned char* data, int len) { +static int write_buffer(ao_data_t* ao,const unsigned char* data, int len) { priv_t*priv=ao->priv; int _free = av_fifo_space(priv->buffer); if (len > _free) len = _free; @@ -140,7 +140,7 @@ // end ring priv->buffer stuff -static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { +static MPXP_Rc control(const ao_data_t* ao,int cmd, long arg) { UNUSED(ao); UNUSED(cmd); UNUSED(arg); @@ -359,7 +359,7 @@ priv->paused = 0; } -static unsigned get_space(ao_data_t* ao) { +static unsigned get_space(const ao_data_t* ao) { priv_t*priv=ao->priv; return av_fifo_space(priv->buffer); } @@ -367,14 +367,14 @@ /** * \brief write data into priv->buffer and reset priv->underrun flag */ -static unsigned play(ao_data_t* ao,any_t*data, unsigned len, unsigned flags) { +static unsigned play(ao_data_t* ao,const any_t*data, unsigned len, unsigned flags) { priv_t*priv=ao->priv; priv->underrun = 0; UNUSED(flags); return write_buffer(ao,data, len); } -static float get_delay(ao_data_t* ao) { +static float get_delay(const ao_data_t* ao) { priv_t*priv=ao->priv; int buffered = av_fifo_size(priv->buffer); // could be less float in_jack = priv->latency; Modified: mplayerxp/libao2/ao_nas.c =================================================================== --- mplayerxp/libao2/ao_nas.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_nas.c 2012-11-14 14:34:20 UTC (rev 366) @@ -207,7 +207,7 @@ return num; } -static int nas_writeBuffer(priv_t *priv, any_t*data, unsigned int len) +static int nas_writeBuffer(priv_t *priv,const any_t*data, unsigned int len) { pthread_mutex_lock(&priv->buffer_mutex); MSG_DBG2("ao_nas: nas_writeBuffer(): len=%d client=%d/%d server=%d/%d\n", @@ -367,7 +367,7 @@ } // to set/get/query special features/parameters -static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) +static MPXP_Rc control(const ao_data_t* ao,int cmd, long arg) { priv_t*priv=ao->priv; AuElementParameters aep; @@ -416,7 +416,6 @@ static MPXP_Rc init(ao_data_t* ao,unsigned flags) { ao->priv=mp_mallocz(sizeof(priv_t)); - priv_t* priv=ao->priv; UNUSED(flags); return MPXP_Ok; } @@ -579,7 +578,7 @@ // return: how many bytes can be played without blocking -static unsigned get_space(ao_data_t* ao) +static unsigned get_space(const ao_data_t* ao) { priv_t* priv=ao->priv; unsigned result; @@ -596,7 +595,7 @@ // plays 'len' bytes of 'data' // it should round it down to outburst*n // return: number of bytes played -static unsigned play(ao_data_t* ao,any_t* data,unsigned len,unsigned flags) +static unsigned play(ao_data_t* ao,const any_t* data,unsigned len,unsigned flags) { priv_t* priv=ao->priv; unsigned written, maxbursts = 0, playbursts = 0; @@ -640,7 +639,7 @@ } // return: delay in seconds between first and last sample in buffer -static float get_delay(ao_data_t* ao) +static float get_delay(const ao_data_t* ao) { priv_t* priv=ao->priv; float result; Modified: mplayerxp/libao2/ao_null.c =================================================================== --- mplayerxp/libao2/ao_null.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_null.c 2012-11-14 14:34:20 UTC (rev 366) @@ -75,7 +75,7 @@ 0, //le2me_32(0x7ffff000) }; -static void drain(ao_data_t* ao){ +static void drain(const ao_data_t* ao){ priv_t*priv = (priv_t*)ao->priv; struct timeval now_tv; int temp, temp2; @@ -97,7 +97,7 @@ } // to set/get/query special features/parameters -static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc __FASTCALL__ control(const ao_data_t* ao,int cmd,long arg){ UNUSED(ao); UNUSED(cmd); UNUSED(arg); @@ -206,7 +206,7 @@ static void audio_resume(ao_data_t* ao) { UNUSED(ao); } // return: how many bytes can be played without blocking -static unsigned get_space(ao_data_t* ao){ +static unsigned get_space(const ao_data_t* ao){ priv_t*priv = (priv_t*)ao->priv; drain(ao); return priv->fast_mode?INT_MAX:ao->outburst - priv->buffer; @@ -215,7 +215,7 @@ // plays 'len' bytes of 'data' // it should round it down to outburst*n // return: number of bytes played -static unsigned __FASTCALL__ play(ao_data_t* ao,any_t* data,unsigned len,unsigned flags) +static unsigned __FASTCALL__ play(ao_data_t* ao,const any_t* data,unsigned len,unsigned flags) { priv_t*priv = (priv_t*)ao->priv; unsigned maxbursts = (ao->buffersize - priv->buffer) / ao->outburst; @@ -234,7 +234,7 @@ } // return: delay in seconds between first and last sample in priv->buffer -static float get_delay(ao_data_t* ao){ +static float get_delay(const ao_data_t* ao){ priv_t*priv = (priv_t*)ao->priv; drain(ao); return priv->fast_mode?0.0:(float) priv->buffer / (float) ao->bps; Modified: mplayerxp/libao2/ao_openal.c =================================================================== --- mplayerxp/libao2/ao_openal.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_openal.c 2012-11-14 14:34:20 UTC (rev 366) @@ -60,7 +60,7 @@ int16_t* tmpbuf; }priv_t; -static MPXP_Rc control(ao_data_t* ao,int cmd, long arg) { +static MPXP_Rc control(const ao_data_t* ao,int cmd, long arg) { UNUSED(ao); switch (cmd) { case AOCONTROL_GET_VOLUME: @@ -184,7 +184,7 @@ mp_free(ao->priv); } -static void unqueue_buffers(ao_data_t* ao) { +static void unqueue_buffers(const ao_data_t* ao) { priv_t*priv=ao->priv; ALint p; unsigned s; @@ -228,7 +228,7 @@ alSourcePlayv(ao->channels, priv->sources); } -static unsigned get_space(ao_data_t* ao) { +static unsigned get_space(const ao_data_t* ao) { priv_t*priv=ao->priv; ALint queued; unqueue_buffers(ao); @@ -241,12 +241,12 @@ /** * \brief write data into buffer and reset underrun flag */ -static unsigned play(ao_data_t* ao,any_t*data, unsigned len, unsigned flags) { +static unsigned play(ao_data_t* ao,const any_t*data, unsigned len, unsigned flags) { priv_t*priv=ao->priv; ALint state; unsigned i, j, k; unsigned ch; - int16_t *d = data; + const int16_t *d = data; UNUSED(flags); len /= ao->channels * CHUNK_SIZE; for (i = 0; i < len; i++) { @@ -266,7 +266,7 @@ return len * ao->channels * CHUNK_SIZE; } -static float get_delay(ao_data_t* ao) { +static float get_delay(const ao_data_t* ao) { priv_t*priv=ao->priv; ALint queued; unqueue_buffers(ao); Modified: mplayerxp/libao2/ao_oss.c =================================================================== --- mplayerxp/libao2/ao_oss.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_oss.c 2012-11-14 14:34:20 UTC (rev 366) @@ -42,7 +42,7 @@ const char *oss_mixer_device = PATH_DEV_MIXER; // to set/get/query special features/parameters -static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc __FASTCALL__ control(const ao_data_t* ao,int cmd,long arg){ priv_t*priv=ao->priv; int rval; switch(cmd){ @@ -393,7 +393,7 @@ // return: how many bytes can be played without blocking -static unsigned get_space(ao_data_t* ao){ +static unsigned get_space(const ao_data_t* ao){ priv_t*priv=ao->priv; unsigned playsize=ao->outburst; @@ -425,7 +425,7 @@ // plays 'len' bytes of 'data' // it should round it down to outburst*n // return: number of bytes played -static unsigned __FASTCALL__ play(ao_data_t* ao,any_t* data,unsigned len,unsigned flags){ +static unsigned __FASTCALL__ play(ao_data_t* ao,const any_t* data,unsigned len,unsigned flags){ priv_t*priv=ao->priv; UNUSED(flags); len/=ao->outburst; @@ -434,7 +434,7 @@ } // return: delay in seconds between first and last sample in buffer -static float get_delay(ao_data_t* ao){ +static float get_delay(const ao_data_t* ao){ priv_t*priv=ao->priv; int ierr; /* Calculate how many bytes/second is sent out */ Modified: mplayerxp/libao2/ao_sdl.c =================================================================== --- mplayerxp/libao2/ao_sdl.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_sdl.c 2012-11-14 14:34:20 UTC (rev 366) @@ -48,7 +48,7 @@ int buffered_bytes; }priv_t; -static int __FASTCALL__ write_buffer(ao_data_t* ao,unsigned char* data,int len){ +static int __FASTCALL__ write_buffer(ao_data_t* ao,const unsigned char* data,int len){ priv_t*priv=ao->priv; int len2=0; int x; @@ -110,7 +110,7 @@ #endif // to set/get/query special features/parameters -static MPXP_Rc __FASTCALL__ control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc __FASTCALL__ control(const ao_data_t* ao,int cmd,long arg){ priv_t*priv=ao->priv; switch (cmd) { case AOCONTROL_QUERY_FORMAT: @@ -307,7 +307,7 @@ // return: how many bytes can be played without blocking -static unsigned get_space(ao_data_t* ao){ +static unsigned get_space(const ao_data_t* ao){ priv_t*priv=ao->priv; return (NUM_BUFS-priv->full_buffers)*BUFFSIZE - priv->buf_write_pos; } @@ -315,14 +315,14 @@ // plays 'len' bytes of 'data' // it should round it down to outburst*n // return: number of bytes played -static unsigned __FASTCALL__ play(ao_data_t* ao,any_t* data,unsigned len,unsigned flags) +static unsigned __FASTCALL__ play(ao_data_t* ao,const any_t* data,unsigned len,unsigned flags) { UNUSED(flags); return write_buffer(ao,data, len); } // return: delay in seconds between first and last sample in priv->buffer -static float get_delay(ao_data_t* ao){ +static float get_delay(const ao_data_t* ao){ priv_t*priv=ao->priv; return (float)(priv->buffered_bytes + ao->buffersize)/(float)ao->bps; } Modified: mplayerxp/libao2/ao_wav.c =================================================================== --- mplayerxp/libao2/ao_wav.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/ao_wav.c 2012-11-14 14:34:20 UTC (rev 366) @@ -87,7 +87,7 @@ /* init with default values */ // to set/get/query special features/parameters -static MPXP_Rc control(ao_data_t* ao,int cmd,long arg){ +static MPXP_Rc control(const ao_data_t* ao,int cmd,long arg){ UNUSED(ao); UNUSED(cmd); UNUSED(arg); @@ -222,7 +222,7 @@ // return: how many bytes can be played without blocking extern vo_data_t* vo_data; -static unsigned get_space(ao_data_t* ao){ +static unsigned get_space(const ao_data_t* ao){ priv_t* priv=ao->priv; float pts=dae_played_frame(xp_core->video).v_pts; if(pts) @@ -233,7 +233,7 @@ // plays 'len' bytes of 'data' // it should round it down to outburst*n // return: number of bytes played -static unsigned play(ao_data_t* ao,any_t* data,unsigned len,unsigned flags){ +static unsigned play(ao_data_t* ao,const any_t* data,unsigned len,unsigned flags){ priv_t* priv=ao->priv; UNUSED(flags); fwrite(data,len,1,priv->fp); @@ -244,7 +244,7 @@ } // return: delay in seconds between first and last sample in buffer -static float get_delay(ao_data_t* ao){ +static float get_delay(const ao_data_t* ao){ UNUSED(ao); return 0.0; } Modified: mplayerxp/libao2/audio_out.c =================================================================== --- mplayerxp/libao2/audio_out.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/audio_out.c 2012-11-14 14:34:20 UTC (rev 366) @@ -66,7 +66,10 @@ NULL }; -static const ao_functions_t *RND_RENAME8(audio_out)=NULL; +typedef struct priv_s { + char antiviral_hole[RND_CHAR5]; + const ao_functions_t* audio_out; +}priv_t; char * __FASTCALL__ ao_format_name(int format) { @@ -182,83 +185,115 @@ MSG_INFO("\n"); } -const ao_functions_t* __FASTCALL__ RND_RENAME4(ao_register)(const char *driver_name) +MPXP_Rc __FASTCALL__ RND_RENAME4(ao_register)(ao_data_t* ao,const char *driver_name,unsigned flags) { + priv_t* priv=ao->opaque; unsigned i; if(!driver_name) - RND_RENAME8(audio_out)=audio_out_drivers[0]; + priv->audio_out=audio_out_drivers[0]; else for (i=0; audio_out_drivers[i] != &audio_out_null; i++) { const ao_info_t *info = audio_out_drivers[i]->info; if(strcmp(info->short_name,driver_name) == 0){ - RND_RENAME8(audio_out) = audio_out_drivers[i];break; + priv->audio_out = audio_out_drivers[i];break; } } - return RND_RENAME8(audio_out); + if(priv->audio_out->init(ao,flags)==MPXP_Ok) return MPXP_Ok; + return MPXP_False; } -const ao_info_t* ao_get_info( void ) +const ao_info_t* ao_get_info( const ao_data_t* ao ) { - return RND_RENAME8(audio_out)->info; + priv_t* priv=ao->opaque; + return priv->audio_out->info; } -ao_data_t* __FASTCALL__ RND_RENAME5(ao_init)(unsigned flags,const char *subdevice) +ao_data_t* __FASTCALL__ RND_RENAME5(ao_init)(const char *subdevice) { ao_data_t* ao; ao=mp_mallocz(sizeof(ao_data_t)); if(subdevice) ao->subdevice=mp_strdup(subdevice); ao->outburst=OUTBURST; ao->buffersize=-1; - RND_RENAME0(rnd_fill)(ao->antiviral_hole,sizeof(ao->antiviral_hole)); - if(RND_RENAME8(audio_out)->init(ao,flags)==MPXP_Ok) return ao; - mp_free(ao); - return NULL; + ao->opaque=mp_malloc(sizeof(priv_t)); + priv_t* priv=ao->opaque; + RND_RENAME0(rnd_fill)(priv->antiviral_hole,sizeof(priv_t)); + RND_RENAME0(rnd_fill)(ao->antiviral_hole,offsetof(ao_data_t,samplerate)-offsetof(ao_data_t,antiviral_hole)); + priv->audio_out=NULL; + return ao; } MPXP_Rc __FASTCALL__ ao_configure(ao_data_t*ao,unsigned rate,unsigned channels,unsigned format) { - return RND_RENAME8(audio_out)->configure(ao,rate,channels,format); + priv_t* priv=ao->opaque; + return priv->audio_out->configure(ao,rate,channels,format); } void ao_uninit(ao_data_t*ao) { - RND_RENAME8(audio_out)->uninit(ao); + priv_t* priv=ao->opaque; + priv->audio_out->uninit(ao); if(ao->subdevice) mp_free(ao->subdevice); + mp_free(priv); mp_free(ao); ao=NULL; } void ao_reset(ao_data_t*ao) { - if(ao) RND_RENAME8(audio_out)->reset(ao); + if(ao) { + priv_t* priv=ao->opaque; + priv->audio_out->reset(ao); + } } -unsigned ao_get_space(ao_data_t*ao) +unsigned ao_get_space(const ao_data_t*ao) { - return ao?RND_RENAME8(audio_out)->get_space(ao):0; + if(ao) { + priv_t* priv=ao->opaque; + return priv->audio_out->get_space(ao); + } + return 0; } -float ao_get_delay(ao_data_t*ao) +float ao_get_delay(const ao_data_t*ao) { - return ao?RND_RENAME8(audio_out)->get_delay(ao):0; + if(ao) { + priv_t* priv=ao->opaque; + return priv->audio_out->get_delay(ao); + } + return 0; } -unsigned __FASTCALL__ RND_RENAME6(ao_play)(ao_data_t*ao,any_t* data,unsigned len,unsigned flags) +unsigned __FASTCALL__ RND_RENAME6(ao_play)(ao_data_t*ao,const any_t* data,unsigned len,unsigned flags) { - return ao?RND_RENAME8(audio_out)->play(ao,data,len,flags):0; + if(ao) { + priv_t* priv=ao->opaque; + return priv->audio_out->play(ao,data,len,flags); + } return 0; } void ao_pause(ao_data_t*ao) { - if(ao) RND_RENAME8(audio_out)->pause(ao); + if(ao) { + priv_t* priv=ao->opaque; + priv->audio_out->pause(ao); + } } void ao_resume(ao_data_t*ao) { - if(ao) RND_RENAME8(audio_out)->resume(ao); + if(ao) { + priv_t* priv=ao->opaque; + priv->audio_out->resume(ao); + } } -MPXP_Rc __FASTCALL__ RND_RENAME7(ao_control)(ao_data_t*ao,int cmd,long arg) +MPXP_Rc __FASTCALL__ RND_RENAME7(ao_control)(const ao_data_t*ao,int cmd,long arg) { - return ao?RND_RENAME8(audio_out)->control(ao,cmd,arg):MPXP_Error; + if(ao) { + priv_t* priv=ao->opaque; + return priv->audio_out->control(ao,cmd,arg); + } + return MPXP_Error; } Modified: mplayerxp/libao2/audio_out.h =================================================================== --- mplayerxp/libao2/audio_out.h 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/audio_out.h 2012-11-14 14:34:20 UTC (rev 366) @@ -23,6 +23,7 @@ unsigned outburst; /**< outburst */ unsigned buffersize; /**< size of audio buffer */ float pts; /**< PTS of audio buffer */ + any_t* opaque; /**< for internal use */ any_t* priv; } ao_data_t; @@ -36,7 +37,7 @@ * @param arg argument associated with command * @return MPXP_Ok if success MPXP_False MPXP_Error MPXP_NA otherwise **/ - MPXP_Rc (* __FASTCALL__ control)(ao_data_t*,int cmd,long arg); + MPXP_Rc (* __FASTCALL__ control)(const ao_data_t*,int cmd,long arg); /** Preinitializes driver * @param flag currently unused @@ -60,7 +61,7 @@ void (* __FASTCALL__ reset)(ao_data_t*); /** Returns how many bytes can be played without blocking **/ - unsigned (* __FASTCALL__ get_space)(ao_data_t*); + unsigned (* __FASTCALL__ get_space)(const ao_data_t*); /** Plays decoded (PCM) audio buffer * @param data buffer with PCM data @@ -68,10 +69,10 @@ * @param flags currently unused * return number of bytes which were copied into audio card **/ - unsigned (* __FASTCALL__ play)(ao_data_t*,any_t* data,unsigned len,unsigned flags); + unsigned (* __FASTCALL__ play)(ao_data_t*,const any_t* data,unsigned len,unsigned flags); /** Returns delay in seconds between first and last sample in buffer **/ - float (* __FASTCALL__ get_delay)(ao_data_t*); + float (* __FASTCALL__ get_delay)(const ao_data_t*); /** Stops playing, keep buffers (for pause) */ void (* __FASTCALL__ pause)(ao_data_t*); @@ -99,16 +100,16 @@ extern int __FASTCALL__ ao_format_bits(int format); extern void ao_print_help( void ); -extern const ao_functions_t* __FASTCALL__ RND_RENAME4(ao_register)(const char *driver_name); -extern const ao_info_t* ao_get_info( void ); -extern ao_data_t* __FASTCALL__ RND_RENAME5(ao_init)(unsigned flags,const char *subdevice); +extern MPXP_Rc __FASTCALL__ RND_RENAME4(ao_register)(ao_data_t* ao,const char *driver_name,unsigned flags); +extern const ao_info_t* ao_get_info( const ao_data_t* ao ); +extern ao_data_t* __FASTCALL__ RND_RENAME5(ao_init)(const char *subdevice); extern MPXP_Rc __FASTCALL__ ao_configure(ao_data_t* priv,unsigned rate,unsigned channels,unsigned format); extern void __FASTCALL__ ao_uninit(ao_data_t* priv); extern void __FASTCALL__ ao_reset(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_get_space(ao_data_t* priv); -extern unsigned __FASTCALL__ RND_RENAME6(ao_play)(ao_data_t* priv,any_t* data,unsigned len,unsigned flags); -extern float __FASTCALL__ ao_get_delay(ao_data_t* priv); +extern unsigned __FASTCALL__ ao_get_space(const ao_data_t* priv); +extern unsigned __FASTCALL__ RND_RENAME6(ao_play)(ao_data_t* priv,const any_t* data,unsigned len,unsigned flags); +extern float __FASTCALL__ ao_get_delay(const ao_data_t* priv); extern void __FASTCALL__ ao_pause(ao_data_t* priv); extern void __FASTCALL__ ao_resume(ao_data_t* priv); -extern MPXP_Rc __FASTCALL__ RND_RENAME7(ao_control)(ao_data_t* priv,int cmd,long arg); +extern MPXP_Rc __FASTCALL__ RND_RENAME7(ao_control)(const ao_data_t* priv,int cmd,long arg); #endif Modified: mplayerxp/libao2/audio_out_internal.h =================================================================== --- mplayerxp/libao2/audio_out_internal.h 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/audio_out_internal.h 2012-11-14 14:34:20 UTC (rev 366) @@ -1,14 +1,14 @@ #include "mp_config.h" // prototypes: //static ao_info_t info; -static MPXP_Rc __FASTCALL__ control(ao_data_t*,int cmd,long arg); +static MPXP_Rc __FASTCALL__ control(const ao_data_t*,int cmd,long arg); static int __FASTCALL__ init(ao_data_t*,unsigned flags); static int __FASTCALL__ configure(ao_data_t*,unsigned rate,unsigned channels,unsigned format); static void __FASTCALL__ uninit(ao_data_t*); static void __FASTCALL__ reset(ao_data_t*); -static unsigned __FASTCALL__ get_space(ao_data_t*); -static unsigned __FASTCALL__ play(ao_data_t*,any_t* data,unsigned len,unsigned flags); -static float __FASTCALL__ get_delay(ao_data_t*); +static unsigned __FASTCALL__ get_space(const ao_data_t*); +static unsigned __FASTCALL__ play(ao_data_t*,const any_t* data,unsigned len,unsigned flags); +static float __FASTCALL__ get_delay(const ao_data_t*); static void __FASTCALL__ audio_pause(ao_data_t*); static void __FASTCALL__ audio_resume(ao_data_t*); Modified: mplayerxp/libao2/mixer.c =================================================================== --- mplayerxp/libao2/mixer.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/mixer.c 2012-11-14 14:34:20 UTC (rev 366) @@ -8,7 +8,7 @@ #include "mixer.h" #include "libao2/audio_out.h" -void mixer_getvolume(ao_data_t* ao, float *l,float *r ) +void mixer_getvolume(const ao_data_t* ao, float *l,float *r ) { ao_control_vol_t vol; *l=0; *r=0; @@ -17,7 +17,7 @@ *l=vol.left; } -void mixer_setvolume(ao_data_t* ao,float l,float r ) +void mixer_setvolume(const ao_data_t* ao,float l,float r ) { ao_control_vol_t vol; vol.right=r; vol.left=l; @@ -26,7 +26,7 @@ #define MIXER_CHANGE 3 -void mixer_incvolume(ao_data_t* ao) +void mixer_incvolume(const ao_data_t* ao) { float mixer_l, mixer_r; mixer_getvolume(ao, &mixer_l,&mixer_r ); @@ -37,7 +37,7 @@ mixer_setvolume(ao, mixer_l,mixer_r ); } -void mixer_decvolume(ao_data_t* ao) +void mixer_decvolume(const ao_data_t* ao) { float mixer_l, mixer_r; mixer_getvolume(ao, &mixer_l,&mixer_r ); @@ -48,7 +48,7 @@ mixer_setvolume(ao, mixer_l,mixer_r ); } -float mixer_getbothvolume(ao_data_t* ao) +float mixer_getbothvolume(const ao_data_t* ao) { float mixer_l, mixer_r; mixer_getvolume(ao, &mixer_l,&mixer_r ); @@ -57,7 +57,7 @@ static int muted=0; static float mute_l,mute_r; -void mixer_mute(ao_data_t* ao) +void mixer_mute(const ao_data_t* ao) { if ( muted ) { mixer_setvolume(ao, mute_l,mute_r ); muted=0; } else Modified: mplayerxp/libao2/mixer.h =================================================================== --- mplayerxp/libao2/mixer.h 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libao2/mixer.h 2012-11-14 14:34:20 UTC (rev 366) @@ -2,14 +2,14 @@ #define __MPLAYER_MIXER #include "libao2/audio_out.h" -extern void mixer_getvolume(ao_data_t* ao,float *l,float *r ); -extern void mixer_setvolume(ao_data_t* ao,float l,float r ); -extern void mixer_incvolume(ao_data_t* ao); -extern void mixer_decvolume(ao_data_t* ao); -extern float mixer_getbothvolume(ao_data_t* ao); -void mixer_mute(ao_data_t* ao); +extern void mixer_getvolume(const ao_data_t* ao,float *l,float *r ); +extern void mixer_setvolume(const ao_data_t* ao,float l,float r ); +extern void mixer_incvolume(const ao_data_t* ao); +extern void mixer_decvolume(const ao_data_t* ao); +extern float mixer_getbothvolume(const ao_data_t* ao); +void mixer_mute(const ao_data_t* ao); //extern void mixer_setbothvolume( int v ); -static inline void mixer_setbothvolume(ao_data_t* ao, float v ) { mixer_setvolume(ao,v,v); } +static inline void mixer_setbothvolume(const ao_data_t* ao, float v ) { mixer_setvolume(ao,v,v); } #endif Modified: mplayerxp/libmpcodecs/ad.c =================================================================== --- mplayerxp/libmpcodecs/ad.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/ad.c 2012-11-14 14:34:20 UTC (rev 366) @@ -88,7 +88,7 @@ const audio_probe_t* afm_probe_driver(sh_audio_t *sh) { unsigned i; - audio_probe_t* rv; + const audio_probe_t* rv; for (i=0; mpcodecs_ad_drivers[i] != &mpcodecs_ad_null; i++) { if((rv=mpcodecs_ad_drivers[i]->probe(sh,sh->wtag))!=NULL) return rv; } Modified: mplayerxp/libmpcodecs/ad_ffmpeg.c =================================================================== --- mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/ad_ffmpeg.c 2012-11-14 14:34:20 UTC (rev 366) @@ -61,7 +61,7 @@ struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t* sh) { unsigned i; - audio_probe_t* aprobe=probe(sh,sh->wtag); + const audio_probe_t* aprobe=probe(sh,sh->wtag); struct codecs_st* acodec = NULL; if(aprobe) { acodec=mp_mallocz(sizeof(struct codecs_st)); Modified: mplayerxp/libmpcodecs/dec_audio.c =================================================================== --- mplayerxp/libmpcodecs/dec_audio.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/dec_audio.c 2012-11-14 14:34:20 UTC (rev 366) @@ -26,19 +26,23 @@ /* used for ac3surround decoder - set using -channels option */ af_cfg_t af_cfg; // Configuration for audio filters -static const ad_functions_t* mpadec; +typedef struct priv_s { + sh_audio_t* parent; + const ad_functions_t* mpadec; +}priv_t; -MPXP_Rc RND_RENAME2(mpca_init)(sh_audio_t *sh_audio) +any_t* RND_RENAME2(mpca_init)(sh_audio_t *sh_audio) { const char *afm,*ac; const audio_probe_t* aprobe=NULL; - mpadec=NULL; + priv_t* priv = mp_mallocz(sizeof(priv_t)); + priv->parent=sh_audio; if(!sh_audio->codec) { if(mp_conf.audio_family) { afm=mp_conf.audio_family; ac=afm; - mpadec=afm_find_driver(afm); - if(mpadec) aprobe=mpadec->probe(sh_audio,sh_audio->wtag); + priv->mpadec=afm_find_driver(afm); + if(priv->mpadec) aprobe=priv->mpadec->probe(sh_audio,sh_audio->wtag); } else aprobe = afm_probe_driver(sh_audio); } @@ -51,16 +55,17 @@ strcpy(sh_audio->codec->driver_name,aprobe->driver); strcpy(sh_audio->codec->codec_name,sh_audio->codec->dll_name); memcpy(sh_audio->codec->outfmt,aprobe->sample_fmt,sizeof(aprobe->sample_fmt)); - mpadec=afm_find_driver(afm); + priv->mpadec=afm_find_driver(afm); } else if(sh_audio->codec) { afm=sh_audio->codec->driver_name; ac=sh_audio->codec->codec_name; - mpadec=afm_find_driver(afm); + priv->mpadec=afm_find_driver(afm); } - if(!mpadec){ + if(!priv->mpadec){ MSG_ERR(MSGTR_CODEC_BAD_AFAMILY,ac, afm); - return MPXP_False; // no such driver + mp_free(priv); + return NULL; // no such driver } /* reset in/out buffer size/pointer: */ @@ -83,9 +88,10 @@ sh_audio->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/ sh_audio->audio_in_minsize=0; - if(mpadec->preinit(sh_audio)!=MPXP_Ok) { + if(priv->mpadec->preinit(sh_audio)!=MPXP_Ok) { MSG_ERR(MSGTR_CODEC_CANT_PREINITA); - return MPXP_False; + mp_free(priv); + return NULL; } /* allocate audio in buffer: */ @@ -106,22 +112,23 @@ sh_audio->a_buffer=mp_mallocz(sh_audio->a_buffer_size); if(!sh_audio->a_buffer) { MSG_ERR(MSGTR_CantAllocAudioBuf); - return MPXP_False; + mp_free(priv); + return NULL; } sh_audio->a_buffer_len=0; - if(mpadec->init(sh_audio)!=MPXP_Ok){ + if(priv->mpadec->init(sh_audio)!=MPXP_Ok){ MSG_WARN(MSGTR_CODEC_CANT_INITA); - mpca_uninit(sh_audio); /* mp_free buffers */ - return MPXP_False; + mpca_uninit(priv); /* mp_free buffers */ + return NULL; } sh_audio->inited=1; if(!sh_audio->nch || !sh_audio->rate) { MSG_WARN(MSGTR_UnknownAudio); - mpca_uninit(sh_audio); /* mp_free buffers */ - return MPXP_False; + mpca_uninit(priv); /* mp_free buffers */ + return NULL; } if(!sh_audio->o_bps) @@ -138,32 +145,35 @@ } MSG_OK("[AC] %s decoder: [%s] drv:%s.%s ratio %i->%i\n",mp_conf.audio_codec?"Forcing":"Selecting" ,ac - ,mpadec->info->driver_name + ,priv->mpadec->info->driver_name ,ac ,sh_audio->i_bps,sh_audio->o_bps); if(sh_audio->codec) { mp_free(sh_audio->codec); sh_audio->codec=NULL; } - return MPXP_Ok; + return priv; } -void mpca_uninit(sh_audio_t *sh_audio) +void mpca_uninit(any_t *opaque) { - if(!sh_audio) return; - if(sh_audio->afilter){ + priv_t* priv = (priv_t*)opaque; + sh_audio_t* parent = priv->parent; + if(!parent) { mp_free(priv); return; } + if(priv->parent->afilter){ MSG_V("Uninit audio filters...\n"); - af_uninit(sh_audio->afilter); - mp_free(sh_audio->afilter); - sh_audio->afilter=NULL; + af_uninit(parent->afilter); + mp_free(parent->afilter); + parent->afilter=NULL; } - if(sh_audio->a_buffer) mp_free(sh_audio->a_buffer); - sh_audio->a_buffer=NULL; - if(sh_audio->a_in_buffer) mp_free(sh_audio->a_in_buffer); - sh_audio->a_in_buffer=NULL; - if(!sh_audio->inited) return; - MSG_V("uninit audio: %s\n",sh_audio->codec->driver_name); - mpadec->uninit(sh_audio); - if(sh_audio->a_buffer) mp_free(sh_audio->a_buffer); - sh_audio->a_buffer=NULL; - sh_audio->inited=0; + if(parent->a_buffer) mp_free(parent->a_buffer); + parent->a_buffer=NULL; + if(parent->a_in_buffer) mp_free(parent->a_in_buffer); + parent->a_in_buffer=NULL; + if(!parent->inited) { mp_free(priv); return; } + MSG_V("uninit audio: ...\n"); + priv->mpadec->uninit(parent); + if(parent->a_buffer) mp_free(parent->a_buffer); + parent->a_buffer=NULL; + parent->inited=0; + mp_free(priv); } /* Init audio filters */ @@ -283,8 +293,10 @@ out_minsize,out_maxsize); } -unsigned RND_RENAME3(mpca_decode)(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts) +unsigned RND_RENAME3(mpca_decode)(any_t *opaque,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts) { + priv_t* priv = (priv_t*)opaque; + sh_audio_t* sh_audio = priv->parent; unsigned len; unsigned cp_size,cp_tile; mp_aframe_t afd; // filter input @@ -310,7 +322,7 @@ } if(sh_audio->af_bps>sh_audio->o_bps) maxlen=min(maxlen,(long long int)buflen*sh_audio->o_bps/sh_audio->af_bps); - len=mpadec->decode(sh_audio,buf, minlen, maxlen,pts); + len=priv->mpadec->decode(sh_audio,buf, minlen, maxlen,pts); if(len>buflen) MSG_WARN(MSGTR_CODEC_BUF_OVERFLOW,sh_audio->codec->driver_name,len,buflen); MSG_DBG2("decaudio: %i bytes %f pts min %i max %i buflen %i o_bps=%i f_bps=%i\n",len,*pts,minlen,maxlen,buflen,sh_audio->o_bps,sh_audio->af_bps); if(len==0 || !sh_audio->afilter) return 0; // EOF? @@ -347,20 +359,24 @@ } /* Note: it is called once after seeking, to resync. */ -void mpca_resync_stream(sh_audio_t *sh_audio) +void mpca_resync_stream(any_t *opaque) { + priv_t* priv = (priv_t*)opaque; + sh_audio_t* sh_audio = priv->parent; if(sh_audio) { sh_audio->a_in_buffer_len=0; /* workaround */ - if(sh_audio->inited && mpadec) mpadec->control(sh_audio,ADCTRL_RESYNC_STREAM,NULL); + if(sh_audio->inited && priv->mpadec) priv->mpadec->control(sh_audio,ADCTRL_RESYNC_STREAM,NULL); } } /* Note: it is called to skip (jump over) small amount (1/10 sec or 1 frame) of audio data - used to sync audio to video after seeking */ -void mpca_skip_frame(sh_audio_t *sh_audio) +void mpca_skip_frame(any_t *opaque) { + priv_t* priv = (priv_t*)opaque; + sh_audio_t* sh_audio = priv->parent; MPXP_Rc rc=MPXP_True; if(sh_audio) - if(sh_audio->inited && mpadec) rc=mpadec->control(sh_audio,ADCTRL_SKIP_FRAME,NULL); + if(sh_audio->inited && priv->mpadec) rc=priv->mpadec->control(sh_audio,ADCTRL_SKIP_FRAME,NULL); if(rc!=MPXP_True) ds_fill_buffer(sh_audio->ds); } Modified: mplayerxp/libmpcodecs/dec_audio.h =================================================================== --- mplayerxp/libmpcodecs/dec_audio.h 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/dec_audio.h 2012-11-14 14:34:20 UTC (rev 366) @@ -6,11 +6,11 @@ // dec_audio.c: extern const ad_functions_t* __FASTCALL__ mpca_find_driver(const char *name); -extern MPXP_Rc __FASTCALL__ RND_RENAME2(mpca_init)(sh_audio_t *sh_audio); -extern void __FASTCALL__ mpca_uninit(sh_audio_t *sh_audio); -extern unsigned __FASTCALL__ RND_RENAME3(mpca_decode)(sh_audio_t *sh_audio,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts); -extern void __FASTCALL__ mpca_resync_stream(sh_audio_t *sh_audio); -extern void __FASTCALL__ mpca_skip_frame(sh_audio_t *sh_audio); +extern any_t* __FASTCALL__ RND_RENAME2(mpca_init)(sh_audio_t *sh_audio); +extern void __FASTCALL__ mpca_uninit(any_t *handle); +extern unsigned __FASTCALL__ RND_RENAME3(mpca_decode)(any_t *handle,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts); +extern void __FASTCALL__ mpca_resync_stream(any_t *handle); +extern void __FASTCALL__ mpca_skip_frame(any_t *handle); struct codecs_st; extern struct codecs_st* __FASTCALL__ find_ffmpeg_audio(sh_audio_t*); Modified: mplayerxp/libmpcodecs/dec_video.c =================================================================== --- mplayerxp/libmpcodecs/dec_video.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/dec_video.c 2012-11-14 14:34:20 UTC (rev 366) @@ -44,40 +44,48 @@ extern int v_hue; extern int v_saturation; -const vd_functions_t* mpvdec=NULL; +typedef struct priv_s { + sh_video_t* parent; + const vd_functions_t* mpvdec; +}priv_t; -MPXP_Rc mpcv_get_quality_max(sh_video_t *sh_video,unsigned *quality){ - if(mpvdec){ - MPXP_Rc ret=mpvdec->control(sh_video,VDCTRL_QUERY_MAX_PP_LEVEL,quality); +MPXP_Rc mpcv_get_quality_max(priv_t *priv,unsigned *quality){ + sh_video_t* sh_video = priv->parent; + if(priv->mpvdec){ + MPXP_Rc ret=priv->mpvdec->control(sh_video,VDCTRL_QUERY_MAX_PP_LEVEL,quality); if(ret>=MPXP_Ok) return ret; } return MPXP_False; } -MPXP_Rc mpcv_set_quality(sh_video_t *sh_video,int quality){ - if(mpvdec) - return mpvdec->control(sh_video,VDCTRL_SET_PP_LEVEL, (any_t*)(&quality)); +MPXP_Rc mpcv_set_quality(priv_t *priv,int quality){ + sh_video_t* sh_video = priv->parent; + if(priv->mpvdec) + return priv->mpvdec->control(sh_video,VDCTRL_SET_PP_LEVEL, (any_t*)(&quality)); return MPXP_False; } -MPXP_Rc mpcv_set_colors(sh_video_t *sh_video,char *item,int value) +MPXP_Rc mpcv_set_colors(priv_t *priv,char *item,int value) { + sh_video_t* sh_video = priv->parent; vf_instance_t* vf=sh_video->vfilter; vf_equalizer_t eq; eq.item=item; eq.value=value*10; if(vf->control(vf,VFCTRL_SET_EQUALIZER,&eq)!=MPXP_True) { - if(mpvdec) return mpvdec->control(sh_video,VDCTRL_SET_EQUALIZER,item,(int)value); + if(priv->mpvdec) return priv->mpvdec->control(sh_video,VDCTRL_SET_EQUALIZER,item,(int)value); } return MPXP_False; } -void mpcv_uninit(sh_video_t *sh_video){ - if(!sh_video->inited) return; - MSG_V("uninit video: %s\n",sh_video->codec->driver_name); +void mpcv_uninit(priv_t *priv){ + sh_video_t* sh_video = priv->parent; + if(!sh_video->inited) { mp_free(priv); return; } + MSG_V("uninit video ...\n"); if(sh_video->vfilter && sh_video->vfilter_inited==1) vf_uninit_filter_chain(sh_video->vfilter); - mpvdec->uninit(sh_video); + priv->mpvdec->uninit(sh_video); sh_video->inited=0; + mp_free(priv); } #include "libvo/video_out.h" @@ -86,11 +94,12 @@ static unsigned smp_num_cpus=1; static unsigned use_vf_threads=0; -static void mpcv_print_codec_info(sh_video_t* sh_video) { +static void mpcv_print_codec_info(const priv_t *priv) { + sh_video_t* sh_video = priv->parent; MSG_OK("[VC] %s decoder: [%s] drv:%s.%s (%dx%d (aspect %g) %4.2ffps\n" ,mp_conf.video_codec?"Forcing":"Selected" ,sh_video->codec->codec_name - ,mpvdec->info->driver_name + ,priv->mpvdec->info->driver_name ,sh_video->codec->dll_name ,sh_video->src_w ,sh_video->src_h @@ -112,29 +121,35 @@ #endif } -MPXP_Rc mpcv_ffmpeg_init(sh_video_t*sh_video,any_t* libinput) { +priv_t * mpcv_ffmpeg_init(sh_video_t*sh_video,any_t* libinput) { + priv_t* priv = mp_malloc(sizeof(priv_t)); + priv->parent=sh_video; + sh_video->decoder=priv; /* Use ffmpeg's drivers as last hope */ - mpvdec=vfm_find_driver("ffmpeg"); - if(mpvdec) { - if(mpvdec->init(sh_video,libinput)!=MPXP_Ok){ + priv->mpvdec=vfm_find_driver("ffmpeg"); + if(priv->mpvdec) { + if(priv->mpvdec->init(sh_video,libinput)!=MPXP_Ok){ MSG_ERR(MSGTR_CODEC_CANT_INITV); - return MPXP_False; + return NULL; } } else { MSG_ERR("Cannot find ffmpeg video decoder\n"); - return MPXP_False; + return NULL; } - mpcv_print_codec_info(sh_video); - return MPXP_Ok; + mpcv_print_codec_info(priv); + return priv; } -MPXP_Rc RND_RENAME3(mpcv_init)(sh_video_t *sh_video,const char* codecname,const char * vfm,int status,any_t*libinput){ +priv_t * RND_RENAME3(mpcv_init)(sh_video_t *sh_video,const char* codecname,const char * vfm,int status,any_t*libinput){ int done=0; const video_probe_t* vprobe; sh_video->codec=NULL; + priv_t* priv = mp_malloc(sizeof(priv_t)); + priv->parent=sh_video; + sh_video->decoder=priv; if(vfm) { - mpvdec=vfm_find_driver(vfm); - if(mpvdec) vprobe=mpvdec->probe(sh_video,sh_video->fourcc); + priv->mpvdec=vfm_find_driver(vfm); + if(priv->mpvdec) vprobe=priv->mpvdec->probe(sh_video,sh_video->fourcc); } else vprobe = vfm_driver_probe(sh_video); if(vprobe) { @@ -145,13 +160,13 @@ strcpy(sh_video->codec->driver_name,vprobe->driver); strcpy(sh_video->codec->codec_name,sh_video->codec->dll_name); memcpy(sh_video->codec->outfmt,vprobe->pix_fmt,sizeof(vprobe->pix_fmt)); - mpvdec=vfm_find_driver(vfm); + priv->mpvdec=vfm_find_driver(vfm); } if(sh_video->codec) { - if(mpvdec->init(sh_video,libinput)!=MPXP_Ok){ + if(priv->mpvdec->init(sh_video,libinput)!=MPXP_Ok){ MSG_ERR(MSGTR_CODEC_CANT_INITV); - mp_free(sh_video->codec); - sh_video->codec=NULL; + mp_free(sh_video->codec); + sh_video->codec=NULL; } else done=1; } #ifdef ENABLE_WIN32LOADER @@ -193,12 +208,12 @@ } #endif if(done) { - mpcv_print_codec_info(sh_video); + mpcv_print_codec_info(priv); // memory leak here // if(vprobe) { mp_free(sh_video->codec); sh_video->codec=NULL; } - return MPXP_Ok; + return priv; } - return MPXP_False; + return NULL; } void mpcodecs_draw_image(sh_video_t* sh,mp_image_t *mpi) @@ -261,7 +276,8 @@ extern vo_data_t* vo_data; static void update_subtitle(sh_video_t *sh_video,float v_pts,unsigned idx); -int RND_RENAME4(mpcv_decode)(sh_video_t *sh_video,const enc_frame_t* frame){ +int RND_RENAME4(mpcv_decode)(priv_t *priv,const enc_frame_t* frame){ + sh_video_t* sh_video = priv->parent; vf_instance_t* vf; mp_image_t *mpi=NULL; unsigned int t; @@ -274,7 +290,7 @@ vf->control(vf,VFCTRL_START_FRAME,NULL); sh_video->active_slices=0; - mpi=mpvdec->decode(sh_video, frame); + mpi=priv->mpvdec->decode(sh_video, frame); MSG_DBG2("decvideo: decoding video %u bytes\n",in_size); while(sh_video->active_slices!=0) usleep(0); /* ------------------------ frame decoded. -------------------- */ @@ -308,10 +324,11 @@ return 1; } -void mpcv_resync_stream(sh_video_t *sh_video) +void mpcv_resync_stream(priv_t *priv) { - if(sh_video) - if(sh_video->inited && mpvdec) mpvdec->control(sh_video,VDCTRL_RESYNC_STREAM,NULL); + sh_video_t* sh_video = priv->parent; + if(sh_video) + if(sh_video->inited && priv->mpvdec) priv->mpvdec->control(sh_video,VDCTRL_RESYNC_STREAM,NULL); } #ifdef USE_SUB @@ -376,3 +393,195 @@ } } } + +#include "libvo/video_out.h" + +extern vo_data_t* vo_data; +extern const vd_functions_t* mpvdec; // FIXME! + +MPXP_Rc mpcodecs_config_vo(sh_video_t *sh, int w, int h, any_t* libinput){ + priv_t* priv=(priv_t*)sh->decoder; + int i,j; + unsigned int out_fmt=0; + int screen_size_x=0;//SCREEN_SIZE_X; + int screen_size_y=0;//SCREEN_SIZE_Y; + vf_instance_t* vf=sh->vfilter,*sc=NULL; + int palette=0; + + if(!(sh->src_w && sh->src_h)) + MSG_WARN( + "VDec: driver %s didn't set sh->src_w and sh->src_h, trying to workaround!\n" + ,sh->codec->codec_name); + /* XXX: HACK, if sh->disp_* aren't set, + * but we have w and h, set them :: atmos */ + if(!sh->src_w && w) + sh->src_w=w; + if(!sh->src_h && h) + sh->src_h=h; + + MSG_V("VDec: vo config request - %d x %d\n",w,h); + +csp_again: + // check if libvo and codec has common outfmt (no conversion): + j=-1; + for(i=0;i<CODECS_MAX_OUTFMT;i++){ + int flags; + out_fmt=sh->codec->outfmt[i]; + if(out_fmt==0xFFFFFFFF||out_fmt==0x0) continue; + flags=vf_query_format(vf,out_fmt,w,h); + MSG_DBG2("vo_debug[step i=%d]: query(%s %ix%i) returned 0x%X for:\n",i,vo_format_name(out_fmt),w,h,flags); + if(mp_conf.verbose>1) if(mp_conf.verbose) vf_showlist(vf); + if((flags&VFCAP_CSP_SUPPORTED_BY_HW) || ((flags&VFCAP_CSP_SUPPORTED) && j<0)){ + // check (query) if codec really support this outfmt... + sh->outfmtidx=j; // pass index to the control() function this way + if(priv->mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)==MPXP_False) { + MSG_DBG2("vo_debug: codec[%s] query_format(%s) returned FALSE\n",mpvdec->info->driver_name,vo_format_name(out_fmt)); + continue; + } + j=i; + /*vo_data->flags=flags;*/ + if(flags&VFCAP_CSP_SUPPORTED_BY_HW) break; + } else + if(!palette && !(vo_data->flags&3) && (out_fmt==IMGFMT_RGB8||out_fmt==IMGFMT_BGR8)){ + sh->outfmtidx=j; // pass index to the control() function this way + if(priv->mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)!=MPXP_False) + palette=1; + } + } + if(j<0){ + // TODO: no match - we should use conversion... + if(strcmp(vf->info->name,"fmtcvt") && palette!=1){ + int ind; + MSG_WARN("Can't find colorspace for: "); + for(ind=0;ind<CODECS_MAX_OUTFMT;ind++) { + if(sh->codec->outfmt[ind]==0xFFFFFFFF|| + sh->codec->outfmt[ind]==0x0) break; + MSG_WARN("'%s' ",vo_format_name(sh->codec->outfmt[ind])); + } + MSG_WARN("Trying -vf fmtcvt\n"); + sc=vf=RND_RENAME9(vf_open_filter)(vf,sh,"fmtcvt",NULL,libinput); + goto csp_again; + } else + if(palette==1){ + MSG_V("vd: Trying -vf palette...\n"); + palette=-1; + vf=RND_RENAME9(vf_open_filter)(vf,sh,"palette",NULL,libinput); + goto csp_again; + } else { + // sws failed, if the last filter (vf_vo) support MPEGPES try to append vf_lavc + vf_instance_t* voi, *vp = NULL, *ve; + // Remove the scale filter if we added it ourself + if(vf == sc) { + ve = vf; + vf = vf->next; + vf_uninit_filter(ve); + } + // Find the last filter (vf_vo) + for(voi = vf ; voi->next ; voi = voi->next) + vp = voi; + } + MSG_WARN(MSGTR_VOincompCodec); + sh->vfilter_inited=-1; + return MPXP_False; // failed + } + + out_fmt=sh->codec->outfmt[j]; + sh->outfmtidx=j; + sh->vfilter=vf; + + // autodetect flipping + if(vo_conf.flip==0){ + vo_FLIP_UNSET(vo_data); + if(sh->codec->outflags[j]&CODECS_FLAG_FLIP) + if(!(sh->codec->outflags[j]&CODECS_FLAG_NOFLIP)) + vo_FLIP_SET(vo_data); + } + if(vo_data->flags&VFCAP_FLIPPED) vo_FLIP_REVERT(vo_data); + if(vo_FLIP(vo_data) && !(vo_data->flags&VFCAP_FLIP)){ + // we need to flip, but no flipping filter avail. + sh->vfilter=vf=RND_RENAME9(vf_open_filter)(vf,sh,"flip",NULL,libinput); + } + + // time to do aspect ratio corrections... + + if(vo_conf.movie_aspect>-1.0) sh->aspect = vo_conf.movie_aspect; // cmdline overrides autodetect + if(vo_conf.opt_screen_size_x||vo_conf.opt_screen_size_y){ + screen_size_x = vo_conf.opt_screen_size_x; + screen_size_y = vo_conf.opt_screen_size_y; + if(!vo_conf.vidmode){ + if(!screen_size_x) screen_size_x=1; + if(!screen_size_y) screen_size_y=1; + if(screen_size_x<=8) screen_size_x*=sh->src_w; + if(screen_size_y<=8) screen_size_y*=sh->src_h; + } + } else { + // check source format aspect, calculate prescale ::atmos + screen_size_x=sh->src_w; + screen_size_y=sh->src_h; + if(vo_conf.screen_size_xy>=0.001){ + if(vo_conf.screen_size_xy<=8){ + // -xy means x+y scale + screen_size_x*=vo_conf.screen_size_xy; + screen_size_y*=vo_conf.screen_size_xy; + } else { + // -xy means forced width while keeping correct aspect + screen_size_x=vo_conf.screen_size_xy; + screen_size_y=vo_conf.screen_size_xy*sh->src_h/sh->src_w; + } + } + if(sh->aspect>0.01){ + int _w; + MSG_V("Movie-Aspect is %.2f:1 - prescaling to correct movie aspect.\n",sh->aspect); + _w=(int)((float)screen_size_y*sh->aspect); _w+=_w%2; // round + // we don't like horizontal downscale || user forced width: + if(_w<screen_size_x || vo_conf.screen_size_xy>8){ + screen_size_y=(int)((float)screen_size_x*(1.0/sh->aspect)); + screen_size_y+=screen_size_y%2; // round + if(screen_size_y<sh->src_h) // Do not downscale verticaly + screen_size_y=sh->src_h; + } else screen_size_x=_w; // keep new width + } else { + MSG_V("Movie-Aspect is undefined - no prescaling applied.\n"); + } + } + + MSG_V("vf->config(%dx%d->%dx%d,flags=0x%x,'%s',%s)\n", + sh->src_w,sh->src_h, + screen_size_x,screen_size_y, + vo_data->flags, + "MPlayerXP",vo_format_name(out_fmt)); + + MSG_DBG2("vf configuring: %s\n",vf->info->name); + if(vf->config(vf,sh->src_w,sh->src_h, + screen_size_x,screen_size_y, + vo_data->flags, + out_fmt)==0){ + MSG_WARN(MSGTR_CannotInitVO); + sh->vfilter_inited=-1; + return MPXP_False; + } + MSG_DBG2("vf->config(%dx%d->%dx%d,flags=%d,'%s')\n", + sh->src_w,sh->src_h, + screen_size_x,screen_size_y, + vo_data->flags, + vo_format_name(out_fmt)); + return MPXP_True; +} + +// mp_imgtype: buffering type, see mp_image.h +// mp_imgflag: buffer requirements (read/write, preserve, stride limits), see mp_image.h +// returns NULL or allocated mp_image_t* +// Note: buffer allocation may be moved to mpcodecs_config_vo() later... +mp_image_t* mpcodecs_get_image(sh_video_t *sh, int mp_imgtype, int mp_imgflag,int w, int h){ + MSG_DBG2("mpcodecs_get_image(vf_%s,%i,%i,%i,%i) was called\n",((vf_instance_t *)(sh->vfilter))->info->name,mp_imgtype,mp_imgflag,w,h); + mp_image_t* mpi=vf_get_new_image(sh->vfilter,sh->codec->outfmt[sh->outfmtidx],mp_imgtype,mp_imgflag,w,h,dae_curr_vdecoded(xp_core)); + mpi->x=mpi->y=0; + if(mpi->xp_idx==XP_IDX_INVALID) + MSG_V("[mpcodecs_get_image] Incorrect mpi->xp_idx. Be ready for segfault!\n"); + return mpi; +} + +void mpcodecs_draw_slice(sh_video_t *sh, mp_image_t*mpi) { + struct vf_instance_s* vf = sh->vfilter; + vf->put_slice(vf,mpi); +} Modified: mplayerxp/libmpcodecs/dec_video.h =================================================================== --- mplayerxp/libmpcodecs/dec_video.h 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/dec_video.h 2012-11-14 14:34:20 UTC (rev 366) @@ -2,18 +2,17 @@ #define DEC_VIDEO_H_INCLUDED 1 #include "xmpcore/xmp_enums.h" +struct priv_s; // dec_video.c: -extern MPXP_Rc __FASTCALL__ RND_RENAME3(mpcv_init)(sh_video_t *sh_video, const char *codec_name,const char *family,int status,any_t*libinput); -extern void __FASTCALL__ mpcv_uninit(sh_video_t *sh_video); -extern MPXP_Rc __FASTCALL__ mpcv_ffmpeg_init(sh_video_t*,any_t* libinput); +extern struct priv_s* __FASTCALL__ RND_RENAME3(mpcv_init)(sh_video_t *sh_video, const char *codec_name,const char *family,int status,any_t*libinput); +extern void __FASTCALL__ mpcv_uninit(struct priv_s *handle); +extern struct priv_s* __FASTCALL__ mpcv_ffmpeg_init(sh_video_t*,any_t* libinput); +extern int __FASTCALL__ RND_RENAME4(mpcv_decode)(struct priv_s *handle,const enc_frame_t* frame); -extern int __FASTCALL__ RND_RENAME4(mpcv_decode)(sh_video_t *sh_video,const enc_frame_t* frame); +extern MPXP_Rc __FASTCALL__ mpcv_get_quality_max(struct priv_s *handle,unsigned *qual); +extern MPXP_Rc __FASTCALL__ mpcv_set_quality(struct priv_s *handle,int quality); +extern MPXP_Rc __FASTCALL__ mpcv_set_colors(struct priv_s *handle,char *item,int value); +extern void __FASTCALL__ mpcv_resync_stream(struct priv_s *handle); -extern MPXP_Rc __FASTCALL__ mpcv_get_quality_max(sh_video_t *sh_video,unsigned *qual); -extern MPXP_Rc __FASTCALL__ mpcv_set_quality(sh_video_t *sh_video,int quality); - -extern MPXP_Rc __FASTCALL__ mpcv_set_colors(sh_video_t *sh_video,char *item,int value); -extern void __FASTCALL__ mpcv_resync_stream(sh_video_t *sh_video); - extern void vfm_help(void); #endif Modified: mplayerxp/libmpcodecs/vd.c =================================================================== --- mplayerxp/libmpcodecs/vd.c 2012-11-14 10:16:57 UTC (rev 365) +++ mplayerxp/libmpcodecs/vd.c 2012-11-14 14:34:20 UTC (rev 366) @@ -93,7 +93,7 @@ const video_probe_t* vfm_driver_probe(sh_video_t *sh) { unsigned i; - video_probe_t* probe; + const video_probe_t* probe; for (i=0; mpcodecs_vd_drivers[i] != &mpcodecs_vd_null; i++) { printf("probing %s\n",mpcodecs_vd_drivers[i]->info->driver_name); if((probe=mpcodecs_vd_drivers[i]->probe(sh,sh->fourcc))!=NULL) @@ -112,193 +112,3 @@ } MSG_INFO("\n"); } - -#include "libvo/video_out.h" - -extern vo_data_t* vo_data; -extern const vd_functions_t* mpvdec; // FIXME! - -MPXP_Rc mpcodecs_config_vo(sh_video_t *sh, int w, int h, any_t* libinput){ - int i,j; - unsigned int out_fmt=0; - int screen_size_x=0;//SCREEN_SIZE_X; - int screen_size_y=0;//SCREEN_SIZE_Y; - vf_instance_t* vf=sh->vfilter,*sc=NULL; - int palette=0; - - if(!(sh->src_w && sh->src_h)) - MSG_WARN( - "VDec: driver %s didn't set sh->src_w and sh->src_h, trying to workaround!\n" - ,sh->codec->codec_name); - /* XXX: HACK, if sh->disp_* aren't set, - * but we have w and h, set them :: atmos */ - if(!sh->src_w && w) - sh->src_w=w; - if(!sh->src_h && h) - sh->src_h=h; - - MSG_V("VDec: vo config request - %d x %d\n",w,h); - -csp_again: - // check if libvo and codec has common outfmt (no conversion): - j=-1; - for(i=0;i<CODECS_MAX_OUTFMT;i++){ - int flags; - out_fmt=sh->codec->outfmt[i]; - if(out_fmt==0xFFFFFFFF) continue; - flags=vf_query_format(vf,out_fmt,w,h); - MSG_DBG2("vo_debug[step i=%d]: query(%s %ix%i) returned 0x%X for:\n",i,vo_format_name(out_fmt),w,h,flags); - if(mp_conf.verbose>1) if(mp_conf.verbose) vf_showlist(vf); - if((flags&VFCAP_CSP_SUPPORTED_BY_HW) || ((flags&VFCAP_CSP_SUPPORTED) && j<0)){ - // check (query) if codec really support this outfmt... - sh->outfmtidx=j; // pass index to the control() function this way - if(mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)==MPXP_False) { - MSG_DBG2("vo_debug: codec[%s] query_format(%s) returned FALSE\n",mpvdec->info->driver_name,vo_format_name(out_fmt)); - continue; - } - j=i; - /*vo_data->flags=flags;*/ - if(flags&VFCAP_CSP_SUPPORTED_BY_HW) break; - } else - if(!palette && !(vo_data->flags&3) && (out_fmt==IMGFMT_RGB8||out_fmt==IMGFMT_BGR8)){ - sh->outfmtidx=j; // pass index to the control() function this way - if(mpvdec->control(sh,VDCTRL_QUERY_FORMAT,&out_fmt)!=MPXP_False) - palette=1; - } - } - if(j<0){ - // TODO: no match - we should use conversion... - if(strcmp(vf->info->name,"fmtcvt") && palette!=1){ - int ind; - MSG_WARN("Can't find colorspace for: "); - for(ind=0;ind<CODECS_MAX_OUTFMT;ind++) { - if(sh->codec->outfmt[ind]==0xFFFFFFFF) break; - MSG_WARN("'%s' ",vo_format_name(sh->codec->outfmt[ind])); - } - MSG_WARN("Trying -vf fmtcvt\n"); - sc=vf=RND_RENAME9(vf_open_filter)(vf,sh,"fmtcvt",NULL,libinput); - goto csp_again; - } else - if(palette==1){ - MSG_V("vd: Trying -vf palette...\n"); - palette=-1; - vf=RND_RENAME9(vf_open_filter)(vf,sh,"palette",NULL,libinput); - goto csp_again; - } else { - // sws failed, if the last filter (vf_vo) support MPEGPES try to append vf_lavc - vf_instance_t* voi, *vp = NULL, *ve; - // Remove the scale filter if we added it ourself - if(vf == sc) { - ve = vf; - vf = vf->next; - vf_uninit_filter(ve); - ... [truncated message content] |
From: <nic...@us...> - 2012-11-15 14:13:38
|
Revision: 372 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=372&view=rev Author: nickols_k Date: 2012-11-15 14:13:23 +0000 (Thu, 15 Nov 2012) Log Message: ----------- cumulative patch: use own stack for each thread + overload operators new & delete + SECURE_NAMES + fixes + cleanups + more .cpp sources Modified Paths: -------------- mplayerxp/configure mplayerxp/input2/input.c mplayerxp/libao2/ao_nas.c mplayerxp/libao2/audio_out.c mplayerxp/libmpcodecs/ad_faad.c mplayerxp/libmpcodecs/dec_video.c mplayerxp/libmpcodecs/vd_libmpeg2.c mplayerxp/libmpdemux/Makefile mplayerxp/libmpdemux/cache2.c mplayerxp/libmpdemux/demux_dv.c mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpdemux/stream.h mplayerxp/libvo/video_out.c mplayerxp/mp-opt-reg.cpp mplayerxp/mp_msg.cpp mplayerxp/mp_msg.h mplayerxp/mplayerxp.cpp mplayerxp/osdep/Makefile mplayerxp/osdep/getch2.c mplayerxp/osdep/getch2.h mplayerxp/osdep/mplib.h mplayerxp/postproc/af.c mplayerxp/postproc/vf.c mplayerxp/xmpcore/PointerProtector.h mplayerxp/xmpcore/sig_hand.cpp mplayerxp/xmpcore/xmp_adecoder.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_core.cpp mplayerxp/xmpcore/xmp_vdecoder.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Added Paths: ----------- mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer_r.cpp mplayerxp/libmpdemux/stream.cpp mplayerxp/osdep/mp_malloc.cpp mplayerxp/osdep/mplib.cpp Removed Paths: ------------- mplayerxp/libmpdemux/demuxer.c mplayerxp/libmpdemux/demuxer_r.c mplayerxp/libmpdemux/stream.c mplayerxp/osdep/mp_malloc.c mplayerxp/osdep/mplib.c Modified: mplayerxp/configure =================================================================== --- mplayerxp/configure 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/configure 2012-11-15 14:13:23 UTC (rev 372) @@ -90,7 +90,7 @@ "gcov|compile gnu coverage information into PROGRAM", "profile|compile profiling information into PROGRAM", "static|build static libraries", - "gdb23|allow additional level of debug messages", + "dbg23|allow additional level of debug messages", "win32loader|build support for Win32 codecs", "random_name|generates pseudo random suffix of target" ) @@ -763,7 +763,7 @@ # (FIXME: 'echocheck "dynamic linking"' above and modify here accordingly) bsd && add_ldflags "-rdynamic" -enabled gdb23 def_debug='#define MP_DEBUG 1' || def_debug='#undef MP_DEBUG' +enabled dbg23 def_debug='#define MP_DEBUG 1' || def_debug='#undef MP_DEBUG' # Checking for VIDIX enabled vidix && require2 vidix vidix/vidixlib.h vdlAllocFourccS -lvidix @@ -1072,16 +1072,16 @@ #define RND_NUMBER8 $rnd8 #define RND_NUMBER9 $rnd9 -#define RND_STR0 "$srnd0" -#define RND_STR1 "$srnd1" -#define RND_STR2 "$srnd2" -#define RND_STR3 "$srnd3" -#define RND_STR4 "$srnd4" -#define RND_STR5 "$srnd5" -#define RND_STR6 "$srnd6" -#define RND_STR7 "$srnd7" -#define RND_STR8 "$srnd8" -#define RND_STR9 "$srnd9" +#define RND_STR0 "x$srnd0" +#define RND_STR1 "x$srnd1" +#define RND_STR2 "x$srnd2" +#define RND_STR3 "x$srnd3" +#define RND_STR4 "x$srnd4" +#define RND_STR5 "x$srnd5" +#define RND_STR6 "x$srnd6" +#define RND_STR7 "x$srnd7" +#define RND_STR8 "x$srnd8" +#define RND_STR9 "x$srnd9" #define RND_RENAME0(a) a ## $frnd0 @@ -1095,6 +1095,17 @@ #define RND_RENAME8(a) a ## $frnd8 #define RND_RENAME9(a) a ## $frnd9 +#define SECURE_NAME0(a) x$srnd0 +#define SECURE_NAME1(a) x$srnd1 +#define SECURE_NAME2(a) x$srnd2 +#define SECURE_NAME3(a) x$srnd3 +#define SECURE_NAME4(a) x$srnd4 +#define SECURE_NAME5(a) x$srnd5 +#define SECURE_NAME6(a) x$srnd6 +#define SECURE_NAME7(a) x$srnd7 +#define SECURE_NAME8(a) x$srnd8 +#define SECURE_NAME9(a) x$srnd9 + #endif /* MPXP_CONFIG_H */ EOF Modified: mplayerxp/input2/input.c =================================================================== --- mplayerxp/input2/input.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/input2/input.c 2012-11-15 14:13:23 UTC (rev 372) @@ -86,12 +86,11 @@ }; typedef struct priv_s { + char antiviral_hole[RND_CHAR1]; // These are the user defined binds mp_cmd_bind_t* cmd_binds; mp_cmd_filter_t* cmd_filters; - char antiviral_hole[RND_CHAR1]; - mp_input_fd_t key_fds[MP_MAX_KEY_FD]; unsigned int num_key_fd; mp_input_fd_t cmd_fds[MP_MAX_CMD_FD]; @@ -743,7 +742,7 @@ filter->ctx = ctx; filter->next = priv->cmd_filters; priv->cmd_filters = filter; - RND_RENAME0(rnd_fill)(priv->antiviral_hole,sizeof(priv->antiviral_hole)); + SECURE_NAME9(rnd_fill)(priv->antiviral_hole,offsetof(priv_t,cmd_binds)-offsetof(priv_t,antiviral_hole)); } static char* mp_input_find_bind_for_key(const mp_cmd_bind_t* binds, int n,int* keys) { Modified: mplayerxp/libao2/ao_nas.c =================================================================== --- mplayerxp/libao2/ao_nas.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libao2/ao_nas.c 2012-11-15 14:13:23 UTC (rev 372) @@ -98,7 +98,7 @@ "Hardware", "Any" }; -#ifdef MP_DEBUG + static const char* nas_reason(unsigned int reason) { if (reason > 6) reason = 6; @@ -120,7 +120,6 @@ if (state>3) state = 3; return nas_states[state]; } -#endif static const ao_info_t info = { "NAS audio output", Modified: mplayerxp/libao2/audio_out.c =================================================================== --- mplayerxp/libao2/audio_out.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libao2/audio_out.c 2012-11-15 14:13:23 UTC (rev 372) @@ -217,8 +217,8 @@ ao->buffersize=-1; ao->opaque=mp_malloc(sizeof(priv_t)); priv_t* priv=ao->opaque; - RND_RENAME0(rnd_fill)(priv->antiviral_hole,sizeof(priv_t)); - RND_RENAME0(rnd_fill)(ao->antiviral_hole,offsetof(ao_data_t,samplerate)-offsetof(ao_data_t,antiviral_hole)); + SECURE_NAME9(rnd_fill)(priv->antiviral_hole,sizeof(priv_t)); + SECURE_NAME9(rnd_fill)(ao->antiviral_hole,offsetof(ao_data_t,samplerate)-offsetof(ao_data_t,antiviral_hole)); priv->audio_out=NULL; return ao; } Modified: mplayerxp/libmpcodecs/ad_faad.c =================================================================== --- mplayerxp/libmpcodecs/ad_faad.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpcodecs/ad_faad.c 2012-11-15 14:13:23 UTC (rev 372) @@ -348,7 +348,7 @@ } else { /* XXX: samples already multiplied by channels! */ MSG_DBG2("FAAD: Successfully decoded frame (%d Bytes)!\n", - sh->samplesize*NeAAC_finfo.samples); + afmt2bps(sh->afmt)*NeAAC_finfo.samples); memcpy(buf+len,NeAAC_sample_buffer, afmt2bps(sh->afmt)*NeAAC_finfo.samples); len += afmt2bps(sh->afmt)*NeAAC_finfo.samples; //printf("FAAD: buffer: %d bytes consumed: %d \n", k, NeAAC_finfo.bytesconsumed); Modified: mplayerxp/libmpcodecs/dec_video.c =================================================================== --- mplayerxp/libmpcodecs/dec_video.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpcodecs/dec_video.c 2012-11-15 14:13:23 UTC (rev 372) @@ -199,10 +199,10 @@ } sh_video->codec->flags|=CODECS_FLAG_SELECTED; // tagging it // ok, it matches all rules, let's find the driver! - if(!(mpvdec=vfm_find_driver(sh_video->codec->driver_name))) continue; - else MSG_DBG3("mpcv_init: mpcodecs_vd_drivers[%s]->mpvdec==0\n",mpcodecs_vd_drivers[i]->info->driver_name); + if(!(priv->mpvdec=vfm_find_driver(sh_video->codec->driver_name))) continue; + else MSG_DBG3("mpcv_init: mpcodecs_vd_drivers[%s]->mpvdec==0\n",priv->mpvdec->info->driver_name); // it's available, let's try to init! - if(mpvdec->init(sh_video,libinput)!=MPXP_Ok){ + if(priv->mpvdec->init(sh_video,libinput)!=MPXP_Ok){ MSG_ERR(MSGTR_CODEC_CANT_INITV); continue; // try next... } @@ -249,13 +249,13 @@ for(j=0;j<num_slices;j+=smp_num_cpus) { #pragma omp parallel for shared(vf) private(i) for(i=j;i<smp_num_cpus;i++) { - MSG_DBG2("parallel: dec_video.put_slice[%ux%u] %i %i %i %i\n",ampi[i].width,ampi[i].height,ampi[i].x,ampi[i].y,ampi[i].w,ampi[i].h); + MSG_DBG2("parallel: dec_video.put_slice[%ux%u] %i %i %i %i\n",ampi[i]->width,ampi[i]->height,ampi[i]->x,ampi[i]->y,ampi[i]->w,ampi[i]->h); vf->put_slice(vf,ampi[i]); free_mp_image(ampi[i]); } } for(;j<num_slices;j++) { - MSG_DBG2("par_tail: dec_video.put_slice[%ux%u] %i %i %i %i\n",ampi[i].width,ampi[i].height,ampi[i].x,ampi[i].y,ampi[i].w,ampi[i].h); + MSG_DBG2("par_tail: dec_video.put_slice[%ux%u] %i %i %i %i\n",ampi[i]->width,ampi[i]->height,ampi[i]->x,ampi[i]->y,ampi[i]->w,ampi[i]->h); vf->put_slice(vf,ampi[j]); free_mp_image(ampi[j]); } @@ -265,7 +265,7 @@ { /* execute slices instead of whole frame make faster multiple filters */ for(i=0;i<num_slices;i++) { - MSG_DBG2("dec_video.put_slice[%ux%u] %i %i %i %i -> [%i]\n",ampi[i].width,ampi[i].height,ampi[i].x,ampi[i].y,ampi[i].w,ampi[i].h,ampi[i].xp_idx); + MSG_DBG2("dec_video.put_slice[%ux%u] %i %i %i %i -> [%i]\n",ampi[i]->width,ampi[i]->height,ampi[i]->x,ampi[i]->y,ampi[i]->w,ampi[i]->h,ampi[i]->xp_idx); vf->put_slice(vf,ampi[i]); free_mp_image(ampi[i]); } @@ -296,7 +296,7 @@ sh_video->active_slices=0; mpi=priv->mpvdec->decode(sh_video, frame); - MSG_DBG2("decvideo: decoding video %u bytes\n",in_size); + MSG_DBG2("decvideo: decoding video %u bytes\n",frame->len); while(sh_video->active_slices!=0) usleep(0); /* ------------------------ frame decoded. -------------------- */ Modified: mplayerxp/libmpcodecs/vd_libmpeg2.c =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpcodecs/vd_libmpeg2.c 2012-11-15 14:13:23 UTC (rev 372) @@ -296,7 +296,7 @@ _info=mpeg2_info(priv->mpeg2dec); mpi=NULL; buf=0; - MSG_DBG2("len=%u ***mpeg2_info***\n",len); + MSG_DBG2("len=%u ***mpeg2_info***\n",frame->len); while(1) { state=mpeg2_parse(priv->mpeg2dec); Modified: mplayerxp/libmpdemux/Makefile =================================================================== --- mplayerxp/libmpdemux/Makefile 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpdemux/Makefile 2012-11-15 14:13:23 UTC (rev 372) @@ -29,11 +29,11 @@ ifeq ($(HAVE_LIBDV),yes) SRCS += demux_dv.c endif -SRCS += cache2.c stream.c tvi_dummy.c tvi_v4l.c +SRCS += cache2.c tvi_dummy.c tvi_v4l.c SRCS += tvi_bsdbt848.c frequencies.c mrl.c -SRCS += demuxer_r.c mp3_hdr.c video.c mpeg_hdr.c aviprint.c demux_asf.c -SRCS += demux_avi.c demux_mov.c parse_mp4.c demux_mpg.c demux_viv.c demuxer.c +SRCS += mp3_hdr.c video.c mpeg_hdr.c aviprint.c demux_asf.c +SRCS += demux_avi.c demux_mov.c parse_mp4.c demux_mpg.c demux_viv.c SRCS += parse_es.c demux_fli.c demux_ra.c demux_real.c demux_y4m.c yuv4mpeg.c yuv4mpeg_ratio.c SRCS += demux_nuv.c demux_film.c demux_roq.c demux_audio.c demux_demuxers.c SRCS += mpdemux.c demux_bmp.c demux_rawaudio.c demux_aiff.c demux_vqf.c @@ -53,9 +53,13 @@ SUBDIRS = endif +CXXSRCS = demuxer.cpp demuxer_r.cpp stream.cpp + OBJS = $(SRCS:.c=.o) +CXXOBJS = $(CXXSRCS:.cpp=.o) INCLUDE = -I../ CFLAGS = $(OPTFLAGS) $(INCLUDE) -W -Wall +CXXFLAGS = $(OPTXXFLAGS) $(INCLUDE) -W -Wall .SUFFIXES: .c .o @@ -68,9 +72,11 @@ .c.o: $(CC) -c $(CFLAGS) -o $@ $< +.cpp.o: + $(CXX) -c $(CXXFLAGS) -o $@ $< -$(LIBNAME): $(SUBDIRS) $(OBJS) - $(AR) r $(LIBNAME) $(OBJS) +$(LIBNAME): $(SUBDIRS) $(OBJS) $(CXXOBJS) + $(AR) r $(LIBNAME) $(OBJS) $(CXXOBJS) ifeq ($(HAVE_STREAMING),yes) $(AR) r $(LIBNAME) \ $(wildcard freesdp/*.o) \ @@ -93,7 +99,7 @@ depend: $(DO_MAKE) - $(CC) -MM $(CFLAGS) test.c $(SRCS) 1>.depend + $(CC) -MM $(CFLAGS) test.c $(SRCS) $(CXXSRCS) 1>.depend # # include dependency files if they exist Modified: mplayerxp/libmpdemux/cache2.c =================================================================== --- mplayerxp/libmpdemux/cache2.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpdemux/cache2.c 2012-11-15 14:13:23 UTC (rev 372) @@ -228,7 +228,7 @@ static void sig_cache2( void ) { MSG_V("cache2 segfault\n"); - mp_msg_flush(); + mpxp_print_flush(); xmp_killall_threads(pthread_self()); __exit_sighandler(); } Modified: mplayerxp/libmpdemux/demux_dv.c =================================================================== --- mplayerxp/libmpdemux/demux_dv.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpdemux/demux_dv.c 2012-11-15 14:13:23 UTC (rev 372) @@ -174,7 +174,7 @@ sh_video->src_w = dv_decoder->width; sh_video->src_h = dv_decoder->height; - mp_msg(MSGT_DEMUXER,MSGL_V,"demux_open_rawdv() frame_size: %d w: %d h: %d dif_seq: %d system: %d\n",dv_decoder->frame_size,dv_decoder->width, dv_decoder->height,dv_decoder->num_dif_seqs,dv_decoder->system); + MSG_V("demux_open_rawdv() frame_size: %d w: %d h: %d dif_seq: %d system: %d\n",dv_decoder->frame_size,dv_decoder->width, dv_decoder->height,dv_decoder->num_dif_seqs,dv_decoder->system); sh_video->fps= (dv_decoder->system==e_dv_system_525_60?29.97:25); Deleted: mplayerxp/libmpdemux/demuxer.c =================================================================== --- mplayerxp/libmpdemux/demuxer.c 2012-11-15 12:56:27 UTC (rev 371) +++ mplayerxp/libmpdemux/demuxer.c 2012-11-15 14:13:23 UTC (rev 372) @@ -1,830 +0,0 @@ -//=================== DEMUXER v2.5 ========================= - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <limits.h> -#include <errno.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include "stream.h" -#include "mp_config.h" -#include "help_mp.h" -#include "mplayerxp.h" -#include "libmpsub/subreader.h" -#include "libmpconf/cfgparser.h" -#include "nls/nls.h" - -#include "demuxer.h" -#include "stheader.h" - -#include "osdep/fastmemcpy.h" -#include "osdep/mplib.h" -#include "libvo/sub.h" -#include "libao2/afmt.h" -#include "demux_msg.h" - -extern demuxer_driver_t demux_aiff; -extern demuxer_driver_t demux_rawaudio; -extern demuxer_driver_t demux_rawvideo; -extern demuxer_driver_t demux_avi; -extern demuxer_driver_t demux_y4m; -extern demuxer_driver_t demux_asf; -extern demuxer_driver_t demux_nuv; -extern demuxer_driver_t demux_nsv; -extern demuxer_driver_t demux_mov; -extern demuxer_driver_t demux_mkv; -extern demuxer_driver_t demux_vivo; -extern demuxer_driver_t demux_ra; -extern demuxer_driver_t demux_real; -extern demuxer_driver_t demux_fli; -extern demuxer_driver_t demux_film; -extern demuxer_driver_t demux_roq; -extern demuxer_driver_t demux_bmp; -extern demuxer_driver_t demux_ogg; -extern demuxer_driver_t demux_pva; -extern demuxer_driver_t demux_smjpeg; -extern demuxer_driver_t demux_vqf; -extern demuxer_driver_t demux_mpxpav64; -extern demuxer_driver_t demux_mpgps; -extern demuxer_driver_t demux_mpgts; -extern demuxer_driver_t demux_ty; -extern demuxer_driver_t demux_audio; -extern demuxer_driver_t demux_lavf; -extern demuxer_driver_t demux_null; - -static const demuxer_driver_t *ddrivers[] = -{ - &demux_rawaudio, - &demux_rawvideo, - &demux_avi, - &demux_y4m, - &demux_asf, - &demux_nsv, - &demux_nuv, - &demux_mov, - &demux_mkv, - &demux_vivo, - &demux_ra, - &demux_real, - &demux_fli, - &demux_film, - &demux_roq, - &demux_bmp, -#ifdef HAVE_LIBVORBIS - &demux_ogg, -#endif - &demux_pva, - &demux_smjpeg, - &demux_vqf, - &demux_mpxpav64, - &demux_mpgps, - &demux_aiff, - &demux_audio, - &demux_mpgts, - &demux_ty, - &demux_lavf, - &demux_null, - NULL -}; - -typedef struct demuxer_info_st { - char *id[INFOT_MAX]; -} demuxer_info_t; - -void libmpdemux_register_options(m_config_t* cfg) -{ - unsigned i; - for(i=0;ddrivers[i];i++) { - if(ddrivers[i]->options) - m_config_register_options(cfg,ddrivers[i]->options); - if(ddrivers[i]==&demux_null) break; - } -} - -void free_demuxer_stream(demux_stream_t *ds){ - if(ds) { - ds_free_packs(ds); - mp_free(ds); - } -} - -int demux_aid_vid_mismatch = 0; - -demux_stream_t* new_demuxer_stream(struct demuxer_s *demuxer,int id){ - demux_stream_t* ds=mp_malloc(sizeof(demux_stream_t)); - RND_RENAME0(rnd_fill)(ds->antiviral_hole,offsetof(struct demuxer_s,pin)-offsetof(struct demuxer_s,antiviral_hole)); - ds->pin=DS_PIN; - ds->buffer_pos=ds->buffer_size=0; - ds->buffer=NULL; - ds->pts=0; - ds->pts_bytes=0; - ds->eof=0; - ds->pos=0; - ds->dpos=0; - ds->pack_no=0; -//--------------- - ds->packs=0; - ds->bytes=0; - ds->first=ds->last=ds->current=NULL; - ds->id=id; - ds->demuxer=demuxer; -//---------------- - ds->asf_seq=-1; - ds->asf_packet=NULL; -//---------------- - ds->sh=NULL; - ds->pts_flags=0; - ds->prev_pts=ds->pts_corr=0; - return ds; -} - -demuxer_t* new_demuxer(stream_t *stream,int type,int a_id,int v_id,int s_id){ - demuxer_t *d=mp_mallocz(sizeof(demuxer_t)); - RND_RENAME0(rnd_fill)(d->antiviral_hole,offsetof(demuxer_t,pin)-offsetof(demuxer_t,antiviral_hole)); - d->pin=DEMUX_PIN; - d->stream=stream; - d->movi_start=stream->start_pos; - d->movi_end=stream->end_pos; - d->movi_length=UINT_MAX; - d->flags|=DEMUXF_SEEKABLE; - d->synced=0; - d->filepos=0; - d->audio=new_demuxer_stream(d,a_id); - d->video=new_demuxer_stream(d,v_id); - d->sub=new_demuxer_stream(d,s_id); - d->file_format=type; - d->info=mp_mallocz(sizeof(demuxer_info_t)); - stream_reset(stream); - stream_seek(stream,stream->start_pos); - return d; -} - -sh_audio_t *get_sh_audio(demuxer_t *demuxer, int id) -{ - if(id > MAX_A_STREAMS-1 || id < 0) { - MSG_WARN("Requested audio stream id overflow (%d > %d)\n", - id, MAX_A_STREAMS); - return NULL; - } - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return demuxer->a_streams[id]; -} - -sh_audio_t* new_sh_audio_aid(demuxer_t *demuxer,int id,int aid){ - if(id > MAX_A_STREAMS-1 || id < 0) { - MSG_WARN("Requested audio stream id overflow (%d > %d)\n", - id, MAX_A_STREAMS); - return NULL; - } - if(demuxer->a_streams[id]) { - MSG_WARN(MSGTR_AudioStreamRedefined,id); - } else { - sh_audio_t *sh; - MSG_V("==> Found audio stream: %d\n",id); - demuxer->a_streams[id]=mp_calloc(1, sizeof(sh_audio_t)); - sh = demuxer->a_streams[id]; - // set some defaults - sh->afmt=bps2afmt(2); /* PCM */ - sh->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/ - MSG_V("ID_AUDIO_ID=%d\n", aid); - } - ((sh_audio_t *)demuxer->a_streams[id])->aid = aid; - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return demuxer->a_streams[id]; -} - -void free_sh_audio(sh_audio_t* sh){ - MSG_V("DEMUXER: freeing sh_audio at %p \n",sh); - if(sh->wf) mp_free(sh->wf); - mp_free(sh); -} - -sh_video_t *get_sh_video(demuxer_t *demuxer, int id) -{ - if(id > MAX_V_STREAMS-1 || id < 0) { - MSG_WARN("Requested video stream id overflow (%d > %d)\n", - id, MAX_V_STREAMS); - return NULL; - } - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return demuxer->v_streams[id]; -} - -sh_video_t* new_sh_video_vid(demuxer_t *demuxer,int id,int vid){ - if(id > MAX_V_STREAMS-1 || id < 0) { - MSG_WARN("Requested video stream id overflow (%d > %d)\n", - id, MAX_V_STREAMS); - return NULL; - } - if(demuxer->v_streams[id]) { - MSG_WARN(MSGTR_VideoStreamRedefined,id); - } else { - MSG_V("==> Found video stream: %d\n",id); - demuxer->v_streams[id]=mp_calloc(1, sizeof(sh_video_t)); - MSG_V("ID_VIDEO_ID=%d\n", vid); - } - ((sh_video_t *)demuxer->v_streams[id])->vid = vid; - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return demuxer->v_streams[id]; -} - -void free_sh_video(sh_video_t* sh){ - MSG_V("DEMUXER: freeing sh_video at %p \n",sh); - if(sh->bih) mp_free(sh->bih); - mp_free(sh); -} - -void free_demuxer(demuxer_t *demuxer){ - unsigned i; - if(demuxer) - { - MSG_V("DEMUXER: freeing demuxer at %p \n",demuxer); - - if(demuxer->driver) demuxer->driver->close(demuxer); - - // mp_free streams: - for(i=0;i<MAX_A_STREAMS;i++) if(demuxer->a_streams[i]) free_sh_audio(demuxer->a_streams[i]); - for(i=0;i<MAX_V_STREAMS;i++) if(demuxer->v_streams[i]) free_sh_video(demuxer->v_streams[i]); - //if(sh_audio) free_sh_audio(sh_audio); - //if(sh_video) free_sh_video(sh_video); - // mp_free demuxers: - FREE_DEMUXER_STREAM(demuxer->audio); - FREE_DEMUXER_STREAM(demuxer->video); - FREE_DEMUXER_STREAM(demuxer->sub); - demux_info_free(demuxer); - mp_free(demuxer); - } -} - - -void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){ -// demux_packet_t* dp=new_demux_packet(len); -// stream_read(stream,dp->buffer,len); -// dp->pts=pts; //(float)pts/90000.0f; -// dp->pos=pos; - // append packet to DS stream: - if(dp->len>0) { - ++ds->packs; - ds->bytes+=dp->len; - if(ds->last) { - // next packet in stream - ds->last->next=dp; - ds->last=dp; - } else { - // first packet in stream - ds->first=ds->last=dp; - } - MSG_DBG2("DEMUX: Append packet to %s, len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n", - (ds==ds->demuxer->audio)?"d_audio":"d_video", - dp->len,dp->pts,(unsigned int)dp->pos,ds->demuxer->audio->packs,ds->demuxer->video->packs); - } - else - MSG_DBG2("DEMUX: Skip packet for %s, len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n", - (ds==ds->demuxer->audio)?"d_audio":"d_video", - dp->len,dp->pts,(unsigned int)dp->pos,ds->demuxer->audio->packs,ds->demuxer->video->packs); -} - -void ds_read_packet(demux_stream_t *ds,stream_t *stream,int len,float pts,off_t pos,int flags){ - demux_packet_t* dp=new_demux_packet(len); - len=stream_read(stream,dp->buffer,len); - resize_demux_packet(dp,len); - dp->pts=pts; //(float)pts/90000.0f; - dp->pos=pos; - dp->flags=flags; - // append packet to DS stream: - ds_add_packet(ds,dp); - MSG_DBG2("ds_read_packet(%s,%u,%f,%llu,%i)\n",ds==ds->demuxer->video?"video":"audio",len,pts,pos,flags); -} - -int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){ - /* Note: parameter 'ds' can be NULL! */ - return demux->driver->demux(demux,ds); -} - -// return value: -// 0 = EOF -// 1 = succesfull -int ds_fill_buffer(demux_stream_t *ds){ - demuxer_t *demux=ds->demuxer; - if(ds->buffer) mp_free(ds->buffer); -/* ds_free_packs(ds); */ - if(mp_conf.verbose>2) { - if(ds==demux->audio) - MSG_DBG3("ds_fill_buffer(d_audio) called\n"); - else - if(ds==demux->video) - MSG_DBG3("ds_fill_buffer(d_video) called\n"); - else - if(ds==demux->sub) - MSG_DBG3("ds_fill_buffer(d_sub) called\n"); - else - MSG_DBG3("ds_fill_buffer(unknown %p) called\n",ds); - } - check_pin("demuxer",ds->pin,DS_PIN); - while(1){ - if(ds->packs){ - demux_packet_t *p=ds->first; - // copy useful data: - ds->buffer=p->buffer; - ds->buffer_pos=0; - ds->buffer_size=p->len; - ds->pos=p->pos; - ds->dpos+=p->len; // !!! - ++ds->pack_no; - if(p->pts){ - ds->pts=p->pts; - ds->pts_bytes=0; - } - ds->pts_bytes+=p->len; // !!! - ds->flags=p->flags; - // mp_free packet: - ds->bytes-=p->len; - ds->current=p; - ds->first=p->next; - if(!ds->first) ds->last=NULL; - --ds->packs; - return 1; //ds->buffer_size; - } - if(demux->audio->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes); - MSG_HINT(MSGTR_MaybeNI); - break; - } - if(demux->video->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes); - MSG_HINT(MSGTR_MaybeNI); - break; - } - if(!demux->driver){ - MSG_DBG2("ds_fill_buffer: demux->driver==NULL failed\n"); - break; // EOF - } - if(!demux->driver->demux(demux,ds)){ - MSG_DBG2("ds_fill_buffer: demux->driver->demux() failed\n"); - break; // EOF - } - } - ds->buffer_pos=ds->buffer_size=0; - ds->buffer=NULL; - ds->current=NULL; - MSG_V("ds_fill_buffer: EOF reached (stream: %s) \n",ds==demux->audio?"audio":"video"); - ds->eof=1; - return 0; -} - -int demux_read_data(demux_stream_t *ds,unsigned char* mem,int len){ -int x; -int bytes=0; -while(len>0){ - x=ds->buffer_size-ds->buffer_pos; - if(x==0){ - if(!ds_fill_buffer(ds)) return bytes; - } else { - if(x>len) x=len; - if(x<0) return bytes; /* BAD!!! sometime happens. Broken stream, driver, gcc ??? */ - if(mem) memcpy(mem+bytes,&ds->buffer[ds->buffer_pos],x); - bytes+=x;len-=x;ds->buffer_pos+=x; - } -} -return bytes; -} - -void ds_free_packs(demux_stream_t *ds){ - demux_packet_t *dp=ds->first; - while(dp){ - demux_packet_t *dn=dp->next; - free_demux_packet(dp); - dp=dn; - } - if(ds->asf_packet){ - // mp_free unfinished .asf fragments: - mp_free(ds->asf_packet->buffer); - mp_free(ds->asf_packet); - ds->asf_packet=NULL; - } - ds->first=ds->last=NULL; - ds->packs=0; // !!!!! - ds->bytes=0; - if(ds->current) mp_free(ds->current); - ds->current=NULL; - ds->buffer=NULL; - ds->buffer_pos=ds->buffer_size; - ds->pts=0; ds->pts_bytes=0; -} - -void ds_free_packs_until_pts(demux_stream_t *ds,float pts){ - demux_packet_t *dp=ds->first; - unsigned packs,bytes; - packs=bytes=0; - while(dp){ - demux_packet_t *dn=dp->next; - if(dp->pts >= pts) break; - packs++; - bytes+=dp->len; - free_demux_packet(dp); - dp=dn; - } - if(!dp) - { - if(ds->asf_packet){ - // mp_free unfinished .asf fragments: - mp_free(ds->asf_packet->buffer); - mp_free(ds->asf_packet); - ds->asf_packet=NULL; - } - ds->first=ds->last=NULL; - ds->packs=0; // !!!!! - ds->bytes=0; - ds->pts=0; - } - else - { - ds->first=dp; - ds->packs-=packs; - ds->bytes-=bytes; - ds->pts=dp->pts; - } - if(ds->current) mp_free(ds->current); - ds->current=NULL; - ds->buffer=NULL; - ds->buffer_pos=ds->buffer_size; - ds->pts_bytes=0; -} - -demux_packet_t* clone_demux_packet(demux_packet_t* pack){ - demux_packet_t* dp=(demux_packet_t*)mp_malloc(sizeof(demux_packet_t)); -// while(pack->master) pack=pack->master; // find the master - memcpy(dp,pack,sizeof(demux_packet_t)); -// dp->next=NULL; -// dp->refcount=0; -// dp->master=pack; -// pack->refcount++; - return dp; -} - -int ds_get_packet(demux_stream_t *ds,unsigned char **start){ - while(1){ - int len; - if(ds->buffer_pos>=ds->buffer_size){ - if(!ds_fill_buffer(ds)){ - // EOF - *start = NULL; - return -1; - } - } - len=ds->buffer_size-ds->buffer_pos; - *start = &ds->buffer[ds->buffer_pos]; - ds->buffer_pos+=len; - return len; - } -} - -int ds_get_packet_sub(demux_stream_t *ds,unsigned char **start){ - while(1){ - int len; - if(ds->buffer_pos>=ds->buffer_size){ - *start = NULL; - if(!ds->packs) return -1; // no sub - if(!ds_fill_buffer(ds)) return -1; // EOF - } - len=ds->buffer_size-ds->buffer_pos; - *start = &ds->buffer[ds->buffer_pos]; - ds->buffer_pos+=len; - return len; - } -} - -float ds_get_next_pts(demux_stream_t *ds) { - demuxer_t* demux = ds->demuxer; - while(!ds->first) { - if(demux->audio->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes); - MSG_HINT(MSGTR_MaybeNI); - return -1; - } - if(demux->video->bytes>=MAX_PACK_BYTES){ - MSG_ERR(MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes); - MSG_HINT(MSGTR_MaybeNI); - return -1; - } - if(!demux_fill_buffer(demux,ds)) - return -1; - } - return ds->first->pts; -} - -// ==================================================================== -const struct s_stream_txt_ids -{ - unsigned demuxer_id; - unsigned stream_id; -}stream_txt_ids[]= -{ - { INFOT_AUTHOR, SCTRL_TXT_GET_STREAM_AUTHOR }, - { INFOT_NAME, SCTRL_TXT_GET_STREAM_NAME }, - { INFOT_SUBJECT, SCTRL_TXT_GET_STREAM_SUBJECT }, - { INFOT_COPYRIGHT, SCTRL_TXT_GET_STREAM_COPYRIGHT }, - { INFOT_DESCRIPTION,SCTRL_TXT_GET_STREAM_DESCRIPTION }, - { INFOT_ALBUM, SCTRL_TXT_GET_STREAM_ALBUM }, - { INFOT_DATE, SCTRL_TXT_GET_STREAM_DATE }, - { INFOT_TRACK, SCTRL_TXT_GET_STREAM_TRACK }, - { INFOT_GENRE, SCTRL_TXT_GET_STREAM_GENRE }, - { INFOT_ENCODER, SCTRL_TXT_GET_STREAM_ENCODER }, - { INFOT_SOURCE_MEDIA,SCTRL_TXT_GET_STREAM_SOURCE_MEDIA }, - { INFOT_RATING, SCTRL_TXT_GET_STREAM_RATING }, - { INFOT_COMMENTS, SCTRL_TXT_GET_STREAM_COMMENT }, - { INFOT_MIME, SCTRL_TXT_GET_STREAM_MIME } -}; -static demuxer_t* demux_open_stream(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id) -{ - unsigned i; - demuxer_t *demuxer=NULL,*new_demux=NULL; - - pts_from_bps=0; - demux_aid_vid_mismatch = 0; - i=0; -again: - for(;ddrivers[i]!=&demux_null;i++) { - /* don't remove it from loop!!! (for initializing) */ - demuxer = new_demuxer(stream,DEMUXER_TYPE_UNKNOWN,audio_id,video_id,dvdsub_id); - MSG_V("Probing %s ... ",ddrivers[i]->name); - stream_reset(demuxer->stream); - stream_seek(demuxer->stream,demuxer->stream->start_pos); - if(ddrivers[i]->probe(demuxer)==MPXP_Ok) { - MSG_V("OK\n"); - demuxer->driver = ddrivers[i]; - break; - } - MSG_V("False\n"); - FREE_DEMUXER(demuxer); - } - if(!demuxer || !demuxer->driver) { - MSG_ERR(MSGTR_FormatNotRecognized); - FREE_DEMUXER(demuxer); - return NULL; - } - - if(!(new_demux=demuxer->driver->open(demuxer))) { - MSG_ERR("Can't open stream with '%s'\n", demuxer->driver->name); - demuxer->driver=NULL; - i++; - goto again; - } - demuxer=new_demux; - MSG_OK("Using: %s\n",demuxer->driver->name); - for(i=0;i<sizeof(stream_txt_ids)/sizeof(struct s_stream_txt_ids);i++) - if(!demux_info_get(demuxer,stream_txt_ids[i].demuxer_id)) { - char stream_name[256]; - if(demuxer->stream->driver->control) { - if(demuxer->stream->driver->control(demuxer->stream,stream_txt_ids[i].stream_id,stream_name) == MPXP_Ok) { - demux_info_add(demuxer,stream_txt_ids[i].demuxer_id,stream_name); - } - } - } - stream->demuxer=demuxer; - return demuxer; -} - -static char* audio_stream = NULL; -static char* sub_stream = NULL; -static int demuxer_type = 0, audio_demuxer_type = 0, sub_demuxer_type = 0; - -demuxer_t* RND_RENAME1(demux_open)(stream_t *vs,int file_format,int audio_id,int video_id,int dvdsub_id){ - stream_t *as = NULL,*ss = NULL; - demuxer_t *vd,*ad = NULL,*sd = NULL; - int afmt = 0,sfmt = 0; - any_t* libinput=NULL; -#ifdef HAVE_STREAMIN - libinput=vs->streaming_strl->libinput; -#endif - - if(audio_stream) { - as = RND_RENAME2(open_stream)(libinput,audio_stream,&afmt,NULL); - if(!as) { - MSG_ERR("Can't open audio stream: %s\n",audio_stream); - return NULL; - } - } - if(sub_stream) { - ss = RND_RENAME2(open_stream)(libinput,sub_stream,&sfmt,NULL); - if(!ss) { - MSG_ERR("Can't open subtitles stream: %s\n",sub_stream); - return NULL; - } - } - - vd = demux_open_stream(vs,demuxer_type ? demuxer_type : file_format,audio_stream ? -2 : audio_id,video_id, sub_stream ? -2 : dvdsub_id); - if(!vd) - return NULL; - if(as) { - ad = demux_open_stream(as,audio_demuxer_type ? audio_demuxer_type : afmt,audio_id,-2,-2); - if(!ad) - MSG_WARN("Failed to open audio demuxer: %s\n",audio_stream); - else if(ad->audio->sh && ((sh_audio_t*)ad->audio->sh)->wtag == 0x55) // MP3 - m_config_set_flag(mp_data->mconfig,"mp3.hr-seek",1); // Enable high res seeking - } - if(ss) { - sd = demux_open_stream(ss,sub_demuxer_type ? sub_demuxer_type : sfmt,-2,-2,dvdsub_id); - if(!sd) - MSG_WARN("Failed to open subtitles demuxer: %s\n",sub_stream); - } - - if(ad && sd) - return new_demuxers_demuxer(vd,ad,sd); - else if(ad) - return new_demuxers_demuxer(vd,ad,vd); - else if(sd) - return new_demuxers_demuxer(vd,vd,sd); - return vd; -} - -int demux_seek(demuxer_t *demuxer,const seek_args_t* seeka){ - demux_stream_t *d_audio=demuxer->audio; - demux_stream_t *d_video=demuxer->video; - sh_audio_t *sh_audio=d_audio->sh; - sh_video_t *sh_video=d_video->sh; - - if(!(demuxer->stream->type&STREAMTYPE_SEEKABLE)) - { - MSG_WARN("Stream is not seekable\n"); - return 0; - } - if(!(demuxer->flags&DEMUXF_SEEKABLE)) - { - MSG_WARN("Demuxer is not seekable\n"); - return 0; - } - - // clear demux buffers: - if(sh_audio){ ds_free_packs(d_audio);sh_audio->a_buffer_len=0;} - ds_free_packs(d_video); - - stream_set_eof(demuxer->stream,0); // clear eof flag - demuxer->video->eof=0; - demuxer->audio->eof=0; - demuxer->video->prev_pts=0; - demuxer->audio->prev_pts=0; - - if(sh_audio) sh_audio->timer=0; - if(demuxer->driver->seek) demuxer->driver->seek(demuxer,seeka); - else MSG_WARN("Demuxer seek error\n"); - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return 1; -} - -static const char *info_names[INFOT_MAX] = -{ - "Author", - "Name", - "Subject", - "Copyright", - "Description", - "Album", - "Date", - "Track", - "Genre", - "Encoder", - "SrcMedia", - "WWW", - "Mail", - "Rating", - "Comments", - "Mime" -}; - -int demux_info_add(demuxer_t *demuxer, unsigned opt, const char *param) -{ - if(!opt || opt > INFOT_MAX) - { - MSG_WARN("Unknown info type %u\n",opt); - return 0; - } - opt--; - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - if(((demuxer_info_t *)demuxer->info)->id[opt]) - { - MSG_V( "Demuxer info '%s' already present as '%s'!\n",info_names[opt],((demuxer_info_t *)demuxer->info)->id[opt]); - mp_free(((demuxer_info_t *)demuxer->info)->id[opt]); - } - ((demuxer_info_t *)demuxer->info)->id[opt]=nls_recode2screen_cp(sub_data.cp,param,strlen(param)); - return 1; -} - -int demux_info_print(const demuxer_t *demuxer,const char *filename) -{ - unsigned i; - MSG_HINT(" CLIP INFO (%s):\n",filename); - for(i=0;i<INFOT_MAX;i++) - if(((demuxer_info_t *)demuxer->info)->id[i]) - MSG_HINT(" %s: %s\n",info_names[i],((demuxer_info_t *)demuxer->info)->id[i]); - return 0; -} - -void demux_info_free(demuxer_t* demuxer) -{ - unsigned i; - if(demuxer->info) - { - for(i=0;i<INFOT_MAX;i++) - if(((demuxer_info_t *)demuxer->info)->id[i]) - mp_free(((demuxer_info_t *)demuxer->info)->id[i]); - mp_free(demuxer->info); - } -} - -const char* demux_info_get(const demuxer_t *demuxer, unsigned opt) { - if(!opt || opt > INFOT_MAX) return NULL; - return ((demuxer_info_t *)demuxer->info)->id[opt-1]; -} - -/******************* Options stuff **********************/ - -static const config_t demux_opts[] = { - { "audiofile", &audio_stream, CONF_TYPE_STRING, 0, 0, 0, "forces reading of audio-stream from other file" }, - { "subfile", &sub_stream, CONF_TYPE_STRING, 0, 0, 0, "forces reading of subtitles from other file" }, - { "type", &demuxer_type, CONF_TYPE_INT, CONF_RANGE, 1, DEMUXER_TYPE_MAX, "forces demuxer by given number" }, - { "audio", &audio_demuxer_type, CONF_TYPE_INT, CONF_RANGE, 1, DEMUXER_TYPE_MAX, "forces using of audio-demuxer" }, - { "sub", &sub_demuxer_type, CONF_TYPE_INT, CONF_RANGE, 1, DEMUXER_TYPE_MAX, "forces using of subtitle-demuxer" }, - { NULL, NULL, 0, 0, 0, 0, NULL} -}; - -static const config_t demuxer_opts[] = { - { "demuxer", &demux_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, "Demuxer related options" }, - { NULL, NULL, 0, 0, 0, 0, NULL} -}; - -void demuxer_register_options(m_config_t* cfg) { - m_config_register_options(cfg,demuxer_opts); -} - -static MPXP_Rc demux_control(const demuxer_t *demuxer, int cmd, any_t*arg) { - - if(demuxer->driver) - return demuxer->driver->control(demuxer,cmd,arg); - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return MPXP_Unknown; -} - -int demuxer_switch_audio(const demuxer_t *demuxer, int id) -{ - if(id>MAX_A_STREAMS) id=0; - if (demux_control(demuxer, DEMUX_CMD_SWITCH_AUDIO, &id) == MPXP_Unknown) - id = demuxer->audio->id; - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return id; -} - -int demuxer_switch_video(const demuxer_t *demuxer, int id) -{ - if(id>MAX_V_STREAMS) id=0; - if (demux_control(demuxer, DEMUX_CMD_SWITCH_VIDEO, &id) == MPXP_Unknown) - id = demuxer->audio->id; - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return id; -} - -int demuxer_switch_subtitle(const demuxer_t *demuxer, int id) -{ - if(id>MAX_S_STREAMS) id=0; - if (demux_control(demuxer, DEMUX_CMD_SWITCH_SUBS, &id) == MPXP_Unknown) - id = demuxer->audio->id; - check_pin("demuxer",demuxer->pin,DEMUX_PIN); - return id; -} - -demux_packet_t* new_demux_packet(int len){ - demux_packet_t* dp=mp_malloc(sizeof(demux_packet_t)); - dp->len=len; - dp->buffer=mp_malloc(len); - dp->next=NULL; - dp->pts=0; - dp->pos=0; - dp->flags=0; - return dp; -} - -void free_demux_packet(demux_packet_t* dp){ - mp_free(dp->buffer); - mp_free(dp); -} - -void resize_demux_packet(demux_packet_t* dp, int len) -{ - if(dp->len!=len) - { - if(len) - { - dp->buffer=(unsigned char *)mp_realloc(dp->buffer,len+8); - memset(dp->buffer+len,0,8); - } - else - { - if(dp->buffer) mp_free(dp->buffer); - dp->buffer=NULL; - } - dp->len=len; - } -} Copied: mplayerxp/libmpdemux/demuxer.cpp (from rev 369, mplayerxp/libmpdemux/demuxer.c) =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp (rev 0) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-11-15 14:13:23 UTC (rev 372) @@ -0,0 +1,829 @@ +//=================== DEMUXER v2.5 ========================= +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <limits.h> +#include <errno.h> +#include <sys/types.h> +#include <sys/stat.h> +extern "C" { +#include "stream.h" +#include "mp_config.h" +#include "help_mp.h" +#include "libmpsub/subreader.h" +#include "libmpconf/cfgparser.h" +#include "nls/nls.h" + +#include "demuxer.h" +#include "stheader.h" + +#include "osdep/fastmemcpy.h" +#include "osdep/mplib.h" +#include "libvo/sub.h" +#include "libao2/afmt.h" +#include "demux_msg.h" +} +#include "mplayerxp.h" + +extern demuxer_driver_t demux_aiff; +extern demuxer_driver_t demux_rawaudio; +extern demuxer_driver_t demux_rawvideo; +extern demuxer_driver_t demux_avi; +extern demuxer_driver_t demux_y4m; +extern demuxer_driver_t demux_asf; +extern demuxer_driver_t demux_nuv; +extern demuxer_driver_t demux_nsv; +extern demuxer_driver_t demux_mov; +extern demuxer_driver_t demux_mkv; +extern demuxer_driver_t demux_vivo; +extern demuxer_driver_t demux_ra; +extern demuxer_driver_t demux_real; +extern demuxer_driver_t demux_fli; +extern demuxer_driver_t demux_film; +extern demuxer_driver_t demux_roq; +extern demuxer_driver_t demux_bmp; +extern demuxer_driver_t demux_ogg; +extern demuxer_driver_t demux_pva; +extern demuxer_driver_t demux_smjpeg; +extern demuxer_driver_t demux_vqf; +extern demuxer_driver_t demux_mpxpav64; +extern demuxer_driver_t demux_mpgps; +extern demuxer_driver_t demux_mpgts; +extern demuxer_driver_t demux_ty; +extern demuxer_driver_t demux_audio; +extern demuxer_driver_t demux_lavf; +extern demuxer_driver_t demux_null; + +static const demuxer_driver_t *ddrivers[] = +{ + &demux_rawaudio, + &demux_rawvideo, + &demux_avi, + &demux_y4m, + &demux_asf, + &demux_nsv, + &demux_nuv, + &demux_mov, + &demux_mkv, + &demux_vivo, + &demux_ra, + &demux_real, + &demux_fli, + &demux_film, + &demux_roq, + &demux_bmp, +#ifdef HAVE_LIBVORBIS + &demux_ogg, +#endif + &demux_pva, + &demux_smjpeg, + &demux_vqf, + &demux_mpxpav64, + &demux_mpgps, + &demux_aiff, + &demux_audio, + &demux_mpgts, + &demux_ty, + &demux_lavf, + &demux_null, + NULL +}; + +typedef struct demuxer_info_st { + char *id[INFOT_MAX]; +} demuxer_info_t; + +void libmpdemux_register_options(m_config_t* cfg) +{ + unsigned i; + for(i=0;ddrivers[i];i++) { + if(ddrivers[i]->options) + m_config_register_options(cfg,ddrivers[i]->options); + if(ddrivers[i]==&demux_null) break; + } +} + +void free_demuxer_stream(demux_stream_t *ds){ + if(ds) { + ds_free_packs(ds); + mp_free(ds); + } +} + +int demux_aid_vid_mismatch = 0; + +demux_stream_t* new_demuxer_stream(struct demuxer_s *demuxer,int id){ + demux_stream_t* ds=(demux_stream_t*)mp_malloc(sizeof(demux_stream_t)); + SECURE_NAME9(rnd_fill)(ds->antiviral_hole,offsetof(demux_stream_t,pin)-offsetof(demux_stream_t,antiviral_hole)); + ds->pin=DS_PIN; + ds->buffer_pos=ds->buffer_size=0; + ds->buffer=NULL; + ds->pts=0; + ds->pts_bytes=0; + ds->eof=0; + ds->pos=0; + ds->dpos=0; + ds->pack_no=0; +//--------------- + ds->packs=0; + ds->bytes=0; + ds->first=ds->last=ds->current=NULL; + ds->id=id; + ds->demuxer=demuxer; +//---------------- + ds->asf_seq=-1; + ds->asf_packet=NULL; +//---------------- + ds->sh=NULL; + ds->pts_flags=0; + ds->prev_pts=ds->pts_corr=0; + return ds; +} + +demuxer_t* new_demuxer(stream_t *stream,int type,int a_id,int v_id,int s_id){ + demuxer_t *d=(demuxer_t*)mp_mallocz(sizeof(demuxer_t)); + SECURE_NAME9(rnd_fill)(d->antiviral_hole,offsetof(demuxer_t,pin)-offsetof(demuxer_t,antiviral_hole)); + d->pin=DEMUX_PIN; + d->stream=stream; + d->movi_start=stream->start_pos; + d->movi_end=stream->end_pos; + d->movi_length=UINT_MAX; + d->flags|=DEMUXF_SEEKABLE; + d->synced=0; + d->filepos=0; + d->audio=new_demuxer_stream(d,a_id); + d->video=new_demuxer_stream(d,v_id); + d->sub=new_demuxer_stream(d,s_id); + d->file_format=type; + d->info=mp_mallocz(sizeof(demuxer_info_t)); + stream_reset(stream); + stream_seek(stream,stream->start_pos); + return d; +} + +sh_audio_t *get_sh_audio(demuxer_t *demuxer, int id) +{ + if(id > MAX_A_STREAMS-1 || id < 0) { + MSG_WARN("Requested audio stream id overflow (%d > %d)\n", + id, MAX_A_STREAMS); + return NULL; + } + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return reinterpret_cast<sh_audio_t*>(demuxer->a_streams[id]); +} + +sh_audio_t* new_sh_audio_aid(demuxer_t *demuxer,int id,int aid){ + if(id > MAX_A_STREAMS-1 || id < 0) { + MSG_WARN("Requested audio stream id overflow (%d > %d)\n", + id, MAX_A_STREAMS); + return NULL; + } + if(demuxer->a_streams[id]) { + MSG_WARN(MSGTR_AudioStreamRedefined,id); + } else { + sh_audio_t *sh; + MSG_V("==> Found audio stream: %d\n",id); + demuxer->a_streams[id]=mp_calloc(1, sizeof(sh_audio_t)); + sh = reinterpret_cast<sh_audio_t*>(demuxer->a_streams[id]); + // set some defaults + sh->afmt=bps2afmt(2); /* PCM */ + sh->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/ + MSG_V("ID_AUDIO_ID=%d\n", aid); + } + ((sh_audio_t *)demuxer->a_streams[id])->aid = aid; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return reinterpret_cast<sh_audio_t*>(demuxer->a_streams[id]); +} + +void free_sh_audio(sh_audio_t* sh){ + MSG_V("DEMUXER: freeing sh_audio at %p \n",sh); + if(sh->wf) mp_free(sh->wf); + mp_free(sh); +} + +sh_video_t* get_sh_video(demuxer_t *demuxer, int id) +{ + if(id > MAX_V_STREAMS-1 || id < 0) { + MSG_WARN("Requested video stream id overflow (%d > %d)\n", + id, MAX_V_STREAMS); + return NULL; + } + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return reinterpret_cast<sh_video_t*>(demuxer->v_streams[id]); +} + +sh_video_t* new_sh_video_vid(demuxer_t *demuxer,int id,int vid){ + if(id > MAX_V_STREAMS-1 || id < 0) { + MSG_WARN("Requested video stream id overflow (%d > %d)\n", + id, MAX_V_STREAMS); + return NULL; + } + if(demuxer->v_streams[id]) { + MSG_WARN(MSGTR_VideoStreamRedefined,id); + } else { + MSG_V("==> Found video stream: %d\n",id); + demuxer->v_streams[id]=mp_calloc(1, sizeof(sh_video_t)); + MSG_V("ID_VIDEO_ID=%d\n", vid); + } + ((sh_video_t *)demuxer->v_streams[id])->vid = vid; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return reinterpret_cast<sh_video_t*>(demuxer->v_streams[id]); +} + +void free_sh_video(sh_video_t* sh){ + MSG_V("DEMUXER: freeing sh_video at %p \n",sh); + if(sh->bih) mp_free(sh->bih); + mp_free(sh); +} + +void free_demuxer(demuxer_t *demuxer){ + unsigned i; + if(demuxer) + { + MSG_V("DEMUXER: freeing demuxer at %p \n",demuxer); + + if(demuxer->driver) demuxer->driver->close(demuxer); + + // mp_free streams: + for(i=0;i<MAX_A_STREAMS;i++) if(demuxer->a_streams[i]) free_sh_audio(reinterpret_cast<sh_audio_t*>(demuxer->a_streams[i])); + for(i=0;i<MAX_V_STREAMS;i++) if(demuxer->v_streams[i]) free_sh_video(reinterpret_cast<sh_video_t*>(demuxer->v_streams[i])); + //if(sh_audio) free_sh_audio(sh_audio); + //if(sh_video) free_sh_video(sh_video); + // mp_free demuxers: + FREE_DEMUXER_STREAM(demuxer->audio); + FREE_DEMUXER_STREAM(demuxer->video); + FREE_DEMUXER_STREAM(demuxer->sub); + demux_info_free(demuxer); + mp_free(demuxer); + } +} + + +void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){ +// demux_packet_t* dp=new_demux_packet(len); +// stream_read(stream,dp->buffer,len); +// dp->pts=pts; //(float)pts/90000.0f; +// dp->pos=pos; + // append packet to DS stream: + if(dp->len>0) { + ++ds->packs; + ds->bytes+=dp->len; + if(ds->last) { + // next packet in stream + ds->last->next=dp; + ds->last=dp; + } else { + // first packet in stream + ds->first=ds->last=dp; + } + MSG_DBG2("DEMUX: Append packet to %s, len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n", + (ds==ds->demuxer->audio)?"d_audio":"d_video", + dp->len,dp->pts,(unsigned int)dp->pos,ds->demuxer->audio->packs,ds->demuxer->video->packs); + } + else + MSG_DBG2("DEMUX: Skip packet for %s, len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n", + (ds==ds->demuxer->audio)?"d_audio":"d_video", + dp->len,dp->pts,(unsigned int)dp->pos,ds->demuxer->audio->packs,ds->demuxer->video->packs); +} + +void ds_read_packet(demux_stream_t *ds,stream_t *stream,int len,float pts,off_t pos,int flags){ + demux_packet_t* dp=new_demux_packet(len); + len=stream_read(stream,dp->buffer,len); + resize_demux_packet(dp,len); + dp->pts=pts; //(float)pts/90000.0f; + dp->pos=pos; + dp->flags=flags; + // append packet to DS stream: + ds_add_packet(ds,dp); + MSG_DBG2("ds_read_packet(%s,%u,%f,%llu,%i)\n",ds==ds->demuxer->video?"video":"audio",len,pts,pos,flags); +} + +int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){ + /* Note: parameter 'ds' can be NULL! */ + return demux->driver->demux(demux,ds); +} + +// return value: +// 0 = EOF +// 1 = succesfull +int ds_fill_buffer(demux_stream_t *ds){ + demuxer_t *demux=ds->demuxer; + if(ds->buffer) mp_free(ds->buffer); +/* ds_free_packs(ds); */ + if(mp_conf.verbose>2) { + if(ds==demux->audio) + MSG_DBG3("ds_fill_buffer(d_audio) called\n"); + else + if(ds==demux->video) + MSG_DBG3("ds_fill_buffer(d_video) called\n"); + else + if(ds==demux->sub) + MSG_DBG3("ds_fill_buffer(d_sub) called\n"); + else + MSG_DBG3("ds_fill_buffer(unknown %p) called\n",ds); + } + check_pin("demuxer",ds->pin,DS_PIN); + while(1){ + if(ds->packs){ + demux_packet_t *p=ds->first; + // copy useful data: + ds->buffer=p->buffer; + ds->buffer_pos=0; + ds->buffer_size=p->len; + ds->pos=p->pos; + ds->dpos+=p->len; // !!! + ++ds->pack_no; + if(p->pts){ + ds->pts=p->pts; + ds->pts_bytes=0; + } + ds->pts_bytes+=p->len; // !!! + ds->flags=p->flags; + // mp_free packet: + ds->bytes-=p->len; + ds->current=p; + ds->first=p->next; + if(!ds->first) ds->last=NULL; + --ds->packs; + return 1; //ds->buffer_size; + } + if(demux->audio->bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes); + MSG_HINT(MSGTR_MaybeNI); + break; + } + if(demux->video->bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes); + MSG_HINT(MSGTR_MaybeNI); + break; + } + if(!demux->driver){ + MSG_DBG2("ds_fill_buffer: demux->driver==NULL failed\n"); + break; // EOF + } + if(!demux->driver->demux(demux,ds)){ + MSG_DBG2("ds_fill_buffer: demux->driver->demux() failed\n"); + break; // EOF + } + } + ds->buffer_pos=ds->buffer_size=0; + ds->buffer=NULL; + ds->current=NULL; + MSG_V("ds_fill_buffer: EOF reached (stream: %s) \n",ds==demux->audio?"audio":"video"); + ds->eof=1; + return 0; +} + +int demux_read_data(demux_stream_t *ds,unsigned char* mem,int len){ +int x; +int bytes=0; +while(len>0){ + x=ds->buffer_size-ds->buffer_pos; + if(x==0){ + if(!ds_fill_buffer(ds)) return bytes; + } else { + if(x>len) x=len; + if(x<0) return bytes; /* BAD!!! sometime happens. Broken stream, driver, gcc ??? */ + if(mem) memcpy(mem+bytes,&ds->buffer[ds->buffer_pos],x); + bytes+=x;len-=x;ds->buffer_pos+=x; + } +} +return bytes; +} + +void ds_free_packs(demux_stream_t *ds){ + demux_packet_t *dp=ds->first; + while(dp){ + demux_packet_t *dn=dp->next; + free_demux_packet(dp); + dp=dn; + } + if(ds->asf_packet){ + // mp_free unfinished .asf fragments: + mp_free(ds->asf_packet->buffer); + mp_free(ds->asf_packet); + ds->asf_packet=NULL; + } + ds->first=ds->last=NULL; + ds->packs=0; // !!!!! + ds->bytes=0; + if(ds->current) mp_free(ds->current); + ds->current=NULL; + ds->buffer=NULL; + ds->buffer_pos=ds->buffer_size; + ds->pts=0; ds->pts_bytes=0; +} + +void ds_free_packs_until_pts(demux_stream_t *ds,float pts){ + demux_packet_t *dp=ds->first; + unsigned packs,bytes; + packs=bytes=0; + while(dp){ + demux_packet_t *dn=dp->next; + if(dp->pts >= pts) break; + packs++; + bytes+=dp->len; + free_demux_packet(dp); + dp=dn; + } + if(!dp) + { + if(ds->asf_packet){ + // mp_free unfinished .asf fragments: + mp_free(ds->asf_packet->buffer); + mp_free(ds->asf_packet); + ds->asf_packet=NULL; + } + ds->first=ds->last=NULL; + ds->packs=0; // !!!!! + ds->bytes=0; + ds->pts=0; + } + else + { + ds->first=dp; + ds->packs-=packs; + ds->bytes-=bytes; + ds->pts=dp->pts; + } + if(ds->current) mp_free(ds->current); + ds->current=NULL; + ds->buffer=NULL; + ds->buffer_pos=ds->buffer_size; + ds->pts_bytes=0; +} + +demux_packet_t* clone_demux_packet(demux_packet_t* pack){ + demux_packet_t* dp=(demux_packet_t*)mp_malloc(sizeof(demux_packet_t)); +// while(pack->master) pack=pack->master; // find the master + memcpy(dp,pack,sizeof(demux_packet_t)); +// dp->next=NULL; +// dp->refcount=0; +// dp->master=pack; +// pack->refcount++; + return dp; +} + +int ds_get_packet(demux_stream_t *ds,unsigned char **start){ + while(1){ + int len; + if(ds->buffer_pos>=ds->buffer_size){ + if(!ds_fill_buffer(ds)){ + // EOF + *start = NULL; + return -1; + } + } + len=ds->buffer_size-ds->buffer_pos; + *start = &ds->buffer[ds->buffer_pos]; + ds->buffer_pos+=len; + return len; + } +} + +int ds_get_packet_sub(demux_stream_t *ds,unsigned char **start){ + while(1){ + int len; + if(ds->buffer_pos>=ds->buffer_size){ + *start = NULL; + if(!ds->packs) return -1; // no sub + if(!ds_fill_buffer(ds)) return -1; // EOF + } + len=ds->buffer_size-ds->buffer_pos; + *start = &ds->buffer[ds->buffer_pos]; + ds->buffer_pos+=len; + return len; + } +} + +float ds_get_next_pts(demux_stream_t *ds) { + demuxer_t* demux = ds->demuxer; + while(!ds->first) { + if(demux->audio->bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes); + MSG_HINT(MSGTR_MaybeNI); + return -1; + } + if(demux->video->bytes>=MAX_PACK_BYTES){ + MSG_ERR(MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes); + MSG_HINT(MSGTR_MaybeNI); + return -1; + } + if(!demux_fill_buffer(demux,ds)) + return -1; + } + return ds->first->pts; +} + +// ==================================================================== +const struct s_stream_txt_ids +{ + unsigned demuxer_id; + unsigned stream_id; +}stream_txt_ids[]= +{ + { INFOT_AUTHOR, SCTRL_TXT_GET_STREAM_AUTHOR }, + { INFOT_NAME, SCTRL_TXT_GET_STREAM_NAME }, + { INFOT_SUBJECT, SCTRL_TXT_GET_STREAM_SUBJECT }, + { INFOT_COPYRIGHT, SCTRL_TXT_GET_STREAM_COPYRIGHT }, + { INFOT_DESCRIPTION,SCTRL_TXT_GET_STREAM_DESCRIPTION }, + { INFOT_ALBUM, SCTRL_TXT_GET_STREAM_ALBUM }, + { INFOT_DATE, SCTRL_TXT_GET_STREAM_DATE }, + { INFOT_TRACK, SCTRL_TXT_GET_STREAM_TRACK }, + { INFOT_GENRE, SCTRL_TXT_GET_STREAM_GENRE }, + { INFOT_ENCODER, SCTRL_TXT_GET_STREAM_ENCODER }, + { INFOT_SOURCE_MEDIA,SCTRL_TXT_GET_STREAM_SOURCE_MEDIA }, + { INFOT_RATING, SCTRL_TXT_GET_STREAM_RATING }, + { INFOT_COMMENTS, SCTRL_TXT_GET_STREAM_COMMENT }, + { INFOT_MIME, SCTRL_TXT_GET_STREAM_MIME } +}; +static demuxer_t* demux_open_stream(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id) +{ + unsigned i; + demuxer_t *demuxer=NULL,*new_demux=NULL; + + pts_from_bps=0; + demux_aid_vid_mismatch = 0; + i=0; +again: + for(;ddrivers[i]!=&demux_null;i++) { + MSG_V("Probing %s ... ",ddrivers[i]->name); + /* don't remove it from loop!!! (for initializing) */ + demuxer = new_demuxer(stream,DEMUXER_TYPE_UNKNOWN,audio_id,video_id,dvdsub_id); + stream_reset(demuxer->stream); + stream_seek(demuxer->stream,demuxer->stream->start_pos); + if(ddrivers[i]->probe(demuxer)==MPXP_Ok) { + MSG_V("OK\n"); + demuxer->driver = ddrivers[i]; + break; + } + MSG_V("False\n"); + FREE_DEMUXER(demuxer); + } + if(!demuxer || !demuxer->driver) { + MSG_ERR(MSGTR_FormatNotRecognized); + FREE_DEMUXER(demuxer); + return NULL; + } + + if(!(new_demux=demuxer->driver->open(demuxer))) { + MSG_ERR("Can't open stream with '%s'\n", demuxer->driver->name); + demuxer->driver=NULL; + i++; + goto again; + } + demuxer=new_demux; + MSG_OK("Using: %s\n",demuxer->driver->name); + for(i=0;i<sizeof(stream_txt_ids)/sizeof(struct s_stream_txt_ids);i++) + if(!demux_info_get(demuxer,stream_txt_ids[i].demuxer_id)) { + char stream_name[256]; + if(demuxer->stream->driver->control) { + if(demuxer->stream->driver->control(demuxer->stream,stream_txt_ids[i].stream_id,stream_name) == MPXP_Ok) { + demux_info_add(demuxer,stream_txt_ids[i].demuxer_id,stream_name); + } + } + } + stream->demuxer=demuxer; + return demuxer; +} + +static char* audio_stream = NULL; +static char* sub_stream = NULL; +static int demuxer_type = 0, audio_demuxer_type = 0, sub_demuxer_type = 0; + +demuxer_t* demux_open(stream_t *vs,int file_format,int audio_id,int video_id,int dvdsub_id){ + stream_t *as = NULL,*ss = NULL; + demuxer_t *vd,*ad = NULL,*sd = NULL; + int afmt = 0,sfmt = 0; + any_t* libinput=NULL; +#ifdef HAVE_STREAMIN + libinput=vs->streaming_strl->libinput; +#endif + + if(audio_stream) { + as = RND_RENAME2(open_stream)(libinput,audio_stream,&afmt,NULL); + if(!as) { + MSG_ERR("Can't open audio stream: %s\n",audio_stream); + return NULL; + } + } + if(sub_stream) { + ss = RND_RENAME2(open_stream)(libinput,sub_stream,&sfmt,NULL); + if(!ss) { + MSG_ERR("Can't open subtitles stream: %s\n",sub_stream); + return NULL; + } + } + + vd = demux_open_stream(vs,demuxer_type ? demuxer_type : file_format,audio_stream ? -2 : audio_id,video_id, sub_stream ? -2 : dvdsub_id); + if(!vd) + return NULL; + if(as) { + ad = demux_open_stream(as,audio_demuxer_type ? audio_demuxer_type : afmt,audio_id,-2,-2); + if(!ad) + MSG_WARN("Failed to open audio demuxer: %s\n",audio_stream); + else if(ad->audio->sh && ((sh_audio_t*)ad->audio->sh)->wtag == 0x55) // MP3 + m_config_set_flag(mp_data->mconfig,"mp3.hr-seek",1); // Enable high res seeking + } + if(ss) { + sd = demux_open_stream(ss,sub_demuxer_type ? sub_demuxer_type : sfmt,-2,-2,dvdsub_id); + if(!sd) + MSG_WARN("Failed to open subtitles demuxer: %s\n",sub_stream); + } + + if(ad && sd) + return new_demuxers_demuxer(vd,ad,sd); + else if(ad) + return new_demuxers_demuxer(vd,ad,vd); + else if(sd) + return new_demuxers_demuxer(vd,vd,sd); + return vd; +} + +int demux_seek(demuxer_t *demuxer,const seek_args_t* seeka){ + demux_stream_t *d_audio=demuxer->audio; + demux_stream_t *d_video=demuxer->video; + sh_audio_t *sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); + + if(!(demuxer->stream->type&STREAMTYPE_SEEKABLE)) + { + MSG_WARN("Stream is not seekable\n"); + return 0; + } + if(!(demuxer->flags&DEMUXF_SEEKABLE)) + { + MSG_WARN("Demuxer is not seekable\n"); + return 0; + } + + // clear demux buffers: + if(sh_audio){ ds_free_packs(d_audio);sh_audio->a_buffer_len=0;} + ds_free_packs(d_video); + + stream_set_eof(demuxer->stream,0); // clear eof flag + demuxer->video->eof=0; + demuxer->audio->eof=0; + demuxer->video->prev_pts=0; + demuxer->audio->prev_pts=0; + + if(sh_audio) sh_audio->timer=0; + if(demuxer->driver->seek) demuxer->driver->seek(demuxer,seeka); + else MSG_WARN("Demuxer seek error\n"); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return 1; +} + +static const char *info_names[INFOT_MAX] = +{ + "Author", + "Name", + "Subject", + "Copyright", + "Description", + "Album", + "Date", + "Track", + "Genre", + "Encoder", + "SrcMedia", + "WWW", + "Mail", + "Rating", + "Comments", + "Mime" +}; + +int demux_info_add(demuxer_t *demuxer, unsigned opt, const char *param) +{ + if(!opt || opt > INFOT_MAX) + { + MSG_WARN("Unknown info type %u\n",opt); + return 0; + } + opt--; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + if(((demuxer_info_t *)demuxer->info)->id[opt]) + { + MSG_V( "Demuxer info '%s' already present as '%s'!\n",info_names[opt],((demuxer_info_t *)demuxer->info)->id[opt]); + mp_free(((demuxer_info_t *)demuxer->info)->id[opt]); + } + ((demuxer_info_t *)demuxer->info)->id[opt]=nls_recode2screen_cp(sub_data.cp,param,strlen(param)); + return 1; +} + +int demux_info_print(const demuxer_t *demuxer,const char *filename) +{ + unsigned i; + MSG_HINT(" CLIP INFO (%s):\n",filename); + for(i=0;i<INFOT_MAX;i++) + if(((demuxer_info_t *)demuxer->info)->id[i]) + MSG_HINT(" %s: %s\n",info_names[i],((demuxer_info_t *)demuxer->info)->id[i]); + return 0; +} + +void demux_info_free(demuxer_t* demuxer) +{ + unsigned i; + if(demuxer->info) + { + for(i=0;i<INFOT_MAX;i++) + if(((demuxer_info_t *)demuxer->info)->id[i]) + mp_free(((demuxer_info_t *)demuxer->info)->id[i]); + mp_free(demuxer->info); + } +} + +const char* demux_info_get(const demuxer_t *demuxer, unsigned opt) { + if(!opt || opt > INFOT_MAX) return NULL; + return ((demuxer_info_t *)demuxer->info)->id[opt-1]; +} + +/******************* Options stuff **********************/ + +static const config_t demux_opts[] = { + { "audiofile", &audio_stream, CONF_TYPE_STRING, 0, 0, 0, "forces reading of audio-stream from other file" }, + { "subfile", &sub_stream, CONF_TYPE_STRING, 0, 0, 0, "forces reading of subtitles from other file" }, + { "type", &demuxer_type, CONF_TYPE_INT, CONF_RANGE, 1, DEMUXER_TYPE_MAX, "forces demuxer by given number" }, + { "audio", &audio_demuxer_type, CONF_TYPE_INT, CONF_RANGE, 1, DEMUXER_TYPE_MAX, "forces using of audio-demuxer" }, + { "sub", &sub_demuxer_type, CONF_TYPE_INT, CONF_RANGE, 1, DEMUXER_TYPE_MAX, "forces using of subtitle-demuxer" }, + { NULL, NULL, 0, 0, 0, 0, NULL} +}; + +static const config_t demuxer_opts[] = { + { "demuxer", (any_t*)&demux_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, "Demuxer related options" }, + { NULL, NULL, 0, 0, 0, 0, NULL} +}; + +void demuxer_register_options(m_config_t* cfg) { + m_config_register_options(cfg,demuxer_opts); +} + +static MPXP_Rc demux_control(const demuxer_t *demuxer, int cmd, any_t*arg) { + + if(demuxer->driver) + return demuxer->driver->control(demuxer,cmd,arg); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return MPXP_Unknown; +} + +int demuxer_switch_audio(const demuxer_t *demuxer, int id) +{ + if(id>MAX_A_STREAMS) id=0; + if (demux_control(demuxer, DEMUX_CMD_SWITCH_AUDIO, &id) == MPXP_Unknown) + id = demuxer->audio->id; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return id; +} + +int demuxer_switch_video(const demuxer_t *demuxer, int id) +{ + if(id>MAX_V_STREAMS) id=0; + if (demux_control(demuxer, DEMUX_CMD_SWITCH_VIDEO, &id) == MPXP_Unknown) + id = demuxer->audio->id; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return id; +} + +int demuxer_switch_subtitle(const demuxer_t *demuxer, int id) +{ + if(id>MAX_S_STREAMS) id=0; + if (demu... [truncated message content] |
From: <nic...@us...> - 2012-11-16 07:54:07
|
Revision: 383 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=383&view=rev Author: nickols_k Date: 2012-11-16 07:53:58 +0000 (Fri, 16 Nov 2012) Log Message: ----------- more c++ name bindings Modified Paths: -------------- mplayerxp/libao2/audio_out.h mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpconf/cfgparser.h mplayerxp/libmpconf/m_option.h mplayerxp/libmpconf/m_property.h mplayerxp/libmpconf/m_struct.h mplayerxp/libmpconf/subopt-helper.h mplayerxp/libmpdemux/Makefile mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/mpdemux.h mplayerxp/libmpdemux/realrtsp/md5.h mplayerxp/libmpdemux/stheader.h mplayerxp/libmpdemux/stream.h mplayerxp/libmpsub/subreader.h mplayerxp/libvo/font_load.h mplayerxp/libvo/sub.h mplayerxp/libvo/video_out.h mplayerxp/loader/wine/windef.h mplayerxp/mplayerxp.cpp mplayerxp/osdep/Makefile mplayerxp/osdep/timer.h mplayerxp/postproc/af.h mplayerxp/xmpcore/xmp_adecoder.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_core.cpp mplayerxp/xmpcore/xmp_core.h mplayerxp/xmpcore/xmp_vdecoder.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Added Paths: ----------- mplayerxp/libmpdemux/cache2.cpp mplayerxp/osdep/timer-lx.cpp mplayerxp/osdep/timer.cpp Removed Paths: ------------- mplayerxp/libmpdemux/cache2.c mplayerxp/osdep/timer-lx.c mplayerxp/osdep/timer.c Modified: mplayerxp/libao2/audio_out.h =================================================================== --- mplayerxp/libao2/audio_out.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libao2/audio_out.h 2012-11-16 07:53:58 UTC (rev 383) @@ -2,6 +2,10 @@ #define __AUDIO_OUT_H 1 #include "mp_config.h" #include "xmpcore/xmp_enums.h" + +#ifdef __cplusplus +extern "C" { +#endif /** Text description of AO-driver */ typedef struct ao_info_s { @@ -112,4 +116,9 @@ extern void __FASTCALL__ ao_pause(ao_data_t* priv); extern void __FASTCALL__ ao_resume(ao_data_t* priv); extern MPXP_Rc __FASTCALL__ RND_RENAME7(ao_control)(const ao_data_t* priv,int cmd,long arg); + +#ifdef __cplusplus +} #endif + +#endif Modified: mplayerxp/libmpcodecs/dec_video.h =================================================================== --- mplayerxp/libmpcodecs/dec_video.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpcodecs/dec_video.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,6 +1,9 @@ #ifndef DEC_VIDEO_H_INCLUDED #define DEC_VIDEO_H_INCLUDED 1 #include "xmpcore/xmp_enums.h" +#include "libmpdemux/demuxer_r.h" +#include "libmpdemux/stream.h" +#include "libmpdemux/stheader.h" // dec_video.c: extern any_t* __FASTCALL__ RND_RENAME3(mpcv_init)(sh_video_t *sh_video, const char *codec_name,const char *family,int status,any_t*libinput); Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpconf/cfgparser.h 2012-11-16 07:53:58 UTC (rev 383) @@ -5,6 +5,9 @@ #define __CFG_PARSER_H 1 #include "xmpcore/xmp_enums.h" +#ifdef __cplusplus +extern "C" { +#endif /* config types */ enum { CONF_TYPE_FLAG =0, @@ -165,5 +168,8 @@ * @return the option value or -1 on error **/ float m_config_get_float (m_config_t const *config,const char* arg,int* err_ret); +#ifdef __cplusplus +} +#endif #endif /* __CONFIG_H */ Modified: mplayerxp/libmpconf/m_option.h =================================================================== --- mplayerxp/libmpconf/m_option.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpconf/m_option.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,6 +1,10 @@ #ifndef M_OPTION_H #define M_OPTION_H +#ifdef __cplusplus +extern "C" { +#endif + /// \defgroup Options /// m_option allows to parse, print and copy data of various types. /// It is the base of the \ref OptionsStruct, \ref Config and @@ -395,5 +399,8 @@ } /*@}*/ +#ifdef __cplusplus +} +#endif #endif /* M_OPTION_H */ Modified: mplayerxp/libmpconf/m_property.h =================================================================== --- mplayerxp/libmpconf/m_property.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpconf/m_property.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,4 +1,5 @@ - +#ifndef __M_PROPERTY_H_INCLUDED +#define __M_PROPERTY_H_INCLUDED 1 /// \defgroup Properties /// /// Properties provide an interface to query and set the state of various @@ -167,5 +168,9 @@ int m_property_bitrate(m_option_t* prop,int action,any_t* arg,int rate); ///@} +#ifdef __cplusplus +} +#endif ///@} +#endif \ No newline at end of file Modified: mplayerxp/libmpconf/m_struct.h =================================================================== --- mplayerxp/libmpconf/m_struct.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpconf/m_struct.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,6 +1,10 @@ #ifndef M_STRUCT_H #define M_STRUCT_H +#ifdef __cplusplus +extern "C" { +#endif + /// \defgroup OptionsStruct Options struct /// \ingroup Options /// An API to manipulate structs using m_option. @@ -102,4 +106,8 @@ ///@} +#ifdef __cplusplus +} +#endif + #endif /* M_STRUCT_H */ Modified: mplayerxp/libmpconf/subopt-helper.h =================================================================== --- mplayerxp/libmpconf/subopt-helper.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpconf/subopt-helper.h 2012-11-16 07:53:58 UTC (rev 383) @@ -3,6 +3,10 @@ #include "mp_config.h" +#ifdef __cplusplus +extern "C" { +#endif + /** * \file subopt-helper.h * @@ -46,4 +50,8 @@ int strargcmp(strarg_t *arg, const char *str); int strargcasecmp(strarg_t *arg, char *str); +#ifdef __cplusplus +} +#endif + #endif /* MPLAYER_SUBOPT_HELPER_H */ Modified: mplayerxp/libmpdemux/Makefile =================================================================== --- mplayerxp/libmpdemux/Makefile 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/Makefile 2012-11-16 07:53:58 UTC (rev 383) @@ -29,7 +29,7 @@ ifeq ($(HAVE_LIBDV),yes) SRCS += demux_dv.c endif -SRCS += cache2.c tvi_dummy.c tvi_v4l.c +SRCS += tvi_dummy.c tvi_v4l.c SRCS += tvi_bsdbt848.c frequencies.c mrl.c SRCS += mp3_hdr.c video.c mpeg_hdr.c aviprint.c demux_asf.c @@ -53,7 +53,7 @@ SUBDIRS = endif -CXXSRCS = demuxer.cpp demuxer_r.cpp stream.cpp +CXXSRCS = demuxer.cpp demuxer_r.cpp stream.cpp cache2.cpp OBJS = $(SRCS:.c=.o) CXXOBJS = $(CXXSRCS:.cpp=.o) Deleted: mplayerxp/libmpdemux/cache2.c =================================================================== --- mplayerxp/libmpdemux/cache2.c 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/cache2.c 2012-11-16 07:53:58 UTC (rev 383) @@ -1,675 +0,0 @@ -#include "mp_config.h" - -#define READ_USLEEP_TIME 10000 -#define FILL_USLEEP_TIME 50000 -#define PREFILL_SLEEP_TIME 200 - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <signal.h> -#include <sys/types.h> -#include <errno.h> -#include <limits.h> -#include <unistd.h> -#include <pthread.h> - -#include "stream.h" -#include "xmpcore/sig_hand.h" -#include "osdep/timer.h" -#include "osdep/cpudetect.h" -#include "osdep/bswap.h" -#include "osdep/fastmemcpy.h" -#include "osdep/mplib.h" -#include "help_mp.h" -#include "mpdemux.h" -#include "mplayerxp.h" -#include "demux_msg.h" - -#ifndef min -#define min(a,b) ((a)<(b)?(a):(b)) -#endif - -#define CPF_EMPTY 0x00000001UL -#define CPF_EOF 0x80000000UL -#define CPF_DONE 0x40000000UL /* special case for dvd packets to exclude them from sending again */ -typedef struct cache_packet_s -{ - off_t filepos; /* some nav-packets have length so we need to know real pos of data packet */ - unsigned state; /* consists from of CPF_* */ - stream_packet_t sp; - pthread_mutex_t cp_mutex; -}cache_packet_t; - -typedef struct { - unsigned first; /* index of the first packet */ - unsigned last; /* index of the last packet */ - unsigned buffer_size; /* size of the allocated buffer memory (for statistic only) */ - unsigned sector_size; /* size of a single sector (2048/2324) */ - unsigned npackets; /* number of packets in cache */ - int back_size; /* for backward seek */ - int prefill; /* min prefill bytes if cache is empty. TODO: remove */ - int eof; - /* reader's pointers: */ - off_t read_filepos; - stream_t* stream; /* parent stream */ - /* thread related stuff */ - int in_fill; - pthread_mutex_t mutex; - mpxp_thread_t* pth; - /* for optimization: */ - cache_packet_t *packets; - char * mem; -} cache_vars_t; - -#if 0 -#define MSG_CH MSG_V -#else -#define MSG_CH(...) -#endif - -#define CACHE2_LOCK(cv) { MSG_CH("CACHE2_LOCK\n"); pthread_mutex_lock(&cv->mutex); } -#define CACHE2_UNLOCK(cv) { MSG_CH("CACHE2_UNLOCK\n");pthread_mutex_unlock(&cv->mutex); } - -#define CACHE2_TLOCK(cv) { MSG_CH("CACHE2_TLOCK\n"); pthread_mutex_lock(&cv->mutex); } -#define CACHE2_TUNLOCK(cv) { MSG_CH("CACHE2_TUNLOCK\n");pthread_mutex_unlock(&cv->mutex); } - -#define CACHE2_PACKET_LOCK(cidx) { MSG_CH("CACHE2_PACKET_LOCK\n"); pthread_mutex_lock(&c->packets[cidx].cp_mutex); } -#define CACHE2_PACKET_UNLOCK(cidx) { MSG_CH("CACHE2_PACKET_UNLOCK\n");pthread_mutex_unlock(&c->packets[cidx].cp_mutex); } - -#define CACHE2_PACKET_TLOCK(cidx) { MSG_CH("CACHE2_PACKET_TLOCK\n"); pthread_mutex_lock(&c->packets[cidx].cp_mutex); } -#define CACHE2_PACKET_TUNLOCK(cidx) { MSG_CH("CACHE2_PACKET_TUNLOCK\n");pthread_mutex_unlock(&c->packets[cidx].cp_mutex); } - -#define START_FILEPOS(c) ((c)->packets[(c)->first].filepos) -#define END_FILEPOS(c) ((c)->packets[(c)->last].filepos+(c)->packets[(c)->last].sp.len) -#define CP_NEXT(c,idx) (((idx)+1)%(c)->npackets) - -#ifdef __i386__ -#define COREDUMP() { __asm __volatile(".short 0xffff":::"memory"); } -#else -#define COREDUMP() -#endif - -#if 0 -#define C2_ASSERT(cond) if(cond) { MSG_FATAL("internal error at cache2.c:%u: (%s)\n",__LINE__,#cond); COREDUMP(); } -#else -#define C2_ASSERT(cond) if(cond) MSG_FATAL("internal error at cache2.c:%u: (%s)\n",__LINE__,#cond); -#endif - -static int __FASTCALL__ c2_cache_fill(cache_vars_t* c){ - int len,in_cache,legacy_eof,seek_eof; - off_t readpos,new_start; - unsigned cidx,cp; - - CACHE2_TLOCK(c); - readpos=c->read_filepos; - in_cache=(readpos>=START_FILEPOS(c)&&readpos<END_FILEPOS(c)); - new_start = readpos - c->back_size; - if(new_start<c->stream->start_pos) new_start=c->stream->start_pos; - seek_eof=0; - if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) { - /* seeking... */ - MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" - ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); - if(c->stream->eof || c->eof) nc_stream_reset(c->stream); - c->stream->driver->seek(c->stream,new_start); - if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver->mrl,strerror(errno)); errno=0; } - if((c->packets[c->first].filepos=c->stream->driver->tell(c->stream))<0) seek_eof=1; - c->last=c->first; - if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size) - MSG_WARN("CACHE2: found wrong offset after seeking %lli (wanted: %lli)\n",c->packets[c->first].filepos,new_start); - MSG_DBG2("Seek done. new pos: %lli\n",START_FILEPOS(c)); - } else { - /* find new start of buffer according on readpos */ - cidx=c->first; - do { - if((new_start>=c->packets[cidx].filepos&&new_start<c->packets[cidx].filepos+c->packets[cidx].sp.len) - && !c->packets[cidx].sp.type) break; - cidx=CP_NEXT(c,cidx); - }while(cidx!=c->first); - MSG_DBG2("CACHE2: Assigning first as %p for %lli\n",c->first,START_FILEPOS(c)); - c->first=cidx; - } - CACHE2_TUNLOCK(c); - if(CP_NEXT(c,c->last) == c->first || c->eof) { - MSG_DBG2("CACHE2: cache full\n"); - return 0; /* cache full */ - } - len=0; - cp=cidx=c->last==c->first?c->first:CP_NEXT(c,c->last); - do { CACHE2_PACKET_TLOCK(cidx); c->packets[cidx].state|=CPF_EMPTY; CACHE2_PACKET_TUNLOCK(cidx); cidx=CP_NEXT(c,cidx); } while(cidx!=c->first); - cidx=cp; - c->in_fill=1; - while(1) - { - CACHE2_PACKET_TLOCK(cidx); - c->packets[cidx].sp.len=c->sector_size; - c->packets[cidx].filepos = c->stream->driver->tell(c->stream); - c->stream->driver->read(c->stream,&c->packets[cidx].sp); - MSG_DBG2("CACHE2: read_packet at %lli (wanted %u got %u type %i)",c->packets[cidx].filepos,c->sector_size,c->packets[cidx].sp.len,c->packets[cidx].sp.type); - if(mp_conf.verbose>1) - if(c->packets[cidx].sp.len>8) { - int i; - for(i=0;i<8;i++) - MSG_DBG2("%02X ",(int)(unsigned char)c->packets[cidx].sp.buf[i]); - } - MSG_DBG2("\n"); - if(c->stream->driver->control(c->stream,SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; - else legacy_eof=0; - if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { - /* EOF */ - MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(c),END_FILEPOS(c)); - c->packets[cidx].state|=CPF_EOF; - c->eof=1; - c->packets[cidx].state&=~CPF_EMPTY; - c->packets[cidx].state&=~CPF_DONE; - if(errno) { MSG_WARN("c2_fill_buffer(drv:%s) error: %s\n",c->stream->driver->mrl,strerror(errno)); errno=0; } - CACHE2_PACKET_TUNLOCK(cidx); - break; - } - if(c->packets[cidx].sp.type == 0) len += c->packets[cidx].sp.len; - c->last=cidx; - c->packets[cidx].state&=~CPF_EMPTY; - c->packets[cidx].state&=~CPF_DONE; - CACHE2_PACKET_TUNLOCK(cidx); - cidx=CP_NEXT(c,cidx); - MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(c),END_FILEPOS(c)); - if(cidx==c->first) { - MSG_DBG2("CACHE2: end of queue is reached: %p\n",c->first); - break; - } - CACHE2_TUNLOCK(c); - } - c->in_fill=0; - MSG_DBG2("CACHE2: totally got %u bytes\n",len); - return len; -} - -static cache_vars_t* __FASTCALL__ c2_cache_init(int size,int sector){ - pthread_mutex_t tmpl=PTHREAD_MUTEX_INITIALIZER; - cache_vars_t* c=mp_mallocz(sizeof(cache_vars_t)); - char *pmem; - unsigned i,num; - c->npackets=num=size/sector; - /* collection of all c2_packets in continuous memory area minimizes cache pollution - and speedups cache as C+D=3.27% instead of 4.77% */ - i=sizeof(cache_packet_t)*num; - c->packets=mp_mallocz(i); - c->mem=mp_malloc(num*sector); - if(!c->packets || !c->mem) - { - MSG_ERR(MSGTR_OutOfMemory); - mp_free(c); - return 0; - } - pmem = c->mem; - MSG_DBG2("For cache navigation was allocated %u bytes as %u packets (%u/%u)\n",i,num,size,sector); - c->first=c->last=0; - for(i=0;i<num;i++) - { - c->packets[i].sp.buf=pmem; - c->packets[i].state|=CPF_EMPTY; - memcpy(&c->packets[i].cp_mutex,&tmpl,sizeof(tmpl)); - pmem += sector; - } - if(mp_conf.verbose>1) - for(i=0;i<num;i++) - { - MSG_DBG2("sizeof(c)=%u c=%i c->sp.buf=%p\n",sizeof(cache_packet_t),i,c->packets[i].sp.buf); - } - c->buffer_size=num*sector; - c->sector_size=sector; - c->back_size=size/4; /* default 25% */ - c->prefill=size/20; - memcpy(&c->mutex,&tmpl,sizeof(tmpl)); - return c; -} - -static void sig_cache2( void ) -{ - MSG_V("cache2 segfault\n"); - mpxp_print_flush(); - xmp_killall_threads(pthread_self()); - __exit_sighandler(); -} - -static int was_killed=0; -static void stream_unlink_cache(int force) -{ - if(force) was_killed=1; -} - -static any_t*cache2_routine(any_t*arg) -{ - mpxp_thread_t* priv=arg; - - double tt; - unsigned int t=0; - unsigned int t2; - int cfill; - cache_vars_t* c=(cache_vars_t*)arg; - - priv->state=Pth_Run; - priv->pid = getpid(); - - while(1) { - if(mp_conf.benchmark) t=GetTimer(); - cfill=c2_cache_fill(c); - if(mp_conf.benchmark) { - t2=GetTimer();t=t2-t; - tt = t*0.000001f; - MPXPCtx->bench->c2+=tt; - if(tt > MPXPCtx->bench->max_c2) MPXPCtx->bench->max_c2=tt; - if(tt < MPXPCtx->bench->min_c2) MPXPCtx->bench->min_c2=tt; - } - if(!cfill) usleep(FILL_USLEEP_TIME); // idle - if(priv->state==Pth_Canceling) break; - } - priv->state=Pth_Stand; - return arg; -} - -int stream_enable_cache(stream_t *stream,any_t* libinput,int size,int _min,int prefill){ - int ss=stream->sector_size>1?stream->sector_size:STREAM_BUFFER_SIZE; - cache_vars_t* c; - - if (!(stream->type&STREAMTYPE_SEEKABLE) && stream->fd < 0) { - // The stream has no 'fd' behind it, so is non-cacheable - MSG_WARN("\rThis stream is non-cacheable\n"); - return 1; - } - - if(size<32*1024) size=32*1024; // 32kb min - c=c2_cache_init(size,ss); - stream->cache_data=c; - if(!c) return 0; - c->stream=stream; - c->prefill=size*prefill; - c->read_filepos=stream->start_pos; - - unsigned rc; - if((rc=xmp_register_thread(NULL,sig_cache2,cache2_routine,"cache2"))==UINT_MAX) return 0; - c->pth=&xp_core->mpxp_threads[rc]; - // wait until cache is filled at least prefill_init % - MSG_V("CACHE_PRE_INIT: %lld [%lld] %lld pre:%d eof:%d SS=%u \n", - START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),_min,c->eof,ss); - while((c->read_filepos<START_FILEPOS(c) || END_FILEPOS(c)-c->read_filepos<_min) - && !c->eof && CP_NEXT(c,c->last)!=c->first){ - if(!(stream->type&STREAMTYPE_SEEKABLE)) - MSG_STATUS("\rCache fill: %5.2f%% (%d bytes) ", - 100.0*(float)(END_FILEPOS(c)-c->read_filepos)/(float)(c->buffer_size), - END_FILEPOS(c)-c->read_filepos); - else - MSG_V("\rCache fill: %5.2f%% (%d bytes) ", - 100.0*(float)(END_FILEPOS(c)-c->read_filepos)/(float)(c->buffer_size), - END_FILEPOS(c)-c->read_filepos); - if(c->eof) break; // file is smaller than prefill size - if(mpdemux_check_interrupt(libinput,PREFILL_SLEEP_TIME)) - return 0; - } - MSG_STATUS("cache info: size=%u min=%u prefill=%u\n",size,_min,prefill); - return 1; // parent exits -} - -void stream_disable_cache(stream_t *st) -{ - cache_vars_t* c; - c=st->cache_data; - if(c) { - if(c->pth && c->pth->state==Pth_Run) { - c->pth->state=Pth_Canceling; - while(c->pth->state==Pth_Canceling && !was_killed) usleep(0); - } - mp_free(c->packets); - mp_free(c->mem); - mp_free(c); - } -} - -static int __FASTCALL__ c2_stream_fill_buffer(cache_vars_t* c) -{ - MSG_DBG2( "c2_stream_fill_buffer\n"); - if(c->eof) return 0; - while(c->read_filepos>=END_FILEPOS(c) || c->read_filepos<START_FILEPOS(c)) - { - if(c->eof) break; - usleep(READ_USLEEP_TIME); // 10ms - MSG_DBG2("Waiting for %lli in %lli %lli\n",c->read_filepos,START_FILEPOS(c),END_FILEPOS(c)); - continue; // try again... - } - return c->eof?0:1; -} - -static void __FASTCALL__ c2_stream_reset(cache_vars_t* c) -{ - unsigned cidx; - int was_eof; - MSG_DBG2("c2_stream_reset\n"); - nc_stream_reset(c->stream); - cidx=c->first; - was_eof=0; - do{ was_eof |= (c->packets[cidx].state&CPF_EOF); c->packets[cidx].state&=~CPF_EOF; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); - c->eof=0; - if(was_eof) - { - cidx=c->first; - do{ c->packets[cidx].state|=CPF_EMPTY; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); - c->last=c->first; - c->read_filepos=c->stream->start_pos; - c->stream->driver->seek(c->stream,c->read_filepos); - } -} - -static int __FASTCALL__ c2_stream_seek_long(cache_vars_t* c,off_t pos){ - - MSG_DBG2("CACHE2_SEEK: %lli,%lli,%lli <> %lli\n",START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),pos); - if(pos<0/* || pos>END_FILEPOS(c)*/) { c->eof=1; return 0; } - while(c->in_fill) usleep(0); - CACHE2_LOCK(c); - if(c->eof) c2_stream_reset(c); - C2_ASSERT(pos < c->stream->start_pos); - c->read_filepos=pos; - CACHE2_UNLOCK(c); - c2_stream_fill_buffer(c); - return c->eof?pos<END_FILEPOS(c)?1:0:1; -} - -static unsigned __FASTCALL__ c2_find_packet(cache_vars_t* c,off_t pos) -{ - unsigned retval; - CACHE2_LOCK(c); - retval = c->first; - CACHE2_UNLOCK(c); - while(1) - { - CACHE2_PACKET_LOCK(retval); - while(c->packets[retval].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(retval); usleep(0); CACHE2_PACKET_LOCK(retval); } - if((pos >= c->packets[retval].filepos && - pos < c->packets[retval].filepos+c->packets[retval].sp.len && - !c->packets[retval].sp.type) || - (c->packets[retval].state&CPF_EOF)) - break; /* packet is locked */ - if(c->packets[retval].sp.type && - !(c->packets[retval].state&CPF_DONE) && - c->stream->event_handler) - { - c->stream->event_handler(c->stream,&c->packets[retval].sp); - c->packets[retval].state|=CPF_DONE; - } - CACHE2_PACKET_UNLOCK(retval); - CACHE2_LOCK(c); - retval=CP_NEXT(c,retval); - if(retval==c->first) - { - MSG_DBG2("Can't find packet for offset %lli\n",pos); - CACHE2_UNLOCK(c); - return UINT_MAX; - } - CACHE2_UNLOCK(c); - } - return retval; -} - -/* try return maximal continious memory to copy (speedups C+D on 30%)*/ -static void __FASTCALL__ c2_get_continious_mem(cache_vars_t* c,unsigned cidx,int *len,unsigned *npackets) -{ - *npackets=1; - *len=c->packets[cidx].sp.len; - if(cidx != UINT_MAX) - { - unsigned i; - int req_len; - req_len = *len; - for(i=cidx+1;i<c->npackets;i++) - { - if( *len >= req_len || - c->packets[i].sp.type || - c->packets[i].sp.len<0 || - c->packets[i].state&CPF_EMPTY || - (c->packets[i].sp.len==0 && c->packets[i].sp.type)) break; - CACHE2_PACKET_LOCK(i); - *len += c->packets[i].sp.len; - (*npackets)++; - } - } -} - -static unsigned __FASTCALL__ c2_wait_packet(cache_vars_t* c,off_t pos,int *len,unsigned *npackets) -{ - unsigned cidx; - while(1) - { - cidx = c2_find_packet(c,pos); - if(cidx!=UINT_MAX || c->eof) break; - if(cidx!=UINT_MAX) CACHE2_PACKET_UNLOCK(cidx); - c2_stream_fill_buffer(c); - } - c2_get_continious_mem(c,cidx,len,npackets); - return cidx; -} - -static unsigned c2_next_packet(cache_vars_t* c,unsigned cidx,int *len,unsigned *npackets) -{ - MSG_DBG2("next_packet: start=%p cur=%i\n",c->first,cidx); - while(1) - { - CACHE2_LOCK(c); - cidx=CP_NEXT(c,cidx); - CACHE2_UNLOCK(c); - CACHE2_PACKET_LOCK(cidx); - while(c->packets[cidx].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(cidx); usleep(0); CACHE2_PACKET_LOCK(cidx); } - if(cidx==c->first) - { - CACHE2_PACKET_UNLOCK(cidx); - c2_stream_fill_buffer(c); - cidx = c2_find_packet(c,c->read_filepos); - break; - } - if(!c->packets[cidx].sp.type) break; /* packet is locked */ - if(!(c->packets[cidx].state&CPF_DONE) && c->stream->event_handler) - { - c->stream->event_handler(c->stream,&c->packets[cidx].sp); - c->packets[cidx].state|=CPF_DONE; - } - CACHE2_PACKET_UNLOCK(cidx); - } - c2_get_continious_mem(c,cidx,len,npackets); - MSG_DBG2("next_packet: rp: %lli fp: %lli len %lu type %i\n",c->read_filepos,c->packets[cidx].filepos,c->packets[cidx].sp.len,c->packets[cidx].sp.type); - return cidx; -} - -static int __FASTCALL__ c2_stream_read(cache_vars_t* c,char* _mem,int total){ - int len=total,eof,mlen; - char *mem=_mem; - unsigned buf_pos; - unsigned cur,i,npackets; - cur=c2_wait_packet(c,c->read_filepos,&mlen,&npackets); - eof = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; - if(cur==UINT_MAX||eof) { if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(cur); return 0; } - MSG_DBG2( "c2_stream_read %i bytes from %lli\n",total,c->read_filepos); - while(len){ - int x; - if(c->read_filepos>=c->packets[cur].filepos+mlen){ - for(i=0;i<npackets;i++) CACHE2_PACKET_UNLOCK(cur+i); - mlen=len; - cur=c2_next_packet(c,cur,&mlen,&npackets); - eof = cur!=UINT_MAX?(c->packets[cur].state&CPF_EOF):1; - if(eof) - { - CACHE2_PACKET_UNLOCK(cur); - return total-len; // EOF - } - } - buf_pos=c->read_filepos-c->packets[cur].filepos; - x=mlen-buf_pos; - C2_ASSERT(buf_pos>=(unsigned)mlen); - if(x>len) x=len; - if(!x) MSG_WARN( "c2_read: dead-lock\n"); - memcpy(mem,&c->packets[cur].sp.buf[buf_pos],x); - buf_pos+=x; - mem+=x; len-=x; - c->read_filepos+=x; - } - CACHE2_PACKET_UNLOCK(cur); - if(mp_conf.verbose>2) - { - int i; - MSG_DBG2( "c2_stream_read got %u bytes ",total); - for(i=0;i<min(8,total);i++) MSG_DBG2("%02X ",(int)((unsigned char)_mem[i])); - MSG_DBG2("\n"); - } - return total; -} - - -inline static off_t c2_stream_tell(cache_vars_t* c){ - return c->read_filepos; -} - -static int __FASTCALL__ c2_stream_seek(cache_vars_t* c,off_t pos) -{ - MSG_DBG2( "c2_seek to %lli (%lli %lli) %i\n",(long long)pos,(long long)START_FILEPOS(c),(long long)END_FILEPOS(c),c->first); - if(pos>=START_FILEPOS(c) && pos < END_FILEPOS(c)) - { - c->read_filepos=pos; - return pos; - } - return c2_stream_seek_long(c,pos); -} - -inline static int __FASTCALL__ c2_stream_skip(cache_vars_t* c,off_t len) -{ - return c2_stream_seek(c,c2_stream_tell(c)+len); -} - -static int __FASTCALL__ c2_stream_eof(cache_vars_t*c) -{ - unsigned cur; - int retval; - cur = c2_find_packet(c,c->read_filepos); - if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(cur); - retval = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; - MSG_DBG2("stream_eof: %i\n",retval); - return retval; -} - -static void __FASTCALL__ c2_stream_set_eof(cache_vars_t*c,int eof) -{ - unsigned cur; - cur = c2_find_packet(c,c->read_filepos); - if(cur != UINT_MAX) - { - if(eof) c->packets[cur].state|=CPF_EOF; - else c->packets[cur].state&=~CPF_EOF; - CACHE2_PACKET_UNLOCK(cur); - } - c->eof=eof; - MSG_DBG2("stream_set_eof: %i\n",eof); -} - -/* - main interface here! -*/ -int __FASTCALL__ stream_read(stream_t *s,any_t* _mem,int total) -{ - char *mem = _mem; - if(s->cache_data) return c2_stream_read(s->cache_data,mem,total); - else return nc_stream_read(s,mem,total); -} - -int __FASTCALL__ stream_eof(stream_t *s) -{ - if(s->cache_data) return c2_stream_eof(s->cache_data); - else return s->eof; -} - -void __FASTCALL__ stream_set_eof(stream_t *s,int eof) -{ - if(!eof) stream_reset(s); - else - { - if(s->cache_data) c2_stream_set_eof(s->cache_data,eof); - else s->eof=eof; - } -} - -int __FASTCALL__ stream_read_char(stream_t *s) -{ - if(s->cache_data) - { - unsigned char retval; - c2_stream_read(s->cache_data,&retval,1); - return stream_eof(s)?-256:retval; - } - else return nc_stream_read_char(s); -} - -off_t __FASTCALL__ stream_tell(stream_t *s) -{ - if(s->cache_data) return c2_stream_tell(s->cache_data); - else return nc_stream_tell(s); -} - -int __FASTCALL__ stream_seek(stream_t *s,off_t pos) -{ - if(s->cache_data) return c2_stream_seek(s->cache_data,pos); - else return nc_stream_seek(s,pos); -} - -int __FASTCALL__ stream_skip(stream_t *s,off_t len) -{ - if(s->cache_data) return c2_stream_skip(s->cache_data,len); - else return nc_stream_skip(s,len); -} - - -void __FASTCALL__ stream_reset(stream_t *s) -{ - if(s->cache_data) c2_stream_reset(s->cache_data); - else nc_stream_reset(s); -} - -unsigned int __FASTCALL__ stream_read_word(stream_t *s){ - unsigned short retval; - stream_read(s,(char *)&retval,2); - return me2be_16(retval); -} - -unsigned int __FASTCALL__ stream_read_dword(stream_t *s){ - unsigned int retval; - stream_read(s,(char *)&retval,4); - return me2be_32(retval); -} - -uint64_t __FASTCALL__ stream_read_qword(stream_t *s){ - uint64_t retval; - stream_read(s,(char *)&retval,8); - return me2be_64(retval); -} - -unsigned int __FASTCALL__ stream_read_word_le(stream_t *s){ - unsigned short retval; - stream_read(s,(char *)&retval,2); - return me2le_16(retval); -} - -unsigned int __FASTCALL__ stream_read_dword_le(stream_t *s){ - unsigned int retval; - stream_read(s,(char *)&retval,4); - return me2le_32(retval); -} - -uint64_t __FASTCALL__ stream_read_qword_le(stream_t *s){ - uint64_t retval; - stream_read(s,(char *)&retval,8); - return me2le_64(retval); -} - -unsigned int __FASTCALL__ stream_read_int24(stream_t *s){ - unsigned int y; - y = stream_read_char(s); - y=(y<<8)|stream_read_char(s); - y=(y<<8)|stream_read_char(s); - return y; -} - Copied: mplayerxp/libmpdemux/cache2.cpp (from rev 374, mplayerxp/libmpdemux/cache2.c) =================================================================== --- mplayerxp/libmpdemux/cache2.cpp (rev 0) +++ mplayerxp/libmpdemux/cache2.cpp 2012-11-16 07:53:58 UTC (rev 383) @@ -0,0 +1,672 @@ +#include "mp_config.h" + +#define READ_USLEEP_TIME 10000 +#define FILL_USLEEP_TIME 50000 +#define PREFILL_SLEEP_TIME 200 + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <signal.h> +#include <sys/types.h> +#include <errno.h> +#include <limits.h> +#include <unistd.h> +#include <pthread.h> + +#include "stream.h" +#include "xmpcore/sig_hand.h" +#include "osdep/timer.h" +#include "osdep/cpudetect.h" +#include "osdep/bswap.h" +#include "osdep/fastmemcpy.h" +#include "osdep/mplib.h" +#include "help_mp.h" +#include "mpdemux.h" +#include "mplayerxp.h" +#include "demux_msg.h" + +#ifndef min +#define min(a,b) ((a)<(b)?(a):(b)) +#endif + +#define CPF_EMPTY 0x00000001UL +#define CPF_EOF 0x80000000UL +#define CPF_DONE 0x40000000UL /* special case for dvd packets to exclude them from sending again */ +typedef struct cache_packet_s +{ + off_t filepos; /* some nav-packets have length so we need to know real pos of data packet */ + unsigned state; /* consists from of CPF_* */ + stream_packet_t sp; + pthread_mutex_t cp_mutex; +}cache_packet_t; + +typedef struct cache_vars_s { + unsigned first; /* index of the first packet */ + unsigned last; /* index of the last packet */ + unsigned buffer_size; /* size of the allocated buffer memory (for statistic only) */ + unsigned sector_size; /* size of a single sector (2048/2324) */ + unsigned npackets; /* number of packets in cache */ + int back_size; /* for backward seek */ + int prefill; /* min prefill bytes if cache is empty. TODO: remove */ + int eof; + /* reader's pointers: */ + off_t read_filepos; + stream_t* stream; /* parent stream */ + /* thread related stuff */ + int in_fill; + pthread_mutex_t mutex; + mpxp_thread_t* pth; + /* for optimization: */ + cache_packet_t *packets; + char * mem; +} cache_vars_t; + +#if 0 +#define MSG_CH MSG_V +#else +#define MSG_CH(...) +#endif + +#define CACHE2_LOCK(cv) { MSG_CH("CACHE2_LOCK\n"); pthread_mutex_lock(&cv->mutex); } +#define CACHE2_UNLOCK(cv) { MSG_CH("CACHE2_UNLOCK\n");pthread_mutex_unlock(&cv->mutex); } + +#define CACHE2_TLOCK(cv) { MSG_CH("CACHE2_TLOCK\n"); pthread_mutex_lock(&cv->mutex); } +#define CACHE2_TUNLOCK(cv) { MSG_CH("CACHE2_TUNLOCK\n");pthread_mutex_unlock(&cv->mutex); } + +#define CACHE2_PACKET_LOCK(cidx) { MSG_CH("CACHE2_PACKET_LOCK\n"); pthread_mutex_lock(&c->packets[cidx].cp_mutex); } +#define CACHE2_PACKET_UNLOCK(cidx) { MSG_CH("CACHE2_PACKET_UNLOCK\n");pthread_mutex_unlock(&c->packets[cidx].cp_mutex); } + +#define CACHE2_PACKET_TLOCK(cidx) { MSG_CH("CACHE2_PACKET_TLOCK\n"); pthread_mutex_lock(&c->packets[cidx].cp_mutex); } +#define CACHE2_PACKET_TUNLOCK(cidx) { MSG_CH("CACHE2_PACKET_TUNLOCK\n");pthread_mutex_unlock(&c->packets[cidx].cp_mutex); } + +#define START_FILEPOS(c) ((c)->packets[(c)->first].filepos) +#define END_FILEPOS(c) ((c)->packets[(c)->last].filepos+(c)->packets[(c)->last].sp.len) +#define CP_NEXT(c,idx) (((idx)+1)%(c)->npackets) + +#ifdef __i386__ +#define COREDUMP() { __asm __volatile(".short 0xffff":::"memory"); } +#else +#define COREDUMP() +#endif + +#if 0 +#define C2_ASSERT(cond) if(cond) { MSG_FATAL("internal error at cache2.c:%u: (%s)\n",__LINE__,#cond); COREDUMP(); } +#else +#define C2_ASSERT(cond) if(cond) MSG_FATAL("internal error at cache2.c:%u: (%s)\n",__LINE__,#cond); +#endif + +static int __FASTCALL__ c2_cache_fill(cache_vars_t* c){ + int len,in_cache,legacy_eof,seek_eof; + off_t readpos,new_start; + unsigned cidx,cp; + + CACHE2_TLOCK(c); + readpos=c->read_filepos; + in_cache=(readpos>=START_FILEPOS(c)&&readpos<END_FILEPOS(c)); + new_start = readpos - c->back_size; + if(new_start<c->stream->start_pos) new_start=c->stream->start_pos; + seek_eof=0; + if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) { + /* seeking... */ + MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" + ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); + if(c->stream->eof || c->eof) nc_stream_reset(c->stream); + c->stream->driver->seek(c->stream,new_start); + if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver->mrl,strerror(errno)); errno=0; } + if((c->packets[c->first].filepos=c->stream->driver->tell(c->stream))<0) seek_eof=1; + c->last=c->first; + if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size) + MSG_WARN("CACHE2: found wrong offset after seeking %lli (wanted: %lli)\n",c->packets[c->first].filepos,new_start); + MSG_DBG2("Seek done. new pos: %lli\n",START_FILEPOS(c)); + } else { + /* find new start of buffer according on readpos */ + cidx=c->first; + do { + if((new_start>=c->packets[cidx].filepos&&new_start<c->packets[cidx].filepos+c->packets[cidx].sp.len) + && !c->packets[cidx].sp.type) break; + cidx=CP_NEXT(c,cidx); + }while(cidx!=c->first); + MSG_DBG2("CACHE2: Assigning first as %p for %lli\n",c->first,START_FILEPOS(c)); + c->first=cidx; + } + CACHE2_TUNLOCK(c); + if(CP_NEXT(c,c->last) == c->first || c->eof) { + MSG_DBG2("CACHE2: cache full\n"); + return 0; /* cache full */ + } + len=0; + cp=cidx=c->last==c->first?c->first:CP_NEXT(c,c->last); + do { CACHE2_PACKET_TLOCK(cidx); c->packets[cidx].state|=CPF_EMPTY; CACHE2_PACKET_TUNLOCK(cidx); cidx=CP_NEXT(c,cidx); } while(cidx!=c->first); + cidx=cp; + c->in_fill=1; + while(1) + { + CACHE2_PACKET_TLOCK(cidx); + c->packets[cidx].sp.len=c->sector_size; + c->packets[cidx].filepos = c->stream->driver->tell(c->stream); + c->stream->driver->read(c->stream,&c->packets[cidx].sp); + MSG_DBG2("CACHE2: read_packet at %lli (wanted %u got %u type %i)",c->packets[cidx].filepos,c->sector_size,c->packets[cidx].sp.len,c->packets[cidx].sp.type); + if(mp_conf.verbose>1) + if(c->packets[cidx].sp.len>8) { + int i; + for(i=0;i<8;i++) + MSG_DBG2("%02X ",(int)(unsigned char)c->packets[cidx].sp.buf[i]); + } + MSG_DBG2("\n"); + if(c->stream->driver->control(c->stream,SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; + else legacy_eof=0; + if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { + /* EOF */ + MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(c),END_FILEPOS(c)); + c->packets[cidx].state|=CPF_EOF; + c->eof=1; + c->packets[cidx].state&=~CPF_EMPTY; + c->packets[cidx].state&=~CPF_DONE; + if(errno) { MSG_WARN("c2_fill_buffer(drv:%s) error: %s\n",c->stream->driver->mrl,strerror(errno)); errno=0; } + CACHE2_PACKET_TUNLOCK(cidx); + break; + } + if(c->packets[cidx].sp.type == 0) len += c->packets[cidx].sp.len; + c->last=cidx; + c->packets[cidx].state&=~CPF_EMPTY; + c->packets[cidx].state&=~CPF_DONE; + CACHE2_PACKET_TUNLOCK(cidx); + cidx=CP_NEXT(c,cidx); + MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(c),END_FILEPOS(c)); + if(cidx==c->first) { + MSG_DBG2("CACHE2: end of queue is reached: %p\n",c->first); + break; + } + CACHE2_TUNLOCK(c); + } + c->in_fill=0; + MSG_DBG2("CACHE2: totally got %u bytes\n",len); + return len; +} + +static cache_vars_t* __FASTCALL__ c2_cache_init(int size,int sector){ + pthread_mutex_t tmpl=PTHREAD_MUTEX_INITIALIZER; + cache_vars_t* c=new(zeromem) cache_vars_t; + char *pmem; + unsigned i,num; + c->npackets=num=size/sector; + /* collection of all c2_packets in continuous memory area minimizes cache pollution + and speedups cache as C+D=3.27% instead of 4.77% */ + c->packets=new(zeromem) cache_packet_t[num]; + c->mem=new char [num*sector]; + if(!c->packets || !c->mem) + { + MSG_ERR(MSGTR_OutOfMemory); + mp_free(c); + return 0; + } + pmem = c->mem; + MSG_DBG2("For cache navigation was allocated %u bytes as %u packets (%u/%u)\n",i,num,size,sector); + c->first=c->last=0; + for(i=0;i<num;i++) + { + c->packets[i].sp.buf=pmem; + c->packets[i].state|=CPF_EMPTY; + memcpy(&c->packets[i].cp_mutex,&tmpl,sizeof(tmpl)); + pmem += sector; + } + if(mp_conf.verbose>1) + for(i=0;i<num;i++) { + MSG_DBG2("sizeof(c)=%u c=%i c->sp.buf=%p\n",sizeof(cache_packet_t),i,c->packets[i].sp.buf); + } + c->buffer_size=num*sector; + c->sector_size=sector; + c->back_size=size/4; /* default 25% */ + c->prefill=size/20; + memcpy(&c->mutex,&tmpl,sizeof(tmpl)); + return c; +} + +static void sig_cache2( void ) +{ + MSG_V("cache2 segfault\n"); + mpxp_print_flush(); + xmp_killall_threads(pthread_self()); + __exit_sighandler(); +} + +static int was_killed=0; +static void stream_unlink_cache(int force) +{ + if(force) was_killed=1; +} + +static any_t*cache2_routine(any_t*arg) +{ + mpxp_thread_t* priv=reinterpret_cast<mpxp_thread_t*>(arg); + + double tt; + unsigned int t=0; + unsigned int t2; + int cfill; + cache_vars_t* c=(cache_vars_t*)arg; + + priv->state=Pth_Run; + priv->pid = getpid(); + + while(1) { + if(mp_conf.benchmark) t=GetTimer(); + cfill=c2_cache_fill(c); + if(mp_conf.benchmark) { + t2=GetTimer();t=t2-t; + tt = t*0.000001f; + MPXPCtx->bench->c2+=tt; + if(tt > MPXPCtx->bench->max_c2) MPXPCtx->bench->max_c2=tt; + if(tt < MPXPCtx->bench->min_c2) MPXPCtx->bench->min_c2=tt; + } + if(!cfill) usleep(FILL_USLEEP_TIME); // idle + if(priv->state==Pth_Canceling) break; + } + priv->state=Pth_Stand; + return arg; +} + +int stream_enable_cache(stream_t *stream,any_t* libinput,int size,int _min,int prefill){ + int ss=stream->sector_size>1?stream->sector_size:STREAM_BUFFER_SIZE; + cache_vars_t* c; + + if (!(stream->type&STREAMTYPE_SEEKABLE) && stream->fd < 0) { + // The stream has no 'fd' behind it, so is non-cacheable + MSG_WARN("\rThis stream is non-cacheable\n"); + return 1; + } + + if(size<32*1024) size=32*1024; // 32kb min + c=c2_cache_init(size,ss); + stream->cache_data=c; + if(!c) return 0; + c->stream=stream; + c->prefill=size*prefill; + c->read_filepos=stream->start_pos; + + unsigned rc; + if((rc=xmp_register_thread(NULL,sig_cache2,cache2_routine,"cache2"))==UINT_MAX) return 0; + c->pth=xp_core->mpxp_threads[rc]; + // wait until cache is filled at least prefill_init % + MSG_V("CACHE_PRE_INIT: %lld [%lld] %lld pre:%d eof:%d SS=%u \n", + START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),_min,c->eof,ss); + while((c->read_filepos<START_FILEPOS(c) || END_FILEPOS(c)-c->read_filepos<_min) + && !c->eof && CP_NEXT(c,c->last)!=c->first){ + if(!(stream->type&STREAMTYPE_SEEKABLE)) + MSG_STATUS("\rCache fill: %5.2f%% (%d bytes) ", + 100.0*(float)(END_FILEPOS(c)-c->read_filepos)/(float)(c->buffer_size), + END_FILEPOS(c)-c->read_filepos); + else + MSG_V("\rCache fill: %5.2f%% (%d bytes) ", + 100.0*(float)(END_FILEPOS(c)-c->read_filepos)/(float)(c->buffer_size), + END_FILEPOS(c)-c->read_filepos); + if(c->eof) break; // file is smaller than prefill size + if(mpdemux_check_interrupt(libinput,PREFILL_SLEEP_TIME)) + return 0; + } + MSG_STATUS("cache info: size=%u min=%u prefill=%u\n",size,_min,prefill); + return 1; // parent exits +} + +void stream_disable_cache(stream_t *st) +{ + cache_vars_t* c; + c=st->cache_data; + if(c) { + if(c->pth && c->pth->state==Pth_Run) { + c->pth->state=Pth_Canceling; + while(c->pth->state==Pth_Canceling && !was_killed) usleep(0); + } + mp_free(c->packets); + mp_free(c->mem); + mp_free(c); + } +} + +static int __FASTCALL__ c2_stream_fill_buffer(cache_vars_t* c) +{ + MSG_DBG2( "c2_stream_fill_buffer\n"); + if(c->eof) return 0; + while(c->read_filepos>=END_FILEPOS(c) || c->read_filepos<START_FILEPOS(c)) + { + if(c->eof) break; + usleep(READ_USLEEP_TIME); // 10ms + MSG_DBG2("Waiting for %lli in %lli %lli\n",c->read_filepos,START_FILEPOS(c),END_FILEPOS(c)); + continue; // try again... + } + return c->eof?0:1; +} + +static void __FASTCALL__ c2_stream_reset(cache_vars_t* c) +{ + unsigned cidx; + int was_eof; + MSG_DBG2("c2_stream_reset\n"); + nc_stream_reset(c->stream); + cidx=c->first; + was_eof=0; + do{ was_eof |= (c->packets[cidx].state&CPF_EOF); c->packets[cidx].state&=~CPF_EOF; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); + c->eof=0; + if(was_eof) + { + cidx=c->first; + do{ c->packets[cidx].state|=CPF_EMPTY; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); + c->last=c->first; + c->read_filepos=c->stream->start_pos; + c->stream->driver->seek(c->stream,c->read_filepos); + } +} + +static int __FASTCALL__ c2_stream_seek_long(cache_vars_t* c,off_t pos){ + + MSG_DBG2("CACHE2_SEEK: %lli,%lli,%lli <> %lli\n",START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),pos); + if(pos<0/* || pos>END_FILEPOS(c)*/) { c->eof=1; return 0; } + while(c->in_fill) usleep(0); + CACHE2_LOCK(c); + if(c->eof) c2_stream_reset(c); + C2_ASSERT(pos < c->stream->start_pos); + c->read_filepos=pos; + CACHE2_UNLOCK(c); + c2_stream_fill_buffer(c); + return c->eof?pos<END_FILEPOS(c)?1:0:1; +} + +static unsigned __FASTCALL__ c2_find_packet(cache_vars_t* c,off_t pos) +{ + unsigned retval; + CACHE2_LOCK(c); + retval = c->first; + CACHE2_UNLOCK(c); + while(1) + { + CACHE2_PACKET_LOCK(retval); + while(c->packets[retval].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(retval); usleep(0); CACHE2_PACKET_LOCK(retval); } + if((pos >= c->packets[retval].filepos && + pos < c->packets[retval].filepos+c->packets[retval].sp.len && + !c->packets[retval].sp.type) || + (c->packets[retval].state&CPF_EOF)) + break; /* packet is locked */ + if(c->packets[retval].sp.type && + !(c->packets[retval].state&CPF_DONE) && + c->stream->event_handler) + { + c->stream->event_handler(c->stream,&c->packets[retval].sp); + c->packets[retval].state|=CPF_DONE; + } + CACHE2_PACKET_UNLOCK(retval); + CACHE2_LOCK(c); + retval=CP_NEXT(c,retval); + if(retval==c->first) + { + MSG_DBG2("Can't find packet for offset %lli\n",pos); + CACHE2_UNLOCK(c); + return UINT_MAX; + } + CACHE2_UNLOCK(c); + } + return retval; +} + +/* try return maximal continious memory to copy (speedups C+D on 30%)*/ +static void __FASTCALL__ c2_get_continious_mem(cache_vars_t* c,unsigned cidx,int *len,unsigned *npackets) +{ + *npackets=1; + *len=c->packets[cidx].sp.len; + if(cidx != UINT_MAX) + { + unsigned i; + int req_len; + req_len = *len; + for(i=cidx+1;i<c->npackets;i++) + { + if( *len >= req_len || + c->packets[i].sp.type || + c->packets[i].sp.len<0 || + c->packets[i].state&CPF_EMPTY || + (c->packets[i].sp.len==0 && c->packets[i].sp.type)) break; + CACHE2_PACKET_LOCK(i); + *len += c->packets[i].sp.len; + (*npackets)++; + } + } +} + +static unsigned __FASTCALL__ c2_wait_packet(cache_vars_t* c,off_t pos,int *len,unsigned *npackets) +{ + unsigned cidx; + while(1) + { + cidx = c2_find_packet(c,pos); + if(cidx!=UINT_MAX || c->eof) break; + if(cidx!=UINT_MAX) CACHE2_PACKET_UNLOCK(cidx); + c2_stream_fill_buffer(c); + } + c2_get_continious_mem(c,cidx,len,npackets); + return cidx; +} + +static unsigned c2_next_packet(cache_vars_t* c,unsigned cidx,int *len,unsigned *npackets) +{ + MSG_DBG2("next_packet: start=%p cur=%i\n",c->first,cidx); + while(1) + { + CACHE2_LOCK(c); + cidx=CP_NEXT(c,cidx); + CACHE2_UNLOCK(c); + CACHE2_PACKET_LOCK(cidx); + while(c->packets[cidx].state&CPF_EMPTY) { CACHE2_PACKET_UNLOCK(cidx); usleep(0); CACHE2_PACKET_LOCK(cidx); } + if(cidx==c->first) + { + CACHE2_PACKET_UNLOCK(cidx); + c2_stream_fill_buffer(c); + cidx = c2_find_packet(c,c->read_filepos); + break; + } + if(!c->packets[cidx].sp.type) break; /* packet is locked */ + if(!(c->packets[cidx].state&CPF_DONE) && c->stream->event_handler) + { + c->stream->event_handler(c->stream,&c->packets[cidx].sp); + c->packets[cidx].state|=CPF_DONE; + } + CACHE2_PACKET_UNLOCK(cidx); + } + c2_get_continious_mem(c,cidx,len,npackets); + MSG_DBG2("next_packet: rp: %lli fp: %lli len %lu type %i\n",c->read_filepos,c->packets[cidx].filepos,c->packets[cidx].sp.len,c->packets[cidx].sp.type); + return cidx; +} + +static int __FASTCALL__ c2_stream_read(cache_vars_t* c,char* _mem,int total){ + int len=total,eof,mlen; + char *mem=_mem; + unsigned buf_pos; + unsigned cur,i,npackets; + cur=c2_wait_packet(c,c->read_filepos,&mlen,&npackets); + eof = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; + if(cur==UINT_MAX||eof) { if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(cur); return 0; } + MSG_DBG2( "c2_stream_read %i bytes from %lli\n",total,c->read_filepos); + while(len){ + int x; + if(c->read_filepos>=c->packets[cur].filepos+mlen){ + for(i=0;i<npackets;i++) CACHE2_PACKET_UNLOCK(cur+i); + mlen=len; + cur=c2_next_packet(c,cur,&mlen,&npackets); + eof = cur!=UINT_MAX?(c->packets[cur].state&CPF_EOF):1; + if(eof) + { + CACHE2_PACKET_UNLOCK(cur); + return total-len; // EOF + } + } + buf_pos=c->read_filepos-c->packets[cur].filepos; + x=mlen-buf_pos; + C2_ASSERT(buf_pos>=(unsigned)mlen); + if(x>len) x=len; + if(!x) MSG_WARN( "c2_read: dead-lock\n"); + memcpy(mem,&c->packets[cur].sp.buf[buf_pos],x); + buf_pos+=x; + mem+=x; len-=x; + c->read_filepos+=x; + } + CACHE2_PACKET_UNLOCK(cur); + if(mp_conf.verbose>2) + { + MSG_DBG2( "c2_stream_read got %u bytes ",total); + for(i=0;i<min(8,total);i++) MSG_DBG2("%02X ",(int)((unsigned char)_mem[i])); + MSG_DBG2("\n"); + } + return total; +} + + +inline static off_t c2_stream_tell(cache_vars_t* c){ + return c->read_filepos; +} + +static int __FASTCALL__ c2_stream_seek(cache_vars_t* c,off_t pos) +{ + MSG_DBG2( "c2_seek to %lli (%lli %lli) %i\n",(long long)pos,(long long)START_FILEPOS(c),(long long)END_FILEPOS(c),c->first); + if(pos>=START_FILEPOS(c) && pos < END_FILEPOS(c)) + { + c->read_filepos=pos; + return pos; + } + return c2_stream_seek_long(c,pos); +} + +inline static int __FASTCALL__ c2_stream_skip(cache_vars_t* c,off_t len) +{ + return c2_stream_seek(c,c2_stream_tell(c)+len); +} + +static int __FASTCALL__ c2_stream_eof(cache_vars_t*c) +{ + unsigned cur; + int retval; + cur = c2_find_packet(c,c->read_filepos); + if(cur!=UINT_MAX) CACHE2_PACKET_UNLOCK(cur); + retval = cur!=UINT_MAX?((int)(c->packets[cur].state&CPF_EOF)):c->eof; + MSG_DBG2("stream_eof: %i\n",retval); + return retval; +} + +static void __FASTCALL__ c2_stream_set_eof(cache_vars_t*c,int eof) +{ + unsigned cur; + cur = c2_find_packet(c,c->read_filepos); + if(cur != UINT_MAX) + { + if(eof) c->packets[cur].state|=CPF_EOF; + else c->packets[cur].state&=~CPF_EOF; + CACHE2_PACKET_UNLOCK(cur); + } + c->eof=eof; + MSG_DBG2("stream_set_eof: %i\n",eof); +} + +/* + main interface here! +*/ +int __FASTCALL__ stream_read(stream_t *s,any_t* _mem,int total) +{ + char *mem = reinterpret_cast<char*>(_mem); + if(s->cache_data) return c2_stream_read(s->cache_data,mem,total); + else return nc_stream_read(s,mem,total); +} + +int __FASTCALL__ stream_eof(stream_t *s) +{ + if(s->cache_data) return c2_stream_eof(s->cache_data); + else return s->eof; +} + +void __FASTCALL__ stream_set_eof(stream_t *s,int eof) +{ + if(!eof) stream_reset(s); + else + { + if(s->cache_data) c2_stream_set_eof(s->cache_data,eof); + else s->eof=eof; + } +} + +int __FASTCALL__ stream_read_char(stream_t *s) +{ + if(s->cache_data) + { + char retval; + c2_stream_read(s->cache_data,&retval,1); + return stream_eof(s)?-256:retval; + } + else return nc_stream_read_char(s); +} + +off_t __FASTCALL__ stream_tell(stream_t *s) +{ + if(s->cache_data) return c2_stream_tell(s->cache_data); + else return nc_stream_tell(s); +} + +int __FASTCALL__ stream_seek(stream_t *s,off_t pos) +{ + if(s->cache_data) return c2_stream_seek(s->cache_data,pos); + else return nc_stream_seek(s,pos); +} + +int __FASTCALL__ stream_skip(stream_t *s,off_t len) +{ + if(s->cache_data) return c2_stream_skip(s->cache_data,len); + else return nc_stream_skip(s,len); +} + + +void __FASTCALL__ stream_reset(stream_t *s) +{ + if(s->cache_data) c2_stream_reset(s->cache_data); + else nc_stream_reset(s); +} + +unsigned int __FASTCALL__ stream_read_word(stream_t *s){ + unsigned short retval; + stream_read(s,(char *)&retval,2); + return me2be_16(retval); +} + +unsigned int __FASTCALL__ stream_read_dword(stream_t *s){ + unsigned int retval; + stream_read(s,(char *)&retval,4); + return me2be_32(retval); +} + +uint64_t __FASTCALL__ stream_read_qword(stream_t *s){ + uint64_t retval; + stream_read(s,(char *)&retval,8); + return me2be_64(retval); +} + +unsigned int __FASTCALL__ stream_read_word_le(stream_t *s){ + unsigned short retval; + stream_read(s,(char *)&retval,2); + return me2le_16(retval); +} + +unsigned int __FASTCALL__ stream_read_dword_le(stream_t *s){ + unsigned int retval; + stream_read(s,(char *)&retval,4); + return me2le_32(retval); +} + +uint64_t __FASTCALL__ stream_read_qword_le(stream_t *s){ + uint64_t retval; + stream_read(s,(char *)&retval,8); + return me2le_64(retval); +} + +unsigned int __FASTCALL__ stream_read_int24(stream_t *s){ + unsigned int y; + y = stream_read_char(s); + y=(y<<8)|stream_read_char(s); + y=(y<<8)|stream_read_char(s); + return y; +} + Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-11-16 07:53:58 UTC (rev 383) @@ -7,24 +7,24 @@ #include <errno.h> #include <sys/types.h> #include <sys/stat.h> -extern "C" { -#include "stream.h" + #include "mp_config.h" #include "help_mp.h" #include "libmpsub/subreader.h" #include "libmpconf/cfgparser.h" +extern "C" { #include "nls/nls.h" -#include "demuxer.h" -#include "stheader.h" - #include "osdep/fastmemcpy.h" -#include "osdep/mplib.h" #include "libvo/sub.h" #include "libao2/afmt.h" +} #include "demux_msg.h" -} +#include "demuxer.h" +#include "stream.h" +#include "stheader.h" #include "mplayerxp.h" +#include "osdep/mplib.h" extern demuxer_driver_t demux_aiff; extern demuxer_driver_t demux_rawaudio; Modified: mplayerxp/libmpdemux/mpdemux.h =================================================================== --- mplayerxp/libmpdemux/mpdemux.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/mpdemux.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,5 +1,11 @@ #ifndef MPDEMUX_H #define MPDEMUX_H 1 +#ifdef __cplusplus +extern "C" { +#endif extern int mpdemux_check_interrupt(any_t* libinput,int time); +#ifdef __cplusplus +} #endif +#endif Modified: mplayerxp/libmpdemux/realrtsp/md5.h =================================================================== --- mplayerxp/libmpdemux/realrtsp/md5.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/realrtsp/md5.h 2012-11-16 07:53:58 UTC (rev 383) @@ -59,9 +59,11 @@ # define AV_WL16(p, d) AV_WN16(p, d) # endif +#ifndef __cplusplus #ifndef max #define max(a,b) ((a)>(b)?(a):(b)) #endif +#endif #define FFMAX max extern const int av_md5_size; Modified: mplayerxp/libmpdemux/stheader.h =================================================================== --- mplayerxp/libmpdemux/stheader.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/stheader.h 2012-11-16 07:53:58 UTC (rev 383) @@ -2,6 +2,9 @@ #define __ST_HEADER_H 1 // Stream headers: +#ifdef __cplusplus +extern "C" { +#endif #include "loader/wine/mmreg.h" #include "loader/wine/avifmt.h" @@ -102,6 +105,9 @@ int video_read_properties(sh_video_t *sh_video); int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,float *v_pts,unsigned char** start,int force_fps); +#ifdef __cplusplus +} +#endif #endif Modified: mplayerxp/libmpdemux/stream.h =================================================================== --- mplayerxp/libmpdemux/stream.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpdemux/stream.h 2012-11-16 07:53:58 UTC (rev 383) @@ -46,6 +46,8 @@ enum { STREAM_PIN=RND_NUMBER2+RND_CHAR3 }; + +struct cache_vars_s; /** Stream description */ typedef struct stream_s { char antiviral_hole[RND_CHAR3]; @@ -62,7 +64,7 @@ off_t end_pos; /**< real end of stream (media may be not fully filled) */ unsigned sector_size; /**< alignment of read operations (1 for file, VCD_SECTOR_SIZE for VCDs) */ struct demuxer_s* demuxer; /* parent demuxer */ - any_t* cache_data; /**< large cache */ + struct cache_vars_s* cache_data; /**< large cache */ any_t* priv; /**< private data used by stream driver */ float stream_pts; /**< PTS correction for idiotics DVD's discontinuities */ #ifdef HAVE_STREAMING Modified: mplayerxp/libmpsub/subreader.h =================================================================== --- mplayerxp/libmpsub/subreader.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libmpsub/subreader.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,6 +1,10 @@ #ifndef __MPLAYER_SUBREADER_H #define __MPLAYER_SUBREADER_H +#ifdef __cplusplus +extern "C" { +#endif + extern int sub_uses_time; extern int sub_errs; extern int sub_num; // number of subtitle structs @@ -43,5 +47,8 @@ extern void subcp_close (void); extern subtitle* subcp_recode (subtitle *sub); extern subtitle* subcp_recode1 (subtitle *sub); +#ifdef __cplusplus +} +#endif #endif Modified: mplayerxp/libvo/font_load.h =================================================================== --- mplayerxp/libvo/font_load.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libvo/font_load.h 2012-11-16 07:53:58 UTC (rev 383) @@ -1,6 +1,10 @@ #ifndef __FONT_LOAD_H #define __FONT_LOAD_H 1 +#ifdef __cplusplus +extern "C" { +#endif + typedef struct { unsigned char *bmp; unsigned char *pal; @@ -24,5 +28,8 @@ raw_file* load_raw(const char *name,int verbose); font_desc_t* read_font_desc(const char* fname,float factor,int verbose); +#ifdef __cplusplus +} +#endif #endif Modified: mplayerxp/libvo/sub.h =================================================================== --- mplayerxp/libvo/sub.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libvo/sub.h 2012-11-16 07:53:58 UTC (rev 383) @@ -3,6 +3,10 @@ #include <inttypes.h> #include "osd.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct mp_osd_bbox_s { int x1,y1,x2,y2; } mp_osd_bbox_t; @@ -100,5 +104,8 @@ int __FASTCALL__ vo_osd_changed(int new_value); int __FASTCALL__ get_osd_height(any_t* vo,int c,int h); void __FASTCALL__ osd_set_nav_box (uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey); +#ifdef __cplusplus +} +#endif #endif Modified: mplayerxp/libvo/video_out.h =================================================================== --- mplayerxp/libvo/video_out.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/libvo/video_out.h 2012-11-16 07:53:58 UTC (rev 383) @@ -23,6 +23,10 @@ #include "xmpcore/mp_image.h" #include "xmpcore/xmp_enums.h" +#ifdef __cplusplus +extern "C" { +#endif + enum { VO_EVENT_EXPOSE=1, VO_EVENT_RESIZE=2, @@ -280,4 +284,9 @@ unsigned y_mul[4],y_div[4]; }vo_format_desc; extern int __FASTCALL__ vo_describe_fourcc(uint32_t fourcc,vo_format_desc *vd); + +#ifdef __cplusplus +} #endif + +#endif Modified: mplayerxp/loader/wine/windef.h =================================================================== --- mplayerxp/loader/wine/windef.h 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/loader/wine/windef.h 2012-11-16 07:53:58 UTC (rev 383) @@ -575,6 +575,7 @@ #endif /* 1 */ /* min and max macros */ +#ifndef __cplusplus #define __max(a,b) (((a) > (b)) ? (a) : (b)) #define __min(a,b) (((a) < (b)) ? (a) : (b)) #ifndef max @@ -583,6 +584,7 @@ #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif +#endif #ifndef _MAX_PATH #define _MAX_PATH 260 Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/mplayerxp.cpp 2012-11-16 07:53:58 UTC (rev 383) @@ -1,6 +1,6 @@ /* MplayerXP (C) 2000-2002. by A'rpi/ESP-team (C) 2002. by Nickols_K */ +#include <algorithm> #include <iostream> -extern "C" { #include <ctype.h> #include <stdio.h> #include <stdlib.h> @@ -24,9 +24,10 @@ #include "version.h" #include "mp_config.h" -#include "xmpcore/sig_hand.h" #include "mplayerxp.h" #include "osdep/mplib.h" +#include "xmpcore/sig_hand.h" +extern "C" { #define UINT64_C __UINT64_C #include "postproc/swscale.h" #include "postproc/af.h" @@ -59,24 +60,22 @@ #include "libao2/afmt.h" #include "osdep/keycodes.h" -#include "osdep/timer.h" #include "osdep/shmem.h" #include "osdep/get_path.h" #include "osdep/cpudetect.h" #include "osdep/mm_accel.h" -#include "input2/input.h" #include "nls/nls.h" #include "postproc/libmenu/menu.h" #include "libao2/mixer.h" - -#include "xmpcore/xmp_core.h" - +} // extern "C" +#include "input2/input.h" #define MSGT_CLASS MSGT_CPLAYER #include "mp_msg.h" -} // extern "C" +#include "xmpcore/xmp_core.h" #include "xmpcore/xmp_vplayer.h" #include "xmpcore/xmp_adecoder.h" +#include "osdep/timer.h" #include "osdep/getch2.h" #include "xmpcore/PointerProtector.h" #include "dump.h" @@ -141,9 +140,9 @@ void uninit_player(unsigned int mask); demuxer_t* demuxer() const { return _demuxer; } - demuxer_t* set_demuxer(demuxer_t* _d) { uninit_demuxer(); _demuxer=_d; if(_d) inited_flags|=INITED_DEMUXER; return _demuxer; } + demuxer_t* assign_demuxer(demuxer_t* _d) { uninit_demuxer(); _demuxer=_d; if(_d) inited_flags|=INITED_DEMUXER; return _demuxer; } any_t* libinput() const { return _libinput; } - any_t* set_libinput(any_t* _d) { uninit_input(); _libinput=_d; if(_d) inited_flags|=INITED_INPUT; return _libinput; } + any_t* assign_libinput(any_t* _d) { uninit_input(); _libinput=_d; if(_d) inited_flags|=INITED_INPUT; return _libinput; } void uninit_demuxer(); void uninit_input(); @@ -824,7 +823,7 @@ #endif /* Init input system */ MP_UNIT("init_input"); - MPXPSys->set_libinput(RND_RENAME0(mp_input_open)()); + MPXPSys->assign_libinput(RND_RENAME0(mp_input_open)()); } void mplayer_put_key(int code){ @@ -984,7 +983,7 @@ if(!mp_conf.audio_lang) mp_conf.audio_lang=nls_get_screen_cp(); MP_UNIT("dvd lang->id"); if(mp_conf.audio_lang) { - lang=(char *)mp_malloc(max(strlen(mp_conf.audio_lang)+1,4)); + lang=(char *)mp_malloc(std::max(strlen(mp_conf.audio_lang)+1,size_t(4))); strcpy(lang,mp_conf.audio_lang); if(mp_conf.audio_id==-1 && stream->driver->control(stream,SCTRL_LNG_GET_AID,lang)==MPXP_Ok) { mp_conf.audio_id=*(int *)lang; @@ -992,7 +991,7 @@ mp_free(lang); } if(mp_conf.dvdsub_lang) { - lang=(char *)mp_malloc(max(strlen(mp_conf.dvdsub_lang)+1,4)); + lang=(char *)mp_malloc(std::max(strlen(mp_conf.dvdsub_lang)+1,size_t(4))); strcpy(lang,mp_conf.dvdsub_lang); if(mp_conf.dvdsub_id==-1 && stream->driver->control(stream,SCTRL_LNG_GET_SID,lang)==MPXP_Ok) { mp_conf.dvdsub_id=*(int *)lang; @@ -1828,7 +1827,7 @@ MP_UNIT("demux_open"); - if(!input_state.after_dvdmenu) MPXPSys->set_demuxer(demux_open(stream,file_format,mp_conf.audio_id,mp_conf.video_id,mp_conf.dvdsub_id)); + if(!input_state.after_dvdmenu) MPXPSys->assign_demuxer(demux_open(stream,file_format,mp_conf.audio_id,mp_conf.video_id,mp_conf.dvdsub_id)); if(!MPXPSys->demuxer()) goto goto_next_file; // exit_player(MSGTR_Exit_error); // ERROR input_state.after_dvdmenu=0; Modified: mplayerxp/osdep/Makefile =================================================================== --- mplayerxp/osdep/Makefile 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/osdep/Makefile 2012-11-16 07:53:58 UTC (rev 383) @@ -3,8 +3,8 @@ LIBNAME = libosdep.a -SRCS=aclib.c cpudetect.c timer-lx.c timer.c shmem.c get_path.c -CXXSRCS=mplib.cpp mp_malloc.cpp getch2.cpp +SRCS=aclib.c cpudetect.c shmem.c get_path.c +CXXSRCS=mplib.cpp mp_malloc.cpp getch2.cpp timer-lx.cpp timer.cpp OBJS=$(SRCS:.c=.o) CXXOBJS=$(CXXSRCS:.cpp=.o) Deleted: mplayerxp/osdep/timer-lx.c =================================================================== --- mplayerxp/osdep/timer-lx.c 2012-11-16 06:36:13 UTC (rev 382) +++ mplayerxp/osdep/timer-lx.c 2012-11-16 07:53:58 UTC (rev 383) @@ -1,126 +0,0 @@ -// Precise timer routines for LINUX (C) LGB & A'rpi/ASTRAL - -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <stdio.h> -#include <time.h> -#include <sys/time.h> -#include <sys/ioctl.h> -#include "../mp_config.h" -#ifdef HAVE_RTC -#include <linux/rtc.h> -#endif -#include <fcntl.h> -#include "osdep_msg.h" - - -int usec_sleep(int usec_delay) -{ -#ifdef HAVE_NANOSLEEP - struct timespec ts; - ts.tv_sec = usec_delay / 1000000; - ts.tv_nsec = (usec_delay % 1000000) * 1... [truncated message content] |