summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLing Hu <ling.hu@nokia.com>2012-06-28 15:27:13 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-29 05:59:46 +0200
commiteb5b216ac42da2dfb2479ad0f1b140665e3268a3 (patch)
treebe625dc159dd5653ad095103ad22c37d2ecacdf1 /src
parent340f18d4b5b43408c501772b581088b4aba387e9 (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.cpp12
-rw-r--r--src/plugins/wmf/player/mfplayerservice.h1
-rw-r--r--src/plugins/wmf/player/mfplayersession.cpp2
-rw-r--r--src/plugins/wmf/player/player.pri4
-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.pro14
-rw-r--r--src/plugins/wmf/wmfserviceplugin.cpp31
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;
}