diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-09-10 18:25:37 +0200 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-11-05 11:34:55 +0000 |
commit | 95bd9d58d8d37ddec8d37f5b35128689c0aa55a8 (patch) | |
tree | ecf8820d012953caee0f516e349757c8362a95b2 /src/plugins/wmf/player | |
parent | b2e9ae8856f5297289ab5e1f48bda12ef2201b97 (diff) |
DirectShow: use the EVR in the window control.
Reuse existing code from the WMF plugin, which already uses the EVR.
This enables HW-accelerated video decoding when using QMediaPlayer
with a QVideoWidget.
Task-number: QTBUG-45593
Change-Id: I757e4d53cd2c648aee6ba33a4851a8c6adc62843
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Diffstat (limited to 'src/plugins/wmf/player')
-rw-r--r-- | src/plugins/wmf/player/evr9videowindowcontrol.cpp | 367 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfevrvideowindowcontrol.cpp | 85 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfevrvideowindowcontrol.h (renamed from src/plugins/wmf/player/evr9videowindowcontrol.h) | 65 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayerservice.cpp | 22 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayerservice.h | 12 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.cpp | 12 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.h | 2 | ||||
-rw-r--r-- | src/plugins/wmf/player/player.pri | 11 |
8 files changed, 107 insertions, 469 deletions
diff --git a/src/plugins/wmf/player/evr9videowindowcontrol.cpp b/src/plugins/wmf/player/evr9videowindowcontrol.cpp deleted file mode 100644 index e94918dba..000000000 --- a/src/plugins/wmf/player/evr9videowindowcontrol.cpp +++ /dev/null @@ -1,367 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Mobility Components. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "evr9videowindowcontrol.h" -#include <QtWidgets/qwidget.h> -#include <QtCore/qdebug.h> -#include <QtCore/qglobal.h> - -Evr9VideoWindowControl::Evr9VideoWindowControl(QObject *parent) - : QVideoWindowControl(parent) - , m_windowId(0) - , m_dirtyValues(0) - , m_aspectRatioMode(Qt::KeepAspectRatio) - , m_brightness(0) - , m_contrast(0) - , m_hue(0) - , m_saturation(0) - , m_fullScreen(false) - , m_currentActivate(0) - , m_evrSink(0) - , m_displayControl(0) - , m_processor(0) -{ -} - -Evr9VideoWindowControl::~Evr9VideoWindowControl() -{ - clear(); -} - -void Evr9VideoWindowControl::clear() -{ - if (m_processor) - m_processor->Release(); - if (m_displayControl) - m_displayControl->Release(); - if (m_evrSink) - m_evrSink->Release(); - if (m_currentActivate) { - m_currentActivate->ShutdownObject(); - m_currentActivate->Release(); - } - - m_processor = NULL; - m_displayControl = NULL; - m_evrSink = NULL; - m_currentActivate = NULL; -} - -void Evr9VideoWindowControl::releaseActivate() -{ - clear(); -} - -WId Evr9VideoWindowControl::winId() const -{ - return m_windowId; -} - -void Evr9VideoWindowControl::setWinId(WId id) -{ - m_windowId = id; - - if (QWidget *widget = QWidget::find(m_windowId)) { - const QColor color = widget->palette().color(QPalette::Window); - - m_windowColor = RGB(color.red(), color.green(), color.blue()); - } - - if (m_displayControl) { - m_displayControl->SetVideoWindow(HWND(m_windowId)); - } -} - -QRect Evr9VideoWindowControl::displayRect() const -{ - return m_displayRect; -} - -void Evr9VideoWindowControl::setDisplayRect(const QRect &rect) -{ - m_displayRect = rect; - - if (m_displayControl) { - RECT displayRect = { rect.left(), rect.top(), rect.right() + 1, rect.bottom() + 1 }; - QSize sourceSize = nativeSize(); - - RECT sourceRect = { 0, 0, sourceSize.width(), sourceSize.height() }; - - if (m_aspectRatioMode == Qt::KeepAspectRatioByExpanding) { - QSize clippedSize = rect.size(); - clippedSize.scale(sourceRect.right, sourceRect.bottom, Qt::KeepAspectRatio); - - sourceRect.left = (sourceRect.right - clippedSize.width()) / 2; - sourceRect.top = (sourceRect.bottom - clippedSize.height()) / 2; - sourceRect.right = sourceRect.left + clippedSize.width(); - sourceRect.bottom = sourceRect.top + clippedSize.height(); - } - - if (sourceSize.width() > 0 && sourceSize.height() > 0) { - MFVideoNormalizedRect sourceNormRect; - sourceNormRect.left = float(sourceRect.left) / float(sourceRect.right); - sourceNormRect.top = float(sourceRect.top) / float(sourceRect.bottom); - sourceNormRect.right = float(sourceRect.right) / float(sourceRect.right); - sourceNormRect.bottom = float(sourceRect.bottom) / float(sourceRect.bottom); - m_displayControl->SetVideoPosition(&sourceNormRect, &displayRect); - } else { - m_displayControl->SetVideoPosition(NULL, &displayRect); - } - } -} - -bool Evr9VideoWindowControl::isFullScreen() const -{ - return m_fullScreen; -} - -void Evr9VideoWindowControl::setFullScreen(bool fullScreen) -{ - if (m_fullScreen == fullScreen) - return; - emit fullScreenChanged(m_fullScreen = fullScreen); -} - -void Evr9VideoWindowControl::repaint() -{ - QSize size = nativeSize(); - if (size.width() > 0 && size.height() > 0 - && m_displayControl - && SUCCEEDED(m_displayControl->RepaintVideo())) { - return; - } - - PAINTSTRUCT paint; - if (HDC dc = ::BeginPaint(HWND(m_windowId), &paint)) { - HPEN pen = ::CreatePen(PS_SOLID, 1, m_windowColor); - HBRUSH brush = ::CreateSolidBrush(m_windowColor); - ::SelectObject(dc, pen); - ::SelectObject(dc, brush); - - ::Rectangle( - dc, - m_displayRect.left(), - m_displayRect.top(), - m_displayRect.right() + 1, - m_displayRect.bottom() + 1); - - ::DeleteObject(pen); - ::DeleteObject(brush); - ::EndPaint(HWND(m_windowId), &paint); - } -} - -QSize Evr9VideoWindowControl::nativeSize() const -{ - QSize size; - if (m_displayControl) { - SIZE sourceSize; - if (SUCCEEDED(m_displayControl->GetNativeVideoSize(&sourceSize, 0))) - size = QSize(sourceSize.cx, sourceSize.cy); - } - return size; -} - -Qt::AspectRatioMode Evr9VideoWindowControl::aspectRatioMode() const -{ - return m_aspectRatioMode; -} - -void Evr9VideoWindowControl::setAspectRatioMode(Qt::AspectRatioMode mode) -{ - m_aspectRatioMode = mode; - - if (m_displayControl) { - switch (mode) { - case Qt::IgnoreAspectRatio: - //comment from MSDN: Do not maintain the aspect ratio of the video. Stretch the video to fit the output rectangle. - m_displayControl->SetAspectRatioMode(MFVideoARMode_None); - break; - case Qt::KeepAspectRatio: - //comment from MSDN: Preserve the aspect ratio of the video by letterboxing or within the output rectangle. - m_displayControl->SetAspectRatioMode(MFVideoARMode_PreservePicture); - break; - case Qt::KeepAspectRatioByExpanding: - //for this mode, more adjustment will be done in setDisplayRect - m_displayControl->SetAspectRatioMode(MFVideoARMode_PreservePicture); - break; - default: - break; - } - setDisplayRect(m_displayRect); - } -} - -int Evr9VideoWindowControl::brightness() const -{ - return m_brightness; -} - -void Evr9VideoWindowControl::setBrightness(int brightness) -{ - if (m_brightness == brightness) - return; - - m_brightness = brightness; - - m_dirtyValues |= DXVA2_ProcAmp_Brightness; - - setProcAmpValues(); - - emit brightnessChanged(brightness); -} - -int Evr9VideoWindowControl::contrast() const -{ - return m_contrast; -} - -void Evr9VideoWindowControl::setContrast(int contrast) -{ - if (m_contrast == contrast) - return; - - m_contrast = contrast; - - m_dirtyValues |= DXVA2_ProcAmp_Contrast; - - setProcAmpValues(); - - emit contrastChanged(contrast); -} - -int Evr9VideoWindowControl::hue() const -{ - return m_hue; -} - -void Evr9VideoWindowControl::setHue(int hue) -{ - if (m_hue == hue) - return; - - m_hue = hue; - - m_dirtyValues |= DXVA2_ProcAmp_Hue; - - setProcAmpValues(); - - emit hueChanged(hue); -} - -int Evr9VideoWindowControl::saturation() const -{ - return m_saturation; -} - -void Evr9VideoWindowControl::setSaturation(int saturation) -{ - if (m_saturation == saturation) - return; - - m_saturation = saturation; - - m_dirtyValues |= DXVA2_ProcAmp_Saturation; - - setProcAmpValues(); - - emit saturationChanged(saturation); -} - -IMFActivate* Evr9VideoWindowControl::createActivate() -{ - clear(); - - if (FAILED(MFCreateVideoRendererActivate(0, &m_currentActivate))) { - qWarning() << "Failed to create evr video renderer activate!"; - return 0; - } - if (FAILED(m_currentActivate->ActivateObject(IID_IMFMediaSink, (LPVOID*)(&m_evrSink)))) { - qWarning() << "Failed to activate evr media sink!"; - return 0; - } - if (FAILED(MFGetService(m_evrSink, MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_displayControl)))) { - qWarning() << "Failed to get display control from evr media sink!"; - return 0; - } - if (FAILED(MFGetService(m_evrSink, MR_VIDEO_MIXER_SERVICE, IID_PPV_ARGS(&m_processor)))) { - qWarning() << "Failed to get video processor from evr media sink!"; - return 0; - } - - setWinId(m_windowId); - setDisplayRect(m_displayRect); - setAspectRatioMode(m_aspectRatioMode); - m_dirtyValues = DXVA2_ProcAmp_Brightness | DXVA2_ProcAmp_Contrast | DXVA2_ProcAmp_Hue | DXVA2_ProcAmp_Saturation; - - return m_currentActivate; -} - -void Evr9VideoWindowControl::setProcAmpValues() -{ - if (m_processor) { - DXVA2_ProcAmpValues values; - if (m_dirtyValues & DXVA2_ProcAmp_Brightness) { - values.Brightness = scaleProcAmpValue(DXVA2_ProcAmp_Brightness, m_brightness); - } - if (m_dirtyValues & DXVA2_ProcAmp_Contrast) { - values.Contrast = scaleProcAmpValue(DXVA2_ProcAmp_Contrast, m_contrast); - } - if (m_dirtyValues & DXVA2_ProcAmp_Hue) { - values.Hue = scaleProcAmpValue(DXVA2_ProcAmp_Hue, m_hue); - } - if (m_dirtyValues & DXVA2_ProcAmp_Saturation) { - values.Saturation = scaleProcAmpValue(DXVA2_ProcAmp_Saturation, m_saturation); - } - - if (SUCCEEDED(m_processor->SetProcAmpValues(m_dirtyValues, &values))) { - m_dirtyValues = 0; - } - } -} - -DXVA2_Fixed32 Evr9VideoWindowControl::scaleProcAmpValue(DWORD prop, int value) const -{ - float scaledValue = 0.0; - - DXVA2_ValueRange range; - if (SUCCEEDED(m_processor->GetProcAmpRange(prop, &range))) { - scaledValue = DXVA2FixedToFloat(range.DefaultValue); - if (value > 0) - scaledValue += float(value) * (DXVA2FixedToFloat(range.MaxValue) - DXVA2FixedToFloat(range.DefaultValue)) / 100; - else if (value < 0) - scaledValue -= float(value) * (DXVA2FixedToFloat(range.MinValue) - DXVA2FixedToFloat(range.DefaultValue)) / 100; - } - - return DXVA2FloatToFixed(scaledValue); -} diff --git a/src/plugins/wmf/player/mfevrvideowindowcontrol.cpp b/src/plugins/wmf/player/mfevrvideowindowcontrol.cpp new file mode 100644 index 000000000..404f38125 --- /dev/null +++ b/src/plugins/wmf/player/mfevrvideowindowcontrol.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "mfevrvideowindowcontrol.h" + +#include <qdebug.h> + +MFEvrVideoWindowControl::MFEvrVideoWindowControl(QObject *parent) + : EvrVideoWindowControl(parent) + , m_currentActivate(NULL) + , m_evrSink(NULL) +{ +} + +MFEvrVideoWindowControl::~MFEvrVideoWindowControl() +{ + clear(); +} + +void MFEvrVideoWindowControl::clear() +{ + setEvr(NULL); + + if (m_evrSink) + m_evrSink->Release(); + if (m_currentActivate) { + m_currentActivate->ShutdownObject(); + m_currentActivate->Release(); + } + m_evrSink = NULL; + m_currentActivate = NULL; +} + +IMFActivate* MFEvrVideoWindowControl::createActivate() +{ + clear(); + + if (FAILED(MFCreateVideoRendererActivate(0, &m_currentActivate))) { + qWarning() << "Failed to create evr video renderer activate!"; + return NULL; + } + if (FAILED(m_currentActivate->ActivateObject(IID_IMFMediaSink, (LPVOID*)(&m_evrSink)))) { + qWarning() << "Failed to activate evr media sink!"; + return NULL; + } + if (!setEvr(m_evrSink)) + return NULL; + + return m_currentActivate; +} + +void MFEvrVideoWindowControl::releaseActivate() +{ + clear(); +} diff --git a/src/plugins/wmf/player/evr9videowindowcontrol.h b/src/plugins/wmf/player/mfevrvideowindowcontrol.h index 05486f987..e5a38f27d 100644 --- a/src/plugins/wmf/player/evr9videowindowcontrol.h +++ b/src/plugins/wmf/player/mfevrvideowindowcontrol.h @@ -3,7 +3,7 @@ ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** -** This file is part of the Qt Mobility Components. +** This file is part of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage @@ -31,76 +31,27 @@ ** ****************************************************************************/ -#ifndef EVR9VIDEOWINDOWCONTROL_H -#define EVR9VIDEOWINDOWCONTROL_H +#ifndef MFEVRVIDEOWINDOWCONTROL_H +#define MFEVRVIDEOWINDOWCONTROL_H -#include "qvideowindowcontrol.h" - -#include <Mfidl.h> -#include <d3d9.h> -#include <Evr9.h> +#include "evrvideowindowcontrol.h" QT_USE_NAMESPACE -class Evr9VideoWindowControl : public QVideoWindowControl +class MFEvrVideoWindowControl : public EvrVideoWindowControl { - Q_OBJECT public: - Evr9VideoWindowControl(QObject *parent = 0); - ~Evr9VideoWindowControl(); - - WId winId() const; - void setWinId(WId id); - - QRect displayRect() const; - void setDisplayRect(const QRect &rect); - - bool isFullScreen() const; - void setFullScreen(bool fullScreen); - - void repaint(); - - QSize nativeSize() const; - - Qt::AspectRatioMode aspectRatioMode() const; - void setAspectRatioMode(Qt::AspectRatioMode mode); - - int brightness() const; - void setBrightness(int brightness); - - int contrast() const; - void setContrast(int contrast); - - int hue() const; - void setHue(int hue); - - int saturation() const; - void setSaturation(int saturation); + MFEvrVideoWindowControl(QObject *parent = 0); + ~MFEvrVideoWindowControl(); IMFActivate* createActivate(); void releaseActivate(); - void setProcAmpValues(); - private: void clear(); - DXVA2_Fixed32 scaleProcAmpValue(DWORD prop, int value) const; - - WId m_windowId; - COLORREF m_windowColor; - DWORD m_dirtyValues; - Qt::AspectRatioMode m_aspectRatioMode; - QRect m_displayRect; - int m_brightness; - int m_contrast; - int m_hue; - int m_saturation; - bool m_fullScreen; IMFActivate *m_currentActivate; IMFMediaSink *m_evrSink; - IMFVideoDisplayControl *m_displayControl; - IMFVideoProcessor *m_processor; }; -#endif +#endif // MFEVRVIDEOWINDOWCONTROL_H diff --git a/src/plugins/wmf/player/mfplayerservice.cpp b/src/plugins/wmf/player/mfplayerservice.cpp index 4e88b0498..99c6abb3e 100644 --- a/src/plugins/wmf/player/mfplayerservice.cpp +++ b/src/plugins/wmf/player/mfplayerservice.cpp @@ -36,9 +36,7 @@ #include <QtCore/qdebug.h> #include "mfplayercontrol.h" -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) -#include "evr9videowindowcontrol.h" -#endif +#include "mfevrvideowindowcontrol.h" #include "mfvideorenderercontrol.h" #include "mfaudioendpointcontrol.h" #include "mfaudioprobecontrol.h" @@ -50,9 +48,7 @@ MFPlayerService::MFPlayerService(QObject *parent) : QMediaService(parent) , m_session(0) -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) , m_videoWindowControl(0) -#endif , m_videoRendererControl(0) { m_audioEndpointControl = new MFAudioEndpointControl(this); @@ -65,10 +61,8 @@ MFPlayerService::~MFPlayerService() { m_session->close(); -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) if (m_videoWindowControl) delete m_videoWindowControl; -#endif if (m_videoRendererControl) delete m_videoRendererControl; @@ -85,21 +79,15 @@ QMediaControl* MFPlayerService::requestControl(const char *name) } else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) { return m_metaDataControl; } else if (qstrcmp(name, QVideoRendererControl_iid) == 0) { -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) if (!m_videoRendererControl && !m_videoWindowControl) { -#else - if (!m_videoRendererControl) { -#endif m_videoRendererControl = new MFVideoRendererControl; return m_videoRendererControl; } -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) } else if (qstrcmp(name, QVideoWindowControl_iid) == 0) { if (!m_videoRendererControl && !m_videoWindowControl) { - m_videoWindowControl = new Evr9VideoWindowControl; + m_videoWindowControl = new MFEvrVideoWindowControl; return m_videoWindowControl; } -#endif } else if (qstrcmp(name,QMediaAudioProbeControl_iid) == 0) { if (m_session) { MFAudioProbeControl *probe = new MFAudioProbeControl(this); @@ -129,12 +117,10 @@ void MFPlayerService::releaseControl(QMediaControl *control) delete m_videoRendererControl; m_videoRendererControl = 0; return; -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) } else if (control == m_videoWindowControl) { delete m_videoWindowControl; m_videoWindowControl = 0; return; -#endif } MFAudioProbeControl* audioProbe = qobject_cast<MFAudioProbeControl*>(control); @@ -164,12 +150,10 @@ MFVideoRendererControl* MFPlayerService::videoRendererControl() const return m_videoRendererControl; } -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) -Evr9VideoWindowControl* MFPlayerService::videoWindowControl() const +MFEvrVideoWindowControl* MFPlayerService::videoWindowControl() const { return m_videoWindowControl; } -#endif MFMetaDataControl* MFPlayerService::metaDataControl() const { diff --git a/src/plugins/wmf/player/mfplayerservice.h b/src/plugins/wmf/player/mfplayerservice.h index 62eb6b640..b3db70799 100644 --- a/src/plugins/wmf/player/mfplayerservice.h +++ b/src/plugins/wmf/player/mfplayerservice.h @@ -48,9 +48,7 @@ QT_END_NAMESPACE QT_USE_NAMESPACE -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) -class Evr9VideoWindowControl; -#endif +class MFEvrVideoWindowControl; class MFAudioEndpointControl; class MFVideoRendererControl; class MFPlayerControl; @@ -69,18 +67,14 @@ public: MFAudioEndpointControl* audioEndpointControl() const; MFVideoRendererControl* videoRendererControl() const; -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) - Evr9VideoWindowControl* videoWindowControl() const; -#endif + MFEvrVideoWindowControl* videoWindowControl() const; MFMetaDataControl* metaDataControl() const; private: MFPlayerSession *m_session; MFVideoRendererControl *m_videoRendererControl; MFAudioEndpointControl *m_audioEndpointControl; -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) - Evr9VideoWindowControl *m_videoWindowControl; -#endif + MFEvrVideoWindowControl *m_videoWindowControl; MFPlayerControl *m_player; MFMetaDataControl *m_metaDataControl; }; diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index 283853def..e4c498b76 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -43,9 +43,7 @@ #include <QtCore/qbuffer.h> #include "mfplayercontrol.h" -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) -#include "evr9videowindowcontrol.h" -#endif +#include "mfevrvideowindowcontrol.h" #include "mfvideorenderercontrol.h" #include "mfaudioendpointcontrol.h" @@ -140,10 +138,8 @@ void MFPlayerSession::close() if (m_playerService->videoRendererControl()) { m_playerService->videoRendererControl()->releaseActivate(); -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) } else if (m_playerService->videoWindowControl()) { m_playerService->videoWindowControl()->releaseActivate(); -#endif } if (m_session) @@ -404,10 +400,8 @@ IMFTopologyNode* MFPlayerSession::addOutputNode(IMFStreamDescriptor *streamDesc, mediaType = Video; if (m_playerService->videoRendererControl()) { activate = m_playerService->videoRendererControl()->createActivate(); -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) } else if (m_playerService->videoWindowControl()) { activate = m_playerService->videoWindowControl()->createActivate(); -#endif } else { qWarning() << "no videoWindowControl or videoRendererControl, unable to add output node for video data"; } @@ -1580,13 +1574,11 @@ void MFPlayerSession::handleSessionEvent(IMFMediaEvent *sessionEvent) } updatePendingCommands(CmdStart); -#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR) // playback started, we can now set again the procAmpValues if they have been // changed previously (these are lost when loading a new media) if (m_playerService->videoWindowControl()) { - m_playerService->videoWindowControl()->setProcAmpValues(); + m_playerService->videoWindowControl()->applyImageControls(); } -#endif break; case MESessionStopped: if (m_status != QMediaPlayer::EndOfMedia) { diff --git a/src/plugins/wmf/player/mfplayersession.h b/src/plugins/wmf/player/mfplayersession.h index effb36fa2..1d136ba55 100644 --- a/src/plugins/wmf/player/mfplayersession.h +++ b/src/plugins/wmf/player/mfplayersession.h @@ -57,7 +57,7 @@ QT_USE_NAMESPACE class SourceResolver; #ifndef Q_WS_SIMULATOR -class Evr9VideoWindowControl; +class EvrVideoWindowControl; #endif class MFAudioEndpointControl; class MFVideoRendererControl; diff --git a/src/plugins/wmf/player/player.pri b/src/plugins/wmf/player/player.pri index dd5c9dc12..c24370eea 100644 --- a/src/plugins/wmf/player/player.pri +++ b/src/plugins/wmf/player/player.pri @@ -12,7 +12,8 @@ HEADERS += \ $$PWD/mfaudioendpointcontrol.h \ $$PWD/mfmetadatacontrol.h \ $$PWD/mfaudioprobecontrol.h \ - $$PWD/mfvideoprobecontrol.h + $$PWD/mfvideoprobecontrol.h \ + $$PWD/mfevrvideowindowcontrol.h SOURCES += \ $$PWD/mfplayerservice.cpp \ @@ -22,9 +23,7 @@ SOURCES += \ $$PWD/mfaudioendpointcontrol.cpp \ $$PWD/mfmetadatacontrol.cpp \ $$PWD/mfaudioprobecontrol.cpp \ - $$PWD/mfvideoprobecontrol.cpp + $$PWD/mfvideoprobecontrol.cpp \ + $$PWD/mfevrvideowindowcontrol.cpp -qtHaveModule(widgets):!simulator { - HEADERS += $$PWD/evr9videowindowcontrol.h - SOURCES += $$PWD/evr9videowindowcontrol.cpp -} +include($$PWD/../../common/evr.pri) |