diff options
Diffstat (limited to 'src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp')
-rw-r--r-- | src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp b/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp index 0c028933c..0330bbef9 100644 --- a/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp +++ b/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp @@ -2136,10 +2136,12 @@ public: STDMETHODIMP DetachObject() override; void setSink(QVideoSink *sink); + void setCropRect(QRect cropRect); private: EVRCustomPresenter *m_presenter; QVideoSink *m_videoSink; + QRect m_cropRect; QMutex m_mutex; }; @@ -2192,6 +2194,12 @@ void MFVideoRendererControl::setSink(QVideoSink *sink) static_cast<VideoRendererActivate*>(m_currentActivate)->setSink(m_sink); } +void MFVideoRendererControl::setCropRect(QRect cropRect) +{ + if (m_presenterActivate) + m_presenterActivate->setCropRect(cropRect); +} + void MFVideoRendererControl::customEvent(QEvent *event) { if (m_presenterActivate) @@ -2261,6 +2269,7 @@ HRESULT EVRCustomPresenterActivate::ActivateObject(REFIID riid, void **ppv) QMutexLocker locker(&m_mutex); if (!m_presenter) { m_presenter = new EVRCustomPresenter(m_videoSink); + m_presenter->setCropRect(m_cropRect); } return m_presenter->QueryInterface(riid, ppv); } @@ -2294,5 +2303,17 @@ void EVRCustomPresenterActivate::setSink(QVideoSink *sink) m_presenter->setSink(sink); } +void EVRCustomPresenterActivate::setCropRect(QRect cropRect) +{ + QMutexLocker locker(&m_mutex); + if (m_cropRect == cropRect) + return; + + m_cropRect = cropRect; + + if (m_presenter) + m_presenter->setCropRect(cropRect); +} + #include "moc_mfvideorenderercontrol_p.cpp" #include "mfvideorenderercontrol.moc" |