diff options
author | Andy Nichols <andy.nichols@digia.com> | 2013-08-14 16:42:44 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-27 14:15:54 +0200 |
commit | 17a700292ad9289e8de199dc50b3e222ede42e1d (patch) | |
tree | efdd51bbb96f3a71525d2b956b301bbc84f70d36 /src/plugins/avfoundation/mediaplayer | |
parent | d3531cb0cc41a901b11a02d41685532684511bbd (diff) | |
download | qtmultimedia-17a700292ad9289e8de199dc50b3e222ede42e1d.tar.gz |
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/plugins/avfoundation/mediaplayer')
3 files changed, 42 insertions, 28 deletions
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 += \ |