Bug 1426486 - P2. Make mTrackId a base member. r=bwc

Also remove unused code.
mTrackId / mTrackIdexternal were protected/private members and only ever written.

MozReview-Commit-ID: C3wMhxSCA2H

--HG--
extra : rebase_source : 18845e480e8e2d741ef1172b212373888a9c1fe8
This commit is contained in:
Jean-Yves Avenard 2017-12-21 17:57:24 +01:00
parent 2bd009f7e0
commit 212565b86e

View File

@ -1327,9 +1327,6 @@ class MediaPipelineTransmit::PipelineListener : public MediaStreamVideoSink
public:
explicit PipelineListener(const RefPtr<MediaSessionConduit>& aConduit)
: mConduit(aConduit)
, mTrackId(TRACK_INVALID)
, mMutex("MediaPipelineTransmit::PipelineListener")
, mTrackIdexternal(TRACK_INVALID)
, mActive(false)
, mEnabled(false)
, mDirectConnect(false)
@ -1345,12 +1342,6 @@ public:
}
}
// Dispatches setting the internal TrackID to TRACK_INVALID to the media
// graph thread to keep it in sync with other MediaStreamGraph operations
// like RemoveListener() and AddListener(). The TrackID will be updated on
// the next NewData() callback.
void UnsetTrackId(MediaStreamGraphImpl* aGraph);
void SetActive(bool aActive) { mActive = aActive; }
void SetEnabled(bool aEnabled) { mEnabled = aEnabled; }
@ -1407,25 +1398,12 @@ public:
void ClearFrames() override {}
private:
void UnsetTrackIdImpl()
{
MutexAutoLock lock(mMutex);
mTrackId = mTrackIdexternal = TRACK_INVALID;
}
void NewData(const MediaSegment& aMedia, TrackRate aRate = 0);
RefPtr<MediaSessionConduit> mConduit;
RefPtr<AudioProxyThread> mAudioProcessing;
RefPtr<VideoFrameConverter> mConverter;
// May be TRACK_INVALID until we see data from the track
TrackID mTrackId; // this is the current TrackID this listener is attached to
Mutex mMutex;
// protected by mMutex
// May be TRACK_INVALID until we see data from the track
TrackID mTrackIdexternal; // this is queried from other threads
// active is true if there is a transport to send on
mozilla::Atomic<bool> mActive;
// enabled is true if the media access control permits sending
@ -1446,8 +1424,8 @@ class MediaPipelineTransmit::VideoFrameFeeder : public VideoConverterListener
{
public:
explicit VideoFrameFeeder(const RefPtr<PipelineListener>& aListener)
: mListener(aListener)
, mMutex("VideoFrameFeeder")
: mMutex("VideoFrameFeeder")
, mListener(aListener)
{
MOZ_COUNT_CTOR(VideoFrameFeeder);
}
@ -1494,8 +1472,8 @@ public:
protected:
virtual ~VideoFrameFeeder() { MOZ_COUNT_DTOR(VideoFrameFeeder); }
Mutex mMutex; // Protects the member below.
RefPtr<PipelineListener> mListener;
Mutex mMutex;
};
MediaPipelineTransmit::MediaPipelineTransmit(
@ -1711,11 +1689,6 @@ MediaPipelineTransmit::ReplaceTrack(RefPtr<MediaStreamTrack>& aDomTrack)
mDomTrack = aDomTrack;
SetDescription();
if (oldTrack) {
// Unsets the track id after RemoveListener() takes effect.
mListener->UnsetTrackId(oldTrack->GraphImpl());
}
if (wasTransmitting) {
Start();
}
@ -1892,23 +1865,6 @@ MediaPipeline::PipelineTransport::SendRtcpPacket(const uint8_t* aData,
return NS_OK;
}
void
MediaPipelineTransmit::PipelineListener::UnsetTrackId(
MediaStreamGraphImpl* aGraph)
{
class Message : public ControlMessage
{
public:
explicit Message(PipelineListener* listener)
: ControlMessage(nullptr)
, mListener(listener)
{
}
virtual void Run() override { mListener->UnsetTrackIdImpl(); }
RefPtr<PipelineListener> mListener;
};
aGraph->AppendMessage(MakeUnique<Message>(this));
}
// Called if we're attached with AddDirectListener()
void
MediaPipelineTransmit::PipelineListener::NotifyRealtimeTrackData(
@ -2035,6 +1991,7 @@ class GenericReceiveListener : public MediaStreamListener
public:
explicit GenericReceiveListener(dom::MediaStreamTrack* aTrack)
: mTrack(aTrack)
, mTrackId(aTrack->GetInputTrackId())
, mSource(mTrack->GetInputStream()->AsSourceStream())
, mPlayedTicks(0)
, mPrincipalHandle(PRINCIPAL_HANDLE_NONE)
@ -2093,18 +2050,19 @@ public:
class Message : public ControlMessage
{
public:
explicit Message(dom::MediaStreamTrack* aTrack)
: ControlMessage(aTrack->GetInputStream())
, mTrackId(aTrack->GetInputTrackId())
explicit Message(SourceMediaStream* aStream, TrackID aTrackId)
: ControlMessage(aStream)
, mTrackId(aTrackId)
{
}
void Run() override { mStream->AsSourceStream()->EndTrack(mTrackId); }
const TrackID mTrackId;
};
mTrack->GraphImpl()->AppendMessage(MakeUnique<Message>(mTrack));
mTrack->GraphImpl()->AppendMessage(MakeUnique<Message>(mSource, mTrackId));
// This breaks the cycle with the SourceMediaStream
mSource->RemoveListener(this);
}
@ -2144,6 +2102,7 @@ public:
protected:
RefPtr<dom::MediaStreamTrack> mTrack;
const TrackID mTrackId;
const RefPtr<SourceMediaStream> mSource;
TrackTicks mPlayedTicks;
PrincipalHandle mPrincipalHandle;
@ -2173,7 +2132,6 @@ public:
const RefPtr<MediaSessionConduit>& aConduit)
: GenericReceiveListener(aTrack)
, mConduit(aConduit)
, mTrackId(mTrack->GetInputTrackId())
// AudioSession conduit only supports 16, 32, 44.1 and 48kHz
// This is an artificial limitation, it would however require more changes
// to support any rates.
@ -2312,7 +2270,6 @@ private:
}
RefPtr<MediaSessionConduit> mConduit;
const TrackID mTrackId;
const TrackRate mRate;
const RefPtr<AutoTaskQueue> mTaskQueue;
// Graph's current sampling rate