nsresult PeerConnectionMedia::AddTrack(DOMMediaStream* aMediaStream, const std::string& streamId, const std::string& trackId) { ASSERT_ON_THREAD(mMainThread); if (!aMediaStream) { CSFLogError(logTag, "%s - aMediaStream is NULL", __FUNCTION__); return NS_ERROR_FAILURE; } CSFLogDebug(logTag, "%s: MediaStream: %p", __FUNCTION__, aMediaStream); RefPtr<LocalSourceStreamInfo> localSourceStream = GetLocalStreamById(streamId); if (!localSourceStream) { localSourceStream = new LocalSourceStreamInfo(aMediaStream, this, streamId); mLocalSourceStreams.AppendElement(localSourceStream); } localSourceStream->AddTrack(trackId); return NS_OK; }
nsresult PeerConnectionMedia::RemoveLocalTrack(const std::string& streamId, const std::string& trackId) { ASSERT_ON_THREAD(mMainThread); CSFLogDebug(logTag, "%s: stream: %s track: %s", __FUNCTION__, streamId.c_str(), trackId.c_str()); RefPtr<LocalSourceStreamInfo> localSourceStream = GetLocalStreamById(streamId); if (!localSourceStream) { return NS_ERROR_ILLEGAL_VALUE; } localSourceStream->RemoveTrack(trackId); if (!localSourceStream->GetTrackCount()) { mLocalSourceStreams.RemoveElement(localSourceStream); } return NS_OK; }
nsresult PeerConnectionMedia::AddTrack(DOMMediaStream& aMediaStream, const std::string& streamId, MediaStreamTrack& aTrack, const std::string& trackId) { ASSERT_ON_THREAD(mMainThread); CSFLogDebug(logTag, "%s: MediaStream: %p", __FUNCTION__, &aMediaStream); RefPtr<LocalSourceStreamInfo> localSourceStream = GetLocalStreamById(streamId); if (!localSourceStream) { localSourceStream = new LocalSourceStreamInfo(&aMediaStream, this, streamId); mLocalSourceStreams.AppendElement(localSourceStream); } localSourceStream->AddTrack(trackId, &aTrack); return NS_OK; }