9#include <private/qplatformvideosink_p.h>
29 ComPtr<EVRCustomPresenter> m_presenter;
30 QVideoSink *m_videoSink;
49 m_sink->platformVideoSink()->setVideoFrame(QVideoFrame());
51 if (m_presenterActivate) {
52 m_presenterActivate->ShutdownObject();
53 m_presenterActivate.Reset();
56 if (m_currentActivate) {
57 m_currentActivate->ShutdownObject();
58 m_currentActivate.Reset();
66 if (m_presenterActivate)
67 m_presenterActivate->setSink(m_sink);
72 if (m_presenterActivate)
73 m_presenterActivate->setCropRect(cropRect);
82 if (SUCCEEDED(MFCreateVideoRendererActivate(::GetShellWindow(), &m_currentActivate))) {
83 m_presenterActivate = makeComObject<EVRCustomPresenterActivate>(m_sink);
84 m_currentActivate->SetUnknown(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE,
85 m_presenterActivate.Get());
89 return m_currentActivate.Get();
102 m_presenter = makeComObject<EVRCustomPresenter>(m_videoSink);
103 m_presenter->setCropRect(m_cropRect);
105 return m_presenter->QueryInterface(riid, ppv);
112 return DetachObject();
127 if (m_videoSink == sink)
133 m_presenter->setSink(sink);
139 if (m_cropRect == cropRect)
142 m_cropRect = cropRect;
145 m_presenter->setCropRect(cropRect);
void setCropRect(QRect cropRect)
void setSink(QVideoSink *sink)
STDMETHODIMP ActivateObject(REFIID riid, void **ppv) override
~EVRCustomPresenterActivate() override
STDMETHODIMP ShutdownObject() override
STDMETHODIMP DetachObject() override
EVRCustomPresenterActivate(QVideoSink *sink)
void setCropRect(const QRect &cropRect)
void setSink(QVideoSink *surface)
~MFVideoRendererControl()
MFVideoRendererControl(QObject *parent=0)
IMFActivate * createActivate()