From 57f4448e7a267d26496e52384f3e1c9c4fcb317d Mon Sep 17 00:00:00 2001 From: reimar Date: Wed, 3 Mar 2010 21:32:31 +0000 Subject: Partially revert r30645, the final output format is determined by mpcodecs_config_vo so we need to query it afterwards. Still try to set a more sensible, codec-dependant preferred format even though it is currently ignored. Fixes bug #1659, based on patch by Andrew Wason [rectalogic rectalogic com] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30824 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vd_dmo.c | 4 +++- libmpcodecs/vd_dshow.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'libmpcodecs') diff --git a/libmpcodecs/vd_dmo.c b/libmpcodecs/vd_dmo.c index 0b2e20e90e..6866aa202b 100644 --- a/libmpcodecs/vd_dmo.c +++ b/libmpcodecs/vd_dmo.c @@ -55,7 +55,7 @@ static int control(sh_video_t *sh,int cmd,void* arg,...){ // init driver static int init(sh_video_t *sh){ - unsigned int out_fmt=sh->codec->outfmt[sh->outfmtidx]; + unsigned int out_fmt=sh->codec->outfmt[0]; struct context *ctx; void *decoder; if(!(decoder=DMO_VideoDecoder_Open(sh->codec->dll,&sh->codec->guid, sh->bih, 0, 0))){ @@ -64,6 +64,8 @@ static int init(sh_video_t *sh){ return 0; } if(!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,out_fmt)) return 0; + // mpcodecs_config_vo can change the format + out_fmt=sh->codec->outfmt[sh->outfmtidx]; sh->context = ctx = calloc(1, sizeof(*ctx)); ctx->decoder = decoder; switch(out_fmt){ diff --git a/libmpcodecs/vd_dshow.c b/libmpcodecs/vd_dshow.c index 8a1d29c321..82a0193b35 100644 --- a/libmpcodecs/vd_dshow.c +++ b/libmpcodecs/vd_dshow.c @@ -66,7 +66,7 @@ static int control(sh_video_t *sh,int cmd,void* arg,...){ // init driver static int init(sh_video_t *sh){ - unsigned int out_fmt=sh->codec->outfmt[sh->outfmtidx]; + unsigned int out_fmt=sh->codec->outfmt[0]; /* Hack for VSSH codec: new dll can't decode old files * In my samples old files have no extradata, so use that info @@ -81,6 +81,8 @@ static int init(sh_video_t *sh){ return 0; } if(!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,out_fmt)) return 0; + // mpcodecs_config_vo can change the format + out_fmt=sh->codec->outfmt[sh->outfmtidx]; switch(out_fmt){ case IMGFMT_YUY2: case IMGFMT_UYVY: -- cgit v1.2.3