SpeechRecognitionRemoteRealtimeMediaSourceManager.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include "MessageReceiver.h"
#include "MessageSender.h"
#include "SharedMemory.h"
#include <WebCore/RealtimeMediaSourceIdentifier.h>
namespace WTF {
class MediaTime;
}
namespace WebCore {
class CaptureDevice;
#if PLATFORM(COCOA)
class CAAudioStreamDescription;
#endif
}
namespace WebKit {
class SpeechRecognitionRemoteRealtimeMediaSource;
class SpeechRecognitionRemoteRealtimeMediaSourceManager final : public CanMakeWeakPtr<SpeechRecognitionRemoteRealtimeMediaSourceManager>, public IPC::MessageReceiver, public IPC::MessageSender {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit SpeechRecognitionRemoteRealtimeMediaSourceManager(Ref<IPC::Connection>&&);
void addSource(SpeechRecognitionRemoteRealtimeMediaSource&, const WebCore::CaptureDevice&);
void removeSource(SpeechRecognitionRemoteRealtimeMediaSource&);
private:
void remoteAudioSamplesAvailable(WebCore::RealtimeMediaSourceIdentifier, const WTF::MediaTime&, uint64_t numberOfFrames);
void remoteCaptureFailed(WebCore::RealtimeMediaSourceIdentifier);
void remoteSourceStopped(WebCore::RealtimeMediaSourceIdentifier);
#if PLATFORM(COCOA)
void setStorage(WebCore::RealtimeMediaSourceIdentifier, const SharedMemory::IPCHandle&, const WebCore::CAAudioStreamDescription&, uint64_t numberOfFrames);
#endif
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
IPC::Connection* messageSenderConnection() const final;
uint64_t messageSenderDestinationID() const final;
Ref<IPC::Connection> m_connection;
HashMap<WebCore::RealtimeMediaSourceIdentifier, WeakPtr<SpeechRecognitionRemoteRealtimeMediaSource>> m_sources;
HashSet<WebCore::RealtimeMediaSourceIdentifier> m_sourcesNeedingSandboxExtension;
};
}
#endif