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>
This commit is contained in:
committed by
The Qt Project
parent
d3531cb0cc
commit
17a700292a
@@ -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
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS += camera \
|
||||
mediaplayer
|
||||
!ios: SUBDIRS += camera
|
||||
|
||||
SUBDIRS += mediaplayer
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
avfmediaplayersession.mm
|
||||
|
||||
qtHaveModule(widgets) {
|
||||
QT += multimediawidgets-private opengl
|
||||
!ios {
|
||||
HEADERS += \
|
||||
avfvideowidgetcontrol.h \
|
||||
avfvideowidget.h
|
||||
|
||||
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 += \
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user