MediaStreamTrackAudioSourceProviderCocoa.cpp [plain text]
#import "config.h"
#import "MediaStreamTrackAudioSourceProviderCocoa.h"
#if ENABLE(WEB_AUDIO) && ENABLE(MEDIA_STREAM)
namespace WebCore {
Ref<MediaStreamTrackAudioSourceProviderCocoa> MediaStreamTrackAudioSourceProviderCocoa::create(MediaStreamTrackPrivate& source)
{
return adoptRef(*new MediaStreamTrackAudioSourceProviderCocoa(source));
}
MediaStreamTrackAudioSourceProviderCocoa::MediaStreamTrackAudioSourceProviderCocoa(MediaStreamTrackPrivate& source)
: m_captureSource(makeWeakPtr(source))
, m_source(source.source())
{
}
MediaStreamTrackAudioSourceProviderCocoa::~MediaStreamTrackAudioSourceProviderCocoa()
{
ASSERT(!m_connected);
m_source->removeAudioSampleObserver(*this);
}
void MediaStreamTrackAudioSourceProviderCocoa::hasNewClient(AudioSourceProviderClient* client)
{
bool shouldBeConnected = !!client;
if (m_connected == shouldBeConnected)
return;
m_connected = shouldBeConnected;
if (!client) {
m_captureSource->removeObserver(*this);
m_source->removeAudioSampleObserver(*this);
return;
}
m_enabled = m_captureSource->enabled();
m_captureSource->addObserver(*this);
m_source->addAudioSampleObserver(*this);
}
void MediaStreamTrackAudioSourceProviderCocoa::trackEnabledChanged(MediaStreamTrackPrivate& track)
{
m_enabled = track.enabled();
}
void MediaStreamTrackAudioSourceProviderCocoa::audioSamplesAvailable(const MediaTime&, const PlatformAudioData& data, const AudioStreamDescription& description, size_t frameCount)
{
if (!m_enabled)
return;
receivedNewAudioSamples(data, description, frameCount);
}
}
#endif // ENABLE(WEB_AUDIO) && ENABLE(MEDIA_STREAM)