SpeechRecognitionRemoteRealtimeMediaSource.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include <WebCore/RealtimeMediaSource.h>
#include <WebCore/RealtimeMediaSourceIdentifier.h>
#if PLATFORM(COCOA)
#include <WebCore/CAAudioStreamDescription.h>
#endif
namespace WebCore {
class CaptureDevice;
#if PLATFORM(COCOA)
class CARingBuffer;
class WebAudioBufferList;
#endif
}
namespace WebKit {
class SpeechRecognitionRemoteRealtimeMediaSource : public WebCore::RealtimeMediaSource {
public:
static Ref<WebCore::RealtimeMediaSource> create(SpeechRecognitionRemoteRealtimeMediaSourceManager&, const WebCore::CaptureDevice&);
~SpeechRecognitionRemoteRealtimeMediaSource();
WebCore::RealtimeMediaSourceIdentifier identifier() const { return m_identifier; }
#if PLATFORM(COCOA)
void setStorage(const SharedMemory::Handle&, const WebCore::CAAudioStreamDescription&, uint64_t numberOfFrames);
#endif
void remoteAudioSamplesAvailable(MediaTime, uint64_t numberOfFrames);
void remoteCaptureFailed();
void remoteSourceStopped();
private:
SpeechRecognitionRemoteRealtimeMediaSource(WebCore::RealtimeMediaSourceIdentifier, SpeechRecognitionRemoteRealtimeMediaSourceManager&, const WebCore::CaptureDevice&);
void startProducingData() final;
void stopProducingData() final;
const WebCore::RealtimeMediaSourceCapabilities& capabilities() final { return m_capabilities; }
const WebCore::RealtimeMediaSourceSettings& settings() final { return m_settings; }
WebCore::RealtimeMediaSourceIdentifier m_identifier;
WeakPtr<SpeechRecognitionRemoteRealtimeMediaSourceManager> m_manager;
WebCore::RealtimeMediaSourceCapabilities m_capabilities;
WebCore::RealtimeMediaSourceSettings m_settings;
#if PLATFORM(COCOA)
WebCore::CAAudioStreamDescription m_description;
std::unique_ptr<WebCore::CARingBuffer> m_ringBuffer;
std::unique_ptr<WebCore::WebAudioBufferList> m_buffer;
#endif
};
}
#endif