зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1208371 - Remove MediaStreamTrack::GetStream. r=jib
MozReview-Commit-ID: GP0Mo3CZZ8E --HG-- extra : rebase_source : 196b149a180e033e021366790bf662037c4ec89f
This commit is contained in:
Родитель
dcc36821e9
Коммит
5f32f21927
|
@ -533,7 +533,7 @@ DOMMediaStream::AddTrack(MediaStreamTrack& aTrack)
|
|||
}
|
||||
|
||||
LOG(LogLevel::Info, ("DOMMediaStream %p Adding track %p (from stream %p with ID %d)",
|
||||
this, &aTrack, aTrack.GetStream(), aTrack.GetTrackID()));
|
||||
this, &aTrack, aTrack.mOwningStream.get(), aTrack.mTrackID));
|
||||
|
||||
if (mPlaybackStream->Graph() != aTrack.Graph()) {
|
||||
NS_ASSERTION(false, "Cannot combine tracks from different MediaStreamGraphs");
|
||||
|
@ -563,7 +563,7 @@ DOMMediaStream::AddTrack(MediaStreamTrack& aTrack)
|
|||
// Hook up the underlying track with our underlying playback stream.
|
||||
RefPtr<MediaInputPort> inputPort =
|
||||
GetPlaybackStream()->AllocateInputPort(aTrack.GetOwnedStream(),
|
||||
aTrack.GetTrackID());
|
||||
aTrack.mTrackID);
|
||||
RefPtr<TrackPort> trackPort =
|
||||
new TrackPort(inputPort, &aTrack, TrackPort::InputPortOwnership::OWNED);
|
||||
mTracks.AppendElement(trackPort.forget());
|
||||
|
@ -576,7 +576,7 @@ void
|
|||
DOMMediaStream::RemoveTrack(MediaStreamTrack& aTrack)
|
||||
{
|
||||
LOG(LogLevel::Info, ("DOMMediaStream %p Removing track %p (from stream %p with ID %d)",
|
||||
this, &aTrack, aTrack.GetStream(), aTrack.GetTrackID()));
|
||||
this, &aTrack, aTrack.mOwningStream.get(), aTrack.mTrackID));
|
||||
|
||||
RefPtr<TrackPort> toRemove = FindPlaybackTrackPort(aTrack);
|
||||
if (!toRemove) {
|
||||
|
@ -588,7 +588,7 @@ DOMMediaStream::RemoveTrack(MediaStreamTrack& aTrack)
|
|||
// to block it in the port. Doing this for a locked track is still OK as it
|
||||
// will first block the track, then destroy the port. Both cause the track to
|
||||
// end.
|
||||
toRemove->BlockTrackId(aTrack.GetTrackID());
|
||||
toRemove->BlockTrackId(aTrack.mTrackID);
|
||||
|
||||
DebugOnly<bool> removed = mTracks.RemoveElement(toRemove);
|
||||
MOZ_ASSERT(removed);
|
||||
|
@ -887,7 +887,7 @@ DOMMediaStream::FindOwnedDOMTrack(MediaStream* aInputStream,
|
|||
for (const RefPtr<TrackPort>& info : mOwnedTracks) {
|
||||
if (info->GetInputPort() &&
|
||||
info->GetInputPort()->GetSource() == aInputStream &&
|
||||
info->GetTrack()->GetInputTrackID() == aInputTrackID) {
|
||||
info->GetTrack()->mInputTrackID == aInputTrackID) {
|
||||
// This track is owned externally but in our playback stream.
|
||||
return info->GetTrack();
|
||||
}
|
||||
|
@ -915,7 +915,7 @@ DOMMediaStream::FindPlaybackDOMTrack(MediaStream* aInputStream, TrackID aInputTr
|
|||
for (const RefPtr<TrackPort>& info : mTracks) {
|
||||
if (info->GetInputPort() == mPlaybackPort &&
|
||||
aInputStream == mOwnedStream &&
|
||||
info->GetTrack()->GetInputTrackID() == aInputTrackID) {
|
||||
info->GetTrack()->mInputTrackID == aInputTrackID) {
|
||||
// This track is in our owned and playback streams.
|
||||
return info->GetTrack();
|
||||
}
|
||||
|
|
|
@ -84,6 +84,13 @@ NS_IMPL_RELEASE_INHERITED(MediaStreamTrack, DOMEventTargetHelper)
|
|||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(MediaStreamTrack)
|
||||
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
|
||||
|
||||
nsPIDOMWindowInner*
|
||||
MediaStreamTrack::GetParentObject() const
|
||||
{
|
||||
MOZ_RELEASE_ASSERT(mOwningStream);
|
||||
return mOwningStream->GetParentObject();
|
||||
}
|
||||
|
||||
void
|
||||
MediaStreamTrack::GetId(nsAString& aID) const
|
||||
{
|
||||
|
@ -137,7 +144,7 @@ MediaStreamTrack::ApplyConstraints(const MediaTrackConstraints& aConstraints,
|
|||
"constraints %s", this, NS_ConvertUTF16toUTF8(str).get()));
|
||||
}
|
||||
|
||||
return GetStream()->ApplyConstraintsToTrack(mTrackID, aConstraints, aRv);
|
||||
return mOwningStream->ApplyConstraintsToTrack(mTrackID, aConstraints, aRv);
|
||||
}
|
||||
|
||||
MediaStreamGraph*
|
||||
|
@ -180,8 +187,8 @@ MediaStreamTrack::GetInputDOMStream()
|
|||
{
|
||||
MediaStreamTrack* originalTrack =
|
||||
mOriginalTrack ? mOriginalTrack.get() : this;
|
||||
MOZ_RELEASE_ASSERT(originalTrack->GetStream());
|
||||
return originalTrack->GetStream();
|
||||
MOZ_RELEASE_ASSERT(originalTrack->mOwningStream);
|
||||
return originalTrack->mOwningStream;
|
||||
}
|
||||
|
||||
MediaStream*
|
||||
|
@ -195,7 +202,7 @@ MediaStreamTrack::GetInputStream()
|
|||
ProcessedMediaStream*
|
||||
MediaStreamTrack::GetOwnedStream()
|
||||
{
|
||||
return GetStream()->GetOwnedStream();
|
||||
return mOwningStream->GetOwnedStream();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -22,6 +22,7 @@ class MediaStreamGraph;
|
|||
class MediaStreamTrackListener;
|
||||
class PeerConnectionImpl;
|
||||
class ProcessedMediaStream;
|
||||
class RemoteSourceStreamInfo;
|
||||
|
||||
namespace dom {
|
||||
|
||||
|
@ -170,8 +171,9 @@ class MediaStreamTrack : public DOMEventTargetHelper,
|
|||
// some internal state, e.g., GetInputStream(), GetOwnedStream().
|
||||
friend class mozilla::DOMMediaStream;
|
||||
|
||||
// PeerConnectionImpl.cpp needs to know our owning DOMStream and bound track id.
|
||||
// PeerConnection and friends need to know our owning DOMStream and track id.
|
||||
friend class mozilla::PeerConnectionImpl;
|
||||
friend class mozilla::RemoteSourceStreamInfo;
|
||||
|
||||
public:
|
||||
/**
|
||||
|
@ -186,25 +188,9 @@ public:
|
|||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaStreamTrack,
|
||||
DOMEventTargetHelper)
|
||||
|
||||
DOMMediaStream* GetParentObject() const { return mOwningStream; }
|
||||
nsPIDOMWindowInner* GetParentObject() const;
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override = 0;
|
||||
|
||||
/**
|
||||
* Returns the DOMMediaStream owning this track.
|
||||
*/
|
||||
DOMMediaStream* GetStream() const { return mOwningStream; }
|
||||
|
||||
/**
|
||||
* Returns the TrackID this stream has in its owning DOMMediaStream's Owned
|
||||
* stream.
|
||||
*/
|
||||
TrackID GetTrackID() const { return mTrackID; }
|
||||
|
||||
/**
|
||||
* Returns the TrackID this MediaStreamTrack has in its input MSG-MediaStream.
|
||||
*/
|
||||
TrackID GetInputTrackID() const { return mInputTrackID; }
|
||||
|
||||
virtual AudioStreamTrack* AsAudioStreamTrack() { return nullptr; }
|
||||
virtual VideoStreamTrack* AsVideoStreamTrack() { return nullptr; }
|
||||
|
||||
|
|
|
@ -60,9 +60,8 @@ public:
|
|||
void DetachTrack();
|
||||
|
||||
// CaptureTask should be created on main thread.
|
||||
CaptureTask(dom::ImageCapture* aImageCapture, TrackID aTrackID)
|
||||
explicit CaptureTask(dom::ImageCapture* aImageCapture)
|
||||
: mImageCapture(aImageCapture)
|
||||
, mTrackID(aTrackID)
|
||||
, mImageGrabbedOrTrackEnd(false)
|
||||
, mPrincipalChanged(false) {}
|
||||
|
||||
|
@ -78,8 +77,6 @@ protected:
|
|||
// event to script.
|
||||
RefPtr<dom::ImageCapture> mImageCapture;
|
||||
|
||||
TrackID mTrackID;
|
||||
|
||||
// True when an image is retrieved from MediaStreamGraph or MediaStreamGraph
|
||||
// sends a track finish, end, or removed event.
|
||||
bool mImageGrabbedOrTrackEnd;
|
||||
|
|
|
@ -148,7 +148,7 @@ ImageCapture::TakePhoto(ErrorResult& aResult)
|
|||
if (rv == NS_ERROR_NOT_IMPLEMENTED) {
|
||||
IC_LOG("MediaEngine doesn't support TakePhoto(), it falls back to MediaStreamGraph.");
|
||||
RefPtr<CaptureTask> task =
|
||||
new CaptureTask(this, mVideoStreamTrack->GetTrackID());
|
||||
new CaptureTask(this);
|
||||
|
||||
// It adds itself into MediaStreamGraph, so ImageCapture doesn't need to hold
|
||||
// the reference.
|
||||
|
|
|
@ -215,13 +215,12 @@ public:
|
|||
// track id from the start, but we're stuck doing this fixup after the
|
||||
// fact.
|
||||
nsresult rv = wrapper.impl()->GetRemoteTrackId(streamId,
|
||||
tracks[i]->GetTrackID(),
|
||||
*tracks[i],
|
||||
&trackId);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
CSFLogError(logTag, "%s: Failed to get string track id for %u, rv = %u",
|
||||
__FUNCTION__,
|
||||
static_cast<unsigned>(tracks[i]->GetTrackID()),
|
||||
CSFLogError(logTag, "%s: Failed to get string track id for %p, rv = %u",
|
||||
__FUNCTION__, tracks[i].get(),
|
||||
static_cast<unsigned>(rv));
|
||||
MOZ_ASSERT(false);
|
||||
continue;
|
||||
|
@ -2186,14 +2185,14 @@ PeerConnectionImpl::PrincipalChanged(DOMMediaStream* aMediaStream) {
|
|||
#if !defined(MOZILLA_EXTERNAL_LINKAGE)
|
||||
nsresult
|
||||
PeerConnectionImpl::GetRemoteTrackId(const std::string streamId,
|
||||
TrackID numericTrackId,
|
||||
const MediaStreamTrack& aTrack,
|
||||
std::string* trackId) const
|
||||
{
|
||||
if (IsClosed()) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
return mMedia->GetRemoteTrackId(streamId, numericTrackId, trackId);
|
||||
return mMedia->GetRemoteTrackId(streamId, aTrack, trackId);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -652,7 +652,7 @@ public:
|
|||
virtual void PrincipalChanged(DOMMediaStream* aMediaStream) override;
|
||||
|
||||
nsresult GetRemoteTrackId(const std::string streamId,
|
||||
TrackID numericTrackId,
|
||||
const dom::MediaStreamTrack& track,
|
||||
std::string* trackId) const;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -743,7 +743,7 @@ PeerConnectionMedia::RemoveRemoteTrack(const std::string& streamId,
|
|||
|
||||
nsresult
|
||||
PeerConnectionMedia::GetRemoteTrackId(const std::string streamId,
|
||||
TrackID numericTrackId,
|
||||
const MediaStreamTrack& track,
|
||||
std::string* trackId) const
|
||||
{
|
||||
auto* ncThis = const_cast<PeerConnectionMedia*>(this);
|
||||
|
@ -755,7 +755,7 @@ PeerConnectionMedia::GetRemoteTrackId(const std::string streamId,
|
|||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
return info->GetTrackId(numericTrackId, trackId);
|
||||
return info->GetTrackId(track, trackId);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -218,8 +218,10 @@ class RemoteSourceStreamInfo : public SourceStreamInfo {
|
|||
return TRACK_INVALID;
|
||||
}
|
||||
|
||||
nsresult GetTrackId(TrackID numericTrackId, std::string* trackId) const
|
||||
nsresult GetTrackId(const dom::MediaStreamTrack& track, std::string* trackId) const
|
||||
{
|
||||
TrackID numericTrackId = track.mTrackID;
|
||||
|
||||
if (numericTrackId <= 0 ||
|
||||
static_cast<size_t>(numericTrackId) > mTrackIdMap.size()) {
|
||||
return NS_ERROR_INVALID_ARG;;
|
||||
|
@ -315,7 +317,7 @@ class PeerConnectionMedia : public sigslot::has_slots<> {
|
|||
const std::string& trackId);
|
||||
|
||||
nsresult GetRemoteTrackId(const std::string streamId,
|
||||
TrackID numericTrackId,
|
||||
const dom::MediaStreamTrack& track,
|
||||
std::string* trackId) const;
|
||||
|
||||
// Get a specific local stream
|
||||
|
|
|
@ -32,6 +32,7 @@ namespace mozilla {
|
|||
class MediaStreamGraphImpl;
|
||||
class MediaSegment;
|
||||
class PeerConnectionImpl;
|
||||
class RemoteSourceStreamInfo;
|
||||
};
|
||||
|
||||
|
||||
|
@ -298,12 +299,14 @@ protected:
|
|||
class Fake_MediaStreamTrack
|
||||
{
|
||||
friend class mozilla::PeerConnectionImpl;
|
||||
friend class mozilla::RemoteSourceStreamInfo;
|
||||
public:
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(Fake_MediaStreamTrack)
|
||||
|
||||
Fake_MediaStreamTrack(bool aIsVideo, Fake_DOMMediaStream* aOwningStream) :
|
||||
mIsVideo (aIsVideo),
|
||||
mOwningStream (aOwningStream)
|
||||
mOwningStream (aOwningStream),
|
||||
mTrackID(mIsVideo ? 1 : 0)
|
||||
{
|
||||
static size_t counter = 0;
|
||||
std::ostringstream os;
|
||||
|
@ -311,7 +314,6 @@ public:
|
|||
mID = os.str();
|
||||
}
|
||||
|
||||
mozilla::TrackID GetTrackID() { return mIsVideo ? 1 : 0; }
|
||||
std::string GetId() const { return mID; }
|
||||
void AssignId(const std::string& id) { mID = id; }
|
||||
const Fake_MediaStreamTrack* AsVideoStreamTrack() const
|
||||
|
@ -334,9 +336,8 @@ private:
|
|||
~Fake_MediaStreamTrack() {}
|
||||
|
||||
const bool mIsVideo;
|
||||
protected:
|
||||
Fake_DOMMediaStream* mOwningStream;
|
||||
private:
|
||||
mozilla::TrackID mTrackID;
|
||||
std::string mID;
|
||||
};
|
||||
|
||||
|
@ -517,6 +518,7 @@ typedef Fake_DOMMediaStream DOMMediaStream;
|
|||
typedef Fake_DOMMediaStream DOMLocalMediaStream;
|
||||
|
||||
namespace dom {
|
||||
typedef Fake_MediaStreamTrack MediaStreamTrack;
|
||||
typedef Fake_MediaStreamTrackSource MediaStreamTrackSource;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче