[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[304] mplayerxp
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] |