ios: Enable volume and mute functionality

AVPlayer::setVolume and setMute also exist on iOS, so no need to ifdef
them to be OS X-only. As they require iOS 7.0, add runtime checks to
ensure that the methods exist.

Task-number: QTBUG-39240
Change-Id: I10810705cef8e5d8c18e4c79a15fa06425ea57f9
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Reviewed-by: James Turner <james.turner@kdab.com>
This commit is contained in:
Frank Osterfeld
2015-02-24 22:40:55 +01:00
committed by Yoann Lopes
parent b0f283b65e
commit 4e07ff99f6

View File

@@ -719,14 +719,17 @@ void AVFMediaPlayerSession::setVolume(int volume)
if (m_volume == volume)
return;
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];
if (!player)
return;
if (![player respondsToSelector:@selector(setVolume:)]) {
qWarning("%s not implemented, requires iOS 7 or later", Q_FUNC_INFO);
return;
}
#endif
[player setVolume:m_volume / 100.0f];
m_volume = volume;
Q_EMIT volumeChanged(m_volume);
}
@@ -739,10 +742,19 @@ void AVFMediaPlayerSession::setMuted(bool muted)
if (m_muted == muted)
return;
AVPlayer *player = [(AVFMediaPlayerSessionObserver*)m_observer player];
if (!player)
return;
// iOS: setMuted exists since iOS 7.0, thus check if it exists
if (![player respondsToSelector:@selector(setMuted:)]) {
qWarning("%s not implemented, requires iOS 7 or later", Q_FUNC_INFO);
return;
}
[player setMuted:m_muted];
m_muted = muted;
#if defined(Q_OS_OSX)
[[(AVFMediaPlayerSessionObserver*)m_observer player] setMuted:m_muted];
#endif
Q_EMIT mutedChanged(muted);
}