Christian Costa : amstream: Implement BasePinImpl_CheckMediaType in media stream filter.
Alexandre Julliard
julliard at winehq.org
Mon Oct 15 14:29:05 CDT 2012
Module: wine
Branch: master
Commit: 604fb218b77eec6ee6e204e43fda237316c30b96
URL: http://source.winehq.org/git/wine.git/?a=commit;h=604fb218b77eec6ee6e204e43fda237316c30b96
Author: Christian Costa <titan.costa at gmail.com>
Date: Fri Oct 12 23:07:24 2012 +0200
amstream: Implement BasePinImpl_CheckMediaType in media stream filter.
---
dlls/amstream/mediastreamfilter.c | 42 +++++++++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/dlls/amstream/mediastreamfilter.c b/dlls/amstream/mediastreamfilter.c
index 8423cfa..a2851ca 100644
--- a/dlls/amstream/mediastreamfilter.c
+++ b/dlls/amstream/mediastreamfilter.c
@@ -76,6 +76,48 @@ static inline IMediaStreamFilterImpl *impl_from_IMediaStreamFilter(IMediaStreamF
static HRESULT WINAPI BasePinImpl_CheckMediaType(BasePin *This, const AM_MEDIA_TYPE *pmt)
{
+ IMediaStreamFilterImpl *filter = impl_from_IMediaStreamFilter((IMediaStreamFilter*)This->pinInfo.pFilter);
+ MSPID purpose_id;
+ int i;
+
+ TRACE("Checking media type %s - %s\n", debugstr_guid(&pmt->majortype), debugstr_guid(&pmt->subtype));
+
+ /* Find which stream is associated with the pin */
+ for (i = 0; i < filter->nb_streams; i++)
+ if (&This->IPin_iface == filter->pins[i])
+ break;
+
+ if (i == filter->nb_streams)
+ return S_FALSE;
+
+ if (FAILED(IMediaStream_GetInformation(filter->streams[i], &purpose_id, NULL)))
+ return S_FALSE;
+
+ TRACE("Checking stream with purpose id %s\n", debugstr_guid(&purpose_id));
+
+ if (IsEqualGUID(&purpose_id, &MSPID_PrimaryVideo) && IsEqualGUID(&pmt->majortype, &MEDIATYPE_Video))
+ {
+ if (IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB1) ||
+ IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB4) ||
+ IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB8) ||
+ IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB565) ||
+ IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB555) ||
+ IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB24) ||
+ IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_RGB32))
+ {
+ TRACE("Video sub-type %s matches\n", debugstr_guid(&pmt->subtype));
+ return S_OK;
+ }
+ }
+ else if (IsEqualGUID(&purpose_id, &MSPID_PrimaryAudio) && IsEqualGUID(&pmt->majortype, &MEDIATYPE_Audio))
+ {
+ if (IsEqualGUID(&pmt->subtype, &MEDIASUBTYPE_PCM))
+ {
+ TRACE("Audio sub-type %s matches\n", debugstr_guid(&pmt->subtype));
+ return S_OK;
+ }
+ }
+
return S_FALSE;
}
More information about the wine-cvs
mailing list