Bug 1374596: P1. Fix MediaStream* headers. r?padenot draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Tue, 20 Jun 2017 17:18:53 +0200
changeset 598123 290714d0b8c10463d0cac81b6a81ac424c3d6ad7
parent 598062 e49151136658c0d0f79b522727b807fd6cd8a79e
child 598124 2a8dac296bb47e5b98461b039014bfc6e2568d87
push id65143
push userbmo:jyavenard@mozilla.com
push dateWed, 21 Jun 2017 12:29:21 +0000
reviewerspadenot
bugs1374596
milestone56.0a1
Bug 1374596: P1. Fix MediaStream* headers. r?padenot We had a cycle reference between MediaStreamGraph.h and MediaStreamListener.h so we extract those parts and move them into its own header. MozReview-Commit-ID: FeLFFBglD0Y
dom/media/MediaStreamGraph.h
dom/media/MediaStreamListener.h
dom/media/MediaStreamTypes.h
dom/media/moz.build
--- a/dom/media/MediaStreamGraph.h
+++ b/dom/media/MediaStreamGraph.h
@@ -8,16 +8,17 @@
 
 #include "mozilla/LinkedList.h"
 #include "mozilla/Mutex.h"
 #include "mozilla/TaskQueue.h"
 
 #include "mozilla/dom/AudioChannelBinding.h"
 
 #include "AudioStream.h"
+#include "MediaStreamTypes.h"
 #include "nsTArray.h"
 #include "nsIRunnable.h"
 #include "VideoSegment.h"
 #include "StreamTracks.h"
 #include "MainThreadUtils.h"
 #include "StreamTracks.h"
 #include "nsAutoPtr.h"
 #include "nsAutoRef.h"
@@ -165,48 +166,27 @@ class MediaInputPort;
 class MediaStreamGraphImpl;
 class MediaStreamListener;
 class MediaStreamTrackListener;
 class MediaStreamVideoSink;
 class ProcessedMediaStream;
 class SourceMediaStream;
 class TrackUnionStream;
 
-enum MediaStreamGraphEvent : uint32_t;
-enum TrackEventCommand : uint32_t;
-
 /**
  * Helper struct for binding a track listener to a specific TrackID.
  */
 template<typename Listener>
 struct TrackBound
 {
   RefPtr<Listener> mListener;
   TrackID mTrackID;
 };
 
 /**
- * Describes how a track should be disabled.
- *
- * ENABLED        Not disabled.
- * SILENCE_BLACK  Audio data is turned into silence, video frames are made black.
- * SILENCE_FREEZE Audio data is turned into silence, video freezes at last frame.
- */
-enum class DisabledTrackMode
-{
-  ENABLED, SILENCE_BLACK, SILENCE_FREEZE
-};
-struct DisabledTrack {
-  DisabledTrack(TrackID aTrackID, DisabledTrackMode aMode)
-    : mTrackID(aTrackID), mMode(aMode) {}
-  TrackID mTrackID;
-  DisabledTrackMode mMode;
-};
-
-/**
  * A stream of synchronized audio and video data. All (not blocked) streams
  * progress at the same rate --- "real time". Streams cannot seek. The only
  * operation readers can perform on a stream is to read the next data.
  *
  * Consumers of a stream can be reading from it at different offsets, but that
  * should only happen due to the order in which consumers are being run.
  * Those offsets must not diverge in the long term, otherwise we would require
  * unbounded buffering.
--- a/dom/media/MediaStreamListener.h
+++ b/dom/media/MediaStreamListener.h
@@ -14,31 +14,16 @@
 namespace mozilla {
 
 class AudioSegment;
 class MediaStream;
 class MediaStreamGraph;
 class MediaStreamVideoSink;
 class VideoSegment;
 
-enum MediaStreamGraphEvent : uint32_t {
-  EVENT_FINISHED,
-  EVENT_REMOVED,
-  EVENT_HAS_DIRECT_LISTENERS, // transition from no direct listeners
-  EVENT_HAS_NO_DIRECT_LISTENERS,  // transition to no direct listeners
-};
-
-// maskable flags, not a simple enumerated value
-enum TrackEventCommand : uint32_t {
-  TRACK_EVENT_NONE = 0x00,
-  TRACK_EVENT_CREATED = 0x01,
-  TRACK_EVENT_ENDED = 0x02,
-  TRACK_EVENT_UNUSED = ~(TRACK_EVENT_ENDED | TRACK_EVENT_CREATED),
-};
-
 /**
  * This is a base class for media graph thread listener callbacks.
  * Override methods to be notified of audio or video data or changes in stream
  * state.
  *
  * This can be used by stream recorders or network connections that receive
  * stream input. It could also be used for debugging.
  *
new file mode 100644
--- /dev/null
+++ b/dom/media/MediaStreamTypes.h
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MOZILLA_MEDIASTREAMTYPES_h_
+#define MOZILLA_MEDIASTREAMTYPES_h_
+
+#include "StreamTracks.h" // for TrackID
+
+namespace mozilla {
+
+enum MediaStreamGraphEvent : uint32_t {
+  EVENT_FINISHED,
+  EVENT_REMOVED,
+  EVENT_HAS_DIRECT_LISTENERS, // transition from no direct listeners
+  EVENT_HAS_NO_DIRECT_LISTENERS,  // transition to no direct listeners
+};
+
+// maskable flags, not a simple enumerated value
+enum TrackEventCommand : uint32_t {
+  TRACK_EVENT_NONE = 0x00,
+  TRACK_EVENT_CREATED = 0x01,
+  TRACK_EVENT_ENDED = 0x02,
+  TRACK_EVENT_UNUSED = ~(TRACK_EVENT_ENDED | TRACK_EVENT_CREATED),
+};
+
+/**
+ * Describes how a track should be disabled.
+ *
+ * ENABLED        Not disabled.
+ * SILENCE_BLACK  Audio data is turned into silence, video frames are made black.
+ * SILENCE_FREEZE Audio data is turned into silence, video freezes at last frame.
+ */
+enum class DisabledTrackMode
+{
+  ENABLED, SILENCE_BLACK, SILENCE_FREEZE
+};
+struct DisabledTrack {
+  DisabledTrack(TrackID aTrackID, DisabledTrackMode aMode)
+    : mTrackID(aTrackID), mMode(aMode) {}
+  TrackID mTrackID;
+  DisabledTrackMode mMode;
+};
+
+} // namespace mozilla
+
+#endif // MOZILLA_MEDIASTREAMTYPES_h_
--- a/dom/media/moz.build
+++ b/dom/media/moz.build
@@ -127,16 +127,17 @@ EXPORTS += [
     'MediaResource.h',
     'MediaResourceCallback.h',
     'MediaResult.h',
     'MediaSegment.h',
     'MediaShutdownManager.h',
     'MediaStatistics.h',
     'MediaStreamGraph.h',
     'MediaStreamListener.h',
+    'MediaStreamTypes.h',
     'MediaStreamVideoSink.h',
     'MediaTimer.h',
     'MediaTrack.h',
     'MediaTrackList.h',
     'MemoryBlockCache.h',
     'nsIDocumentActivity.h',
     'PrincipalChangeObserver.h',
     'QueueObject.h',