SpeechRecognitionCaptureSourceImpl.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include "RealtimeMediaSource.h"
#include "SpeechRecognitionConnectionClientIdentifier.h"
#if PLATFORM(COCOA)
#include "AudioSampleDataSource.h"
#endif
namespace WTF {
class MediaTime;
}
namespace WebCore {
class AudioStreamDescription;
class PlatformAudioData;
class SpeechRecognitionUpdate;
enum class SpeechRecognitionUpdateType;
class SpeechRecognitionCaptureSourceImpl
: public RealtimeMediaSource::Observer
, public RealtimeMediaSource::AudioSampleObserver {
WTF_MAKE_FAST_ALLOCATED;
public:
using DataCallback = Function<void(const WTF::MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t)>;
using StateUpdateCallback = Function<void(const SpeechRecognitionUpdate&)>;
SpeechRecognitionCaptureSourceImpl(SpeechRecognitionConnectionClientIdentifier, DataCallback&&, StateUpdateCallback&&, Ref<RealtimeMediaSource>&&);
~SpeechRecognitionCaptureSourceImpl();
void mute();
private:
void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) final;
void sourceStarted() final;
void sourceStopped() final;
void sourceMutedChanged() final;
SpeechRecognitionConnectionClientIdentifier m_clientIdentifier;
DataCallback m_dataCallback;
StateUpdateCallback m_stateUpdateCallback;
Ref<RealtimeMediaSource> m_source;
#if PLATFORM(COCOA)
RefPtr<AudioSampleDataSource> m_dataSource;
Lock m_dataSourceLock;
#endif
};
}
#endif