[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[514] mplayerxp/libmpcodecs
Brought to you by:
olov
From: <nic...@us...> - 2012-12-06 16:03:56
|
Revision: 514 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=514&view=rev Author: nickols_k Date: 2012-12-06 16:03:44 +0000 (Thu, 06 Dec 2012) Log Message: ----------- redesign decoder_driver's interface for better autodetection: now after each success probe for each probing driver are being called preinit and uninit methods Modified Paths: -------------- mplayerxp/libmpcodecs/ad.cpp 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.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 Modified: mplayerxp/libmpcodecs/ad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -87,19 +87,21 @@ return NULL; } -const audio_probe_t* afm_probe_driver(ad_private_t*ctx,sh_audio_t *sh) { +const audio_probe_t* afm_probe_driver(ad_private_t*ctx,sh_audio_t *sh,audio_filter_info_t* afi) { unsigned i; const audio_probe_t* probe; for (i=0; mpcodecs_ad_drivers[i] != &mpcodecs_ad_null; i++) { MSG_V("Probing: %s\n",mpcodecs_ad_drivers[i]->info->driver_name); - if((probe=mpcodecs_ad_drivers[i]->probe(ctx,sh->wtag))!=NULL) { + if((probe=mpcodecs_ad_drivers[i]->probe(sh->wtag))!=NULL) { + ad_private_t* priv=mpcodecs_ad_drivers[i]->preinit(probe,sh,afi); MSG_V("Driver: %s supports these outfmt for 0x%X wtag:\n" - ,mpcodecs_ad_drivers[i]->info->driver_name,sh->wtag); + ,mpcodecs_ad_drivers[i]->info->driver_name,sh->wtag); for(i=0;i<Audio_MaxOutSample;i++) { - MSG_V("%X ",probe->sample_fmt[i]); - if(probe->sample_fmt[i]==-1||probe->sample_fmt[i]==0) break; + MSG_V("%X ",probe->sample_fmt[i]); + if(probe->sample_fmt[i]==-1||probe->sample_fmt[i]==0) break; } MSG_V("\n"); + mpcodecs_ad_drivers[i]->uninit(priv); return probe; } } Modified: mplayerxp/libmpcodecs/ad.h =================================================================== --- mplayerxp/libmpcodecs/ad.h 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad.h 2012-12-06 16:03:44 UTC (rev 514) @@ -51,8 +51,8 @@ { 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 *,audio_filter_info_t*); + const audio_probe_t*(* __FASTCALL__ probe)(uint32_t wtag); + ad_private_t* (* __FASTCALL__ preinit)(const audio_probe_t*,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, ...); @@ -60,7 +60,7 @@ } ad_functions_t; extern const ad_functions_t* afm_find_driver(const char *name); -extern const audio_probe_t* afm_probe_driver(ad_private_t*ctx,sh_audio_t* sh); +extern const audio_probe_t* afm_probe_driver(ad_private_t*ctx,sh_audio_t*sh,audio_filter_info_t* afi); #define FIX_APTS(sh_audio,pts,in_size) (sh_audio->i_bps?((float)(pts)+(float)(in_size)/(float)sh_audio->i_bps):((float)(pts))) #endif Modified: mplayerxp/libmpcodecs/ad_a52.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_a52.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_a52.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -56,9 +56,8 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; - UNUSED(ctx); for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) return &probes[i]; @@ -128,8 +127,9 @@ return (flags&A52_LFE) ? (channels+1) : channels; } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); ad_private_t* ctx=new(zeromem) ad_private_t; /* Dolby AC3 audio: */ /* however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */ Modified: mplayerxp/libmpcodecs/ad_acm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_acm.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -33,7 +33,7 @@ sh_audio_t* sh; }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* p,uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } static int init_acm_audio_codec(ad_private_t *priv){ sh_audio_t* sh_audio = priv->sh; @@ -141,8 +141,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(probe); UNUSED(afi); /* Win32 ACM audio codec: */ ad_private_t *priv; Modified: mplayerxp/libmpcodecs/ad_dca.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dca.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_dca.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -58,8 +58,7 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { - UNUSED(ctx); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -126,8 +125,9 @@ return (flags&DCA_LFE) ? (channels+1) : channels; } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); /* DTS audio: however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */ #ifdef WORDS_BIGENDIAN Modified: mplayerxp/libmpcodecs/ad_dmo.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dmo.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_dmo.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -34,7 +34,7 @@ sh_audio_t* sh; }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* p,uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } static MPXP_Rc init(ad_private_t *p) { @@ -42,8 +42,9 @@ return MPXP_Ok; } -static ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) +static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(probe); UNUSED(afi); ad_private_t*priv; int chans=(mp_conf.ao_channels==sh_audio->wf->nChannels) ? Modified: mplayerxp/libmpcodecs/ad_dshow.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dshow.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_dshow.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -29,7 +29,7 @@ sh_audio_t* sh; }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* p,uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } MPXP_Rc init(ad_private_t *p) { @@ -37,8 +37,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(probe); UNUSED(afi); ad_private_t *priv; if(!(priv=new(zeromem) ad_private_t)) return NULL; Modified: mplayerxp/libmpcodecs/ad_dvdpcm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_dvdpcm.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_dvdpcm.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -30,8 +30,7 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { - UNUSED(ctx); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -78,8 +77,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); UNUSED(afi); sh->audio_out_minsize=2048; ad_private_t* priv = new(zeromem) ad_private_t; Modified: mplayerxp/libmpcodecs/ad_faad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_faad.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -42,24 +42,23 @@ }; static const audio_probe_t probes[] = { - { "faad", "libfaad", 0xFF, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", 0x4143, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", 0x706D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", 0xA106, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", 0xAAC0, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('A','A','C',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('A','A','C','P'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('M','P','4','A'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('M','P','4','L'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('M','P','4','A'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('R','A','A','C'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('R','A','A','P'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, - { "faad", "libfaad", FOURCC_TAG('V','L','B',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, 0xFF, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, 0x4143, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, 0x706D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, 0xA106, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, 0xAAC0, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('A','A','C',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('A','A','C','P'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('M','P','4','A'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('M','P','4','L'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('M','P','4','A'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('R','A','A','C'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('R','A','A','P'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, + { "faad", "libfaad"SLIBSUFFIX, FOURCC_TAG('V','L','B',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S24_LE, AFMT_S16_LE} }, { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { - UNUSED(ctx); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -180,14 +179,14 @@ } -static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +static ad_private_t* preinit(const audio_probe_t* probe,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) { + if(load_dll(probe->codec_dll)!=MPXP_Ok) { delete priv; return NULL; } Modified: mplayerxp/libmpcodecs/ad_hwac3.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_hwac3.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_hwac3.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -171,9 +171,8 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; - UNUSED(ctx); for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) return &probes[i]; @@ -181,10 +180,11 @@ } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); /* Dolby AC3 audio: */ - ad_private_t* ctx=mpcodecs_ad_a52.preinit(sh,afi); + ad_private_t* ctx=mpcodecs_ad_a52.preinit(probe,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-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_internal.h 2012-12-06 16:03:44 UTC (rev 514) @@ -11,9 +11,9 @@ #include "ad_msg.h" -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag); static MPXP_Rc __FASTCALL__ init(ad_private_t *ctx); -static ad_private_t* __FASTCALL__ preinit(sh_audio_t *ctx,audio_filter_info_t* afi); +static ad_private_t* __FASTCALL__ preinit(const audio_probe_t* probe,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-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_lavc.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -24,7 +24,7 @@ audio_filter_info_t* afi; }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* priv,uint32_t wtag) { +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; audio_probe_t* acodec = NULL; const char *what="AVCodecID"; @@ -36,10 +36,8 @@ ,wtag); return NULL; } - if(!priv){ -// avcodec_init(); - avcodec_register_all(); - } +// avcodec_init(); + avcodec_register_all(); AVCodec *codec=avcodec_find_decoder(id); if(!codec) { what="AVCodec"; goto prn_err; } @@ -57,7 +55,7 @@ struct codecs_st* __FASTCALL__ find_lavc_audio(ad_private_t* priv) { sh_audio_t* sh = priv->sh; - const audio_probe_t* aprobe=probe(priv,sh->wtag); + const audio_probe_t* aprobe=probe(sh->wtag); struct codecs_st* acodec = NULL; if(aprobe) { acodec=new(zeromem) struct codecs_st; @@ -86,8 +84,9 @@ LIBAD_EXTERN(lavc) -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); ad_private_t* priv = new(zeromem) ad_private_t; sh->audio_out_minsize=AVCODEC_MAX_AUDIO_FRAME_SIZE; priv->sh = sh; @@ -102,10 +101,9 @@ AVCodec *lavc_codec=NULL; sh_audio_t* sh_audio = priv->sh; MSG_V("LAVC audio codec\n"); - if(!priv){ -// avcodec_init(); - avcodec_register_all(); - } +// avcodec_init(); + avcodec_register_all(); + lavc_codec = (AVCodec *)avcodec_find_decoder_by_name(sh_audio->codec->dll_name); if(!lavc_codec) { MSG_ERR(MSGTR_MissingLAVCcodec,sh_audio->codec->dll_name); Modified: mplayerxp/libmpcodecs/ad_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -44,8 +44,7 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* priv,uint32_t wtag) { - UNUSED(priv); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -56,8 +55,9 @@ // defined in vd_libdv.c: dv_decoder_t* init_global_rawdv_decoder(void); -static ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) +static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh_audio,audio_filter_info_t* afi) { + UNUSED(probe); UNUSED(afi); sh_audio->audio_out_minsize=4*DV_AUDIO_MAX_SAMPLES*2; ad_private_t* priv = new(zeromem) ad_private_t; Modified: mplayerxp/libmpcodecs/ad_mp3.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_mp3.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_mp3.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -246,19 +246,18 @@ }; static const audio_probe_t probes[] = { - { "mp3lib", "libmpg123", 0x50, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", 0x55, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", 0x55005354, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", 0x5000736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", 0x5500736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", FOURCC_TAG('.','M','P','3'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", FOURCC_TAG('L','A','M','E'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, - { "mp3lib", "libmpg123", FOURCC_TAG('M','P','3',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, 0x50, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, 0x55, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, 0x55005354, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, 0x5000736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, 0x5500736D, ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, FOURCC_TAG('.','M','P','3'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, FOURCC_TAG('L','A','M','E'), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, + { "mp3lib", "libmpg123"SLIBSUFFIX, FOURCC_TAG('M','P','3',' '), ACodecStatus_Working, {AFMT_FLOAT32, AFMT_S16_LE} }, { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* priv,uint32_t wtag) { - UNUSED(priv); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -266,11 +265,11 @@ return NULL; } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,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; + if(load_dll(probe->codec_dll)!=MPXP_Ok) return NULL; ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; return priv; Modified: mplayerxp/libmpcodecs/ad_null.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_null.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_null.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -23,7 +23,7 @@ LIBAD_EXTERN(null) -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { UNUSED(wtag); return NULL; } MPXP_Rc init(ad_private_t *priv) { @@ -31,8 +31,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); UNUSED(afi); ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; Modified: mplayerxp/libmpcodecs/ad_pcm.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_pcm.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_pcm.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -45,8 +45,7 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* ctx,uint32_t wtag) { - UNUSED(ctx); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -88,8 +87,9 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); sh->audio_out_minsize=16384; ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; Modified: mplayerxp/libmpcodecs/ad_qtaudio.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_qtaudio.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_qtaudio.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -160,9 +160,10 @@ sh_audio_t* sh; }; -static const audio_probe_t* __FASTCALL__ probe(sh_audio_t* sh,uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } -static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi){ +static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi){ + UNUSED(probe); UNUSED(afi); int error; unsigned long FramesToGet=0; //how many frames the demuxer has to get Modified: mplayerxp/libmpcodecs/ad_real.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_real.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_real.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -83,8 +83,7 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* p,uint32_t wtag) { - UNUSED(p); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -92,22 +91,9 @@ return NULL; } -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; - int len=0; - any_t* prop; - char path[4096]; - char cpath[4096]; - ad_private_t *priv; - priv=new(zeromem) ad_private_t; - priv->sh = sh; - if(!(handle = dlopen (sh->codec->dll_name, RTLD_LAZY))) { - delete priv; - return NULL; - } +static MPXP_Rc load_dll(const char* name) +{ + if(!(handle = dlopen (name, RTLD_LAZY))) return MPXP_False; raCloseCodec = (uint32_t (*)(uint32_t))ld_sym(handle, "RACloseCodec"); raDecode = (uint32_t (*)(any_t*,any_t*,uint32_t,any_t*,any_t*,uint32_t))ld_sym(handle, "RADecode"); @@ -120,13 +106,25 @@ raSetDLLAccessPath = (void (*)(uint32_t))ld_sym(handle, "SetDLLAccessPath"); raSetPwd = (void (*)(char*,char*))ld_sym(handle, "RASetPwd"); /* optional, used by SIPR */ - if(!raCloseCodec || !raDecode || !raFreeDecoder || - !raGetFlavorProperty || !(raOpenCodec2||raOpenCodec) || !raSetFlavor || - !raInitDecoder){ - delete priv; - return NULL; - } + return (raCloseCodec && raDecode && raFreeDecoder && + raGetFlavorProperty && (raOpenCodec2||raOpenCodec) && raSetFlavor && + raInitDecoder)?MPXP_Ok:MPXP_False; +} +static ad_private_t* preinit(const audio_probe_t* probe,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; + int len=0; + any_t* prop; + char path[4096]; + char cpath[4096]; + ad_private_t *priv; + if(load_dll(probe->codec_dll)!=MPXP_Ok) return NULL; + priv=new(zeromem) ad_private_t; + priv->sh = sh; + char *end; strcpy(cpath,sh->codec->dll_name); end = strrchr(cpath,'/'); Modified: mplayerxp/libmpcodecs/ad_twin.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_twin.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_twin.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -218,7 +218,7 @@ sh_audio_t* sh; }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* p,uint32_t wtag) { return NULL; } +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; } static HINSTANCE vqf_dll; @@ -312,14 +312,14 @@ return MPXP_Ok; } -ad_private_t* preinit(sh_audio_t *sh_audio,audio_filter_info_t* afi) +ad_private_t* preinit(const audio_probe_t* probe,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; priv->sh = sh_audio; - if(!load_dll((const char *)sh_audio->codec->dll_name)) { + if(!load_dll(probe->codec_dll)) { MSG_ERR("win32.dll looks broken :(\n"); delete priv; return NULL; Modified: mplayerxp/libmpcodecs/ad_vorbis.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_vorbis.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/ad_vorbis.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -46,8 +46,7 @@ { NULL, NULL, 0x0, ACodecStatus_NotWorking, {AFMT_S8}} }; -static const audio_probe_t* __FASTCALL__ probe(ad_private_t* priv,uint32_t wtag) { - UNUSED(priv); +static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { unsigned i; for(i=0;probes[i].driver;i++) if(wtag==probes[i].wtag) @@ -55,8 +54,9 @@ return NULL; } -static ad_private_t* preinit(sh_audio_t *sh,audio_filter_info_t* afi) +static ad_private_t* preinit(const audio_probe_t* probe,sh_audio_t *sh,audio_filter_info_t* afi) { + UNUSED(probe); sh->audio_out_minsize=1024*4; // 1024 samples/frame ad_private_t* priv = new(zeromem) ad_private_t; priv->sh = sh; Modified: mplayerxp/libmpcodecs/dec_audio.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -60,9 +60,9 @@ if(afm) { priv->mpadec=afm_find_driver(afm); - if(priv->mpadec) aprobe=priv->mpadec->probe(priv->ctx,sh_audio->wtag); + if(priv->mpadec) aprobe=priv->mpadec->probe(sh_audio->wtag); } - else aprobe = afm_probe_driver(priv->ctx,sh_audio); + else aprobe = afm_probe_driver(priv->ctx,sh_audio,priv->afi); if(aprobe) { afm=aprobe->driver; @@ -82,7 +82,7 @@ delete priv; return NULL; // no such driver } - if((priv->ctx=priv->mpadec->preinit(sh_audio,priv->afi))==NULL) { + if((priv->ctx=priv->mpadec->preinit(aprobe,sh_audio,priv->afi))==NULL) { MSG_ERR(MSGTR_CODEC_CANT_PREINITA); delete priv; return NULL; Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -145,18 +145,22 @@ priv->parent=sh_video; priv->libinput=libinput; handle->vd_private=priv; + const video_probe_t* vprobe=NULL; /* Use lavc's drivers as last hope */ priv->mpvdec=vfm_find_driver("lavc"); if(priv->mpvdec) { - if((priv->ctx=priv->mpvdec->preinit(sh_video,priv->psi))==NULL){ - MSG_ERR(MSGTR_CODEC_CANT_INITV); - return NULL; - } - if(priv->mpvdec->init(priv->ctx,handle)!=MPXP_Ok){ - MSG_ERR(MSGTR_CODEC_CANT_INITV); - return NULL; - } + if((vprobe=priv->mpvdec->probe(sh_video->fourcc))!=NULL) { + if((priv->ctx=priv->mpvdec->preinit(vprobe,sh_video,priv->psi))==NULL){ + MSG_ERR(MSGTR_CODEC_CANT_INITV); + return NULL; + } + if(priv->mpvdec->init(priv->ctx,handle)!=MPXP_Ok){ + MSG_ERR(MSGTR_CODEC_CANT_INITV); + return NULL; + } + } else goto err_out; } else { + err_out: MSG_ERR("Cannot find lavc video decoder\n"); return NULL; } @@ -188,9 +192,9 @@ if(vfm) { priv->mpvdec=vfm_find_driver(vfm); - if(priv->mpvdec) vprobe=priv->mpvdec->probe(priv->ctx,sh_video->fourcc); + if(priv->mpvdec) vprobe=priv->mpvdec->probe(sh_video->fourcc); } - else vprobe = vfm_driver_probe(priv->ctx,sh_video); + else vprobe = vfm_driver_probe(priv->ctx,sh_video,priv->psi); if(vprobe) { vfm=vprobe->driver; @@ -204,7 +208,7 @@ priv->mpvdec=vfm_find_driver(vfm); if(priv->mpvdec) { - if((priv->ctx=priv->mpvdec->preinit(sh_video,priv->psi))==NULL){ + if((priv->ctx=priv->mpvdec->preinit(vprobe,sh_video,priv->psi))==NULL){ MSG_ERR(MSGTR_CODEC_CANT_INITV); delete sh_video->codec; sh_video->codec=NULL; Modified: mplayerxp/libmpcodecs/vd.cpp =================================================================== --- mplayerxp/libmpcodecs/vd.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -87,28 +87,33 @@ const vd_functions_t* vfm_find_driver(const char *name) { unsigned i; for (i=0; mpcodecs_vd_drivers[i] != &mpcodecs_vd_null; i++) - if(strcmp(mpcodecs_vd_drivers[i]->info->driver_name,name)==0) + if(strcmp(mpcodecs_vd_drivers[i]->info->driver_name,name)==0) { return mpcodecs_vd_drivers[i]; + } return NULL; } -const video_probe_t* vfm_driver_probe(vd_private_t* ctx,sh_video_t *sh) { +const video_probe_t* vfm_driver_probe(vd_private_t* ctx,sh_video_t *sh,put_slice_info_t* psi) { unsigned i; const video_probe_t* probe; for (i=0; mpcodecs_vd_drivers[i] != &mpcodecs_vd_null; i++) { MSG_V("Probing: %s\n",mpcodecs_vd_drivers[i]->info->driver_name); - if((probe=mpcodecs_vd_drivers[i]->probe(ctx,sh->fourcc))!=NULL) { - const char* pfcc = reinterpret_cast<const char*>(&sh->fourcc); - MSG_V("Driver: %s supports these outfmt for %c%c%c%c fourcc:\n" - ,mpcodecs_vd_drivers[i]->info->driver_name - ,pfcc[0],pfcc[1],pfcc[2],pfcc[3],probe->flags[i]); - for(i=0;i<Video_MaxOutFmt;i++) { - pfcc = reinterpret_cast<const char*>(&probe->pix_fmt[i]); - MSG_V("%c%c%c%c (flg=%X) ",pfcc[0],pfcc[1],pfcc[2],pfcc[3],probe->flags[i]); - if(probe->pix_fmt[i]==0||probe->pix_fmt[i]==-1) break; + if((probe=mpcodecs_vd_drivers[i]->probe(sh->fourcc))!=NULL) { + vd_private_t* priv=mpcodecs_vd_drivers[i]->preinit(probe,sh,psi); + if(priv) { + const char* pfcc = reinterpret_cast<const char*>(&sh->fourcc); + MSG_V("Driver: %s supports these outfmt for %c%c%c%c fourcc:\n" + ,mpcodecs_vd_drivers[i]->info->driver_name + ,pfcc[0],pfcc[1],pfcc[2],pfcc[3],probe->flags[i]); + for(i=0;i<Video_MaxOutFmt;i++) { + pfcc = reinterpret_cast<const char*>(&probe->pix_fmt[i]); + MSG_V("%c%c%c%c (flg=%X) ",pfcc[0],pfcc[1],pfcc[2],pfcc[3],probe->flags[i]); + if(probe->pix_fmt[i]==0||probe->pix_fmt[i]==-1) break; + } + MSG_V("\n"); + mpcodecs_vd_drivers[i]->uninit(priv); + return probe; } - MSG_V("\n"); - return probe; } } return NULL; Modified: mplayerxp/libmpcodecs/vd.h =================================================================== --- mplayerxp/libmpcodecs/vd.h 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd.h 2012-12-06 16:03:44 UTC (rev 514) @@ -57,8 +57,8 @@ { 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,put_slice_info_t* psi); + const video_probe_t*(*__FASTCALL__ probe)(uint32_t fourcc); + vd_private_t* (*__FASTCALL__ preinit)(const video_probe_t* probe,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, ...); @@ -66,7 +66,7 @@ } vd_functions_t; extern const vd_functions_t* vfm_find_driver(const char *name); -extern const video_probe_t* vfm_driver_probe(vd_private_t*ctx,sh_video_t *sh); +extern const video_probe_t* vfm_driver_probe(vd_private_t*ctx,sh_video_t *sh,put_slice_info_t* psi); enum { VDCTRL_QUERY_FORMAT =3, /* test for availabilty of a format */ Modified: mplayerxp/libmpcodecs/vd_divx4.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_divx4.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -141,18 +141,17 @@ static any_t*dll_handle; static const video_probe_t probes[] = { - { "divx", "libdivx.so",FOURCC_TAG('D','Y','U','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, - { "divx", "libdivx.so",FOURCC_TAG('D','I','V','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, - { "divx", "libdivx.so",FOURCC_TAG('D','I','V','4'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, - { "divx", "libdivx.so",FOURCC_TAG('D','I','V','5'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, - { "divx", "libdivx.so",FOURCC_TAG('D','I','V','6'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, - { "divx", "libdivx.so",FOURCC_TAG('D','I','V','X'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, - { "divx", "libdivx.so",FOURCC_TAG('D','X','5','0'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','Y','U','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','I','V','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','I','V','4'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','I','V','5'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','I','V','6'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','I','V','X'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, + { "divx", "libdivx"SLIBSUFFIX,FOURCC_TAG('D','X','5','0'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420}, {VideoFlag_None, VideoFlag_None } }, { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { VideoFlag_None }} }; -static const video_probe_t* __FASTCALL__ probe(vd_private_t *p,uint32_t fourcc) { - UNUSED(p); +static const video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { unsigned i; for(i=0;probes[i].driver;i++) if(fourcc==probes[i].fourcc) @@ -211,8 +210,9 @@ return getDecore_ptr != NULL; } -static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ +static vd_private_t* preinit(const video_probe_t* probe,sh_video_t *sh,put_slice_info_t* psi){ UNUSED(psi); + if(!load_lib(probe->codec_dll)) return NULL; vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; return priv; @@ -224,7 +224,6 @@ sh_video_t* sh = priv->sh; int bits=12; priv->parent = opaque; - if(!load_lib("libdivx"SLIBSUFFIX)) return MPXP_False; if(!(mpcodecs_config_vf(opaque,sh->src_w,sh->src_h))) return MPXP_False; switch(sh->codec->outfmt[sh->outfmtidx]){ case IMGFMT_YV12: Modified: mplayerxp/libmpcodecs/vd_dmo.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_dmo.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_dmo.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -33,7 +33,7 @@ video_decoder_t* parent; }; -static const video_probe_t* __FASTCALL__ probe(vd_private_t *p,uint32_t fourcc) { return NULL; } +static const video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } // to set/get/query special features/parameters static MPXP_Rc control_vd(vd_private_t *p,int cmd,any_t* arg,...){ @@ -53,7 +53,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ +static vd_private_t* preinit(const video_probe_t* probe,sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(probe); UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; Modified: mplayerxp/libmpcodecs/vd_dshow.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_dshow.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_dshow.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -35,7 +35,7 @@ video_decoder_t* parent; }; -static const video_probe_t* __FASTCALL__ probe(vd_private_t *p,uint32_t fourcc) { return NULL; } +static const video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; } // to set/get/query special features/parameters static MPXP_Rc control_vd(vd_private_t *p,int cmd,any_t* arg,...){ @@ -70,7 +70,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ +static vd_private_t* preinit(const video_probe_t* probe,sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(probe); UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; Modified: mplayerxp/libmpcodecs/vd_huffyuv.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_huffyuv.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_huffyuv.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -100,8 +100,7 @@ { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { VideoFlag_None }} }; -static const video_probe_t* __FASTCALL__ probe(vd_private_t *priv,uint32_t fourcc) { - UNUSED(priv); +static const video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { unsigned i; for(i=0;probes[i].driver;i++) if(fourcc==probes[i].fourcc) @@ -196,7 +195,8 @@ return MPXP_Unknown; } -static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ +static vd_private_t* preinit(const video_probe_t* probe,sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(probe); UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; Modified: mplayerxp/libmpcodecs/vd_internal.h =================================================================== --- mplayerxp/libmpcodecs/vd_internal.h 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_internal.h 2012-12-06 16:03:44 UTC (rev 514) @@ -12,9 +12,9 @@ //static vd_info_t info; //static const config_t options[]; -static const video_probe_t* __FASTCALL__ probe(vd_private_t *ctx,uint32_t fourcc); +static const video_probe_t* __FASTCALL__ probe(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,put_slice_info_t* psi); +static vd_private_t* __FASTCALL__ preinit(const video_probe_t* probe,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-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -193,8 +193,7 @@ return MPXP_Unknown; } -static const video_probe_t* __FASTCALL__ probe(vd_private_t *ctx,uint32_t fcc) { - UNUSED(ctx); +static const video_probe_t* __FASTCALL__ probe(uint32_t fcc) { unsigned i; unsigned char flag = CODECS_FLAG_NOFLIP; video_probe_t* vprobe = NULL; @@ -232,7 +231,7 @@ static MPXP_Rc find_vdecoder(vd_private_t* ctx) { sh_video_t* sh = ctx->sh; - const video_probe_t* vprobe=probe(ctx,sh->fourcc); + const video_probe_t* vprobe=probe(sh->fourcc); ctx->probe = vprobe; if(vprobe) { sh->codec=new(zeromem) struct codecs_st; @@ -245,7 +244,8 @@ return MPXP_False; } -static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ +static vd_private_t* preinit(const video_probe_t* probe,sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(probe); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; priv->psi=psi; @@ -438,12 +438,14 @@ // uninit driver static void uninit(vd_private_t *priv){ - if (avcodec_close(priv->ctx) < 0) - MSG_ERR( MSGTR_CantCloseCodec); - if (priv->ctx->extradata_size) - delete priv->ctx->extradata; - delete priv->ctx; - delete priv->lavc_picture; + if(priv->ctx) { + if (avcodec_close(priv->ctx) < 0) + MSG_ERR( MSGTR_CantCloseCodec); + if (priv->ctx->extradata_size) + delete priv->ctx->extradata; + delete priv->ctx; + delete priv->lavc_picture; + } if(priv->probe) { delete priv->probe->codec_dll; delete priv->probe; } delete priv; if(ppContext) pp_free_context(ppContext); Modified: mplayerxp/libmpcodecs/vd_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_libdv.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -58,8 +58,7 @@ { NULL, NULL, 0x0, VCodecStatus_NotWorking, {0x0}, { VideoFlag_None }} }; -static const video_probe_t* __FASTCALL__ probe(vd_private_t *priv,uint32_t fourcc) { - UNUSED(priv); +static const video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { unsigned i; for(i=0;probes[i].driver;i++) if(fourcc==probes[i].fourcc) @@ -87,7 +86,8 @@ return global_rawdv_decoder; } -static vd_private_t* preinit(sh_video_t *sh,put_slice_info_t* psi){ +static vd_private_t* preinit(const video_probe_t* probe,sh_video_t *sh,put_slice_info_t* psi){ + UNUSED(probe); UNUSED(psi); vd_private_t* priv = new(zeromem) vd_private_t; priv->sh=sh; Modified: mplayerxp/libmpcodecs/vd_libmpeg2.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_libmpeg2.cpp 2012-12-06 13:53:54 UTC (rev 513) +++ mplayerxp/libmpcodecs/vd_libmpeg2.cpp 2012-12-06 16:03:44 UTC (rev 514) @@ -35,74 +35,73 @@ LIBVD_EXTERN(libmpeg2) static const video_probe_t probes[] = { - { "mpeg2", "libmpeg2", 0x10000001, VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", 0x10000002, VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('A','V','M','P'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('D','V','R',' '), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('L','M','P','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','1','V',' '), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','1','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','2','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','7','0','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','M','E','S'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','2','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','E','G'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','P','G','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','5','P'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('P','I','M','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('P','I','M','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','4'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','5'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','6'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','7'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','8'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','9'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('H','D','V','A'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','3','N'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','3','P'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','4','N'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','4','P'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('M','X','5','N'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','4'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','5'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','6'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','7'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','8'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','9'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','A'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','B'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','C'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','D'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','E'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','5','F'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','4'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','5'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','6'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','7'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','8'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','9'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','A'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','B'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','C'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','D'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','E'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, - { "mpeg2", "libmpeg2", FOURCC_TAG('X','D','V','F'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, 0x10000001, VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, 0x10000002, VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('A','V','M','P'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('D','V','R',' '), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('L','M','P','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','1','V',' '), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','1','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','2','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','7','0','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','M','E','S'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','P','2','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','P','G','V'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','P','E','G'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','P','G','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','P','G','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','X','5','P'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('P','I','M','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('P','I','M','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','1'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','2'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','3'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','4'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','5'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','6'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','7'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','8'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','9'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('H','D','V','A'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, IMGFMT_422P}, {VideoFlag_None, VideoFlag_None } }, + { "mpeg2", "libmpeg2"SLIBSUFFIX, FOURCC_TAG('M','X','3','N'), VCodecStatus_Working, {IMGFMT_YV12, IMGFMT_I420, I... [truncated message content] |