MediaSessionManagerMac.cpp [plain text]
#include "config.h"
#include "MediaSessionManager.h"
#if USE(AUDIO_SESSION)
#include "AudioSession.h"
#include "Logging.h"
#include "Settings.h"
using namespace WebCore;
static const size_t kWebAudioBufferSize = 128;
#if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
static const size_t kLowPowerVideoBufferSize = 4096;
#endif
void MediaSessionManager::updateSessionState()
{
LOG(Media, "MediaSessionManager::updateSessionState() - types: Video(%d), Audio(%d), WebAudio(%d)", count(MediaSession::Video), count(MediaSession::Audio), count(MediaSession::WebAudio));
if (has(MediaSession::WebAudio))
AudioSession::sharedSession().setPreferredBufferSize(kWebAudioBufferSize);
#if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
else if ((has(MediaSession::Video) || has(MediaSession::Audio)) && Settings::lowPowerVideoAudioBufferSizeEnabled()) {
size_t bufferSize;
if (m_audioHardwareListener && m_audioHardwareListener->outputDeviceSupportsLowPowerMode())
bufferSize = kLowPowerVideoBufferSize;
else
bufferSize = kWebAudioBufferSize;
AudioSession::sharedSession().setPreferredBufferSize(bufferSize);
}
#endif
#if PLATFORM(IOS)
if (activeAudioSessionRequired())
AudioSession::sharedSession().setActive(true);
if (!Settings::shouldManageAudioSessionCategory())
return;
if (has(MediaSession::Video) || has(MediaSession::Audio))
AudioSession::sharedSession().setCategory(AudioSession::MediaPlayback);
else if (has(MediaSession::WebAudio))
AudioSession::sharedSession().setCategory(AudioSession::AmbientSound);
#endif
}
#endif // USE(AUDIO_SESSION)