MediaStreamTrackPrivate.cpp [plain text]
#include "config.h"
#if ENABLE(MEDIA_STREAM)
#include "MediaStreamTrackPrivate.h"
#include "MediaSourceStates.h"
#include "MediaStreamCapabilities.h"
#include "UUID.h"
#include <wtf/NeverDestroyed.h>
namespace WebCore {
RefPtr<MediaStreamTrackPrivate> MediaStreamTrackPrivate::create(RefPtr<RealtimeMediaSource>&& source)
{
return adoptRef(new MediaStreamTrackPrivate(WTF::move(source), createCanonicalUUIDString()));
}
RefPtr<MediaStreamTrackPrivate> MediaStreamTrackPrivate::create(RefPtr<RealtimeMediaSource>&& source, const String& id)
{
return adoptRef(new MediaStreamTrackPrivate(WTF::move(source), id));
}
MediaStreamTrackPrivate::MediaStreamTrackPrivate(const MediaStreamTrackPrivate& other)
: RefCounted()
, m_source(other.source())
, m_client(nullptr)
, m_id(createCanonicalUUIDString())
, m_isEnabled(other.enabled())
, m_isEnded(other.ended())
{
m_source->addObserver(this);
}
MediaStreamTrackPrivate::MediaStreamTrackPrivate(RefPtr<RealtimeMediaSource>&& source, const String& id)
: RefCounted()
, m_source(source)
, m_client(nullptr)
, m_id(id)
, m_isEnabled(true)
, m_isEnded(false)
{
m_source->addObserver(this);
}
MediaStreamTrackPrivate::~MediaStreamTrackPrivate()
{
m_source->removeObserver(this);
}
const String& MediaStreamTrackPrivate::label() const
{
return m_source->name();
}
bool MediaStreamTrackPrivate::muted() const
{
return m_source->muted();
}
bool MediaStreamTrackPrivate::readonly() const
{
return m_source->readonly();
}
bool MediaStreamTrackPrivate::remote() const
{
return m_source->remote();
}
void MediaStreamTrackPrivate::setEnabled(bool enabled)
{
m_isEnabled = enabled;
}
void MediaStreamTrackPrivate::endTrack()
{
if (ended())
return;
m_isEnded = true;
m_source->requestStop(this);
}
RefPtr<MediaStreamTrackPrivate> MediaStreamTrackPrivate::clone()
{
return adoptRef(new MediaStreamTrackPrivate(*this));
}
RealtimeMediaSource::Type MediaStreamTrackPrivate::type() const
{
return m_source->type();
}
RefPtr<MediaConstraints> MediaStreamTrackPrivate::constraints() const
{
return m_constraints;
}
const RealtimeMediaSourceStates& MediaStreamTrackPrivate::states() const
{
return m_source->states();
}
RefPtr<RealtimeMediaSourceCapabilities> MediaStreamTrackPrivate::capabilities() const
{
return m_source->capabilities();
}
void MediaStreamTrackPrivate::applyConstraints(const MediaConstraints&)
{
}
void MediaStreamTrackPrivate::sourceStopped()
{
if (ended())
return;
m_isEnded = true;
if (m_client)
m_client->trackEnded();
}
void MediaStreamTrackPrivate::sourceMutedChanged()
{
if (m_client)
m_client->trackMutedChanged();
}
bool MediaStreamTrackPrivate::preventSourceFromStopping()
{
return !m_isEnded;
}
}
#endif // ENABLE(MEDIA_STREAM)