summaryrefslogtreecommitdiff
path: root/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h')
-rw-r--r--Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h117
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