[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[502] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-12-04 08:03:00
|
Revision: 502 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=502&view=rev Author: nickols_k Date: 2012-12-04 08:02:46 +0000 (Tue, 04 Dec 2012) Log Message: ----------- move afilter and vfilter into private of corresponded decoders Modified Paths: -------------- mplayerxp/libmpcodecs/ad.h mplayerxp/libmpcodecs/ad_a52.cpp mplayerxp/libmpcodecs/ad_acm.cpp mplayerxp/libmpcodecs/ad_dca.cpp mplayerxp/libmpcodecs/ad_dmo.cpp mplayerxp/libmpcodecs/ad_dshow.cpp mplayerxp/libmpcodecs/ad_dvdpcm.cpp mplayerxp/libmpcodecs/ad_faad.cpp mplayerxp/libmpcodecs/ad_hwac3.cpp mplayerxp/libmpcodecs/ad_internal.h mplayerxp/libmpcodecs/ad_lavc.cpp mplayerxp/libmpcodecs/ad_libdv.cpp mplayerxp/libmpcodecs/ad_mp3.cpp mplayerxp/libmpcodecs/ad_null.cpp mplayerxp/libmpcodecs/ad_pcm.cpp mplayerxp/libmpcodecs/ad_qtaudio.cpp mplayerxp/libmpcodecs/ad_real.cpp mplayerxp/libmpcodecs/ad_twin.cpp mplayerxp/libmpcodecs/ad_vorbis.cpp mplayerxp/libmpcodecs/dec_audio.cpp mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libmpcodecs/vd.h mplayerxp/libmpcodecs/vd_divx4.cpp mplayerxp/libmpcodecs/vd_dmo.cpp mplayerxp/libmpcodecs/vd_dshow.cpp mplayerxp/libmpcodecs/vd_huffyuv.cpp mplayerxp/libmpcodecs/vd_internal.h mplayerxp/libmpcodecs/vd_lavc.cpp mplayerxp/libmpcodecs/vd_libdv.cpp mplayerxp/libmpcodecs/vd_libmpeg2.cpp mplayerxp/libmpcodecs/vd_mpegpes.cpp mplayerxp/libmpcodecs/vd_null.cpp mplayerxp/libmpcodecs/vd_nuv.cpp mplayerxp/libmpcodecs/vd_qtvideo.cpp mplayerxp/libmpcodecs/vd_raw.cpp mplayerxp/libmpcodecs/vd_real.cpp mplayerxp/libmpcodecs/vd_theora.cpp mplayerxp/libmpcodecs/vd_vfw.cpp mplayerxp/libmpcodecs/vd_xanim.cpp mplayerxp/libmpcodecs/vd_xvid.cpp mplayerxp/libmpdemux/demux_mkv.cpp mplayerxp/libmpdemux/demux_mpxp64.cpp mplayerxp/libmpdemux/muxer.h mplayerxp/libmpdemux/stheader.h mplayerxp/xmpcore/xmp_core.cpp Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad.h 2012-12-04 08:02:46 UTC (rev 502) @@ -40,6 +40,11 @@ unsigned sample_fmt[Audio_MaxOutSample]; }audio_probe_t; +struct audio_filter_info_t { + af_stream_t* afilter; + int afilter_inited; +}; + /* interface of video decoder drivers */ struct ad_private_t; typedef struct ad_functions_s @@ -47,7 +52,7 @@ const ad_info_t* info; const config_t* options;/**< Optional: MPlayerXP's option related */ const audio_probe_t*(* __FASTCALL__ probe)(ad_private_t *,uint32_t wtag); - ad_private_t* (* __FASTCALL__ preinit)(sh_audio_t *); + ad_private_t* (* __FASTCALL__ preinit)(sh_audio_t *,audio_filter_info_t*); MPXP_Rc (* __FASTCALL__ init)(ad_private_t *ctx); void (* __FASTCALL__ uninit)(ad_private_t *ctx); MPXP_Rc (*control_ad)(ad_private_t *ctx,int cmd,any_t* arg, ...); Modified: mplayerxp/libmpcodecs/ad_a52.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_a52.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_a52.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -128,7 +128,7 @@ return (flags&A52_LFE) ? (channels+1) : channels; } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { ad_private_t* ctx=new(zeromem) ad_private_t; /* Dolby AC3 audio: */ @@ -141,9 +141,9 @@ #define A52_FMT24 AFMT_S24_LE #endif sh->afmt=bps2afmt(2); - if(af_query_fmt(sh->afilter,mpaf_format_e(AFMT_FLOAT32)) == MPXP_Ok|| - af_query_fmt(sh->afilter,mpaf_format_e(A52_FMT32)) == MPXP_Ok || - af_query_fmt(sh->afilter,mpaf_format_e(A52_FMT24)) == MPXP_Ok) { + if(af_query_fmt(afi->afilter,mpaf_format_e(AFMT_FLOAT32)) == MPXP_Ok|| + af_query_fmt(afi->afilter,mpaf_format_e(A52_FMT32)) == MPXP_Ok || + af_query_fmt(afi->afilter,mpaf_format_e(A52_FMT24)) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } sh->audio_out_minsize=mp_conf.ao_channels*afmt2bps(sh->afmt)*256*6; Modified: mplayerxp/libmpcodecs/ad_acm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -141,8 +141,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh_audio) +ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(afi); /* Win32 ACM audio codec: */ ad_private_t *priv; if(!(priv=new(zeromem) ad_private_t)) return NULL; Modified: mplayerxp/libmpcodecs/ad_dca.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dca.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_dca.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -126,7 +126,7 @@ return (flags&DCA_LFE) ? (channels+1) : channels; } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { /* DTS audio: however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */ @@ -138,9 +138,9 @@ #define DCA_FMT24 AFMT_S24_LE #endif sh->afmt=bps2afmt(2); - if( af_query_fmt(sh->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok|| - af_query_fmt(sh->afilter,afmt2mpaf(DCA_FMT32)) == MPXP_Ok || - af_query_fmt(sh->afilter,afmt2mpaf(DCA_FMT24)) == MPXP_Ok) + if( af_query_fmt(afi->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok|| + af_query_fmt(afi->afilter,afmt2mpaf(DCA_FMT32)) == MPXP_Ok || + af_query_fmt(afi->afilter,afmt2mpaf(DCA_FMT24)) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; } Modified: mplayerxp/libmpcodecs/ad_dmo.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dmo.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_dmo.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -42,8 +42,9 @@ return MPXP_Ok; } -static ad_private_t* preinit(sh_audio_t *sh_audio) +static ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(afi); ad_private_t*priv; int chans=(mp_conf.ao_channels==sh_audio->wf->nChannels) ? mp_conf.ao_channels : (sh_audio->wf->nChannels>=2 ? 2 : 1); Modified: mplayerxp/libmpcodecs/ad_dshow.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dshow.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_dshow.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -37,8 +37,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh_audio) +ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(afi); ad_private_t *priv; if(!(priv=new(zeromem) ad_private_t)) return NULL; priv->sh = sh_audio; Modified: mplayerxp/libmpcodecs/ad_dvdpcm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_dvdpcm.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -78,8 +78,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(afi); sh->audio_out_minsize=2048; ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; Modified: mplayerxp/libmpcodecs/ad_faad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -38,6 +38,7 @@ struct ad_private_t { float pts; sh_audio_t* sh; + audio_filter_info_t* afi; }; static const audio_probe_t probes[] = { @@ -179,12 +180,13 @@ } -static ad_private_t* preinit(sh_audio_t *sh) +static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { sh->audio_out_minsize=8192*FAAD_MAX_CHANNELS; sh->audio_in_minsize=FAAD_BUFFLEN; ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; + priv->afi = afi; if(load_dll("libfaad"SLIBSUFFIX)!=MPXP_Ok) { delete priv; return NULL; @@ -223,9 +225,9 @@ #endif /* Set the maximal quality */ /* This is useful for expesive audio cards */ - if(af_query_fmt(sh->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok || - af_query_fmt(sh->afilter,afmt2mpaf(NeAAC_FMT32)) == MPXP_Ok || - af_query_fmt(sh->afilter,afmt2mpaf(NeAAC_FMT24)) == MPXP_Ok) { + if(af_query_fmt(priv->afi->afilter,afmt2mpaf(AFMT_FLOAT32)) == MPXP_Ok || + af_query_fmt(priv->afi->afilter,afmt2mpaf(NeAAC_FMT32)) == MPXP_Ok || + af_query_fmt(priv->afi->afilter,afmt2mpaf(NeAAC_FMT24)) == MPXP_Ok) { sh->afmt=AFMT_FLOAT32; NeAAC_conf->outputFormat=FAAD_FMT_FLOAT; } else { Modified: mplayerxp/libmpcodecs/ad_hwac3.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_hwac3.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -181,10 +181,10 @@ } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { /* Dolby AC3 audio: */ - ad_private_t* ctx=mpcodecs_ad_a52.preinit(sh); + ad_private_t* ctx=mpcodecs_ad_a52.preinit(sh,afi); sh->audio_out_minsize=4*256*6; sh->audio_in_minsize=3840; sh->nch=2; Modified: mplayerxp/libmpcodecs/ad_internal.h =================================================================== --- mplayerxp/libmpcodecs/ad_internal.h 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-12-04 08:02:46 UTC (rev 502) @@ -13,7 +13,7 @@ static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag); static MPXP_Rc __FASTCALL__ init(ad_private_t *ctx); -static ad_private_t* __FASTCALL__ preinit(sh_audio_t *ctx); +static ad_private_t* __FASTCALL__ preinit(sh_audio_t *ctx,audio_filter_info_t* afi); static void __FASTCALL__ uninit(ad_private_t *ctx); static MPXP_Rc control_ad(ad_private_t *ctx,int cmd,any_t* arg, ...); static unsigned __FASTCALL__ decode(ad_private_t *ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float *pts); Modified: mplayerxp/libmpcodecs/ad_lavc.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_lavc.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_lavc.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -21,6 +21,7 @@ struct ad_private_t { AVCodecContext* lavc_ctx; sh_audio_t* sh; + audio_filter_info_t* afi; }; static const audio_probe_t* __FASTCALL__ probe(ad_private_t* priv,uint32_t wtag) { @@ -85,11 +86,12 @@ LIBAD_EXTERN(lavc) -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { ad_private_t* priv = new(zeromem) ad_private_t; sh->audio_out_minsize=AVCODEC_MAX_AUDIO_FRAME_SIZE; priv->sh = sh; + priv->afi = afi; return priv; } Modified: mplayerxp/libmpcodecs/ad_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -56,8 +56,9 @@ // defined in vd_libdv.c: dv_decoder_t* init_global_rawdv_decoder(void); -static ad_private_t* preinit(sh_audio_t *sh_audio) +static ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(afi); sh_audio->audio_out_minsize=4*DV_AUDIO_MAX_SAMPLES*2; ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh_audio; Modified: mplayerxp/libmpcodecs/ad_mp3.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_mp3.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -266,8 +266,9 @@ return NULL; } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(afi); sh->audio_out_minsize=9216; if(load_dll("libmpg123"SLIBSUFFIX)!=MPXP_Ok) return NULL; ad_private_t* priv = new(zeromem) ad_private_t; Modified: mplayerxp/libmpcodecs/ad_null.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_null.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_null.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -31,8 +31,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(afi); ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; return priv; Modified: mplayerxp/libmpcodecs/ad_pcm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_pcm.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_pcm.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -10,6 +10,7 @@ struct ad_private_t { sh_audio_t* sh; + audio_filter_info_t* afi; }; static const ad_info_t info = { @@ -87,11 +88,12 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh) +ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { sh->audio_out_minsize=16384; ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; + priv->afi = afi; return priv; } Modified: mplayerxp/libmpcodecs/ad_qtaudio.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_qtaudio.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_qtaudio.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -162,7 +162,8 @@ static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } -static ad_private_t* preinit(sh_audio_t *sh){ +static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi){ + UNUSED(afi); int error; unsigned long FramesToGet=0; //how many frames the demuxer has to get unsigned long InputBufferSize=0; //size of the input buffer Modified: mplayerxp/libmpcodecs/ad_real.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_real.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_real.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -92,7 +92,8 @@ return NULL; } -static ad_private_t* preinit(sh_audio_t *sh){ +static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi){ + UNUSED(afi); // let's check if the driver is available, return 0 if not. // (you should do that if you use external lib(s) which is optional) unsigned int result; Modified: mplayerxp/libmpcodecs/ad_twin.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_twin.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_twin.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -312,8 +312,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh_audio) +ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(afi); /* Win32 VQF audio codec: */ ad_private_t *priv; if(!(priv=new(zeromem) ad_private_t)) return NULL; Modified: mplayerxp/libmpcodecs/ad_vorbis.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_vorbis.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/ad_vorbis.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -37,6 +37,7 @@ vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ vorbis_block vb; /* local working space for packet->PCM decode */ sh_audio_t* sh; + audio_filter_info_t* afi; }; static const audio_probe_t probes[] = { @@ -54,11 +55,12 @@ return NULL; } -static ad_private_t* preinit(sh_audio_t *sh) +static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) { sh->audio_out_minsize=1024*4; // 1024 samples/frame ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; + priv->afi = afi; return priv; } @@ -114,9 +116,9 @@ #define OGG_FMT16 AFMT_S16_LE #endif sh->afmt=OGG_FMT16; - if(af_query_fmt(sh->afilter,mpaf_format_e(AFMT_FLOAT32)) == MPXP_Ok|| - af_query_fmt(sh->afilter,mpaf_format_e(OGG_FMT32)) == MPXP_Ok || - af_query_fmt(sh->afilter,mpaf_format_e(OGG_FMT24)) == MPXP_Ok) { + if(af_query_fmt(priv->afi->afilter,mpaf_format_e(AFMT_FLOAT32)) == MPXP_Ok|| + af_query_fmt(priv->afi->afilter,mpaf_format_e(OGG_FMT32)) == MPXP_Ok || + af_query_fmt(priv->afi->afilter,mpaf_format_e(OGG_FMT24)) == MPXP_Ok) { sh->afmt=OGG_FMT32; } // assume 128kbit if bitrate not specified in the header Modified: mplayerxp/libmpcodecs/dec_audio.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -29,18 +29,30 @@ /* used for ac3surround decoder - set using -channels option */ af_cfg_t af_cfg; // Configuration for audio filters -typedef struct priv_s { - sh_audio_t* parent; - const ad_functions_t* mpadec; - ad_private_t* ctx; -}priv_t; +struct decaudio_priv_t : public Opaque { + public: + decaudio_priv_t(); + virtual ~decaudio_priv_t(); + sh_audio_t* parent; + const ad_functions_t* mpadec; + ad_private_t* ctx; + audio_filter_info_t* afi; +}; + +decaudio_priv_t::decaudio_priv_t() + :afi(new(zeromem) audio_filter_info_t) +{ +} + +decaudio_priv_t::~decaudio_priv_t() { delete afi; } + audio_decoder_t* mpca_init(sh_audio_t *sh_audio) { const char *afm=NULL,*ac=NULL; const audio_probe_t* aprobe=NULL; audio_decoder_t* handle=new(zeromem) audio_decoder_t; - priv_t* priv = new(zeromem) priv_t; + decaudio_priv_t* priv = new(zeromem) decaudio_priv_t; priv->parent=sh_audio; handle->ad_private=priv; @@ -70,7 +82,7 @@ delete priv; return NULL; // no such driver } - if((priv->ctx=priv->mpadec->preinit(sh_audio))==NULL) { + if((priv->ctx=priv->mpadec->preinit(sh_audio,priv->afi))==NULL) { MSG_ERR(MSGTR_CODEC_CANT_PREINITA); delete priv; return NULL; @@ -157,14 +169,14 @@ void mpca_uninit(audio_decoder_t *opaque) { - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); sh_audio_t* parent = priv->parent; if(!parent) { delete opaque; delete priv; return; } - if(priv->parent->afilter){ + if(priv->afi->afilter){ MSG_V("Uninit audio filters...\n"); - af_uninit(parent->afilter); - delete parent->afilter; - parent->afilter=NULL; + af_uninit(priv->afi->afilter); + delete priv->afi->afilter; + priv->afi->afilter=NULL; } if(parent->a_buffer) delete parent->a_buffer; parent->a_buffer=NULL; @@ -184,7 +196,7 @@ MPXP_Rc mpca_preinit_filters(audio_decoder_t *opaque, unsigned in_samplerate, unsigned in_channels, unsigned in_format, unsigned* out_samplerate, unsigned* out_channels, unsigned* out_format){ - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); sh_audio_t* sh_audio = priv->parent; char strbuf[200]; af_stream_t* afs=af_new(sh_audio); @@ -223,7 +235,7 @@ mpaf_fmt2str(afs->output.format,strbuf,200), sh_audio->af_bps); - sh_audio->afilter=afs; + priv->afi->afilter=afs; return MPXP_Ok; } @@ -232,10 +244,10 @@ 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){ - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); sh_audio_t* sh_audio = priv->parent; char strbuf[200]; - af_stream_t* afs=sh_audio->afilter; + af_stream_t* afs=priv->afi->afilter; if(!afs) afs = af_new(sh_audio); // input format: same as codec's output format: @@ -257,7 +269,7 @@ // let's autoprobe it! if(MPXP_Ok != af_init(afs,1)){ - sh_audio->afilter=NULL; + priv->afi->afilter=NULL; delete afs; return MPXP_False; // failed :( } @@ -278,8 +290,8 @@ sh_audio->a_buffer_len=0; af_showconf(afs->first); - sh_audio->afilter=afs; - sh_audio->afilter_inited=1; + priv->afi->afilter=afs; + priv->afi->afilter_inited=1; return MPXP_Ok; } @@ -289,13 +301,12 @@ unsigned out_samplerate, unsigned out_channels, mpaf_format_e out_format, unsigned out_minsize, unsigned out_maxsize) { - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); - sh_audio_t* sh_audio = priv->parent; - if(sh_audio->afilter){ + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); + if(priv->afi->afilter){ MSG_V("Uninit audio filters...\n"); - af_uninit(sh_audio->afilter); - delete sh_audio->afilter; - sh_audio->afilter=NULL; + af_uninit(priv->afi->afilter); + delete priv->afi->afilter; + priv->afi->afilter=NULL; } return mpca_init_filters(opaque,in_samplerate,in_channels, in_format,out_samplerate, @@ -305,7 +316,7 @@ unsigned mpca_decode(audio_decoder_t *opaque,unsigned char *buf,unsigned minlen,unsigned maxlen,unsigned buflen,float *pts) { - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); sh_audio_t* sh_audio = priv->parent; unsigned len; unsigned cp_size,cp_tile; @@ -333,7 +344,7 @@ len=priv->mpadec->decode(priv->ctx,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? + if(len==0 || !priv->afi->afilter) return 0; // EOF? // run the filters: mp_aframe_t* afd; // filter input mp_aframe_t* pafd; // filter output @@ -343,7 +354,7 @@ ,0); // xp_idx afd->audio=buf; afd->len=len; - pafd=af_play(sh_audio->afilter,afd); + pafd=af_play(priv->afi->afilter,afd); afd->audio=NULL; // fake no buffer if(!pafd) { @@ -372,7 +383,7 @@ /* Note: it is called once after seeking, to resync. */ void mpca_resync_stream(audio_decoder_t *opaque) { - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); sh_audio_t* sh_audio = priv->parent; if(sh_audio) { sh_audio->a_in_buffer_len=0; /* workaround */ @@ -384,7 +395,7 @@ of audio data - used to sync audio to video after seeking */ void mpca_skip_frame(audio_decoder_t *opaque) { - priv_t* priv = reinterpret_cast<priv_t*>(opaque->ad_private); + decaudio_priv_t* priv = reinterpret_cast<decaudio_priv_t*>(opaque->ad_private); sh_audio_t* sh_audio = priv->parent; MPXP_Rc rc=MPXP_True; if(sh_audio) Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -45,15 +45,29 @@ extern int v_hue; extern int v_saturation; -struct priv_t { - sh_video_t* parent; - const vd_functions_t* mpvdec; - any_t* libinput; - vd_private_t* ctx; +struct decvideo_priv_t : public Opaque { + public: + decvideo_priv_t(); + virtual ~decvideo_priv_t(); + + sh_video_t* parent; + const vd_functions_t* mpvdec; + any_t* libinput; + vd_private_t* ctx; + vf_stream_t* vfilter; + int vfilter_inited; + put_slice_info_t* psi; }; +decvideo_priv_t::decvideo_priv_t() + :psi(new(zeromem) put_slice_info_t) +{ +} + +decvideo_priv_t::~decvideo_priv_t() { delete psi; } + MPXP_Rc mpcv_get_quality_max(video_decoder_t *opaque,unsigned *quality){ - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); if(priv->mpvdec){ MPXP_Rc ret=priv->mpvdec->control_vd(priv->ctx,VDCTRL_QUERY_MAX_PP_LEVEL,quality); if(ret>=MPXP_Ok) return ret; @@ -62,7 +76,7 @@ } MPXP_Rc mpcv_set_quality(video_decoder_t *opaque,int quality){ - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); if(priv->mpvdec) return priv->mpvdec->control_vd(priv->ctx,VDCTRL_SET_PP_LEVEL, (any_t*)(&quality)); return MPXP_False; @@ -70,9 +84,8 @@ MPXP_Rc mpcv_set_colors(video_decoder_t *opaque,const char *item,int value) { - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); - sh_video_t* sh_video = priv->parent; - vf_stream_t* vs=sh_video->vfilter; + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); + vf_stream_t* vs=priv->vfilter; vf_equalizer_t eq; eq.item=item; eq.value=value*10; @@ -83,11 +96,11 @@ } void mpcv_uninit(video_decoder_t *opaque){ - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); sh_video_t* sh_video = priv->parent; if(!sh_video->inited) { delete priv; delete opaque; return; } MSG_V("uninit video ...\n"); - if(sh_video->vfilter && sh_video->vfilter_inited==1) vf_uninit(sh_video->vfilter); + if(priv->vfilter && priv->vfilter_inited==1) vf_uninit(priv->vfilter); priv->mpvdec->uninit(priv->ctx); sh_video->inited=0; delete priv; @@ -99,7 +112,7 @@ static unsigned smp_num_cpus=1; static unsigned use_vf_threads=0; -static void mpcv_print_codec_info(const priv_t *priv) { +static void mpcv_print_codec_info(decvideo_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" @@ -112,12 +125,12 @@ ,sh_video->fps); // Yeah! We got it! sh_video->inited=1; - sh_video->vf_flags=vf_query_flags(sh_video->vfilter); + priv->psi->vf_flags=vf_query_flags(priv->vfilter); #ifdef _OPENMP if(mp_conf.gomp) { smp_num_cpus=omp_get_num_procs(); use_vf_threads=0; - if(((sh_video->vf_flags&MPDEC_THREAD_COND)==MPDEC_THREAD_COND) && (smp_num_cpus>1)) use_vf_threads=1; + if(((priv->psi->vf_flags&MPDEC_THREAD_COND)==MPDEC_THREAD_COND) && (smp_num_cpus>1)) use_vf_threads=1; if(use_vf_threads) MSG_STATUS("[mpdec] will perform parallel video-filter on %u CPUs\n",smp_num_cpus); } @@ -128,14 +141,14 @@ video_decoder_t * mpcv_lavc_init(sh_video_t* sh_video,any_t* libinput) { video_decoder_t* handle=new(zeromem) video_decoder_t; - priv_t* priv = new(zeromem) priv_t; + decvideo_priv_t* priv = new(zeromem) decvideo_priv_t; priv->parent=sh_video; priv->libinput=libinput; handle->vd_private=priv; /* Use lavc's drivers as last hope */ priv->mpvdec=vfm_find_driver("lavc"); if(priv->mpvdec) { - if((priv->ctx=priv->mpvdec->preinit(sh_video))==NULL){ + if((priv->ctx=priv->mpvdec->preinit(sh_video,priv->psi))==NULL){ MSG_ERR(MSGTR_CODEC_CANT_INITV); return NULL; } @@ -158,19 +171,19 @@ const video_probe_t* vprobe=NULL; sh_video->codec=NULL; video_decoder_t* handle=new(zeromem) video_decoder_t; - priv_t* priv = new(zeromem) priv_t; + decvideo_priv_t* priv = new(zeromem) decvideo_priv_t; priv->parent=sh_video; priv->libinput=libinput; handle->vd_private=priv; MP_UNIT("init_video_filters"); - if(sh_video->vfilter_inited<=0) { + if(priv->vfilter_inited<=0) { vf_conf_t conf; conf.w=sh_video->src_w; conf.h=sh_video->src_h; conf.fourcc=sh_video->fourcc; // may be NULL ??? - sh_video->vfilter=vf_init(libinput,&conf); - sh_video->vfilter_inited=1; + priv->vfilter=vf_init(libinput,&conf); + priv->vfilter_inited=1; } if(vfm) { @@ -189,7 +202,7 @@ priv->mpvdec=vfm_find_driver(vfm); } if(priv->mpvdec) { - if((priv->ctx=priv->mpvdec->preinit(sh_video))==NULL){ + if((priv->ctx=priv->mpvdec->preinit(sh_video,priv->psi))==NULL){ MSG_ERR(MSGTR_CODEC_CANT_INITV); delete sh_video->codec; sh_video->codec=NULL; @@ -199,7 +212,7 @@ sh_video->codec=NULL; } else done=1; } - if(done) vf_showlist(sh_video->vfilter); + if(done) vf_showlist(priv->vfilter); #ifdef ENABLE_WIN32LOADER if(sh_video->codec) { @@ -252,16 +265,15 @@ void mpcodecs_draw_image(video_decoder_t* opaque,mp_image_t *mpi) { - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); - sh_video_t* sh=priv->parent; + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); vf_stream_t* s; const unsigned h_step=16; unsigned num_slices = mpi->h/h_step; - s=sh->vfilter; + s=priv->vfilter; if(!(mpi->flags&(MP_IMGFLAG_DRAW_CALLBACK))){ if(mpi->h%h_step) num_slices++; - if(sh->vf_flags&VF_FLAGS_SLICES) + if(priv->psi->vf_flags&VF_FLAGS_SLICES) { unsigned j,i,y; mp_image_t *ampi[num_slices]; @@ -312,23 +324,22 @@ static void update_subtitle(video_decoder_t *opaque,float v_pts,unsigned idx); int mpcv_decode(video_decoder_t *opaque,const enc_frame_t* frame){ - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); - sh_video_t* sh_video = priv->parent; + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); vf_stream_t* s; mp_image_t *mpi=NULL; unsigned int t; unsigned int t2; double tt; - s=sh_video->vfilter; + s=priv->vfilter; t=GetTimer(); vf_control(s,VFCTRL_START_FRAME,NULL); - sh_video->active_slices=0; + priv->psi->active_slices=0; mpi=priv->mpvdec->decode(priv->ctx, frame); MSG_DBG2("decvideo: decoding video %u bytes\n",frame->len); - while(sh_video->active_slices!=0) yield_timeslice(); + while(priv->psi->active_slices!=0) yield_timeslice(); /* ------------------------ frame decoded. -------------------- */ if(!mpi) return 0; // error / skipped frame @@ -362,7 +373,7 @@ void mpcv_resync_stream(video_decoder_t *opaque) { - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); sh_video_t* sh_video = priv->parent; if(sh_video) if(sh_video->inited && priv->mpvdec) priv->mpvdec->control_vd(priv->ctx,VDCTRL_RESYNC_STREAM,NULL); @@ -373,7 +384,7 @@ #endif static void update_subtitle(video_decoder_t *opaque,float v_pts,unsigned xp_idx) { - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); sh_video_t* sh_video = priv->parent; Demuxer_Stream *d_dvdsub=sh_video->ds->demuxer->sub; #ifdef USE_SUB @@ -436,13 +447,13 @@ #include "libvo/video_out.h" MPXP_Rc mpcodecs_config_vf(video_decoder_t *opaque, int w, int h){ - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); sh_video_t* sh = priv->parent; 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_stream_t* s=sh->vfilter; + vf_stream_t* s=priv->vfilter; vf_conf_t conf; int palette=0; @@ -517,7 +528,7 @@ if(strcmp(vf_get_first_name(s),"fmtcvt")==0) vf_remove_first(s); } MSG_WARN(MSGTR_VOincompCodec); - sh->vfilter_inited=-1; + priv->vfilter_inited=-1; return MPXP_False; // failed } @@ -595,7 +606,7 @@ vo_data->flags, out_fmt)==0){ MSG_WARN(MSGTR_CannotInitVO); - sh->vfilter_inited=-1; + priv->vfilter_inited=-1; return MPXP_False; } MSG_DBG2("vf->config(%dx%d->%dx%d,flags=%d,'%s')\n", @@ -611,9 +622,9 @@ // returns NULL or allocated mp_image_t* // Note: buffer allocation may be moved to mpcodecs_config_vf() later... mp_image_t* mpcodecs_get_image(video_decoder_t *opaque, int mp_imgtype, int mp_imgflag,int w, int h){ - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); sh_video_t* sh = priv->parent; - vf_stream_t* s = sh->vfilter; + vf_stream_t* s = priv->vfilter; // 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(s,sh->codec->outfmt[sh->outfmtidx],mp_imgtype,mp_imgflag,w,h,dae_curr_vdecoded(xp_core)); mpi->x=mpi->y=0; @@ -623,8 +634,7 @@ } void mpcodecs_draw_slice(video_decoder_t *opaque, mp_image_t*mpi) { - priv_t* priv=reinterpret_cast<priv_t*>(opaque->vd_private); - sh_video_t* sh = priv->parent; - vf_stream_t* vf = sh->vfilter; + decvideo_priv_t* priv=reinterpret_cast<decvideo_priv_t*>(opaque->vd_private); + vf_stream_t* vf = priv->vfilter; vf_put_slice(vf,mpi); } Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd.h 2012-12-04 08:02:46 UTC (rev 502) @@ -47,6 +47,10 @@ const char *url; /* URL of homepage */ } vd_info_t; +struct put_slice_info_t { + int vf_flags; + unsigned active_slices; // used in dec_video+vd_ffmpeg only!!! +}; /* interface of video decoder drivers */ struct vd_private_t; typedef struct vd_functions_s @@ -54,7 +58,7 @@ const vd_info_t* info; const config_t* options;/**< Optional: MPlayerXP's option related */ const video_probe_t*(*__FASTCALL__ probe)(vd_private_t *ctx,uint32_t fourcc); - vd_private_t* (*__FASTCALL__ preinit)(sh_video_t *sh); + vd_private_t* (*__FASTCALL__ preinit)(sh_video_t *sh,put_slice_info_t* psi); MPXP_Rc (*__FASTCALL__ init)(vd_private_t *ctx,video_decoder_t*opaque); void (*__FASTCALL__ uninit)(vd_private_t *ctx); MPXP_Rc (*control_vd)(vd_private_t *ctx,int cmd,any_t* arg, ...); Modified: mplayerxp/libmpcodecs/vd_divx4.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -211,7 +211,8 @@ return getDecore_ptr != NULL; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_dmo.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_dmo.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_dmo.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -53,7 +53,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_dshow.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_dshow.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_dshow.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -70,7 +70,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_huffyuv.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_huffyuv.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_huffyuv.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -196,7 +196,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-12-04 08:02:46 UTC (rev 502) @@ -14,7 +14,7 @@ static const video_probe_t* __FASTCALL__ probe(vd_private_t *ctx,uint32_t fourcc); static MPXP_Rc control_vd(vd_private_t *ctx,int cmd,any_t* arg,...); -static vd_private_t* __FASTCALL__ preinit(sh_video_t *sh); +static vd_private_t* __FASTCALL__ preinit(sh_video_t *sh,put_slice_info_t* psi); static MPXP_Rc __FASTCALL__ init(vd_private_t *ctx,video_decoder_t*opaque); static void __FASTCALL__ uninit(vd_private_t *ctx); static mp_image_t* __FASTCALL__ decode(vd_private_t *ctx,const enc_frame_t* frame); Modified: mplayerxp/libmpcodecs/vd_lavc.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -105,6 +105,7 @@ int vo_inited; int hello_printed; const video_probe_t* probe; + put_slice_info_t* psi; }; static pp_context* ppContext=NULL; static void draw_slice(struct AVCodecContext *s, const AVFrame *src, int offset[4], int y, int type, int height); @@ -244,9 +245,10 @@ return MPXP_False; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; + priv->psi=psi; return priv; } @@ -638,10 +640,10 @@ src->pict_type==AV_PICTURE_TYPE_P?"p": src->pict_type==AV_PICTURE_TYPE_I?"i":"??" ,mpi->width,mpi->height,mpi->x,mpi->y,mpi->w,mpi->h); - __MP_ATOMIC(sh->active_slices++); + __MP_ATOMIC(priv->psi->active_slices++); mpcodecs_draw_slice (priv->parent, mpi); mpi->xp_idx = orig_idx; - __MP_ATOMIC(sh->active_slices--); + __MP_ATOMIC(priv->psi->active_slices--); } /* copypaste from demux_real.c - it should match to get it working!*/ @@ -666,7 +668,7 @@ if(frame->len<=0) return NULL; // skipped frame 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; + if(priv->cap_slices) priv->use_slices= !(priv->psi->vf_flags&VF_FLAGS_SLICES)?0:(priv->ctx->skip_frame!=AVDISCARD_NONE)?0:1; else priv->use_slices=0; /* if codec is capable DR1 Modified: mplayerxp/libmpcodecs/vd_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_libdv.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -87,7 +87,8 @@ return global_rawdv_decoder; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_libmpeg2.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_libmpeg2.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -259,7 +259,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_mpegpes.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_mpegpes.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_mpegpes.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -109,7 +109,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_null.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_null.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_null.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -30,7 +30,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_nuv.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_nuv.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_nuv.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -55,7 +55,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_qtvideo.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_qtvideo.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_qtvideo.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -129,7 +129,8 @@ static int codec_inited=0; -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; @@ -261,7 +262,7 @@ fclose(f); } #else - if(!sh->ImageDesc) sh->ImageDesc=(sh->bih+1); // hack for SVQ3-in-AVI + if(!sh->ImageDesc) sh->ImageDesc=reinterpret_cast<ImageDescription*>(sh->bih+1); // hack for SVQ3-in-AVI MSG_V("ImageDescription size: %d\n",((ImageDescription*)(sh->ImageDesc))->idSize); framedescHandle=(ImageDescriptionHandle)NewHandleClear(((ImageDescription*)(sh->ImageDesc))->idSize); memcpy(*framedescHandle,sh->ImageDesc,((ImageDescription*)(sh->ImageDesc))->idSize); Modified: mplayerxp/libmpcodecs/vd_raw.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_raw.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_raw.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -94,7 +94,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_real.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_real.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_real.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -172,7 +172,8 @@ int format; } rv_init_t; -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_theora.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_theora.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_theora.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -68,7 +68,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_vfw.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_vfw.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_vfw.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -246,7 +246,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_xanim.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_xanim.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_xanim.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -901,7 +901,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpcodecs/vd_xvid.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_xvid.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpcodecs/vd_xvid.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -318,7 +318,8 @@ } #endif -static vd_private_t* preinit(sh_video_t *sh){ +static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; Modified: mplayerxp/libmpdemux/demux_mkv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -2190,8 +2190,8 @@ static int demux_mkv_open_video (demuxer_t *demuxer, mkv_track_t *track, int vid) { - BITMAPINFOHEADER *bih; - any_t*ImageDesc = NULL; + BITMAPINFOHEADER* bih; + ImageDescription* ImageDesc = NULL; sh_video_t *sh_v; if (track->ms_compat) /* MS compatibility mode */ Modified: mplayerxp/libmpdemux/demux_mpxp64.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -50,25 +50,25 @@ unsigned idx_size[MAX_AV_STREAMS]; }; -#define le2me_ImageDesc(h) { \ - (h)->idSize = le2me_32((h)->idSize); \ - (h)->cType = le2me_32((h)->cType); \ - (h)->resvd1 = le2me_32((h)->resvd1); \ - (h)->resvd2 = le2me_16((h)->resvd2); \ - (h)->dataRefIndex = le2me_16((h)->dataRefIndex); \ - (h)->version = le2me_16((h)->version); \ - (h)->revisionLevel = le2me_16((h)->revisionLevel); \ - (h)->vendor = le2me_32((h)->vendor); \ - (h)->temporalQuality = le2me_32((h)->temporalQuality); \ - (h)->spatialQuality = le2me_32((h)->spatialQuality); \ - (h)->width = le2me_16((h)->width); \ - (h)->height = le2me_16((h)->height); \ - (h)->vRes = le2me_32((h)->vRes); \ - (h)->hRes = le2me_32((h)->hRes); \ - (h)->dataSize = le2me_32((h)->dataSize); \ - (h)->frameCount = le2me_16((h)->frameCount); \ - (h)->depth = le2me_16((h)->depth); \ - (h)->clutID = le2me_16((h)->clutID); \ +static void le2me_ImageDesc(ImageDescription* h) { + h->idSize = le2me_32(h->idSize); + h->cType = le2me_32(h->cType); + h->resvd1 = le2me_32(h->resvd1); + h->resvd2 = le2me_16(h->resvd2); + h->dataRefIndex = le2me_16(h->dataRefIndex); + h->version = le2me_16(h->version); + h->revisionLevel = le2me_16(h->revisionLevel); + h->vendor = le2me_32(h->vendor); + h->temporalQuality = le2me_32(h->temporalQuality); + h->spatialQuality = le2me_32(h->spatialQuality); + h->width = le2me_16(h->width); + h->height = le2me_16(h->height); + h->vRes = le2me_32(h->vRes); + h->hRes = le2me_32(h->hRes); + h->dataSize = le2me_32(h->dataSize); + h->frameCount = le2me_16(h->frameCount); + h->depth = le2me_16(h->depth); + h->clutID = le2me_16(h->clutID); } #define MAX_PACKS 4096 @@ -239,7 +239,7 @@ } else { - sh->ImageDesc = mp_malloc(fsize); + sh->ImageDesc = (ImageDescription *)mp_malloc(fsize); stream_read(s,(char *)sh->ImageDesc,fsize); le2me_ImageDesc(((ImageDescription *)sh->ImageDesc)); } Modified: mplayerxp/libmpdemux/muxer.h =================================================================== --- mplayerxp/libmpdemux/muxer.h 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpdemux/muxer.h 2012-12-04 08:02:46 UTC (rev 502) @@ -47,7 +47,7 @@ // stream specific: WAVEFORMATEX *wf; BITMAPINFOHEADER *bih; // in format - any_t* ImageDesc; // for quicktime codecs + ImageDescription* ImageDesc; // for quicktime codecs float aspect; // muxer of that stream struct muxer_t *muxer; Modified: mplayerxp/libmpdemux/stheader.h =================================================================== --- mplayerxp/libmpdemux/stheader.h 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/libmpdemux/stheader.h 2012-12-04 08:02:46 UTC (rev 502) @@ -14,6 +14,8 @@ #include "xmpcore/mp_image.h" #include "demuxer_stream.h" +struct ImageDescription; + struct standard_header : public Opaque { public: standard_header() {} @@ -52,8 +54,6 @@ unsigned a_buffer_size; /* filter buffer */ - af_stream_t* afilter; - int afilter_inited; unsigned af_bps; // == samplerate*samplesize*channels (after filters bytes/sec) char* af_buffer; unsigned af_buffer_len; @@ -90,20 +90,13 @@ float fps; int chapter_change; unsigned src_w,src_h;// source picture size (filled by fileformat parser) -// int coded_w,coded_h; // coded size (filled by video codec) float aspect; unsigned int outfmtidx; // TODO: replace with out_fourcc -/* vfilter chan */ - vf_stream_t* vfilter; - int vfilter_inited; - int vf_flags; - unsigned active_slices; // used in dec_video+vd_ffmpeg only!!! -// unsigned int bitrate; - mp_image_t* image; + // win32 codec stuff: AVIStreamHeader video; - BITMAPINFOHEADER* bih; // in format - any_t* ImageDesc; // for quicktime codecs + BITMAPINFOHEADER* bih; // in format + ImageDescription* ImageDesc; // for quicktime codecs }; sh_audio_t* get_sh_audio(demuxer_t *demuxer,int id); Modified: mplayerxp/xmpcore/xmp_core.cpp =================================================================== --- mplayerxp/xmpcore/xmp_core.cpp 2012-12-03 15:30:49 UTC (rev 501) +++ mplayerxp/xmpcore/xmp_core.cpp 2012-12-04 08:02:46 UTC (rev 502) @@ -249,7 +249,7 @@ unsigned asize; unsigned o_bps; unsigned min_reserv; - o_bps=sha->afilter_inited?sha->af_bps:sha->o_bps; + o_bps=sha->af_bps; if(xp_core->video) asize = std::max(unsigned(3*sha->audio_out_minsize), unsigned(std::max( unsigned(3*MAX_OUTBURST), unsigned(o_bps*xp_core->num_v_buffs/shv->fps))))+MIN_BUFFER_RESERV; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |