RemoteAudioSourceProvider.cpp [plain text]
#include "config.h"
#include "RemoteAudioSourceProvider.h"
#if ENABLE(GPU_PROCESS) && ENABLE(WEB_AUDIO) && PLATFORM(COCOA)
#include "GPUProcessConnection.h"
#include "RemoteAudioSourceProviderManager.h"
#include "RemoteMediaPlayerProxyMessages.h"
namespace WebCore {
#if !RELEASE_LOG_DISABLED
extern WTFLogChannel LogMedia;
#endif
}
namespace WebKit {
using namespace WebCore;
Ref<RemoteAudioSourceProvider> RemoteAudioSourceProvider::create(WebCore::MediaPlayerIdentifier identifier, WTF::LoggerHelper& helper)
{
auto provider = adoptRef(*new RemoteAudioSourceProvider(identifier, helper));
provider->m_gpuProcessConnection->audioSourceProviderManager().addProvider(provider.copyRef());
return provider;
}
RemoteAudioSourceProvider::RemoteAudioSourceProvider(MediaPlayerIdentifier identifier, WTF::LoggerHelper& helper)
: m_identifier(identifier)
, m_gpuProcessConnection(makeWeakPtr(WebProcess::singleton().ensureGPUProcessConnection()))
#if !RELEASE_LOG_DISABLED
, m_logger(helper.logger())
, m_logIdentifier(helper.logIdentifier())
#endif
{
ASSERT(isMainThread());
UNUSED_PARAM(helper);
#if ENABLE(WEB_AUDIO)
m_gpuProcessConnection->connection().send(Messages::RemoteMediaPlayerProxy::CreateAudioSourceProvider { }, identifier);
#endif
}
RemoteAudioSourceProvider::~RemoteAudioSourceProvider()
{
}
void RemoteAudioSourceProvider::close()
{
ASSERT(isMainThread());
if (m_gpuProcessConnection)
m_gpuProcessConnection->audioSourceProviderManager().removeProvider(m_identifier);
}
void RemoteAudioSourceProvider::hasNewClient(AudioSourceProviderClient* client)
{
if (m_gpuProcessConnection)
m_gpuProcessConnection->connection().send(Messages::RemoteMediaPlayerProxy::SetShouldEnableAudioSourceProvider { !!client }, m_identifier);
}
void RemoteAudioSourceProvider::audioSamplesAvailable(const PlatformAudioData& data, const AudioStreamDescription& description, size_t size)
{
receivedNewAudioSamples(data, description, size);
}
#if !RELEASE_LOG_DISABLED
WTFLogChannel& RemoteAudioSourceProvider::logChannel() const
{
return LogMedia;
}
#endif
}
#endif // ENABLE(GPU_PROCESS) && ENABLE(WEB_AUDIO) && PLATFORM(COCOA)