Change stream.AddTrack/RemoveTrack to take a scoped_refptr argument
This better reflects the ownership passing of AddTrack, and is more consistent for RemoveTrack. Bug: webrtc:13980 Change-Id: Ide5baccf15fc687a4e092f8831ce8c0fea46604e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259740 Reviewed-by: Niels Moller <nisse@webrtc.org> Commit-Queue: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36603}
This commit is contained in:
parent
8088aad5ac
commit
2f7ad28a6d
@ -334,11 +334,38 @@ class MediaStreamInterface : public rtc::RefCountInterface,
|
|||||||
const std::string& track_id) = 0;
|
const std::string& track_id) = 0;
|
||||||
|
|
||||||
// Takes ownership of added tracks.
|
// Takes ownership of added tracks.
|
||||||
// TODO(hta): Should take scoped_refptr rather than raw pointer.
|
// Note: Default implementations are for avoiding link time errors in
|
||||||
virtual bool AddTrack(AudioTrackInterface* track) = 0;
|
// implementations that mock this API.
|
||||||
virtual bool AddTrack(VideoTrackInterface* track) = 0;
|
// TODO(bugs.webrtc.org/13980): Remove default implementations.
|
||||||
virtual bool RemoveTrack(AudioTrackInterface* track) = 0;
|
virtual bool AddTrack(rtc::scoped_refptr<AudioTrackInterface> track) {
|
||||||
virtual bool RemoveTrack(VideoTrackInterface* track) = 0;
|
RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
virtual bool AddTrack(rtc::scoped_refptr<VideoTrackInterface> track) {
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
virtual bool RemoveTrack(rtc::scoped_refptr<AudioTrackInterface> track) {
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
virtual bool RemoveTrack(rtc::scoped_refptr<VideoTrackInterface> track) {
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
// Deprecated: Should use scoped_refptr versions rather than pointers.
|
||||||
|
[[deprecated("Pass a scoped_refptr")]] virtual bool AddTrack(
|
||||||
|
AudioTrackInterface* track) {
|
||||||
|
return AddTrack(rtc::scoped_refptr<AudioTrackInterface>(track));
|
||||||
|
}
|
||||||
|
[[deprecated("Pass a scoped_refptr")]] virtual bool AddTrack(
|
||||||
|
VideoTrackInterface* track) {
|
||||||
|
return AddTrack(rtc::scoped_refptr<VideoTrackInterface>(track));
|
||||||
|
}
|
||||||
|
[[deprecated("Pass a scoped_refptr")]] virtual bool RemoveTrack(
|
||||||
|
AudioTrackInterface* track) {
|
||||||
|
return RemoveTrack(rtc::scoped_refptr<AudioTrackInterface>(track));
|
||||||
|
}
|
||||||
|
[[deprecated("Pass a scoped_refptr")]] virtual bool RemoveTrack(
|
||||||
|
VideoTrackInterface* track) {
|
||||||
|
return RemoveTrack(rtc::scoped_refptr<VideoTrackInterface>(track));
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
~MediaStreamInterface() override = default;
|
~MediaStreamInterface() override = default;
|
||||||
|
|||||||
@ -251,7 +251,7 @@ void AudioRtpReceiver::SetStreams(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (removed) {
|
if (removed) {
|
||||||
existing_stream->RemoveTrack(track_.get());
|
existing_stream->RemoveTrack(audio_track());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add remote track to any streams that are new.
|
// Add remote track to any streams that are new.
|
||||||
@ -265,7 +265,7 @@ void AudioRtpReceiver::SetStreams(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (added) {
|
if (added) {
|
||||||
stream->AddTrack(track_.get());
|
stream->AddTrack(audio_track());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
streams_ = streams;
|
streams_ = streams;
|
||||||
|
|||||||
@ -36,21 +36,19 @@ rtc::scoped_refptr<MediaStream> MediaStream::Create(const std::string& id) {
|
|||||||
|
|
||||||
MediaStream::MediaStream(const std::string& id) : id_(id) {}
|
MediaStream::MediaStream(const std::string& id) : id_(id) {}
|
||||||
|
|
||||||
bool MediaStream::AddTrack(AudioTrackInterface* track) {
|
bool MediaStream::AddTrack(rtc::scoped_refptr<AudioTrackInterface> track) {
|
||||||
return AddTrack<AudioTrackVector, AudioTrackInterface>(
|
return AddTrack<AudioTrackVector, AudioTrackInterface>(&audio_tracks_, track);
|
||||||
&audio_tracks_, rtc::scoped_refptr<AudioTrackInterface>(track));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MediaStream::AddTrack(VideoTrackInterface* track) {
|
bool MediaStream::AddTrack(rtc::scoped_refptr<VideoTrackInterface> track) {
|
||||||
return AddTrack<VideoTrackVector, VideoTrackInterface>(
|
return AddTrack<VideoTrackVector, VideoTrackInterface>(&video_tracks_, track);
|
||||||
&video_tracks_, rtc::scoped_refptr<VideoTrackInterface>(track));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MediaStream::RemoveTrack(AudioTrackInterface* track) {
|
bool MediaStream::RemoveTrack(rtc::scoped_refptr<AudioTrackInterface> track) {
|
||||||
return RemoveTrack<AudioTrackVector>(&audio_tracks_, track);
|
return RemoveTrack<AudioTrackVector>(&audio_tracks_, track);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MediaStream::RemoveTrack(VideoTrackInterface* track) {
|
bool MediaStream::RemoveTrack(rtc::scoped_refptr<VideoTrackInterface> track) {
|
||||||
return RemoveTrack<VideoTrackVector>(&video_tracks_, track);
|
return RemoveTrack<VideoTrackVector>(&video_tracks_, track);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,8 +80,9 @@ bool MediaStream::AddTrack(TrackVector* tracks,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename TrackVector>
|
template <typename TrackVector>
|
||||||
bool MediaStream::RemoveTrack(TrackVector* tracks,
|
bool MediaStream::RemoveTrack(
|
||||||
MediaStreamTrackInterface* track) {
|
TrackVector* tracks,
|
||||||
|
rtc::scoped_refptr<MediaStreamTrackInterface> track) {
|
||||||
RTC_DCHECK(tracks != NULL);
|
RTC_DCHECK(tracks != NULL);
|
||||||
if (!track)
|
if (!track)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -27,10 +27,10 @@ class MediaStream : public Notifier<MediaStreamInterface> {
|
|||||||
|
|
||||||
std::string id() const override { return id_; }
|
std::string id() const override { return id_; }
|
||||||
|
|
||||||
bool AddTrack(AudioTrackInterface* track) override;
|
bool AddTrack(rtc::scoped_refptr<AudioTrackInterface> track) override;
|
||||||
bool AddTrack(VideoTrackInterface* track) override;
|
bool AddTrack(rtc::scoped_refptr<VideoTrackInterface> track) override;
|
||||||
bool RemoveTrack(AudioTrackInterface* track) override;
|
bool RemoveTrack(rtc::scoped_refptr<AudioTrackInterface> track) override;
|
||||||
bool RemoveTrack(VideoTrackInterface* track) override;
|
bool RemoveTrack(rtc::scoped_refptr<VideoTrackInterface> track) override;
|
||||||
rtc::scoped_refptr<AudioTrackInterface> FindAudioTrack(
|
rtc::scoped_refptr<AudioTrackInterface> FindAudioTrack(
|
||||||
const std::string& track_id) override;
|
const std::string& track_id) override;
|
||||||
rtc::scoped_refptr<VideoTrackInterface> FindVideoTrack(
|
rtc::scoped_refptr<VideoTrackInterface> FindVideoTrack(
|
||||||
@ -46,7 +46,8 @@ class MediaStream : public Notifier<MediaStreamInterface> {
|
|||||||
template <typename TrackVector, typename Track>
|
template <typename TrackVector, typename Track>
|
||||||
bool AddTrack(TrackVector* Tracks, rtc::scoped_refptr<Track> track);
|
bool AddTrack(TrackVector* Tracks, rtc::scoped_refptr<Track> track);
|
||||||
template <typename TrackVector>
|
template <typename TrackVector>
|
||||||
bool RemoveTrack(TrackVector* Tracks, MediaStreamTrackInterface* track);
|
bool RemoveTrack(TrackVector* Tracks,
|
||||||
|
rtc::scoped_refptr<MediaStreamTrackInterface> track);
|
||||||
|
|
||||||
const std::string id_;
|
const std::string id_;
|
||||||
AudioTrackVector audio_tracks_;
|
AudioTrackVector audio_tracks_;
|
||||||
|
|||||||
@ -31,10 +31,10 @@ PROXY_METHOD1(rtc::scoped_refptr<AudioTrackInterface>,
|
|||||||
PROXY_METHOD1(rtc::scoped_refptr<VideoTrackInterface>,
|
PROXY_METHOD1(rtc::scoped_refptr<VideoTrackInterface>,
|
||||||
FindVideoTrack,
|
FindVideoTrack,
|
||||||
const std::string&)
|
const std::string&)
|
||||||
PROXY_METHOD1(bool, AddTrack, AudioTrackInterface*)
|
PROXY_METHOD1(bool, AddTrack, rtc::scoped_refptr<AudioTrackInterface>)
|
||||||
PROXY_METHOD1(bool, AddTrack, VideoTrackInterface*)
|
PROXY_METHOD1(bool, AddTrack, rtc::scoped_refptr<VideoTrackInterface>)
|
||||||
PROXY_METHOD1(bool, RemoveTrack, AudioTrackInterface*)
|
PROXY_METHOD1(bool, RemoveTrack, rtc::scoped_refptr<AudioTrackInterface>)
|
||||||
PROXY_METHOD1(bool, RemoveTrack, VideoTrackInterface*)
|
PROXY_METHOD1(bool, RemoveTrack, rtc::scoped_refptr<VideoTrackInterface>)
|
||||||
PROXY_METHOD1(void, RegisterObserver, ObserverInterface*)
|
PROXY_METHOD1(void, RegisterObserver, ObserverInterface*)
|
||||||
PROXY_METHOD1(void, UnregisterObserver, ObserverInterface*)
|
PROXY_METHOD1(void, UnregisterObserver, ObserverInterface*)
|
||||||
END_PROXY_MAP(MediaStream)
|
END_PROXY_MAP(MediaStream)
|
||||||
|
|||||||
@ -66,10 +66,10 @@ class MediaStreamTest : public ::testing::Test {
|
|||||||
ASSERT_TRUE(audio_track_.get() != NULL);
|
ASSERT_TRUE(audio_track_.get() != NULL);
|
||||||
EXPECT_EQ(MediaStreamTrackInterface::kLive, audio_track_->state());
|
EXPECT_EQ(MediaStreamTrackInterface::kLive, audio_track_->state());
|
||||||
|
|
||||||
EXPECT_TRUE(stream_->AddTrack(video_track_.get()));
|
EXPECT_TRUE(stream_->AddTrack(video_track_));
|
||||||
EXPECT_FALSE(stream_->AddTrack(video_track_.get()));
|
EXPECT_FALSE(stream_->AddTrack(video_track_));
|
||||||
EXPECT_TRUE(stream_->AddTrack(audio_track_.get()));
|
EXPECT_TRUE(stream_->AddTrack(audio_track_));
|
||||||
EXPECT_FALSE(stream_->AddTrack(audio_track_.get()));
|
EXPECT_FALSE(stream_->AddTrack(audio_track_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeTrack(MediaStreamTrackInterface* track) {
|
void ChangeTrack(MediaStreamTrackInterface* track) {
|
||||||
@ -122,19 +122,19 @@ TEST_F(MediaStreamTest, RemoveTrack) {
|
|||||||
|
|
||||||
EXPECT_CALL(observer, OnChanged()).Times(Exactly(2));
|
EXPECT_CALL(observer, OnChanged()).Times(Exactly(2));
|
||||||
|
|
||||||
EXPECT_TRUE(stream_->RemoveTrack(audio_track_.get()));
|
EXPECT_TRUE(stream_->RemoveTrack(audio_track_));
|
||||||
EXPECT_FALSE(stream_->RemoveTrack(audio_track_.get()));
|
EXPECT_FALSE(stream_->RemoveTrack(audio_track_));
|
||||||
EXPECT_EQ(0u, stream_->GetAudioTracks().size());
|
EXPECT_EQ(0u, stream_->GetAudioTracks().size());
|
||||||
EXPECT_EQ(0u, stream_->GetAudioTracks().size());
|
EXPECT_EQ(0u, stream_->GetAudioTracks().size());
|
||||||
|
|
||||||
EXPECT_TRUE(stream_->RemoveTrack(video_track_.get()));
|
EXPECT_TRUE(stream_->RemoveTrack(video_track_));
|
||||||
EXPECT_FALSE(stream_->RemoveTrack(video_track_.get()));
|
EXPECT_FALSE(stream_->RemoveTrack(video_track_));
|
||||||
|
|
||||||
EXPECT_EQ(0u, stream_->GetVideoTracks().size());
|
EXPECT_EQ(0u, stream_->GetVideoTracks().size());
|
||||||
EXPECT_EQ(0u, stream_->GetVideoTracks().size());
|
EXPECT_EQ(0u, stream_->GetVideoTracks().size());
|
||||||
|
|
||||||
EXPECT_FALSE(stream_->RemoveTrack(static_cast<AudioTrackInterface*>(NULL)));
|
EXPECT_FALSE(stream_->RemoveTrack(rtc::scoped_refptr<AudioTrackInterface>()));
|
||||||
EXPECT_FALSE(stream_->RemoveTrack(static_cast<VideoTrackInterface*>(NULL)));
|
EXPECT_FALSE(stream_->RemoveTrack(rtc::scoped_refptr<VideoTrackInterface>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MediaStreamTest, ChangeVideoTrack) {
|
TEST_F(MediaStreamTest, ChangeVideoTrack) {
|
||||||
|
|||||||
@ -549,14 +549,14 @@ rtc::scoped_refptr<StreamCollection> CreateStreamCollection(
|
|||||||
rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(
|
rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(
|
||||||
webrtc::AudioTrack::Create(kAudioTracks[i * tracks_per_stream + j],
|
webrtc::AudioTrack::Create(kAudioTracks[i * tracks_per_stream + j],
|
||||||
nullptr));
|
nullptr));
|
||||||
stream->AddTrack(audio_track.get());
|
stream->AddTrack(audio_track);
|
||||||
|
|
||||||
// Add a local video track.
|
// Add a local video track.
|
||||||
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
|
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
|
||||||
webrtc::VideoTrack::Create(kVideoTracks[i * tracks_per_stream + j],
|
webrtc::VideoTrack::Create(kVideoTracks[i * tracks_per_stream + j],
|
||||||
webrtc::FakeVideoTrackSource::Create(),
|
webrtc::FakeVideoTrackSource::Create(),
|
||||||
rtc::Thread::Current()));
|
rtc::Thread::Current()));
|
||||||
stream->AddTrack(video_track.get());
|
stream->AddTrack(video_track);
|
||||||
}
|
}
|
||||||
|
|
||||||
local_collection->AddStream(stream);
|
local_collection->AddStream(stream);
|
||||||
@ -830,7 +830,7 @@ class PeerConnectionInterfaceBaseTest : public ::testing::Test {
|
|||||||
void AddVideoStream(const std::string& label) {
|
void AddVideoStream(const std::string& label) {
|
||||||
rtc::scoped_refptr<MediaStreamInterface> stream(
|
rtc::scoped_refptr<MediaStreamInterface> stream(
|
||||||
pc_factory_->CreateLocalMediaStream(label));
|
pc_factory_->CreateLocalMediaStream(label));
|
||||||
stream->AddTrack(CreateVideoTrack(label + "v0").get());
|
stream->AddTrack(CreateVideoTrack(label + "v0"));
|
||||||
ASSERT_TRUE(pc_->AddStream(stream.get()));
|
ASSERT_TRUE(pc_->AddStream(stream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -849,7 +849,7 @@ class PeerConnectionInterfaceBaseTest : public ::testing::Test {
|
|||||||
void AddAudioStream(const std::string& label) {
|
void AddAudioStream(const std::string& label) {
|
||||||
rtc::scoped_refptr<MediaStreamInterface> stream(
|
rtc::scoped_refptr<MediaStreamInterface> stream(
|
||||||
pc_factory_->CreateLocalMediaStream(label));
|
pc_factory_->CreateLocalMediaStream(label));
|
||||||
stream->AddTrack(CreateAudioTrack(label + "a0").get());
|
stream->AddTrack(CreateAudioTrack(label + "a0"));
|
||||||
ASSERT_TRUE(pc_->AddStream(stream.get()));
|
ASSERT_TRUE(pc_->AddStream(stream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -859,8 +859,8 @@ class PeerConnectionInterfaceBaseTest : public ::testing::Test {
|
|||||||
// Create a local stream.
|
// Create a local stream.
|
||||||
rtc::scoped_refptr<MediaStreamInterface> stream(
|
rtc::scoped_refptr<MediaStreamInterface> stream(
|
||||||
pc_factory_->CreateLocalMediaStream(stream_id));
|
pc_factory_->CreateLocalMediaStream(stream_id));
|
||||||
stream->AddTrack(CreateAudioTrack(audio_track_label).get());
|
stream->AddTrack(CreateAudioTrack(audio_track_label));
|
||||||
stream->AddTrack(CreateVideoTrack(video_track_label).get());
|
stream->AddTrack(CreateVideoTrack(video_track_label));
|
||||||
ASSERT_TRUE(pc_->AddStream(stream.get()));
|
ASSERT_TRUE(pc_->AddStream(stream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1143,7 +1143,7 @@ class PeerConnectionInterfaceBaseTest : public ::testing::Test {
|
|||||||
MediaStreamInterface* stream) {
|
MediaStreamInterface* stream) {
|
||||||
rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(
|
rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(
|
||||||
webrtc::AudioTrack::Create(track_id, nullptr));
|
webrtc::AudioTrack::Create(track_id, nullptr));
|
||||||
ASSERT_TRUE(stream->AddTrack(audio_track.get()));
|
ASSERT_TRUE(stream->AddTrack(audio_track));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddVideoTrack(const std::string& track_id,
|
void AddVideoTrack(const std::string& track_id,
|
||||||
@ -1152,7 +1152,7 @@ class PeerConnectionInterfaceBaseTest : public ::testing::Test {
|
|||||||
webrtc::VideoTrack::Create(track_id,
|
webrtc::VideoTrack::Create(track_id,
|
||||||
webrtc::FakeVideoTrackSource::Create(),
|
webrtc::FakeVideoTrackSource::Create(),
|
||||||
rtc::Thread::Current()));
|
rtc::Thread::Current()));
|
||||||
ASSERT_TRUE(stream->AddTrack(video_track.get()));
|
ASSERT_TRUE(stream->AddTrack(video_track));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<SessionDescriptionInterface> CreateOfferWithOneAudioTrack() {
|
std::unique_ptr<SessionDescriptionInterface> CreateOfferWithOneAudioTrack() {
|
||||||
@ -1463,7 +1463,7 @@ TEST_F(PeerConnectionInterfaceTestPlanB, AddStreams) {
|
|||||||
rtc::scoped_refptr<AudioTrackInterface> audio_track(
|
rtc::scoped_refptr<AudioTrackInterface> audio_track(
|
||||||
pc_factory_->CreateAudioTrack(
|
pc_factory_->CreateAudioTrack(
|
||||||
kStreamId3, static_cast<AudioSourceInterface*>(nullptr)));
|
kStreamId3, static_cast<AudioSourceInterface*>(nullptr)));
|
||||||
stream->AddTrack(audio_track.get());
|
stream->AddTrack(audio_track);
|
||||||
EXPECT_TRUE(pc_->AddStream(stream.get()));
|
EXPECT_TRUE(pc_->AddStream(stream.get()));
|
||||||
EXPECT_EQ(3u, pc_->local_streams()->count());
|
EXPECT_EQ(3u, pc_->local_streams()->count());
|
||||||
|
|
||||||
@ -1806,7 +1806,7 @@ TEST_F(PeerConnectionInterfaceTestPlanB, AddTrackAfterAddStream) {
|
|||||||
// Add video track to the audio-only stream.
|
// Add video track to the audio-only stream.
|
||||||
rtc::scoped_refptr<VideoTrackInterface> video_track(
|
rtc::scoped_refptr<VideoTrackInterface> video_track(
|
||||||
CreateVideoTrack("video_label"));
|
CreateVideoTrack("video_label"));
|
||||||
stream->AddTrack(video_track.get());
|
stream->AddTrack(video_track);
|
||||||
|
|
||||||
std::unique_ptr<SessionDescriptionInterface> offer;
|
std::unique_ptr<SessionDescriptionInterface> offer;
|
||||||
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
|
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
|
||||||
@ -1827,7 +1827,7 @@ TEST_F(PeerConnectionInterfaceTestPlanB, RemoveTrackAfterAddStream) {
|
|||||||
MediaStreamInterface* stream = pc_->local_streams()->at(0);
|
MediaStreamInterface* stream = pc_->local_streams()->at(0);
|
||||||
|
|
||||||
// Remove the video track.
|
// Remove the video track.
|
||||||
stream->RemoveTrack(stream->GetVideoTracks()[0].get());
|
stream->RemoveTrack(stream->GetVideoTracks()[0]);
|
||||||
|
|
||||||
std::unique_ptr<SessionDescriptionInterface> offer;
|
std::unique_ptr<SessionDescriptionInterface> offer;
|
||||||
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
|
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
|
||||||
@ -2614,8 +2614,8 @@ TEST_F(PeerConnectionInterfaceTestPlanB, RemoveTrackThenRejectMediaContent) {
|
|||||||
CreatePeerConnection(config);
|
CreatePeerConnection(config);
|
||||||
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
|
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
|
||||||
MediaStreamInterface* remote_stream = observer_.remote_streams()->at(0);
|
MediaStreamInterface* remote_stream = observer_.remote_streams()->at(0);
|
||||||
remote_stream->RemoveTrack(remote_stream->GetVideoTracks()[0].get());
|
remote_stream->RemoveTrack(remote_stream->GetVideoTracks()[0]);
|
||||||
remote_stream->RemoveTrack(remote_stream->GetAudioTracks()[0].get());
|
remote_stream->RemoveTrack(remote_stream->GetAudioTracks()[0]);
|
||||||
|
|
||||||
std::unique_ptr<SessionDescriptionInterface> local_answer(
|
std::unique_ptr<SessionDescriptionInterface> local_answer(
|
||||||
webrtc::CreateSessionDescription(SdpType::kAnswer,
|
webrtc::CreateSessionDescription(SdpType::kAnswer,
|
||||||
@ -2699,8 +2699,8 @@ TEST_F(PeerConnectionInterfaceTestPlanB, RemoveAlreadyGoneRemoteStream) {
|
|||||||
CreatePeerConnection(config);
|
CreatePeerConnection(config);
|
||||||
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
|
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
|
||||||
MediaStreamInterface* remote_stream = observer_.remote_streams()->at(0);
|
MediaStreamInterface* remote_stream = observer_.remote_streams()->at(0);
|
||||||
remote_stream->RemoveTrack(remote_stream->GetAudioTracks()[0].get());
|
remote_stream->RemoveTrack(remote_stream->GetAudioTracks()[0]);
|
||||||
remote_stream->RemoveTrack(remote_stream->GetVideoTracks()[0].get());
|
remote_stream->RemoveTrack(remote_stream->GetVideoTracks()[0]);
|
||||||
|
|
||||||
CreateAndSetRemoteOffer(kSdpStringWithoutStreams);
|
CreateAndSetRemoteOffer(kSdpStringWithoutStreams);
|
||||||
|
|
||||||
@ -2969,8 +2969,8 @@ TEST_F(PeerConnectionInterfaceTestPlanB,
|
|||||||
// Add a new MediaStream but with the same tracks as in the first stream.
|
// Add a new MediaStream but with the same tracks as in the first stream.
|
||||||
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream_1(
|
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream_1(
|
||||||
webrtc::MediaStream::Create(kStreams[1]));
|
webrtc::MediaStream::Create(kStreams[1]));
|
||||||
stream_1->AddTrack(stream_collection->at(0)->GetVideoTracks()[0].get());
|
stream_1->AddTrack(stream_collection->at(0)->GetVideoTracks()[0]);
|
||||||
stream_1->AddTrack(stream_collection->at(0)->GetAudioTracks()[0].get());
|
stream_1->AddTrack(stream_collection->at(0)->GetAudioTracks()[0]);
|
||||||
pc_->AddStream(stream_1.get());
|
pc_->AddStream(stream_1.get());
|
||||||
|
|
||||||
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
|
ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
|
||||||
@ -3584,22 +3584,22 @@ TEST_F(PeerConnectionInterfaceTestPlanB,
|
|||||||
CreateAudioTrack("audio_track"));
|
CreateAudioTrack("audio_track"));
|
||||||
rtc::scoped_refptr<VideoTrackInterface> video_track(
|
rtc::scoped_refptr<VideoTrackInterface> video_track(
|
||||||
CreateVideoTrack("video_track"));
|
CreateVideoTrack("video_track"));
|
||||||
stream->AddTrack(audio_track.get());
|
stream->AddTrack(audio_track);
|
||||||
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
||||||
observer_.renegotiation_needed_ = false;
|
observer_.renegotiation_needed_ = false;
|
||||||
|
|
||||||
CreateOfferReceiveAnswer();
|
CreateOfferReceiveAnswer();
|
||||||
stream->AddTrack(video_track.get());
|
stream->AddTrack(video_track);
|
||||||
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
||||||
observer_.renegotiation_needed_ = false;
|
observer_.renegotiation_needed_ = false;
|
||||||
|
|
||||||
CreateOfferReceiveAnswer();
|
CreateOfferReceiveAnswer();
|
||||||
stream->RemoveTrack(audio_track.get());
|
stream->RemoveTrack(audio_track);
|
||||||
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
||||||
observer_.renegotiation_needed_ = false;
|
observer_.renegotiation_needed_ = false;
|
||||||
|
|
||||||
CreateOfferReceiveAnswer();
|
CreateOfferReceiveAnswer();
|
||||||
stream->RemoveTrack(video_track.get());
|
stream->RemoveTrack(video_track);
|
||||||
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
||||||
observer_.renegotiation_needed_ = false;
|
observer_.renegotiation_needed_ = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -476,13 +476,15 @@ class RTCStatsCollectorWrapper {
|
|||||||
track = CreateFakeTrack(media_type, track_id,
|
track = CreateFakeTrack(media_type, track_id,
|
||||||
MediaStreamTrackInterface::kLive);
|
MediaStreamTrackInterface::kLive);
|
||||||
if (add_stream) {
|
if (add_stream) {
|
||||||
local_stream->AddTrack(static_cast<AudioTrackInterface*>(track.get()));
|
local_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
|
static_cast<AudioTrackInterface*>(track.get())));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
track = CreateFakeTrack(media_type, track_id,
|
track = CreateFakeTrack(media_type, track_id,
|
||||||
MediaStreamTrackInterface::kLive);
|
MediaStreamTrackInterface::kLive);
|
||||||
if (add_stream) {
|
if (add_stream) {
|
||||||
local_stream->AddTrack(static_cast<VideoTrackInterface*>(track.get()));
|
local_stream->AddTrack(rtc::scoped_refptr<VideoTrackInterface>(
|
||||||
|
static_cast<VideoTrackInterface*>(track.get())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -507,11 +509,13 @@ class RTCStatsCollectorWrapper {
|
|||||||
if (media_type == cricket::MEDIA_TYPE_AUDIO) {
|
if (media_type == cricket::MEDIA_TYPE_AUDIO) {
|
||||||
track = CreateFakeTrack(media_type, track_id,
|
track = CreateFakeTrack(media_type, track_id,
|
||||||
MediaStreamTrackInterface::kLive);
|
MediaStreamTrackInterface::kLive);
|
||||||
remote_stream->AddTrack(static_cast<AudioTrackInterface*>(track.get()));
|
remote_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
|
static_cast<AudioTrackInterface*>(track.get())));
|
||||||
} else {
|
} else {
|
||||||
track = CreateFakeTrack(media_type, track_id,
|
track = CreateFakeTrack(media_type, track_id,
|
||||||
MediaStreamTrackInterface::kLive);
|
MediaStreamTrackInterface::kLive);
|
||||||
remote_stream->AddTrack(static_cast<VideoTrackInterface*>(track.get()));
|
remote_stream->AddTrack(rtc::scoped_refptr<VideoTrackInterface>(
|
||||||
|
static_cast<VideoTrackInterface*>(track.get())));
|
||||||
}
|
}
|
||||||
|
|
||||||
rtc::scoped_refptr<MockRtpReceiverInternal> receiver =
|
rtc::scoped_refptr<MockRtpReceiverInternal> receiver =
|
||||||
@ -1732,8 +1736,8 @@ TEST_F(RTCStatsCollectorTest,
|
|||||||
rtc::scoped_refptr<MediaStreamTrackInterface> local_audio_track =
|
rtc::scoped_refptr<MediaStreamTrackInterface> local_audio_track =
|
||||||
CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID",
|
CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID",
|
||||||
MediaStreamTrackInterface::kEnded);
|
MediaStreamTrackInterface::kEnded);
|
||||||
local_stream->AddTrack(
|
local_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
static_cast<AudioTrackInterface*>(local_audio_track.get()));
|
static_cast<AudioTrackInterface*>(local_audio_track.get())));
|
||||||
|
|
||||||
cricket::VoiceSenderInfo voice_sender_info_ssrc1;
|
cricket::VoiceSenderInfo voice_sender_info_ssrc1;
|
||||||
voice_sender_info_ssrc1.local_stats.push_back(cricket::SsrcSenderInfo());
|
voice_sender_info_ssrc1.local_stats.push_back(cricket::SsrcSenderInfo());
|
||||||
@ -1788,8 +1792,8 @@ TEST_F(RTCStatsCollectorTest,
|
|||||||
rtc::scoped_refptr<MediaStreamTrackInterface> remote_audio_track =
|
rtc::scoped_refptr<MediaStreamTrackInterface> remote_audio_track =
|
||||||
CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID",
|
CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID",
|
||||||
MediaStreamTrackInterface::kLive);
|
MediaStreamTrackInterface::kLive);
|
||||||
remote_stream->AddTrack(
|
remote_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
static_cast<AudioTrackInterface*>(remote_audio_track.get()));
|
static_cast<AudioTrackInterface*>(remote_audio_track.get())));
|
||||||
|
|
||||||
cricket::VoiceReceiverInfo voice_receiver_info;
|
cricket::VoiceReceiverInfo voice_receiver_info;
|
||||||
voice_receiver_info.local_stats.push_back(cricket::SsrcReceiverInfo());
|
voice_receiver_info.local_stats.push_back(cricket::SsrcReceiverInfo());
|
||||||
@ -1872,8 +1876,8 @@ TEST_F(RTCStatsCollectorTest,
|
|||||||
rtc::scoped_refptr<MediaStreamTrackInterface> local_video_track =
|
rtc::scoped_refptr<MediaStreamTrackInterface> local_video_track =
|
||||||
CreateFakeTrack(cricket::MEDIA_TYPE_VIDEO, "LocalVideoTrackID",
|
CreateFakeTrack(cricket::MEDIA_TYPE_VIDEO, "LocalVideoTrackID",
|
||||||
MediaStreamTrackInterface::kLive);
|
MediaStreamTrackInterface::kLive);
|
||||||
local_stream->AddTrack(
|
local_stream->AddTrack(rtc::scoped_refptr<VideoTrackInterface>(
|
||||||
static_cast<VideoTrackInterface*>(local_video_track.get()));
|
static_cast<VideoTrackInterface*>(local_video_track.get())));
|
||||||
|
|
||||||
cricket::VideoSenderInfo video_sender_info_ssrc1;
|
cricket::VideoSenderInfo video_sender_info_ssrc1;
|
||||||
video_sender_info_ssrc1.local_stats.push_back(cricket::SsrcSenderInfo());
|
video_sender_info_ssrc1.local_stats.push_back(cricket::SsrcSenderInfo());
|
||||||
@ -1935,8 +1939,8 @@ TEST_F(RTCStatsCollectorTest,
|
|||||||
rtc::scoped_refptr<MediaStreamTrackInterface> remote_video_track_ssrc3 =
|
rtc::scoped_refptr<MediaStreamTrackInterface> remote_video_track_ssrc3 =
|
||||||
CreateFakeTrack(cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID3",
|
CreateFakeTrack(cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID3",
|
||||||
MediaStreamTrackInterface::kEnded);
|
MediaStreamTrackInterface::kEnded);
|
||||||
remote_stream->AddTrack(
|
remote_stream->AddTrack(rtc::scoped_refptr<VideoTrackInterface>(
|
||||||
static_cast<VideoTrackInterface*>(remote_video_track_ssrc3.get()));
|
static_cast<VideoTrackInterface*>(remote_video_track_ssrc3.get())));
|
||||||
|
|
||||||
cricket::VideoReceiverInfo video_receiver_info_ssrc3;
|
cricket::VideoReceiverInfo video_receiver_info_ssrc3;
|
||||||
video_receiver_info_ssrc3.local_stats.push_back(cricket::SsrcReceiverInfo());
|
video_receiver_info_ssrc3.local_stats.push_back(cricket::SsrcReceiverInfo());
|
||||||
@ -3186,8 +3190,8 @@ TEST_F(RTCStatsCollectorTest, CollectEchoReturnLossFromTrackAudioProcessor) {
|
|||||||
CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID",
|
CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID",
|
||||||
MediaStreamTrackInterface::kEnded,
|
MediaStreamTrackInterface::kEnded,
|
||||||
/*create_fake_audio_processor=*/true);
|
/*create_fake_audio_processor=*/true);
|
||||||
local_stream->AddTrack(
|
local_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
static_cast<AudioTrackInterface*>(local_audio_track.get()));
|
static_cast<AudioTrackInterface*>(local_audio_track.get())));
|
||||||
|
|
||||||
cricket::VoiceSenderInfo voice_sender_info_ssrc1;
|
cricket::VoiceSenderInfo voice_sender_info_ssrc1;
|
||||||
voice_sender_info_ssrc1.local_stats.push_back(cricket::SsrcSenderInfo());
|
voice_sender_info_ssrc1.local_stats.push_back(cricket::SsrcSenderInfo());
|
||||||
|
|||||||
@ -210,7 +210,7 @@ class RtpSenderReceiverTest
|
|||||||
FakeVideoTrackSource::Create(is_screencast));
|
FakeVideoTrackSource::Create(is_screencast));
|
||||||
video_track_ =
|
video_track_ =
|
||||||
VideoTrack::Create(kVideoTrackId, source, rtc::Thread::Current());
|
VideoTrack::Create(kVideoTrackId, source, rtc::Thread::Current());
|
||||||
EXPECT_TRUE(local_stream_->AddTrack(video_track_.get()));
|
EXPECT_TRUE(local_stream_->AddTrack(video_track_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateAudioRtpSender() { CreateAudioRtpSender(nullptr); }
|
void CreateAudioRtpSender() { CreateAudioRtpSender(nullptr); }
|
||||||
@ -218,7 +218,7 @@ class RtpSenderReceiverTest
|
|||||||
void CreateAudioRtpSender(
|
void CreateAudioRtpSender(
|
||||||
const rtc::scoped_refptr<LocalAudioSource>& source) {
|
const rtc::scoped_refptr<LocalAudioSource>& source) {
|
||||||
audio_track_ = AudioTrack::Create(kAudioTrackId, source);
|
audio_track_ = AudioTrack::Create(kAudioTrackId, source);
|
||||||
EXPECT_TRUE(local_stream_->AddTrack(audio_track_.get()));
|
EXPECT_TRUE(local_stream_->AddTrack(audio_track_));
|
||||||
std::unique_ptr<MockSetStreamsObserver> set_streams_observer =
|
std::unique_ptr<MockSetStreamsObserver> set_streams_observer =
|
||||||
std::make_unique<MockSetStreamsObserver>();
|
std::make_unique<MockSetStreamsObserver>();
|
||||||
audio_rtp_sender_ =
|
audio_rtp_sender_ =
|
||||||
@ -897,7 +897,7 @@ TEST_F(RtpSenderReceiverTest, AudioSenderCanSetParametersBeforeNegotiation) {
|
|||||||
|
|
||||||
TEST_F(RtpSenderReceiverTest, AudioSenderInitParametersMovedAfterNegotiation) {
|
TEST_F(RtpSenderReceiverTest, AudioSenderInitParametersMovedAfterNegotiation) {
|
||||||
audio_track_ = AudioTrack::Create(kAudioTrackId, nullptr);
|
audio_track_ = AudioTrack::Create(kAudioTrackId, nullptr);
|
||||||
EXPECT_TRUE(local_stream_->AddTrack(audio_track_.get()));
|
EXPECT_TRUE(local_stream_->AddTrack(audio_track_));
|
||||||
|
|
||||||
std::unique_ptr<MockSetStreamsObserver> set_streams_observer =
|
std::unique_ptr<MockSetStreamsObserver> set_streams_observer =
|
||||||
std::make_unique<MockSetStreamsObserver>();
|
std::make_unique<MockSetStreamsObserver>();
|
||||||
|
|||||||
@ -553,7 +553,7 @@ void RtpTransmissionManager::OnRemoteSenderRemoved(
|
|||||||
rtc::scoped_refptr<AudioTrackInterface> audio_track =
|
rtc::scoped_refptr<AudioTrackInterface> audio_track =
|
||||||
stream->FindAudioTrack(sender_info.sender_id);
|
stream->FindAudioTrack(sender_info.sender_id);
|
||||||
if (audio_track) {
|
if (audio_track) {
|
||||||
stream->RemoveTrack(audio_track.get());
|
stream->RemoveTrack(audio_track);
|
||||||
}
|
}
|
||||||
} else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
|
} else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
|
||||||
// Stopping or destroying a VideoRtpReceiver will end the
|
// Stopping or destroying a VideoRtpReceiver will end the
|
||||||
@ -564,7 +564,7 @@ void RtpTransmissionManager::OnRemoteSenderRemoved(
|
|||||||
if (video_track) {
|
if (video_track) {
|
||||||
// There's no guarantee the track is still available, e.g. the track may
|
// There's no guarantee the track is still available, e.g. the track may
|
||||||
// have been removed from the stream by an application.
|
// have been removed from the stream by an application.
|
||||||
stream->RemoveTrack(video_track.get());
|
stream->RemoveTrack(video_track);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
RTC_DCHECK_NOTREACHED() << "Invalid media type";
|
RTC_DCHECK_NOTREACHED() << "Invalid media type";
|
||||||
|
|||||||
@ -774,32 +774,32 @@ class StatsCollectorTrackTest : public StatsCollectorTest,
|
|||||||
// stream, which is created if necessary.
|
// stream, which is created if necessary.
|
||||||
void AddOutgoingVideoTrack(FakePeerConnectionForStats* pc,
|
void AddOutgoingVideoTrack(FakePeerConnectionForStats* pc,
|
||||||
StatsCollectorForTest* stats) {
|
StatsCollectorForTest* stats) {
|
||||||
track_ = VideoTrack::Create(kLocalTrackId, FakeVideoTrackSource::Create(),
|
video_track_ = VideoTrack::Create(
|
||||||
rtc::Thread::Current());
|
kLocalTrackId, FakeVideoTrackSource::Create(), rtc::Thread::Current());
|
||||||
if (GetParam()) {
|
if (GetParam()) {
|
||||||
if (!stream_)
|
if (!stream_)
|
||||||
stream_ = MediaStream::Create("streamid");
|
stream_ = MediaStream::Create("streamid");
|
||||||
stream_->AddTrack(track_.get());
|
stream_->AddTrack(video_track());
|
||||||
stats->AddStream(stream_.get());
|
stats->AddStream(stream_.get());
|
||||||
} else {
|
} else {
|
||||||
stats->AddTrack(track_.get());
|
stats->AddTrack(video_track_.get());
|
||||||
}
|
}
|
||||||
pc->AddSender(CreateMockSender(track_, kSsrcOfTrack));
|
pc->AddSender(CreateMockSender(video_track_, kSsrcOfTrack));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds a incoming video track with a given SSRC into the stats.
|
// Adds a incoming video track with a given SSRC into the stats.
|
||||||
void AddIncomingVideoTrack(FakePeerConnectionForStats* pc,
|
void AddIncomingVideoTrack(FakePeerConnectionForStats* pc,
|
||||||
StatsCollectorForTest* stats) {
|
StatsCollectorForTest* stats) {
|
||||||
track_ = VideoTrack::Create(kRemoteTrackId, FakeVideoTrackSource::Create(),
|
video_track_ = VideoTrack::Create(
|
||||||
rtc::Thread::Current());
|
kRemoteTrackId, FakeVideoTrackSource::Create(), rtc::Thread::Current());
|
||||||
if (GetParam()) {
|
if (GetParam()) {
|
||||||
stream_ = MediaStream::Create("streamid");
|
stream_ = MediaStream::Create("streamid");
|
||||||
stream_->AddTrack(track_.get());
|
stream_->AddTrack(video_track());
|
||||||
stats->AddStream(stream_.get());
|
stats->AddStream(stream_.get());
|
||||||
} else {
|
} else {
|
||||||
stats->AddTrack(track_.get());
|
stats->AddTrack(video_track_.get());
|
||||||
}
|
}
|
||||||
pc->AddReceiver(CreateMockReceiver(track_, kSsrcOfTrack));
|
pc->AddReceiver(CreateMockReceiver(video_track_, kSsrcOfTrack));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds a outgoing audio track with a given SSRC into the stats,
|
// Adds a outgoing audio track with a given SSRC into the stats,
|
||||||
@ -813,7 +813,7 @@ class StatsCollectorTrackTest : public StatsCollectorTest,
|
|||||||
if (GetParam()) {
|
if (GetParam()) {
|
||||||
if (!stream_)
|
if (!stream_)
|
||||||
stream_ = MediaStream::Create("streamid");
|
stream_ = MediaStream::Create("streamid");
|
||||||
stream_->AddTrack(audio_track_.get());
|
stream_->AddTrack(audio_track());
|
||||||
stats->AddStream(stream_.get());
|
stats->AddStream(stream_.get());
|
||||||
} else {
|
} else {
|
||||||
stats->AddTrack(audio_track_.get());
|
stats->AddTrack(audio_track_.get());
|
||||||
@ -828,7 +828,7 @@ class StatsCollectorTrackTest : public StatsCollectorTest,
|
|||||||
if (GetParam()) {
|
if (GetParam()) {
|
||||||
if (stream_ == nullptr)
|
if (stream_ == nullptr)
|
||||||
stream_ = MediaStream::Create("streamid");
|
stream_ = MediaStream::Create("streamid");
|
||||||
stream_->AddTrack(audio_track_.get());
|
stream_->AddTrack(audio_track());
|
||||||
stats->AddStream(stream_.get());
|
stats->AddStream(stream_.get());
|
||||||
} else {
|
} else {
|
||||||
stats->AddTrack(audio_track_.get());
|
stats->AddTrack(audio_track_.get());
|
||||||
@ -836,8 +836,11 @@ class StatsCollectorTrackTest : public StatsCollectorTest,
|
|||||||
pc->AddReceiver(CreateMockReceiver(audio_track_, kSsrcOfTrack));
|
pc->AddReceiver(CreateMockReceiver(audio_track_, kSsrcOfTrack));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtc::scoped_refptr<AudioTrackInterface> audio_track() { return audio_track_; }
|
||||||
|
rtc::scoped_refptr<VideoTrackInterface> video_track() { return video_track_; }
|
||||||
|
|
||||||
rtc::scoped_refptr<MediaStream> stream_;
|
rtc::scoped_refptr<MediaStream> stream_;
|
||||||
rtc::scoped_refptr<VideoTrack> track_;
|
rtc::scoped_refptr<VideoTrack> video_track_;
|
||||||
rtc::scoped_refptr<FakeAudioTrack> audio_track_;
|
rtc::scoped_refptr<FakeAudioTrack> audio_track_;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1111,7 +1114,7 @@ TEST_P(StatsCollectorTrackTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) {
|
|||||||
|
|
||||||
// Get report for the specific `track`.
|
// Get report for the specific `track`.
|
||||||
reports.clear();
|
reports.clear();
|
||||||
stats->GetStats(track_.get(), &reports);
|
stats->GetStats(video_track_.get(), &reports);
|
||||||
// `reports` should contain at least one session report, one track report,
|
// `reports` should contain at least one session report, one track report,
|
||||||
// and one ssrc report.
|
// and one ssrc report.
|
||||||
EXPECT_LE(3u, reports.size());
|
EXPECT_LE(3u, reports.size());
|
||||||
@ -1480,7 +1483,7 @@ TEST_P(StatsCollectorTrackTest, FilterOutNegativeInitialValues) {
|
|||||||
stream_ = MediaStream::Create("streamid");
|
stream_ = MediaStream::Create("streamid");
|
||||||
auto local_track =
|
auto local_track =
|
||||||
rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kLocalTrackId);
|
rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kLocalTrackId);
|
||||||
stream_->AddTrack(local_track.get());
|
stream_->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(local_track.get()));
|
||||||
pc->AddSender(CreateMockSender(local_track, kSsrcOfTrack));
|
pc->AddSender(CreateMockSender(local_track, kSsrcOfTrack));
|
||||||
if (GetParam()) {
|
if (GetParam()) {
|
||||||
stats->AddStream(stream_.get());
|
stats->AddStream(stream_.get());
|
||||||
@ -1490,9 +1493,9 @@ TEST_P(StatsCollectorTrackTest, FilterOutNegativeInitialValues) {
|
|||||||
// Create a remote stream with a remote audio track and adds it to the stats.
|
// Create a remote stream with a remote audio track and adds it to the stats.
|
||||||
rtc::scoped_refptr<MediaStream> remote_stream(
|
rtc::scoped_refptr<MediaStream> remote_stream(
|
||||||
MediaStream::Create("remotestreamid"));
|
MediaStream::Create("remotestreamid"));
|
||||||
auto remote_track =
|
rtc::scoped_refptr<AudioTrackInterface> remote_track =
|
||||||
rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kRemoteTrackId);
|
rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kRemoteTrackId);
|
||||||
remote_stream->AddTrack(remote_track.get());
|
remote_stream->AddTrack(remote_track);
|
||||||
pc->AddReceiver(CreateMockReceiver(remote_track, kSsrcOfTrack));
|
pc->AddReceiver(CreateMockReceiver(remote_track, kSsrcOfTrack));
|
||||||
if (GetParam()) {
|
if (GetParam()) {
|
||||||
stats->AddStream(remote_stream.get());
|
stats->AddStream(remote_stream.get());
|
||||||
@ -1661,9 +1664,10 @@ TEST_P(StatsCollectorTrackTest, LocalAndRemoteTracksWithSameSsrc) {
|
|||||||
// Create a remote stream with a remote audio track and adds it to the stats.
|
// Create a remote stream with a remote audio track and adds it to the stats.
|
||||||
rtc::scoped_refptr<MediaStream> remote_stream(
|
rtc::scoped_refptr<MediaStream> remote_stream(
|
||||||
MediaStream::Create("remotestreamid"));
|
MediaStream::Create("remotestreamid"));
|
||||||
auto remote_track = rtc::make_ref_counted<FakeAudioTrack>(kRemoteTrackId);
|
rtc::scoped_refptr<AudioTrackInterface> remote_track =
|
||||||
|
rtc::make_ref_counted<FakeAudioTrack>(kRemoteTrackId);
|
||||||
pc->AddReceiver(CreateMockReceiver(remote_track, kSsrcOfTrack));
|
pc->AddReceiver(CreateMockReceiver(remote_track, kSsrcOfTrack));
|
||||||
remote_stream->AddTrack(remote_track.get());
|
remote_stream->AddTrack(remote_track);
|
||||||
stats->AddStream(remote_stream.get());
|
stats->AddStream(remote_stream.get());
|
||||||
|
|
||||||
VoiceSenderInfo voice_sender_info;
|
VoiceSenderInfo voice_sender_info;
|
||||||
@ -1745,7 +1749,7 @@ TEST_P(StatsCollectorTrackTest, TwoLocalTracksWithSameSsrc) {
|
|||||||
VerifyAudioTrackStats(audio_track_.get(), stats.get(), voice_info, &reports);
|
VerifyAudioTrackStats(audio_track_.get(), stats.get(), voice_info, &reports);
|
||||||
|
|
||||||
// Remove the previous audio track from the stream.
|
// Remove the previous audio track from the stream.
|
||||||
stream_->RemoveTrack(audio_track_.get());
|
stream_->RemoveTrack(audio_track());
|
||||||
stats->RemoveLocalAudioTrack(audio_track_.get(), kSsrcOfTrack);
|
stats->RemoveLocalAudioTrack(audio_track_.get(), kSsrcOfTrack);
|
||||||
pc->RemoveSender(sender);
|
pc->RemoveSender(sender);
|
||||||
|
|
||||||
@ -1753,7 +1757,8 @@ TEST_P(StatsCollectorTrackTest, TwoLocalTracksWithSameSsrc) {
|
|||||||
static const std::string kNewTrackId = "new_track_id";
|
static const std::string kNewTrackId = "new_track_id";
|
||||||
auto new_audio_track = rtc::make_ref_counted<FakeAudioTrack>(kNewTrackId);
|
auto new_audio_track = rtc::make_ref_counted<FakeAudioTrack>(kNewTrackId);
|
||||||
pc->AddSender(CreateMockSender(new_audio_track, kSsrcOfTrack));
|
pc->AddSender(CreateMockSender(new_audio_track, kSsrcOfTrack));
|
||||||
stream_->AddTrack(new_audio_track.get());
|
stream_->AddTrack(
|
||||||
|
rtc::scoped_refptr<AudioTrackInterface>(new_audio_track.get()));
|
||||||
|
|
||||||
stats->AddLocalAudioTrack(new_audio_track.get(), kSsrcOfTrack);
|
stats->AddLocalAudioTrack(new_audio_track.get(), kSsrcOfTrack);
|
||||||
stats->InvalidateCache();
|
stats->InvalidateCache();
|
||||||
|
|||||||
@ -334,7 +334,7 @@ PeerConnectionTestWrapper::GetUserMedia(
|
|||||||
rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(
|
rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(
|
||||||
peer_connection_factory_->CreateAudioTrack(kAudioTrackLabelBase,
|
peer_connection_factory_->CreateAudioTrack(kAudioTrackLabelBase,
|
||||||
source.get()));
|
source.get()));
|
||||||
stream->AddTrack(audio_track.get());
|
stream->AddTrack(audio_track);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (video) {
|
if (video) {
|
||||||
@ -351,7 +351,7 @@ PeerConnectionTestWrapper::GetUserMedia(
|
|||||||
peer_connection_factory_->CreateVideoTrack(videotrack_label,
|
peer_connection_factory_->CreateVideoTrack(videotrack_label,
|
||||||
source.get()));
|
source.get()));
|
||||||
|
|
||||||
stream->AddTrack(video_track.get());
|
stream->AddTrack(video_track);
|
||||||
}
|
}
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -221,7 +221,7 @@ void VideoRtpReceiver::SetStreams(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (removed) {
|
if (removed) {
|
||||||
existing_stream->RemoveTrack(track_.get());
|
existing_stream->RemoveTrack(video_track());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add remote track to any streams that are new.
|
// Add remote track to any streams that are new.
|
||||||
@ -235,7 +235,7 @@ void VideoRtpReceiver::SetStreams(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (added) {
|
if (added) {
|
||||||
stream->AddTrack(track_.get());
|
stream->AddTrack(video_track());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
streams_ = streams;
|
streams_ = streams;
|
||||||
|
|||||||
@ -113,7 +113,8 @@ static jboolean JNI_MediaStream_AddAudioTrackToNativeStream(
|
|||||||
jlong pointer,
|
jlong pointer,
|
||||||
jlong j_audio_track_pointer) {
|
jlong j_audio_track_pointer) {
|
||||||
return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
|
return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
|
||||||
reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer));
|
rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
|
reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean JNI_MediaStream_AddVideoTrackToNativeStream(
|
static jboolean JNI_MediaStream_AddVideoTrackToNativeStream(
|
||||||
@ -121,21 +122,24 @@ static jboolean JNI_MediaStream_AddVideoTrackToNativeStream(
|
|||||||
jlong pointer,
|
jlong pointer,
|
||||||
jlong j_video_track_pointer) {
|
jlong j_video_track_pointer) {
|
||||||
return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
|
return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
|
||||||
reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer));
|
rtc::scoped_refptr<VideoTrackInterface>(
|
||||||
|
reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean JNI_MediaStream_RemoveAudioTrack(JNIEnv* jni,
|
static jboolean JNI_MediaStream_RemoveAudioTrack(JNIEnv* jni,
|
||||||
jlong pointer,
|
jlong pointer,
|
||||||
jlong j_audio_track_pointer) {
|
jlong j_audio_track_pointer) {
|
||||||
return reinterpret_cast<MediaStreamInterface*>(pointer)->RemoveTrack(
|
return reinterpret_cast<MediaStreamInterface*>(pointer)->RemoveTrack(
|
||||||
reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer));
|
rtc::scoped_refptr<AudioTrackInterface>(
|
||||||
|
reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean JNI_MediaStream_RemoveVideoTrack(JNIEnv* jni,
|
static jboolean JNI_MediaStream_RemoveVideoTrack(JNIEnv* jni,
|
||||||
jlong pointer,
|
jlong pointer,
|
||||||
jlong j_video_track_pointer) {
|
jlong j_video_track_pointer) {
|
||||||
return reinterpret_cast<MediaStreamInterface*>(pointer)->RemoveTrack(
|
return reinterpret_cast<MediaStreamInterface*>(pointer)->RemoveTrack(
|
||||||
reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer));
|
rtc::scoped_refptr<VideoTrackInterface>(
|
||||||
|
reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ScopedJavaLocalRef<jstring> JNI_MediaStream_GetId(JNIEnv* jni,
|
static ScopedJavaLocalRef<jstring> JNI_MediaStream_GetId(JNIEnv* jni,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user