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
--- 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',