summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@digia.com>2013-08-14 16:42:44 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-08-27 14:15:54 +0200
commit17a700292ad9289e8de199dc50b3e222ede42e1d (patch)
treeefdd51bbb96f3a71525d2b956b301bbc84f70d36 /src
parentd3531cb0cc41a901b11a02d41685532684511bbd (diff)
AVFoundation: Enable use of QMediaPlayer for audio on iOS
This commit disables the video components of the AVFoundation mediaplayer backend when building for iOS and enables the use of QMediaPlayer with audio assets. Change-Id: Iadd6f9c61ed1e656301326e90a22cbca6428b654 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/multimedia.pro3
-rw-r--r--src/plugins/avfoundation/avfoundation.pro5
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm19
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm8
-rw-r--r--src/plugins/avfoundation/mediaplayer/mediaplayer.pro43
-rw-r--r--src/plugins/plugins.pro7
6 files changed, 48 insertions, 37 deletions
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro
index 265728552..f1f4b3896 100644
--- a/src/multimedia/multimedia.pro
+++ b/src/multimedia/multimedia.pro
@@ -63,9 +63,6 @@ ANDROID_BUNDLED_FILES += \
MODULE_PLUGIN_TYPES = \
mediaservice
-mac {
- LIBS += -framework AppKit -framework QuartzCore -framework QTKit
-}
win32:LIBS += -luuid
HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
diff --git a/src/plugins/avfoundation/avfoundation.pro b/src/plugins/avfoundation/avfoundation.pro
index 7f2ddb2fa..48ad0a56a 100644
--- a/src/plugins/avfoundation/avfoundation.pro
+++ b/src/plugins/avfoundation/avfoundation.pro
@@ -1,4 +1,5 @@
TEMPLATE = subdirs
-SUBDIRS += camera \
- mediaplayer
+!ios: SUBDIRS += camera
+
+SUBDIRS += mediaplayer
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm
index b916f47d4..668a26ee3 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm
@@ -43,11 +43,13 @@
#include "avfmediaplayersession.h"
#include "avfmediaplayercontrol.h"
#include "avfmediaplayermetadatacontrol.h"
-#include "avfvideooutput.h"
-#include "avfvideorenderercontrol.h"
+#if defined(Q_OS_OSX)
+# include "avfvideooutput.h"
+# include "avfvideorenderercontrol.h"
-#ifndef QT_NO_WIDGETS
-#include "avfvideowidgetcontrol.h"
+# ifndef QT_NO_WIDGETS
+# include "avfvideowidgetcontrol.h"
+# endif
#endif
QT_USE_NAMESPACE
@@ -83,7 +85,7 @@ QMediaControl *AVFMediaPlayerService::requestControl(const char *name)
if (qstrcmp(name, QMetaDataReaderControl_iid) == 0)
return m_playerMetaDataControl;
-
+#if defined(Q_OS_OSX)
if (qstrcmp(name, QVideoRendererControl_iid) == 0) {
if (!m_videoOutput)
m_videoOutput = new AVFVideoRendererControl(this);
@@ -91,7 +93,7 @@ QMediaControl *AVFMediaPlayerService::requestControl(const char *name)
m_session->setVideoOutput(qobject_cast<AVFVideoOutput*>(m_videoOutput));
return m_videoOutput;
}
-#ifndef QT_NO_WIDGETS
+# ifndef QT_NO_WIDGETS
if (qstrcmp(name, QVideoWidgetControl_iid) == 0) {
if (!m_videoOutput)
m_videoOutput = new AVFVideoWidgetControl(this);
@@ -99,8 +101,8 @@ QMediaControl *AVFMediaPlayerService::requestControl(const char *name)
m_session->setVideoOutput(qobject_cast<AVFVideoOutput*>(m_videoOutput));
return m_videoOutput;
}
+# endif
#endif
-
return 0;
}
@@ -109,7 +111,7 @@ void AVFMediaPlayerService::releaseControl(QMediaControl *control)
#ifdef QT_DEBUG_AVF
qDebug() << Q_FUNC_INFO << control;
#endif
-
+#if defined(Q_OS_OSX)
if (m_videoOutput == control) {
AVFVideoRendererControl *renderControl = qobject_cast<AVFVideoRendererControl*>(m_videoOutput);
if (renderControl)
@@ -118,4 +120,5 @@ void AVFMediaPlayerService::releaseControl(QMediaControl *control)
m_session->setVideoOutput(0);
delete control;
}
+#endif
}
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index 7af6f4394..bb2bc75cb 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -240,9 +240,11 @@ static void *AVFMediaPlayerSessionObserverCurrentItemObservationContext = &AVFMe
m_player = [AVPlayer playerWithPlayerItem:m_playerItem];
[m_player retain];
+#if defined(Q_OS_OSX)
//Set the initial volume on new player object
if (self.session)
m_player.volume = m_session->volume() / 100.0f;
+#endif
//Create a new player layer if we don't have one already
if (!m_playerLayer)
@@ -735,10 +737,12 @@ void AVFMediaPlayerSession::setVolume(int volume)
m_volume = volume;
+#if defined(Q_OS_OSX)
AVPlayer *player = [(AVFMediaPlayerSessionObserver*)m_observer player];
if (player) {
[[(AVFMediaPlayerSessionObserver*)m_observer player] setVolume:m_volume / 100.0f];
}
+#endif
Q_EMIT volumeChanged(m_volume);
}
@@ -752,9 +756,9 @@ void AVFMediaPlayerSession::setMuted(bool muted)
return;
m_muted = muted;
-
+#if defined(Q_OS_OSX)
[[(AVFMediaPlayerSessionObserver*)m_observer player] setMuted:m_muted];
-
+#endif
Q_EMIT mutedChanged(muted);
}
diff --git a/src/plugins/avfoundation/mediaplayer/mediaplayer.pro b/src/plugins/avfoundation/mediaplayer/mediaplayer.pro
index a61c62d01..21edf89ff 100644
--- a/src/plugins/avfoundation/mediaplayer/mediaplayer.pro
+++ b/src/plugins/avfoundation/mediaplayer/mediaplayer.pro
@@ -20,32 +20,39 @@ HEADERS += \
avfmediaplayermetadatacontrol.h \
avfmediaplayerservice.h \
avfmediaplayersession.h \
- avfmediaplayerserviceplugin.h \
- avfvideorenderercontrol.h \
- avfdisplaylink.h \
- avfvideoframerenderer.h \
- avfvideooutput.h
+ avfmediaplayerserviceplugin.h
OBJECTIVE_SOURCES += \
avfmediaplayercontrol.mm \
avfmediaplayermetadatacontrol.mm \
avfmediaplayerservice.mm \
avfmediaplayerserviceplugin.mm \
- avfmediaplayersession.mm \
- avfvideorenderercontrol.mm \
- avfdisplaylink.mm \
- avfvideoframerenderer.mm \
- avfvideooutput.mm
-
-qtHaveModule(widgets) {
- QT += multimediawidgets-private opengl
- HEADERS += \
- avfvideowidgetcontrol.h \
- avfvideowidget.h
+ avfmediaplayersession.mm
+!ios {
+ HEADERS += \
+ avfvideorenderercontrol.h \
+ avfdisplaylink.h \
+ avfvideoframerenderer.h \
+ avfvideooutput.h
OBJECTIVE_SOURCES += \
- avfvideowidgetcontrol.mm \
- avfvideowidget.mm
+ avfvideorenderercontrol.mm \
+ avfdisplaylink.mm \
+ avfvideoframerenderer.mm \
+ avfvideooutput.mm
+
+ LIBS += -framework QuartzCore -framework AppKit
+
+ qtHaveModule(widgets) {
+ QT += multimediawidgets-private opengl
+ HEADERS += \
+ avfvideowidgetcontrol.h \
+ avfvideowidget.h
+
+ OBJECTIVE_SOURCES += \
+ avfvideowidgetcontrol.mm \
+ avfvideowidget.mm
+ }
}
OTHER_FILES += \
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index ba8a38890..b0356636a 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -47,10 +47,9 @@ unix:!mac {
mac:!simulator {
SUBDIRS += audiocapture
- !ios {
- SUBDIRS += qt7
- config_avfoundation: SUBDIRS += avfoundation
- }
+ config_avfoundation: SUBDIRS += avfoundation
+
+ !ios: SUBDIRS += qt7
}
config_opensles {