diff options
Diffstat (limited to 'src/plugins/directshow/player/directshowiosource.cpp')
-rw-r--r-- | src/plugins/directshow/player/directshowiosource.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/plugins/directshow/player/directshowiosource.cpp b/src/plugins/directshow/player/directshowiosource.cpp index fa17e51af..3c44dd1ed 100644 --- a/src/plugins/directshow/player/directshowiosource.cpp +++ b/src/plugins/directshow/player/directshowiosource.cpp @@ -41,6 +41,7 @@ #include "directshowglobal.h" #include "directshowmediatype.h" +#include "directshowmediatypeenum.h" #include "directshowpinenum.h" #include <QtCore/qcoreapplication.h> @@ -81,7 +82,6 @@ DirectShowIOSource::DirectShowIOSource(DirectShowEventLoop *loop) // The filter works in pull mode, the downstream filter is responsible for requesting // samples from this one. // - QVector<AM_MEDIA_TYPE> mediaTypes; AM_MEDIA_TYPE type = { MEDIATYPE_Stream, // majortype @@ -99,10 +99,8 @@ DirectShowIOSource::DirectShowIOSource(DirectShowEventLoop *loop) for (int i = 0; i < count; ++i) { type.subtype = directshow_subtypes[i]; - mediaTypes.append(type); + m_supportedMediaTypes.append(type); } - - setMediaTypes(mediaTypes); } DirectShowIOSource::~DirectShowIOSource() @@ -377,24 +375,20 @@ HRESULT DirectShowIOSource::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt) } else if (pmt && pmt->subtype == MEDIATYPE_NULL) { // - Partial type (Stream, but no subtype specified). m_connectionMediaType = *pmt; // Check if the receiving pin accepts any of the streaming subtypes. - QVector<AM_MEDIA_TYPE>::const_iterator cit = m_mediaTypes.constBegin(); - while (cit != m_mediaTypes.constEnd()) { - m_connectionMediaType.subtype = cit->subtype; + for (const DirectShowMediaType &t : qAsConst(m_supportedMediaTypes)) { + m_connectionMediaType.subtype = t.subtype; hr = pReceivePin->ReceiveConnection(this, &m_connectionMediaType); if (SUCCEEDED(hr)) break; - ++cit; } } else { // - No media type specified. // Check if the receiving pin accepts any of the streaming types. - QVector<AM_MEDIA_TYPE>::const_iterator cit = m_mediaTypes.constBegin(); - while (cit != m_mediaTypes.constEnd()) { - hr = pReceivePin->ReceiveConnection(this, cit); + for (const DirectShowMediaType &t : qAsConst(m_supportedMediaTypes)) { + hr = pReceivePin->ReceiveConnection(this, &t); if (SUCCEEDED(hr)) { - m_connectionMediaType = *cit; + m_connectionMediaType = t; break; } - ++cit; } } @@ -539,7 +533,7 @@ HRESULT DirectShowIOSource::EnumMediaTypes(IEnumMediaTypes **ppEnum) if (!ppEnum) { return E_POINTER; } else { - *ppEnum = createMediaTypeEnum(); + *ppEnum = new DirectShowMediaTypeEnum(m_supportedMediaTypes); return S_OK; } |