diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-07-05 20:54:37 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-07-05 20:54:37 +0000 |
commit | 52ae732957764b953b3b2491afda4376ce595c43 (patch) | |
tree | 9d227674f6c3467f1a9ae60bce88ab29a37265f8 /src/libw32dll/DirectShow | |
parent | d84e2d680f143bfe1fbbf987f5a9bdd5318284ed (diff) | |
download | xine-lib-52ae732957764b953b3b2491afda4376ce595c43.tar.gz xine-lib-52ae732957764b953b3b2491afda4376ce595c43.tar.bz2 |
- win32 bugfixes
- asf bugfixes
- ffmpeg supporting ms iso mpeg4
- softsync fix by Bill Fink
CVS patchset: 2216
CVS date: 2002/07/05 20:54:37
Diffstat (limited to 'src/libw32dll/DirectShow')
-rw-r--r-- | src/libw32dll/DirectShow/DS_VideoDecoder.c | 27 | ||||
-rw-r--r-- | src/libw32dll/DirectShow/guids.c | 4 | ||||
-rw-r--r-- | src/libw32dll/DirectShow/guids.h | 1 |
3 files changed, 29 insertions, 3 deletions
diff --git a/src/libw32dll/DirectShow/DS_VideoDecoder.c b/src/libw32dll/DirectShow/DS_VideoDecoder.c index 33c51b4d2..9dafbc85d 100644 --- a/src/libw32dll/DirectShow/DS_VideoDecoder.c +++ b/src/libw32dll/DirectShow/DS_VideoDecoder.c @@ -74,9 +74,10 @@ static ct check[] = { {12, fccIYUV, &MEDIASUBTYPE_IYUV, CAP_IYUV}, {16, fccUYVY, &MEDIASUBTYPE_UYVY, CAP_UYVY}, {12, fccYV12, &MEDIASUBTYPE_YV12, CAP_YV12}, - {16, fccYV12, &MEDIASUBTYPE_YV12, CAP_YV12}, + //{16, fccYV12, &MEDIASUBTYPE_YV12, CAP_YV12}, {16, fccYVYU, &MEDIASUBTYPE_YVYU, CAP_YVYU}, - //{12, fccI420, &MEDIASUBTYPE_I420, CAP_I420}, + {12, fccI420, &MEDIASUBTYPE_I420, CAP_I420}, + {9, fccYVU9, &MEDIASUBTYPE_YVU9, CAP_YVU9}, {0}, }; @@ -194,6 +195,7 @@ DS_VideoDecoder * DS_VideoDecoder_Open(char* dllname, GUID* guid, BITMAPINFOHEAD switch (this->iv.m_bh->biCompression) { +#if 0 case fccDIV3: case fccDIV4: case fccDIV5: @@ -208,10 +210,12 @@ DS_VideoDecoder * DS_VideoDecoder_Open(char* dllname, GUID* guid, BITMAPINFOHEAD //m_Caps = CAP_I420; this->m_Caps = (CAP_YUY2 | CAP_UYVY); break; +#endif default: this->m_Caps = CAP_NONE; + printf("Decoder supports the following YUV formats: "); for (c = check; c->bits; c++) { this->m_sVhdr2->bmiHeader.biBitCount = c->bits; @@ -219,12 +223,16 @@ DS_VideoDecoder * DS_VideoDecoder_Open(char* dllname, GUID* guid, BITMAPINFOHEAD this->m_sDestType.subtype = *c->subtype; result = this->m_pDS_Filter->m_pOutputPin->vt->QueryAccept(this->m_pDS_Filter->m_pOutputPin, &this->m_sDestType); if (!result) + { this->m_Caps = (this->m_Caps | c->cap); + printf("%.4s ", &c->fcc); + } } + printf("\n"); } if (this->m_Caps != CAP_NONE) - printf("Decoder is capable of YUV output ( flags 0x%x)\n", (int)this->m_Caps); + printf("Decoder is capable of YUV output (flags 0x%x)\n", (int)this->m_Caps); this->m_sVhdr2->bmiHeader.biBitCount = 24; this->m_sVhdr2->bmiHeader.biCompression = 0; @@ -484,12 +492,17 @@ int DS_VideoDecoder_SetDestFmt(DS_VideoDecoder *this, int bits, unsigned int csp case fccIYUV: this->m_sDestType.subtype = MEDIASUBTYPE_IYUV; break; + case fccI420: + this->m_sDestType.subtype = MEDIASUBTYPE_I420; + break; case fccUYVY: this->m_sDestType.subtype = MEDIASUBTYPE_UYVY; break; case fccYVYU: this->m_sDestType.subtype = MEDIASUBTYPE_YVYU; break; + case fccYVU9: + this->m_sDestType.subtype = MEDIASUBTYPE_YVU9; default: ok = false; break; @@ -528,6 +541,10 @@ int DS_VideoDecoder_SetDestFmt(DS_VideoDecoder *this, int bits, unsigned int csp if(!(this->m_Caps & CAP_IYUV)) should_test=false; break; + case fccI420: + if(!(this->m_Caps & CAP_I420)) + should_test=false; + break; case fccUYVY: if(!(this->m_Caps & CAP_UYVY)) should_test=false; @@ -536,6 +553,10 @@ int DS_VideoDecoder_SetDestFmt(DS_VideoDecoder *this, int bits, unsigned int csp if(!(this->m_Caps & CAP_YVYU)) should_test=false; break; + case fccYVU9: + if(!(this->m_Caps & CAP_YVU9)) + should_test=false; + break; } if(should_test) result = this->m_pDS_Filter->m_pOutputPin->vt->QueryAccept(this->m_pDS_Filter->m_pOutputPin, &this->m_sDestType); diff --git a/src/libw32dll/DirectShow/guids.c b/src/libw32dll/DirectShow/guids.c index 393b5f90c..f1ee0aaa3 100644 --- a/src/libw32dll/DirectShow/guids.c +++ b/src/libw32dll/DirectShow/guids.c @@ -55,6 +55,10 @@ GUID MEDIASUBTYPE_Y211={0x31313259, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; GUID MEDIASUBTYPE_YV12={0x32315659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; +GUID MEDIASUBTYPE_I420={0x30323449, 0x0000, 0x0010, + {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; +GUID MEDIASUBTYPE_IF09={0x39304649, 0x0000, 0x0010, + {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; GUID CLSID_MemoryAllocator={0x1e651cc0, 0xb199, 0x11d0, {0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45}}; GUID IID_DivxHidden={0x598eba01, 0xb49a, 0x11d2, diff --git a/src/libw32dll/DirectShow/guids.h b/src/libw32dll/DirectShow/guids.h index 0c96ce202..b17c80662 100644 --- a/src/libw32dll/DirectShow/guids.h +++ b/src/libw32dll/DirectShow/guids.h @@ -92,5 +92,6 @@ extern GUID MEDIASUBTYPE_YVYU; extern GUID MEDIASUBTYPE_UYVY; extern GUID MEDIASUBTYPE_Y211; extern GUID MEDIASUBTYPE_YV12; +extern GUID MEDIASUBTYPE_I420; #endif |