Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: webrtc/api/rtpsenderreceiver_unittest.cc

Issue 2514883002: Create //webrtc/api:libjingle_peerconnection_api + refactorings. (Closed)
Patch Set: Rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/rtpsenderinterface.h ('k') | webrtc/api/sctputils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/rtpsenderreceiver_unittest.cc
diff --git a/webrtc/api/rtpsenderreceiver_unittest.cc b/webrtc/api/rtpsenderreceiver_unittest.cc
deleted file mode 100644
index fc1b748034cd45ab5d1506b449870ec4216f9ec3..0000000000000000000000000000000000000000
--- a/webrtc/api/rtpsenderreceiver_unittest.cc
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- * Copyright 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "webrtc/api/audiotrack.h"
-#include "webrtc/api/fakemediacontroller.h"
-#include "webrtc/api/localaudiosource.h"
-#include "webrtc/api/mediastream.h"
-#include "webrtc/api/remoteaudiosource.h"
-#include "webrtc/api/rtpreceiver.h"
-#include "webrtc/api/rtpsender.h"
-#include "webrtc/api/streamcollection.h"
-#include "webrtc/api/test/fakevideotracksource.h"
-#include "webrtc/api/videotrack.h"
-#include "webrtc/api/videotracksource.h"
-#include "webrtc/base/gunit.h"
-#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
-#include "webrtc/media/base/fakemediaengine.h"
-#include "webrtc/media/base/mediachannel.h"
-#include "webrtc/media/engine/fakewebrtccall.h"
-#include "webrtc/p2p/base/faketransportcontroller.h"
-#include "webrtc/pc/channelmanager.h"
-#include "webrtc/test/gmock.h"
-#include "webrtc/test/gtest.h"
-
-using ::testing::_;
-using ::testing::Exactly;
-using ::testing::InvokeWithoutArgs;
-using ::testing::Return;
-
-static const char kStreamLabel1[] = "local_stream_1";
-static const char kVideoTrackId[] = "video_1";
-static const char kAudioTrackId[] = "audio_1";
-static const uint32_t kVideoSsrc = 98;
-static const uint32_t kVideoSsrc2 = 100;
-static const uint32_t kAudioSsrc = 99;
-static const uint32_t kAudioSsrc2 = 101;
-
-namespace webrtc {
-
-class RtpSenderReceiverTest : public testing::Test {
- public:
- RtpSenderReceiverTest()
- : // Create fake media engine/etc. so we can create channels to use to
- // test RtpSenders/RtpReceivers.
- media_engine_(new cricket::FakeMediaEngine()),
- channel_manager_(media_engine_,
- rtc::Thread::Current(),
- rtc::Thread::Current()),
- fake_call_(Call::Config(&event_log_)),
- fake_media_controller_(&channel_manager_, &fake_call_),
- stream_(MediaStream::Create(kStreamLabel1)) {
- // Create channels to be used by the RtpSenders and RtpReceivers.
- channel_manager_.Init();
- bool rtcp_mux_required = true;
- bool srtp_required = true;
- cricket::DtlsTransportInternal* rtp_transport =
- fake_transport_controller_.CreateDtlsTransport(
- cricket::CN_AUDIO, cricket::ICE_CANDIDATE_COMPONENT_RTP);
- voice_channel_ = channel_manager_.CreateVoiceChannel(
- &fake_media_controller_, rtp_transport, nullptr, rtc::Thread::Current(),
- cricket::CN_AUDIO, nullptr, rtcp_mux_required, srtp_required,
- cricket::AudioOptions());
- video_channel_ = channel_manager_.CreateVideoChannel(
- &fake_media_controller_, rtp_transport, nullptr, rtc::Thread::Current(),
- cricket::CN_VIDEO, nullptr, rtcp_mux_required, srtp_required,
- cricket::VideoOptions());
- voice_media_channel_ = media_engine_->GetVoiceChannel(0);
- video_media_channel_ = media_engine_->GetVideoChannel(0);
- RTC_CHECK(voice_channel_);
- RTC_CHECK(video_channel_);
- RTC_CHECK(voice_media_channel_);
- RTC_CHECK(video_media_channel_);
-
- // Create streams for predefined SSRCs. Streams need to exist in order
- // for the senders and receievers to apply parameters to them.
- // Normally these would be created by SetLocalDescription and
- // SetRemoteDescription.
- voice_media_channel_->AddSendStream(
- cricket::StreamParams::CreateLegacy(kAudioSsrc));
- voice_media_channel_->AddRecvStream(
- cricket::StreamParams::CreateLegacy(kAudioSsrc));
- voice_media_channel_->AddSendStream(
- cricket::StreamParams::CreateLegacy(kAudioSsrc2));
- voice_media_channel_->AddRecvStream(
- cricket::StreamParams::CreateLegacy(kAudioSsrc2));
- video_media_channel_->AddSendStream(
- cricket::StreamParams::CreateLegacy(kVideoSsrc));
- video_media_channel_->AddRecvStream(
- cricket::StreamParams::CreateLegacy(kVideoSsrc));
- video_media_channel_->AddSendStream(
- cricket::StreamParams::CreateLegacy(kVideoSsrc2));
- video_media_channel_->AddRecvStream(
- cricket::StreamParams::CreateLegacy(kVideoSsrc2));
- }
-
- void TearDown() override { channel_manager_.Terminate(); }
-
- void AddVideoTrack() { AddVideoTrack(false); }
-
- void AddVideoTrack(bool is_screencast) {
- rtc::scoped_refptr<VideoTrackSourceInterface> source(
- FakeVideoTrackSource::Create(is_screencast));
- video_track_ = VideoTrack::Create(kVideoTrackId, source);
- EXPECT_TRUE(stream_->AddTrack(video_track_));
- }
-
- void CreateAudioRtpSender() { CreateAudioRtpSender(nullptr); }
-
- void CreateAudioRtpSender(rtc::scoped_refptr<LocalAudioSource> source) {
- audio_track_ = AudioTrack::Create(kAudioTrackId, source);
- EXPECT_TRUE(stream_->AddTrack(audio_track_));
- audio_rtp_sender_ =
- new AudioRtpSender(stream_->GetAudioTracks()[0], stream_->label(),
- voice_channel_, nullptr);
- audio_rtp_sender_->SetSsrc(kAudioSsrc);
- VerifyVoiceChannelInput();
- }
-
- void CreateVideoRtpSender() { CreateVideoRtpSender(false); }
-
- void CreateVideoRtpSender(bool is_screencast) {
- AddVideoTrack(is_screencast);
- video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0],
- stream_->label(), video_channel_);
- video_rtp_sender_->SetSsrc(kVideoSsrc);
- VerifyVideoChannelInput();
- }
-
- void DestroyAudioRtpSender() {
- audio_rtp_sender_ = nullptr;
- VerifyVoiceChannelNoInput();
- }
-
- void DestroyVideoRtpSender() {
- video_rtp_sender_ = nullptr;
- VerifyVideoChannelNoInput();
- }
-
- void CreateAudioRtpReceiver() {
- audio_track_ = AudioTrack::Create(
- kAudioTrackId, RemoteAudioSource::Create(kAudioSsrc, NULL));
- EXPECT_TRUE(stream_->AddTrack(audio_track_));
- audio_rtp_receiver_ = new AudioRtpReceiver(stream_, kAudioTrackId,
- kAudioSsrc, voice_channel_);
- audio_track_ = audio_rtp_receiver_->audio_track();
- VerifyVoiceChannelOutput();
- }
-
- void CreateVideoRtpReceiver() {
- video_rtp_receiver_ =
- new VideoRtpReceiver(stream_, kVideoTrackId, rtc::Thread::Current(),
- kVideoSsrc, video_channel_);
- video_track_ = video_rtp_receiver_->video_track();
- VerifyVideoChannelOutput();
- }
-
- void DestroyAudioRtpReceiver() {
- audio_rtp_receiver_ = nullptr;
- VerifyVoiceChannelNoOutput();
- }
-
- void DestroyVideoRtpReceiver() {
- video_rtp_receiver_ = nullptr;
- VerifyVideoChannelNoOutput();
- }
-
- void VerifyVoiceChannelInput() { VerifyVoiceChannelInput(kAudioSsrc); }
-
- void VerifyVoiceChannelInput(uint32_t ssrc) {
- // Verify that the media channel has an audio source, and the stream isn't
- // muted.
- EXPECT_TRUE(voice_media_channel_->HasSource(ssrc));
- EXPECT_FALSE(voice_media_channel_->IsStreamMuted(ssrc));
- }
-
- void VerifyVideoChannelInput() { VerifyVideoChannelInput(kVideoSsrc); }
-
- void VerifyVideoChannelInput(uint32_t ssrc) {
- // Verify that the media channel has a video source,
- EXPECT_TRUE(video_media_channel_->HasSource(ssrc));
- }
-
- void VerifyVoiceChannelNoInput() { VerifyVoiceChannelNoInput(kAudioSsrc); }
-
- void VerifyVoiceChannelNoInput(uint32_t ssrc) {
- // Verify that the media channel's source is reset.
- EXPECT_FALSE(voice_media_channel_->HasSource(ssrc));
- }
-
- void VerifyVideoChannelNoInput() { VerifyVideoChannelNoInput(kVideoSsrc); }
-
- void VerifyVideoChannelNoInput(uint32_t ssrc) {
- // Verify that the media channel's source is reset.
- EXPECT_FALSE(video_media_channel_->HasSource(ssrc));
- }
-
- void VerifyVoiceChannelOutput() {
- // Verify that the volume is initialized to 1.
- double volume;
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(1, volume);
- }
-
- void VerifyVideoChannelOutput() {
- // Verify that the media channel has a sink.
- EXPECT_TRUE(video_media_channel_->HasSink(kVideoSsrc));
- }
-
- void VerifyVoiceChannelNoOutput() {
- // Verify that the volume is reset to 0.
- double volume;
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(0, volume);
- }
-
- void VerifyVideoChannelNoOutput() {
- // Verify that the media channel's sink is reset.
- EXPECT_FALSE(video_media_channel_->HasSink(kVideoSsrc));
- }
-
- protected:
- webrtc::RtcEventLogNullImpl event_log_;
- cricket::FakeMediaEngine* media_engine_;
- cricket::FakeTransportController fake_transport_controller_;
- cricket::ChannelManager channel_manager_;
- cricket::FakeCall fake_call_;
- cricket::FakeMediaController fake_media_controller_;
- cricket::VoiceChannel* voice_channel_;
- cricket::VideoChannel* video_channel_;
- cricket::FakeVoiceMediaChannel* voice_media_channel_;
- cricket::FakeVideoMediaChannel* video_media_channel_;
- rtc::scoped_refptr<AudioRtpSender> audio_rtp_sender_;
- rtc::scoped_refptr<VideoRtpSender> video_rtp_sender_;
- rtc::scoped_refptr<AudioRtpReceiver> audio_rtp_receiver_;
- rtc::scoped_refptr<VideoRtpReceiver> video_rtp_receiver_;
- rtc::scoped_refptr<MediaStreamInterface> stream_;
- rtc::scoped_refptr<VideoTrackInterface> video_track_;
- rtc::scoped_refptr<AudioTrackInterface> audio_track_;
-};
-
-// Test that |voice_channel_| is updated when an audio track is associated
-// and disassociated with an AudioRtpSender.
-TEST_F(RtpSenderReceiverTest, AddAndDestroyAudioRtpSender) {
- CreateAudioRtpSender();
- DestroyAudioRtpSender();
-}
-
-// Test that |video_channel_| is updated when a video track is associated and
-// disassociated with a VideoRtpSender.
-TEST_F(RtpSenderReceiverTest, AddAndDestroyVideoRtpSender) {
- CreateVideoRtpSender();
- DestroyVideoRtpSender();
-}
-
-// Test that |voice_channel_| is updated when a remote audio track is
-// associated and disassociated with an AudioRtpReceiver.
-TEST_F(RtpSenderReceiverTest, AddAndDestroyAudioRtpReceiver) {
- CreateAudioRtpReceiver();
- DestroyAudioRtpReceiver();
-}
-
-// Test that |video_channel_| is updated when a remote video track is
-// associated and disassociated with a VideoRtpReceiver.
-TEST_F(RtpSenderReceiverTest, AddAndDestroyVideoRtpReceiver) {
- CreateVideoRtpReceiver();
- DestroyVideoRtpReceiver();
-}
-
-// Test that the AudioRtpSender applies options from the local audio source.
-TEST_F(RtpSenderReceiverTest, LocalAudioSourceOptionsApplied) {
- cricket::AudioOptions options;
- options.echo_cancellation = rtc::Optional<bool>(true);
- auto source = LocalAudioSource::Create(
- PeerConnectionFactoryInterface::Options(), &options);
- CreateAudioRtpSender(source.get());
-
- EXPECT_EQ(rtc::Optional<bool>(true),
- voice_media_channel_->options().echo_cancellation);
-
- DestroyAudioRtpSender();
-}
-
-// Test that the stream is muted when the track is disabled, and unmuted when
-// the track is enabled.
-TEST_F(RtpSenderReceiverTest, LocalAudioTrackDisable) {
- CreateAudioRtpSender();
-
- audio_track_->set_enabled(false);
- EXPECT_TRUE(voice_media_channel_->IsStreamMuted(kAudioSsrc));
-
- audio_track_->set_enabled(true);
- EXPECT_FALSE(voice_media_channel_->IsStreamMuted(kAudioSsrc));
-
- DestroyAudioRtpSender();
-}
-
-// Test that the volume is set to 0 when the track is disabled, and back to
-// 1 when the track is enabled.
-TEST_F(RtpSenderReceiverTest, RemoteAudioTrackDisable) {
- CreateAudioRtpReceiver();
-
- double volume;
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(1, volume);
-
- audio_track_->set_enabled(false);
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(0, volume);
-
- audio_track_->set_enabled(true);
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(1, volume);
-
- DestroyAudioRtpReceiver();
-}
-
-// Currently no action is taken when a remote video track is disabled or
-// enabled, so there's nothing to test here, other than what is normally
-// verified in DestroyVideoRtpSender.
-TEST_F(RtpSenderReceiverTest, LocalVideoTrackDisable) {
- CreateVideoRtpSender();
-
- video_track_->set_enabled(false);
- video_track_->set_enabled(true);
-
- DestroyVideoRtpSender();
-}
-
-// Test that the state of the video track created by the VideoRtpReceiver is
-// updated when the receiver is destroyed.
-TEST_F(RtpSenderReceiverTest, RemoteVideoTrackState) {
- CreateVideoRtpReceiver();
-
- EXPECT_EQ(webrtc::MediaStreamTrackInterface::kLive, video_track_->state());
- EXPECT_EQ(webrtc::MediaSourceInterface::kLive,
- video_track_->GetSource()->state());
-
- DestroyVideoRtpReceiver();
-
- EXPECT_EQ(webrtc::MediaStreamTrackInterface::kEnded, video_track_->state());
- EXPECT_EQ(webrtc::MediaSourceInterface::kEnded,
- video_track_->GetSource()->state());
-}
-
-// Currently no action is taken when a remote video track is disabled or
-// enabled, so there's nothing to test here, other than what is normally
-// verified in DestroyVideoRtpReceiver.
-TEST_F(RtpSenderReceiverTest, RemoteVideoTrackDisable) {
- CreateVideoRtpReceiver();
-
- video_track_->set_enabled(false);
- video_track_->set_enabled(true);
-
- DestroyVideoRtpReceiver();
-}
-
-// Test that the AudioRtpReceiver applies volume changes from the track source
-// to the media channel.
-TEST_F(RtpSenderReceiverTest, RemoteAudioTrackSetVolume) {
- CreateAudioRtpReceiver();
-
- double volume;
- audio_track_->GetSource()->SetVolume(0.5);
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(0.5, volume);
-
- // Disable the audio track, this should prevent setting the volume.
- audio_track_->set_enabled(false);
- audio_track_->GetSource()->SetVolume(0.8);
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(0, volume);
-
- // When the track is enabled, the previously set volume should take effect.
- audio_track_->set_enabled(true);
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(0.8, volume);
-
- // Try changing volume one more time.
- audio_track_->GetSource()->SetVolume(0.9);
- EXPECT_TRUE(voice_media_channel_->GetOutputVolume(kAudioSsrc, &volume));
- EXPECT_EQ(0.9, volume);
-
- DestroyAudioRtpReceiver();
-}
-
-// Test that the media channel isn't enabled for sending if the audio sender
-// doesn't have both a track and SSRC.
-TEST_F(RtpSenderReceiverTest, AudioSenderWithoutTrackAndSsrc) {
- audio_rtp_sender_ = new AudioRtpSender(voice_channel_, nullptr);
- rtc::scoped_refptr<AudioTrackInterface> track =
- AudioTrack::Create(kAudioTrackId, nullptr);
-
- // Track but no SSRC.
- EXPECT_TRUE(audio_rtp_sender_->SetTrack(track));
- VerifyVoiceChannelNoInput();
-
- // SSRC but no track.
- EXPECT_TRUE(audio_rtp_sender_->SetTrack(nullptr));
- audio_rtp_sender_->SetSsrc(kAudioSsrc);
- VerifyVoiceChannelNoInput();
-}
-
-// Test that the media channel isn't enabled for sending if the video sender
-// doesn't have both a track and SSRC.
-TEST_F(RtpSenderReceiverTest, VideoSenderWithoutTrackAndSsrc) {
- video_rtp_sender_ = new VideoRtpSender(video_channel_);
-
- // Track but no SSRC.
- EXPECT_TRUE(video_rtp_sender_->SetTrack(video_track_));
- VerifyVideoChannelNoInput();
-
- // SSRC but no track.
- EXPECT_TRUE(video_rtp_sender_->SetTrack(nullptr));
- video_rtp_sender_->SetSsrc(kVideoSsrc);
- VerifyVideoChannelNoInput();
-}
-
-// Test that the media channel is enabled for sending when the audio sender
-// has a track and SSRC, when the SSRC is set first.
-TEST_F(RtpSenderReceiverTest, AudioSenderEarlyWarmupSsrcThenTrack) {
- audio_rtp_sender_ = new AudioRtpSender(voice_channel_, nullptr);
- rtc::scoped_refptr<AudioTrackInterface> track =
- AudioTrack::Create(kAudioTrackId, nullptr);
- audio_rtp_sender_->SetSsrc(kAudioSsrc);
- audio_rtp_sender_->SetTrack(track);
- VerifyVoiceChannelInput();
-
- DestroyAudioRtpSender();
-}
-
-// Test that the media channel is enabled for sending when the audio sender
-// has a track and SSRC, when the SSRC is set last.
-TEST_F(RtpSenderReceiverTest, AudioSenderEarlyWarmupTrackThenSsrc) {
- audio_rtp_sender_ = new AudioRtpSender(voice_channel_, nullptr);
- rtc::scoped_refptr<AudioTrackInterface> track =
- AudioTrack::Create(kAudioTrackId, nullptr);
- audio_rtp_sender_->SetTrack(track);
- audio_rtp_sender_->SetSsrc(kAudioSsrc);
- VerifyVoiceChannelInput();
-
- DestroyAudioRtpSender();
-}
-
-// Test that the media channel is enabled for sending when the video sender
-// has a track and SSRC, when the SSRC is set first.
-TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupSsrcThenTrack) {
- AddVideoTrack();
- video_rtp_sender_ = new VideoRtpSender(video_channel_);
- video_rtp_sender_->SetSsrc(kVideoSsrc);
- video_rtp_sender_->SetTrack(video_track_);
- VerifyVideoChannelInput();
-
- DestroyVideoRtpSender();
-}
-
-// Test that the media channel is enabled for sending when the video sender
-// has a track and SSRC, when the SSRC is set last.
-TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupTrackThenSsrc) {
- AddVideoTrack();
- video_rtp_sender_ = new VideoRtpSender(video_channel_);
- video_rtp_sender_->SetTrack(video_track_);
- video_rtp_sender_->SetSsrc(kVideoSsrc);
- VerifyVideoChannelInput();
-
- DestroyVideoRtpSender();
-}
-
-// Test that the media channel stops sending when the audio sender's SSRC is set
-// to 0.
-TEST_F(RtpSenderReceiverTest, AudioSenderSsrcSetToZero) {
- CreateAudioRtpSender();
-
- audio_rtp_sender_->SetSsrc(0);
- VerifyVoiceChannelNoInput();
-}
-
-// Test that the media channel stops sending when the video sender's SSRC is set
-// to 0.
-TEST_F(RtpSenderReceiverTest, VideoSenderSsrcSetToZero) {
- CreateAudioRtpSender();
-
- audio_rtp_sender_->SetSsrc(0);
- VerifyVideoChannelNoInput();
-}
-
-// Test that the media channel stops sending when the audio sender's track is
-// set to null.
-TEST_F(RtpSenderReceiverTest, AudioSenderTrackSetToNull) {
- CreateAudioRtpSender();
-
- EXPECT_TRUE(audio_rtp_sender_->SetTrack(nullptr));
- VerifyVoiceChannelNoInput();
-}
-
-// Test that the media channel stops sending when the video sender's track is
-// set to null.
-TEST_F(RtpSenderReceiverTest, VideoSenderTrackSetToNull) {
- CreateVideoRtpSender();
-
- video_rtp_sender_->SetSsrc(0);
- VerifyVideoChannelNoInput();
-}
-
-// Test that when the audio sender's SSRC is changed, the media channel stops
-// sending with the old SSRC and starts sending with the new one.
-TEST_F(RtpSenderReceiverTest, AudioSenderSsrcChanged) {
- CreateAudioRtpSender();
-
- audio_rtp_sender_->SetSsrc(kAudioSsrc2);
- VerifyVoiceChannelNoInput(kAudioSsrc);
- VerifyVoiceChannelInput(kAudioSsrc2);
-
- audio_rtp_sender_ = nullptr;
- VerifyVoiceChannelNoInput(kAudioSsrc2);
-}
-
-// Test that when the audio sender's SSRC is changed, the media channel stops
-// sending with the old SSRC and starts sending with the new one.
-TEST_F(RtpSenderReceiverTest, VideoSenderSsrcChanged) {
- CreateVideoRtpSender();
-
- video_rtp_sender_->SetSsrc(kVideoSsrc2);
- VerifyVideoChannelNoInput(kVideoSsrc);
- VerifyVideoChannelInput(kVideoSsrc2);
-
- video_rtp_sender_ = nullptr;
- VerifyVideoChannelNoInput(kVideoSsrc2);
-}
-
-TEST_F(RtpSenderReceiverTest, AudioSenderCanSetParameters) {
- CreateAudioRtpSender();
-
- RtpParameters params = audio_rtp_sender_->GetParameters();
- EXPECT_EQ(1u, params.encodings.size());
- EXPECT_TRUE(audio_rtp_sender_->SetParameters(params));
-
- DestroyAudioRtpSender();
-}
-
-TEST_F(RtpSenderReceiverTest, SetAudioMaxSendBitrate) {
- CreateAudioRtpSender();
-
- EXPECT_EQ(-1, voice_media_channel_->max_bps());
- webrtc::RtpParameters params = audio_rtp_sender_->GetParameters();
- EXPECT_EQ(1, params.encodings.size());
- EXPECT_EQ(-1, params.encodings[0].max_bitrate_bps);
- params.encodings[0].max_bitrate_bps = 1000;
- EXPECT_TRUE(audio_rtp_sender_->SetParameters(params));
-
- // Read back the parameters and verify they have been changed.
- params = audio_rtp_sender_->GetParameters();
- EXPECT_EQ(1, params.encodings.size());
- EXPECT_EQ(1000, params.encodings[0].max_bitrate_bps);
-
- // Verify that the audio channel received the new parameters.
- params = voice_media_channel_->GetRtpSendParameters(kAudioSsrc);
- EXPECT_EQ(1, params.encodings.size());
- EXPECT_EQ(1000, params.encodings[0].max_bitrate_bps);
-
- // Verify that the global bitrate limit has not been changed.
- EXPECT_EQ(-1, voice_media_channel_->max_bps());
-
- DestroyAudioRtpSender();
-}
-
-TEST_F(RtpSenderReceiverTest, VideoSenderCanSetParameters) {
- CreateVideoRtpSender();
-
- RtpParameters params = video_rtp_sender_->GetParameters();
- EXPECT_EQ(1u, params.encodings.size());
- EXPECT_TRUE(video_rtp_sender_->SetParameters(params));
-
- DestroyVideoRtpSender();
-}
-
-TEST_F(RtpSenderReceiverTest, SetVideoMaxSendBitrate) {
- CreateVideoRtpSender();
-
- EXPECT_EQ(-1, video_media_channel_->max_bps());
- webrtc::RtpParameters params = video_rtp_sender_->GetParameters();
- EXPECT_EQ(1, params.encodings.size());
- EXPECT_EQ(-1, params.encodings[0].max_bitrate_bps);
- params.encodings[0].max_bitrate_bps = 1000;
- EXPECT_TRUE(video_rtp_sender_->SetParameters(params));
-
- // Read back the parameters and verify they have been changed.
- params = video_rtp_sender_->GetParameters();
- EXPECT_EQ(1, params.encodings.size());
- EXPECT_EQ(1000, params.encodings[0].max_bitrate_bps);
-
- // Verify that the video channel received the new parameters.
- params = video_media_channel_->GetRtpSendParameters(kVideoSsrc);
- EXPECT_EQ(1, params.encodings.size());
- EXPECT_EQ(1000, params.encodings[0].max_bitrate_bps);
-
- // Verify that the global bitrate limit has not been changed.
- EXPECT_EQ(-1, video_media_channel_->max_bps());
-
- DestroyVideoRtpSender();
-}
-
-TEST_F(RtpSenderReceiverTest, AudioReceiverCanSetParameters) {
- CreateAudioRtpReceiver();
-
- RtpParameters params = audio_rtp_receiver_->GetParameters();
- EXPECT_EQ(1u, params.encodings.size());
- EXPECT_TRUE(audio_rtp_receiver_->SetParameters(params));
-
- DestroyAudioRtpReceiver();
-}
-
-TEST_F(RtpSenderReceiverTest, VideoReceiverCanSetParameters) {
- CreateVideoRtpReceiver();
-
- RtpParameters params = video_rtp_receiver_->GetParameters();
- EXPECT_EQ(1u, params.encodings.size());
- EXPECT_TRUE(video_rtp_receiver_->SetParameters(params));
-
- DestroyVideoRtpReceiver();
-}
-
-// Test that makes sure that a video track content hint translates to the proper
-// value for sources that are not screencast.
-TEST_F(RtpSenderReceiverTest, PropagatesVideoTrackContentHint) {
- CreateVideoRtpSender();
-
- video_track_->set_enabled(true);
-
- // |video_track_| is not screencast by default.
- EXPECT_EQ(rtc::Optional<bool>(false),
- video_media_channel_->options().is_screencast);
- // No content hint should be set by default.
- EXPECT_EQ(VideoTrackInterface::ContentHint::kNone,
- video_track_->content_hint());
- // Setting detailed should turn a non-screencast source into screencast mode.
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kDetailed);
- EXPECT_EQ(rtc::Optional<bool>(true),
- video_media_channel_->options().is_screencast);
- // Removing the content hint should turn the track back into non-screencast
- // mode.
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kNone);
- EXPECT_EQ(rtc::Optional<bool>(false),
- video_media_channel_->options().is_screencast);
- // Setting fluid should remain in non-screencast mode (its default).
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kFluid);
- EXPECT_EQ(rtc::Optional<bool>(false),
- video_media_channel_->options().is_screencast);
-
- DestroyVideoRtpSender();
-}
-
-// Test that makes sure that a video track content hint translates to the proper
-// value for screencast sources.
-TEST_F(RtpSenderReceiverTest,
- PropagatesVideoTrackContentHintForScreencastSource) {
- CreateVideoRtpSender(true);
-
- video_track_->set_enabled(true);
-
- // |video_track_| with a screencast source should be screencast by default.
- EXPECT_EQ(rtc::Optional<bool>(true),
- video_media_channel_->options().is_screencast);
- // No content hint should be set by default.
- EXPECT_EQ(VideoTrackInterface::ContentHint::kNone,
- video_track_->content_hint());
- // Setting fluid should turn a screencast source into non-screencast mode.
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kFluid);
- EXPECT_EQ(rtc::Optional<bool>(false),
- video_media_channel_->options().is_screencast);
- // Removing the content hint should turn the track back into screencast mode.
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kNone);
- EXPECT_EQ(rtc::Optional<bool>(true),
- video_media_channel_->options().is_screencast);
- // Setting detailed should still remain in screencast mode (its default).
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kDetailed);
- EXPECT_EQ(rtc::Optional<bool>(true),
- video_media_channel_->options().is_screencast);
-
- DestroyVideoRtpSender();
-}
-
-// Test that makes sure any content hints that are set on a track before
-// VideoRtpSender is ready to send are still applied when it gets ready to send.
-TEST_F(RtpSenderReceiverTest,
- PropagatesVideoTrackContentHintSetBeforeEnabling) {
- AddVideoTrack();
- // Setting detailed overrides the default non-screencast mode. This should be
- // applied even if the track is set on construction.
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kDetailed);
- video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0],
- stream_->label(), video_channel_);
- video_track_->set_enabled(true);
-
- // Sender is not ready to send (no SSRC) so no option should have been set.
- EXPECT_EQ(rtc::Optional<bool>(),
- video_media_channel_->options().is_screencast);
-
- // Verify that the content hint is accounted for when video_rtp_sender_ does
- // get enabled.
- video_rtp_sender_->SetSsrc(kVideoSsrc);
- EXPECT_EQ(rtc::Optional<bool>(true),
- video_media_channel_->options().is_screencast);
-
- // And removing the hint should go back to false (to verify that false was
- // default correctly).
- video_track_->set_content_hint(VideoTrackInterface::ContentHint::kNone);
- EXPECT_EQ(rtc::Optional<bool>(false),
- video_media_channel_->options().is_screencast);
-
- DestroyVideoRtpSender();
-}
-
-} // namespace webrtc
« no previous file with comments | « webrtc/api/rtpsenderinterface.h ('k') | webrtc/api/sctputils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698