diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h')
-rw-r--r-- | Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h | 117 |
1 files changed, 56 insertions, 61 deletions
diff --git a/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h b/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h index 5ea7a10b3..ca0d7c17d 100644 --- a/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h +++ b/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies). + * Copyright (C) 2015 Ericsson AB. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,101 +24,95 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef MediaStreamTrackPrivate_h -#define MediaStreamTrackPrivate_h +#pragma once #if ENABLE(MEDIA_STREAM) -#include "MediaStreamSource.h" -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> -#include <wtf/text/AtomicString.h> +#include "RealtimeMediaSource.h" namespace WebCore { -class MediaSourceStates; -class MediaStreamSourceCapabilities; +class AudioSourceProvider; +class GraphicsContext; +class MediaSample; +class RealtimeMediaSourceCapabilities; -class MediaStreamTrackPrivateClient { +class MediaStreamTrackPrivate : public RefCounted<MediaStreamTrackPrivate>, public RealtimeMediaSource::Observer { public: - virtual ~MediaStreamTrackPrivateClient() { } + class Observer { + public: + virtual ~Observer() { } - virtual void trackReadyStateChanged() = 0; - virtual void trackMutedChanged() = 0; - virtual void trackEnabledChanged() = 0; -}; + virtual void trackEnded(MediaStreamTrackPrivate&) = 0; + virtual void trackMutedChanged(MediaStreamTrackPrivate&) = 0; + virtual void trackSettingsChanged(MediaStreamTrackPrivate&) = 0; + virtual void trackEnabledChanged(MediaStreamTrackPrivate&) = 0; + virtual void sampleBufferUpdated(MediaStreamTrackPrivate&, MediaSample&) { }; + }; -class MediaStreamTrackPrivate : public RefCounted<MediaStreamTrackPrivate>, public MediaStreamSource::Observer { -public: - static PassRefPtr<MediaStreamTrackPrivate> create(PassRefPtr<MediaStreamSource>); + static Ref<MediaStreamTrackPrivate> create(Ref<RealtimeMediaSource>&&); + static Ref<MediaStreamTrackPrivate> create(Ref<RealtimeMediaSource>&&, String&& id); virtual ~MediaStreamTrackPrivate(); - const String& id() const; + const String& id() const { return m_id; } const String& label() const; - bool ended() const; + bool ended() const { return m_isEnded; } + + void startProducingData() { m_source->startProducingData(); } + void stopProducingData() { m_source->stopProducingData(); } + bool isProducingData() { return m_source->isProducingData(); } bool muted() const; - void setMuted(bool); + void setMuted(bool muted) { m_source->setMuted(muted); } bool readonly() const; bool remote() const; - bool enabled() const { return m_enabled; } + bool enabled() const { return m_isEnabled; } void setEnabled(bool); - void setReadyState(MediaStreamSource::ReadyState); - MediaStreamSource::ReadyState readyState() const; + Ref<MediaStreamTrackPrivate> clone(); - RefPtr<MediaStreamTrackPrivate> clone(); + RealtimeMediaSource& source() { return m_source.get(); } + RealtimeMediaSource::Type type() const; - MediaStreamSource* source() const { return m_source.get(); } - void setSource(PassRefPtr<MediaStreamSource>); + void endTrack(); - enum StopBehavior { StopTrackAndStopSource, StopTrackOnly }; - void stop(StopBehavior); - bool stopped() const { return m_stopped; } - - void setClient(MediaStreamTrackPrivateClient* client) { m_client = client; } + void addObserver(Observer&); + void removeObserver(Observer&); - MediaStreamSource::Type type() const; + const RealtimeMediaSourceSettings& settings() const; + RefPtr<RealtimeMediaSourceCapabilities> capabilities() const; - const MediaStreamSourceStates& states() const; - RefPtr<MediaStreamSourceCapabilities> capabilities() const; + void applyConstraints(const MediaConstraints&, RealtimeMediaSource::SuccessHandler, RealtimeMediaSource::FailureHandler); - RefPtr<MediaConstraints> constraints() const; - void applyConstraints(PassRefPtr<MediaConstraints>); + AudioSourceProvider* audioSourceProvider(); - void configureTrackRendering(); - -protected: - explicit MediaStreamTrackPrivate(const MediaStreamTrackPrivate&); - MediaStreamTrackPrivate(PassRefPtr<MediaStreamSource>); + void paintCurrentFrameInContext(GraphicsContext&, const FloatRect&); private: - MediaStreamTrackPrivateClient* client() const { return m_client; } - - // MediaStreamSourceObserver - virtual void sourceReadyStateChanged() override final; - virtual void sourceMutedChanged() override final; - virtual void sourceEnabledChanged() override final; - virtual bool observerIsEnabled() override final; - - RefPtr<MediaStreamSource> m_source; - MediaStreamTrackPrivateClient* m_client; - RefPtr<MediaConstraints> m_constraints; - MediaStreamSource::ReadyState m_readyState; - mutable String m_id; - - bool m_muted; - bool m_enabled; - bool m_stopped; - bool m_ignoreMutations; + MediaStreamTrackPrivate(Ref<RealtimeMediaSource>&&, String&& id); + + // RealtimeMediaSourceObserver + void sourceStopped() final; + void sourceMutedChanged() final; + void sourceEnabledChanged() final; + void sourceSettingsChanged() final; + bool preventSourceFromStopping() final; + void videoSampleAvailable(MediaSample&) final; + + Vector<Observer*> m_observers; + Ref<RealtimeMediaSource> m_source; + + String m_id; + bool m_isEnabled; + bool m_isEnded; }; +typedef Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamTrackPrivateVector; + } // namespace WebCore #endif // ENABLE(MEDIA_STREAM) - -#endif // MediaStreamTrackPrivate_h |