diff -Nur xine-lib-1.1.15-old/src/libw32dll/dmo/DMO_VideoDecoder.c xine-lib-1.1.15/src/libw32dll/dmo/DMO_VideoDecoder.c --- xine-lib-1.1.15-old/src/libw32dll/dmo/DMO_VideoDecoder.c 2008-09-27 20:55:34.000000000 +0300 +++ xine-lib-1.1.15/src/libw32dll/dmo/DMO_VideoDecoder.c 2008-09-27 21:33:01.000000000 +0300 @@ -87,7 +87,7 @@ { 24, 24, &MEDIASUBTYPE_RGB24, CAP_NONE }, { 32, 32, &MEDIASUBTYPE_RGB32, CAP_NONE }, - {0}, + {0,0,NULL,0}, }; DMO_VideoDecoder * DMO_VideoDecoder_Open(char* dllname, GUID* guid, BITMAPINFOHEADER * format, int flip, int maxauto) @@ -288,8 +288,8 @@ props.cBuffers = 1; props.cbBuffer = this->m_sDestType.lSampleSize; - //don't know how to do this correctly - props.cbAlign = props.cbPrefix = 0; + props.cbAlign = 1; + props.cbPrefix = 0; this->m_pDMO_Filter->m_pAll->vt->SetProperties(this->m_pDMO_Filter->m_pAll, &props, &props1); this->m_pDMO_Filter->m_pAll->vt->Commit(this->m_pDMO_Filter->m_pAll); #endif @@ -327,7 +327,7 @@ bufferin = CMediaBufferCreate(size, (void*)src, size, 0); result = this->m_pDMO_Filter->m_pMedia->vt->ProcessInput(this->m_pDMO_Filter->m_pMedia, 0, (IMediaBuffer*)bufferin, - (is_keyframe) ? DMO_INPUT_DATA_BUFFERF_SYNCPOINT : 0, + DMO_INPUT_DATA_BUFFERF_SYNCPOINT, 0, 0); ((IMediaBuffer*)bufferin)->vt->Release((IUnknown*)bufferin); @@ -463,8 +463,9 @@ this->iv.m_obh.biSize = sizeof(BITMAPINFOHEADER); this->iv.m_obh.biCompression=csp; this->iv.m_obh.biBitCount=bits; - this->iv.m_obh.biSizeImage=labs(this->iv.m_obh.biBitCount* - this->iv.m_obh.biWidth*this->iv.m_obh.biHeight)>>3; + + this->iv.m_obh.biSizeImage = labs(this->iv.m_obh.biWidth * this->iv.m_obh.biHeight) + * ((this->iv.m_obh.biBitCount + 7) / 8); } } this->m_sDestType.lSampleSize = this->iv.m_obh.biSizeImage;