Files
main/multimedia/video/xine-lib/files/dmo.patch
T

45 lines
1.9 KiB
Diff

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;