summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpcodecs/vd_vfw.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/libmpcodecs/vd_vfw.c b/libmpcodecs/vd_vfw.c
index bc85ee623d..1ed5e2781a 100644
--- a/libmpcodecs/vd_vfw.c
+++ b/libmpcodecs/vd_vfw.c
@@ -240,11 +240,14 @@ static int init(sh_video_t *sh){
ICSendMessage(priv->handle, ICM_USER+80, (long)(&divx_quality), 0);
// don't do this palette mess always, it makes div3 dll crashing...
- if((sh->codec->outfmt[sh->outfmtidx]==IMGFMT_BGR8) &&
- (!ICDecompressGetPalette(priv->handle, sh->bih, priv->o_bih)))
- {
- priv->palette = ((unsigned char*)priv->o_bih) + sh->bih->biSize;
- mp_msg(MSGT_WIN32,MSGL_V,"ICDecompressGetPalette OK\n");
+ if(sh->codec->outfmt[sh->outfmtidx]==IMGFMT_BGR8){
+ if(ICDecompressGetPalette(priv->handle, sh->bih, priv->o_bih)){
+ priv->palette = (unsigned char*)(priv->o_bih+1);
+ mp_msg(MSGT_WIN32,MSGL_V,"ICDecompressGetPalette OK\n");
+ } else {
+ if(sh->bih->biSize>=40+4*4)
+ priv->palette = (unsigned char*)(sh->bih+1);
+ }
}
mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32 video codec init OK!\n");