diff options
Diffstat (limited to 'src/plugins/directshow/player')
4 files changed, 19 insertions, 19 deletions
diff --git a/src/plugins/directshow/player/directshowiosource.cpp b/src/plugins/directshow/player/directshowiosource.cpp index 3c44dd1ed..96b4b14bf 100644 --- a/src/plugins/directshow/player/directshowiosource.cpp +++ b/src/plugins/directshow/player/directshowiosource.cpp @@ -82,7 +82,7 @@ DirectShowIOSource::DirectShowIOSource(DirectShowEventLoop *loop) // The filter works in pull mode, the downstream filter is responsible for requesting // samples from this one. // - AM_MEDIA_TYPE type = + AM_MEDIA_TYPE type { MEDIATYPE_Stream, // majortype MEDIASUBTYPE_NULL, // subtype @@ -99,7 +99,7 @@ DirectShowIOSource::DirectShowIOSource(DirectShowEventLoop *loop) for (int i = 0; i < count; ++i) { type.subtype = directshow_subtypes[i]; - m_supportedMediaTypes.append(type); + m_supportedMediaTypes.append(DirectShowMediaType(type)); } } @@ -371,12 +371,12 @@ HRESULT DirectShowIOSource::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt) hr = pReceivePin->ReceiveConnection(this, pmt); // Update the media type for the current connection. if (SUCCEEDED(hr)) - m_connectionMediaType = *pmt; + DirectShowMediaType::copy(&m_connectionMediaType, pmt); } else if (pmt && pmt->subtype == MEDIATYPE_NULL) { // - Partial type (Stream, but no subtype specified). - m_connectionMediaType = *pmt; + DirectShowMediaType::copy(&m_connectionMediaType, pmt); // Check if the receiving pin accepts any of the streaming subtypes. for (const DirectShowMediaType &t : qAsConst(m_supportedMediaTypes)) { - m_connectionMediaType.subtype = t.subtype; + m_connectionMediaType->subtype = t->subtype; hr = pReceivePin->ReceiveConnection(this, &m_connectionMediaType); if (SUCCEEDED(hr)) break; @@ -477,7 +477,7 @@ HRESULT DirectShowIOSource::ConnectionMediaType(AM_MEDIA_TYPE *pmt) return VFW_E_NOT_CONNECTED; } else { - DirectShowMediaType::copy(pmt, m_connectionMediaType); + DirectShowMediaType::copy(pmt, &m_connectionMediaType); return S_OK; } diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index 1502c6df3..0b88496af 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -627,13 +627,13 @@ int DirectShowPlayerService::findStreamTypes(IBaseFilter *source) const for (IPin *pin = 0; pins->Next(1, &pin, 0) == S_OK; pin->Release()) { PIN_DIRECTION direction; if (pin->QueryDirection(&direction) == S_OK && direction == PINDIR_OUTPUT) { - AM_MEDIA_TYPE connectionType; + DirectShowMediaType connectionType; if (SUCCEEDED(pin->ConnectionMediaType(&connectionType))) { IPin *peer = 0; - if (connectionType.majortype == MEDIATYPE_Audio) { + if (connectionType->majortype == MEDIATYPE_Audio) { streamTypes |= AudioStream; - } else if (connectionType.majortype == MEDIATYPE_Video) { + } else if (connectionType->majortype == MEDIATYPE_Video) { streamTypes |= VideoStream; } else if (SUCCEEDED(pin->ConnectedTo(&peer))) { PIN_INFO peerInfo; diff --git a/src/plugins/directshow/player/videosurfacefilter.cpp b/src/plugins/directshow/player/videosurfacefilter.cpp index 4cb97be39..13f767a85 100644 --- a/src/plugins/directshow/player/videosurfacefilter.cpp +++ b/src/plugins/directshow/player/videosurfacefilter.cpp @@ -63,8 +63,8 @@ public: VideoSurfaceInputPin(VideoSurfaceFilter *filter); // DirectShowPin - bool isMediaTypeSupported(const DirectShowMediaType *type); - bool setMediaType(const DirectShowMediaType *type); + bool isMediaTypeSupported(const AM_MEDIA_TYPE *type) override; + bool setMediaType(const AM_MEDIA_TYPE *type) override; HRESULT completeConnection(IPin *pin); HRESULT connectionEnded(); @@ -90,12 +90,12 @@ VideoSurfaceInputPin::VideoSurfaceInputPin(VideoSurfaceFilter *filter) { } -bool VideoSurfaceInputPin::isMediaTypeSupported(const DirectShowMediaType *type) +bool VideoSurfaceInputPin::isMediaTypeSupported(const AM_MEDIA_TYPE *type) { return m_videoSurfaceFilter->isMediaTypeSupported(type); } -bool VideoSurfaceInputPin::setMediaType(const DirectShowMediaType *type) +bool VideoSurfaceInputPin::setMediaType(const AM_MEDIA_TYPE *type) { if (!DirectShowInputPin::setMediaType(type)) return false; @@ -282,7 +282,7 @@ void VideoSurfaceFilter::supportedFormatsChanged() } } -bool VideoSurfaceFilter::isMediaTypeSupported(const DirectShowMediaType *type) +bool VideoSurfaceFilter::isMediaTypeSupported(const AM_MEDIA_TYPE *type) { if (type->majortype != MEDIATYPE_Video || type->bFixedSizeSamples == FALSE) return false; @@ -297,7 +297,7 @@ bool VideoSurfaceFilter::isMediaTypeSupported(const DirectShowMediaType *type) return false; } -bool VideoSurfaceFilter::setMediaType(const DirectShowMediaType *type) +bool VideoSurfaceFilter::setMediaType(const AM_MEDIA_TYPE *type) { if (!type) { qCDebug(qLcRenderFilter, "clear media type"); @@ -305,7 +305,7 @@ bool VideoSurfaceFilter::setMediaType(const DirectShowMediaType *type) m_bytesPerLine = 0; return true; } else { - m_surfaceFormat = DirectShowMediaType::formatFromType(*type); + m_surfaceFormat = DirectShowMediaType::videoFormatFromType(type); m_bytesPerLine = DirectShowMediaType::bytesPerLine(m_surfaceFormat); qCDebug(qLcRenderFilter) << "setMediaType -->" << m_surfaceFormat; return m_surfaceFormat.isValid(); @@ -478,7 +478,7 @@ HRESULT VideoSurfaceFilter::Receive(IMediaSample *pMediaSample) // If the format dynamically changed, the sample contains information about the new format. // We need to reset the format and restart the QAbstractVideoSurface. if (m_pin->currentSampleProperties()->pMediaType - && (!m_pin->setMediaType(reinterpret_cast<const DirectShowMediaType *>(m_pin->currentSampleProperties()->pMediaType)) + && (!m_pin->setMediaType(m_pin->currentSampleProperties()->pMediaType) || !restartSurface())) { qCWarning(qLcRenderFilter, " dynamic format change failed, aborting rendering"); NotifyEvent(EC_ERRORABORT, VFW_E_TYPE_NOT_ACCEPTED, 0); diff --git a/src/plugins/directshow/player/videosurfacefilter.h b/src/plugins/directshow/player/videosurfacefilter.h index 581e33c70..6d6cc7593 100644 --- a/src/plugins/directshow/player/videosurfacefilter.h +++ b/src/plugins/directshow/player/videosurfacefilter.h @@ -83,8 +83,8 @@ public: STDMETHODIMP_(ULONG) GetMiscFlags(); // DirectShowPin (delegate) - bool isMediaTypeSupported(const DirectShowMediaType *type); - bool setMediaType(const DirectShowMediaType *type); + bool isMediaTypeSupported(const AM_MEDIA_TYPE *type); + bool setMediaType(const AM_MEDIA_TYPE *type); HRESULT completeConnection(IPin *pin); HRESULT connectionEnded(); |