Index: loader/dshow/DS_VideoDecoder.c =================================================================== --- loader/dshow/DS_VideoDecoder.c.orig 2007-02-07 23:01:37.000000000 -0800 +++ loader/dshow/DS_VideoDecoder.c 2007-02-07 23:09:49.000000000 -0800 @@ -241,17 +241,29 @@ this->m_sVhdr2 = (VIDEOINFOHEADER*)(malloc(sizeof(VIDEOINFOHEADER)+12)); memcpy(this->m_sVhdr2, this->m_sVhdr, sizeof(VIDEOINFOHEADER)); memset((char*)this->m_sVhdr2 + sizeof(VIDEOINFOHEADER), 0, 12); - this->m_sVhdr2->bmiHeader.biCompression = 0; - this->m_sVhdr2->bmiHeader.biBitCount = 24; + this->m_sVhdr2->bmiHeader.biCompression = fccYV12; + this->m_sVhdr2->bmiHeader.biBitCount = 12; memset(&this->m_sDestType, 0, sizeof(this->m_sDestType)); this->m_sDestType.majortype = MEDIATYPE_Video; - this->m_sDestType.subtype = MEDIASUBTYPE_RGB24; + this->m_sDestType.subtype = MEDIASUBTYPE_YV12; this->m_sDestType.formattype = FORMAT_VideoInfo; this->m_sDestType.bFixedSizeSamples = true; this->m_sDestType.bTemporalCompression = false; this->m_sDestType.lSampleSize = labs(this->m_sVhdr2->bmiHeader.biWidth*this->m_sVhdr2->bmiHeader.biHeight * ((this->m_sVhdr2->bmiHeader.biBitCount + 7) / 8)); +//Start + this->m_sVhdr2->bmiHeader.biSize = 40; + this->m_sVhdr2->bmiHeader.biWidth = format->biWidth; + this->m_sVhdr2->bmiHeader.biHeight= format->biHeight; + this->m_sVhdr2->bmiHeader.biPlanes= 1; + this->m_sDestType.lSampleSize = labs(this->m_sVhdr2->bmiHeader.biWidth*this->m_sVhdr2->bmiHeader.biHeight) * this->m_sVhdr2->bmiHeader.biBitCount / 8; + this->m_sVhdr2->rcSource.left = 0; + this->m_sVhdr2->rcSource.top = 0; + this->m_sVhdr2->rcSource.right = labs(this->m_sVhdr2->bmiHeader.biWidth); + this->m_sVhdr2->rcSource.bottom = labs(this->m_sVhdr2->bmiHeader.biHeight); + this->m_sVhdr2->rcTarget = this->m_sVhdr2->rcSource; +//end this->m_sVhdr2->bmiHeader.biSizeImage = this->m_sDestType.lSampleSize; this->m_sDestType.pUnk = 0; this->m_sDestType.cbFormat = sizeof(VIDEOINFOHEADER);