RemoteAudioDestinationManager.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS) && ENABLE(WEB_AUDIO)
#include "Connection.h"
#include "RemoteAudioDestinationIdentifier.h"
#include "SharedMemory.h"
#include <memory>
#include <wtf/CompletionHandler.h>
#include <wtf/HashMap.h>
namespace WebKit {
class GPUConnectionToWebProcess;
class RemoteAudioDestination;
class RemoteAudioDestinationManager : private IPC::MessageReceiver {
WTF_MAKE_FAST_ALLOCATED;
WTF_MAKE_NONCOPYABLE(RemoteAudioDestinationManager);
public:
RemoteAudioDestinationManager(GPUConnectionToWebProcess&);
~RemoteAudioDestinationManager();
void createAudioDestination(const String& inputDeviceId, uint32_t numberOfInputChannels, uint32_t numberOfOutputChannels, float sampleRate, CompletionHandler<void(RemoteAudioDestinationIdentifier, unsigned framesPerBuffer)>&&);
void deleteAudioDestination(RemoteAudioDestinationIdentifier, CompletionHandler<void()>&&);
void startAudioDestination(RemoteAudioDestinationIdentifier, CompletionHandler<void(bool)>&&);
void stopAudioDestination(RemoteAudioDestinationIdentifier, CompletionHandler<void(bool)>&&);
void didReceiveSyncMessageFromWebProcess(IPC::Connection& connection, IPC::Decoder& decoder, std::unique_ptr<IPC::Encoder>& encoder)
{
didReceiveSyncMessage(connection, decoder, encoder);
}
void didReceiveMessageFromWebProcess(IPC::Connection& connection, IPC::Decoder& decoder) { didReceiveMessage(connection, decoder); }
private:
void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&);
HashMap<RemoteAudioDestinationIdentifier, Ref<RemoteAudioDestination>> m_audioDestinations;
GPUConnectionToWebProcess& m_gpuConnectionToWebProcess;
};
}
#endif // ENABLE(GPU_PROCESS) && ENABLE(WEB_AUDIO)