diff options
author | Ling Hu <ling.hu@nokia.com> | 2012-06-28 15:27:13 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-29 05:59:46 +0200 |
commit | eb5b216ac42da2dfb2479ad0f1b140665e3268a3 (patch) | |
tree | be625dc159dd5653ad095103ad22c37d2ecacdf1 /src | |
parent | 340f18d4b5b43408c501772b581088b4aba387e9 (diff) |
Refactoring wmf plugin
make mf startup/shutdwon inside plugin instead of player component
make sourceresolver a common component for a wmf related tasks.
Change-Id: I49cdc4fa512a62398a68cd2be2f522f567d11c7c
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/wmf/mfstream.cpp (renamed from src/plugins/wmf/player/mfstream.cpp) | 0 | ||||
-rw-r--r-- | src/plugins/wmf/mfstream.h (renamed from src/plugins/wmf/player/mfstream.h) | 0 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayerservice.cpp | 12 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayerservice.h | 1 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.cpp | 2 | ||||
-rw-r--r-- | src/plugins/wmf/player/player.pri | 4 | ||||
-rw-r--r-- | src/plugins/wmf/sourceresolver.cpp (renamed from src/plugins/wmf/player/sourceresolver.cpp) | 0 | ||||
-rw-r--r-- | src/plugins/wmf/sourceresolver.h (renamed from src/plugins/wmf/player/sourceresolver.h) | 0 | ||||
-rw-r--r-- | src/plugins/wmf/wmf.pro | 14 | ||||
-rw-r--r-- | src/plugins/wmf/wmfserviceplugin.cpp | 31 |
10 files changed, 42 insertions, 22 deletions
diff --git a/src/plugins/wmf/player/mfstream.cpp b/src/plugins/wmf/mfstream.cpp index 99033b046..99033b046 100644 --- a/src/plugins/wmf/player/mfstream.cpp +++ b/src/plugins/wmf/mfstream.cpp diff --git a/src/plugins/wmf/player/mfstream.h b/src/plugins/wmf/mfstream.h index ef854b56f..ef854b56f 100644 --- a/src/plugins/wmf/player/mfstream.h +++ b/src/plugins/wmf/mfstream.h diff --git a/src/plugins/wmf/player/mfplayerservice.cpp b/src/plugins/wmf/player/mfplayerservice.cpp index 20e056108..33720550e 100644 --- a/src/plugins/wmf/player/mfplayerservice.cpp +++ b/src/plugins/wmf/player/mfplayerservice.cpp @@ -52,7 +52,6 @@ #include "mfplayerservice.h" #include "mfplayersession.h" #include "mfmetadatacontrol.h" -int MFPlayerService::s_refCount = 0; MFPlayerService::MFPlayerService(QObject *parent) : QMediaService(parent) @@ -62,11 +61,6 @@ MFPlayerService::MFPlayerService(QObject *parent) #endif , m_videoRendererControl(0) { - s_refCount++; - if (s_refCount == 1) { - CoInitialize(NULL); - MFStartup(MF_VERSION); - } m_audioEndpointControl = new MFAudioEndpointControl(this); m_session = new MFPlayerSession(this); m_player = new MFPlayerControl(m_session); @@ -85,12 +79,6 @@ MFPlayerService::~MFPlayerService() m_session->close(); m_session->Release(); - - s_refCount--; - if (s_refCount == 0) { - MFShutdown(); - CoUninitialize(); - } } QMediaControl* MFPlayerService::requestControl(const char *name) diff --git a/src/plugins/wmf/player/mfplayerservice.h b/src/plugins/wmf/player/mfplayerservice.h index 65f3b34d5..587e5925f 100644 --- a/src/plugins/wmf/player/mfplayerservice.h +++ b/src/plugins/wmf/player/mfplayerservice.h @@ -91,7 +91,6 @@ private: #endif MFPlayerControl *m_player; MFMetaDataControl *m_metaDataControl; - static int s_refCount; }; #endif diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index c8c99e29a..ef359b5e5 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -62,7 +62,7 @@ #include "mfmetadatacontrol.h" #include <Mferror.h> #include <nserror.h> -#include <sourceresolver.h> +#include "sourceresolver.h" //#define DEBUG_MEDIAFOUNDATION //#define TEST_STREAMING diff --git a/src/plugins/wmf/player/player.pri b/src/plugins/wmf/player/player.pri index 57cca77e9..733c790ed 100644 --- a/src/plugins/wmf/player/player.pri +++ b/src/plugins/wmf/player/player.pri @@ -7,8 +7,6 @@ DEFINES += QMEDIA_MEDIAFOUNDATION_PLAYER HEADERS += \ $$PWD/mfplayerservice.h \ $$PWD/mfplayersession.h \ - $$PWD/mfstream.h \ - $$PWD/sourceresolver.h \ $$PWD/mfplayercontrol.h \ $$PWD/mfvideorenderercontrol.h \ $$PWD/mfaudioendpointcontrol.h \ @@ -17,8 +15,6 @@ HEADERS += \ SOURCES += \ $$PWD/mfplayerservice.cpp \ $$PWD/mfplayersession.cpp \ - $$PWD/mfstream.cpp \ - $$PWD/sourceresolver.cpp \ $$PWD/mfplayercontrol.cpp \ $$PWD/mfvideorenderercontrol.cpp \ $$PWD/mfaudioendpointcontrol.cpp \ diff --git a/src/plugins/wmf/player/sourceresolver.cpp b/src/plugins/wmf/sourceresolver.cpp index 8db973a24..8db973a24 100644 --- a/src/plugins/wmf/player/sourceresolver.cpp +++ b/src/plugins/wmf/sourceresolver.cpp diff --git a/src/plugins/wmf/player/sourceresolver.h b/src/plugins/wmf/sourceresolver.h index f0568555a..f0568555a 100644 --- a/src/plugins/wmf/player/sourceresolver.h +++ b/src/plugins/wmf/sourceresolver.h diff --git a/src/plugins/wmf/wmf.pro b/src/plugins/wmf/wmf.pro index 8daabf582..f7e1acf1d 100644 --- a/src/plugins/wmf/wmf.pro +++ b/src/plugins/wmf/wmf.pro @@ -12,8 +12,18 @@ load(qt_plugin) DESTDIR = $$QT.multimedia.plugins/$${PLUGIN_TYPE} -HEADERS += wmfserviceplugin.h -SOURCES += wmfserviceplugin.cpp +DEPENDPATH += . +INCLUDEPATH += . + +HEADERS += \ + wmfserviceplugin.h \ + mfstream.h \ + sourceresolver.h + +SOURCES += \ + wmfserviceplugin.cpp \ + mfstream.cpp \ + sourceresolver.cpp include (player/player.pri) diff --git a/src/plugins/wmf/wmfserviceplugin.cpp b/src/plugins/wmf/wmfserviceplugin.cpp index 34536ba96..a796b81ea 100644 --- a/src/plugins/wmf/wmfserviceplugin.cpp +++ b/src/plugins/wmf/wmfserviceplugin.cpp @@ -48,19 +48,46 @@ #include "mfplayerservice.h" #endif +#include <mfapi.h> + +namespace +{ +static int g_refCount = 0; +void addRefCount() +{ + g_refCount++; + if (g_refCount == 1) { + CoInitialize(NULL); + MFStartup(MF_VERSION); + } +} + +void releaseRefCount() +{ + g_refCount--; + if (g_refCount == 0) { + MFShutdown(); + CoUninitialize(); + } +} + +} + QMediaService* WMFServicePlugin::create(QString const& key) { #ifdef QMEDIA_MEDIAFOUNDATION_PLAYER - if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) + if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) { + addRefCount(); return new MFPlayerService; + } #endif - //qDebug() << "unsupported key:" << key; return 0; } void WMFServicePlugin::release(QMediaService *service) { + releaseRefCount(); delete service; } |