MediaStreamTrack.h [plain text]
#ifndef MediaStreamTrack_h
#define MediaStreamTrack_h
#if ENABLE(MEDIA_STREAM)
#include "ActiveDOMObject.h"
#include "EventTarget.h"
#include "MediaStreamTrackPrivate.h"
#include "RealtimeMediaSource.h"
#include "ScriptWrappable.h"
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class Dictionary;
class MediaConstraintsImpl;
class MediaSourceStates;
class MediaStreamCapabilities;
class MediaTrackConstraints;
class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivateClient {
public:
class Observer {
public:
virtual ~Observer() { }
virtual void trackDidEnd() = 0;
};
static Ref<MediaStreamTrack> create(ScriptExecutionContext&, MediaStreamTrackPrivate&);
virtual ~MediaStreamTrack();
const AtomicString& kind() const;
const String& id() const;
const String& label() const;
bool enabled() const;
void setEnabled(bool);
bool muted() const;
bool readonly() const;
bool remote() const;
const AtomicString& readyState() const;
bool ended() const;
RefPtr<MediaStreamTrack> clone();
void stopProducingData();
RefPtr<MediaTrackConstraints> getConstraints() const;
RefPtr<MediaSourceStates> states() const;
RefPtr<MediaStreamCapabilities> getCapabilities() const;
void applyConstraints(const Dictionary&);
void applyConstraints(const MediaConstraints&);
RealtimeMediaSource* source() const { return m_private->source(); }
MediaStreamTrackPrivate& privateTrack() { return m_private.get(); }
void addObserver(Observer*);
void removeObserver(Observer*);
virtual EventTargetInterface eventTargetInterface() const override final { return MediaStreamTrackEventTargetInterfaceType; }
virtual ScriptExecutionContext* scriptExecutionContext() const override final { return ActiveDOMObject::scriptExecutionContext(); }
using RefCounted<MediaStreamTrack>::ref;
using RefCounted<MediaStreamTrack>::deref;
private:
MediaStreamTrack(ScriptExecutionContext&, MediaStreamTrackPrivate&);
explicit MediaStreamTrack(MediaStreamTrack&);
void configureTrackRendering();
void stop() override final;
const char* activeDOMObjectName() const override final;
bool canSuspendForPageCache() const override final;
virtual void refEventTarget() override final { ref(); }
virtual void derefEventTarget() override final { deref(); }
void trackEnded() override;
void trackMutedChanged() override;
Vector<Observer*> m_observers;
Ref<MediaStreamTrackPrivate> m_private;
RefPtr<MediaConstraintsImpl> m_constraints;
};
}
#endif // ENABLE(MEDIA_STREAM)
#endif // MediaStreamTrack_h