OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2008 Google Inc. | 3 * Copyright 2008 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 static const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); | 52 static const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); |
53 static const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); | 53 static const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); |
54 static const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1, 0); | 54 static const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1, 0); |
55 static const cricket::AudioCodec | 55 static const cricket::AudioCodec |
56 kTelephoneEventCodec(106, "telephone-event", 8000, 0, 1, 0); | 56 kTelephoneEventCodec(106, "telephone-event", 8000, 0, 1, 0); |
57 static const cricket::AudioCodec* const kAudioCodecs[] = { | 57 static const cricket::AudioCodec* const kAudioCodecs[] = { |
58 &kPcmuCodec, &kIsacCodec, &kOpusCodec, &kG722CodecVoE, &kRedCodec, | 58 &kPcmuCodec, &kIsacCodec, &kOpusCodec, &kG722CodecVoE, &kRedCodec, |
59 &kCn8000Codec, &kCn16000Codec, &kTelephoneEventCodec, | 59 &kCn8000Codec, &kCn16000Codec, &kTelephoneEventCodec, |
60 }; | 60 }; |
61 const char kRingbackTone[] = "RIFF____WAVE____ABCD1234"; | 61 const char kRingbackTone[] = "RIFF____WAVE____ABCD1234"; |
62 static uint32 kSsrc1 = 0x99; | 62 static uint32_t kSsrc1 = 0x99; |
63 static uint32 kSsrc2 = 0x98; | 63 static uint32_t kSsrc2 = 0x98; |
64 | 64 |
65 class FakeVoEWrapper : public cricket::VoEWrapper { | 65 class FakeVoEWrapper : public cricket::VoEWrapper { |
66 public: | 66 public: |
67 explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine) | 67 explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine) |
68 : cricket::VoEWrapper(engine, // processing | 68 : cricket::VoEWrapper(engine, // processing |
69 engine, // base | 69 engine, // base |
70 engine, // codec | 70 engine, // codec |
71 engine, // dtmf | 71 engine, // dtmf |
72 engine, // file | 72 engine, // file |
73 engine, // hw | 73 engine, // hw |
(...skipping 20 matching lines...) Expand all Loading... |
94 class WebRtcVoiceEngineTestFake : public testing::Test { | 94 class WebRtcVoiceEngineTestFake : public testing::Test { |
95 public: | 95 public: |
96 class ChannelErrorListener : public sigslot::has_slots<> { | 96 class ChannelErrorListener : public sigslot::has_slots<> { |
97 public: | 97 public: |
98 explicit ChannelErrorListener(cricket::VoiceMediaChannel* channel) | 98 explicit ChannelErrorListener(cricket::VoiceMediaChannel* channel) |
99 : ssrc_(0), error_(cricket::VoiceMediaChannel::ERROR_NONE) { | 99 : ssrc_(0), error_(cricket::VoiceMediaChannel::ERROR_NONE) { |
100 RTC_DCHECK(channel != NULL); | 100 RTC_DCHECK(channel != NULL); |
101 channel->SignalMediaError.connect( | 101 channel->SignalMediaError.connect( |
102 this, &ChannelErrorListener::OnVoiceChannelError); | 102 this, &ChannelErrorListener::OnVoiceChannelError); |
103 } | 103 } |
104 void OnVoiceChannelError(uint32 ssrc, | 104 void OnVoiceChannelError(uint32_t ssrc, |
105 cricket::VoiceMediaChannel::Error error) { | 105 cricket::VoiceMediaChannel::Error error) { |
106 ssrc_ = ssrc; | 106 ssrc_ = ssrc; |
107 error_ = error; | 107 error_ = error; |
108 } | 108 } |
109 void Reset() { | 109 void Reset() { |
110 ssrc_ = 0; | 110 ssrc_ = 0; |
111 error_ = cricket::VoiceMediaChannel::ERROR_NONE; | 111 error_ = cricket::VoiceMediaChannel::ERROR_NONE; |
112 } | 112 } |
113 uint32 ssrc() const { | 113 uint32_t ssrc() const { return ssrc_; } |
114 return ssrc_; | |
115 } | |
116 cricket::VoiceMediaChannel::Error error() const { | 114 cricket::VoiceMediaChannel::Error error() const { |
117 return error_; | 115 return error_; |
118 } | 116 } |
119 | 117 |
120 private: | 118 private: |
121 uint32 ssrc_; | 119 uint32_t ssrc_; |
122 cricket::VoiceMediaChannel::Error error_; | 120 cricket::VoiceMediaChannel::Error error_; |
123 }; | 121 }; |
124 | 122 |
125 WebRtcVoiceEngineTestFake() | 123 WebRtcVoiceEngineTestFake() |
126 : call_(webrtc::Call::Config()), | 124 : call_(webrtc::Call::Config()), |
127 voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)), | 125 voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)), |
128 trace_wrapper_(new FakeVoETraceWrapper()), | 126 trace_wrapper_(new FakeVoETraceWrapper()), |
129 engine_(new FakeVoEWrapper(&voe_), trace_wrapper_), | 127 engine_(new FakeVoEWrapper(&voe_), trace_wrapper_), |
130 channel_(nullptr) { | 128 channel_(nullptr) { |
131 send_parameters_.codecs.push_back(kPcmuCodec); | 129 send_parameters_.codecs.push_back(kPcmuCodec); |
(...skipping 12 matching lines...) Expand all Loading... |
144 if (!SetupEngineWithoutStream()) { | 142 if (!SetupEngineWithoutStream()) { |
145 return false; | 143 return false; |
146 } | 144 } |
147 return channel_->AddSendStream( | 145 return channel_->AddSendStream( |
148 cricket::StreamParams::CreateLegacy(kSsrc1)); | 146 cricket::StreamParams::CreateLegacy(kSsrc1)); |
149 } | 147 } |
150 void SetupForMultiSendStream() { | 148 void SetupForMultiSendStream() { |
151 EXPECT_TRUE(SetupEngine()); | 149 EXPECT_TRUE(SetupEngine()); |
152 // Remove stream added in Setup, which is corresponding to default channel. | 150 // Remove stream added in Setup, which is corresponding to default channel. |
153 int default_channel_num = voe_.GetLastChannel(); | 151 int default_channel_num = voe_.GetLastChannel(); |
154 uint32 default_send_ssrc = 0u; | 152 uint32_t default_send_ssrc = 0u; |
155 EXPECT_EQ(0, voe_.GetLocalSSRC(default_channel_num, default_send_ssrc)); | 153 EXPECT_EQ(0, voe_.GetLocalSSRC(default_channel_num, default_send_ssrc)); |
156 EXPECT_EQ(kSsrc1, default_send_ssrc); | 154 EXPECT_EQ(kSsrc1, default_send_ssrc); |
157 EXPECT_TRUE(channel_->RemoveSendStream(default_send_ssrc)); | 155 EXPECT_TRUE(channel_->RemoveSendStream(default_send_ssrc)); |
158 | 156 |
159 // Verify the default channel still exists. | 157 // Verify the default channel still exists. |
160 EXPECT_EQ(0, voe_.GetLocalSSRC(default_channel_num, default_send_ssrc)); | 158 EXPECT_EQ(0, voe_.GetLocalSSRC(default_channel_num, default_send_ssrc)); |
161 } | 159 } |
162 void DeliverPacket(const void* data, int len) { | 160 void DeliverPacket(const void* data, int len) { |
163 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len); | 161 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len); |
164 channel_->OnPacketReceived(&packet, rtc::PacketTime()); | 162 channel_->OnPacketReceived(&packet, rtc::PacketTime()); |
165 } | 163 } |
166 void TearDown() override { | 164 void TearDown() override { |
167 delete channel_; | 165 delete channel_; |
168 engine_.Terminate(); | 166 engine_.Terminate(); |
169 } | 167 } |
170 | 168 |
171 void TestInsertDtmf(uint32 ssrc, bool caller) { | 169 void TestInsertDtmf(uint32_t ssrc, bool caller) { |
172 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); | 170 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); |
173 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); | 171 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); |
174 EXPECT_TRUE(channel_ != nullptr); | 172 EXPECT_TRUE(channel_ != nullptr); |
175 if (caller) { | 173 if (caller) { |
176 // if this is a caller, local description will be applied and add the | 174 // if this is a caller, local description will be applied and add the |
177 // send stream. | 175 // send stream. |
178 EXPECT_TRUE(channel_->AddSendStream( | 176 EXPECT_TRUE(channel_->AddSendStream( |
179 cricket::StreamParams::CreateLegacy(kSsrc1))); | 177 cricket::StreamParams::CreateLegacy(kSsrc1))); |
180 } | 178 } |
181 int channel_id = voe_.GetLastChannel(); | 179 int channel_id = voe_.GetLastChannel(); |
(...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1889 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 1887 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); |
1890 EXPECT_FALSE(voe_.GetSend(channel_num)); | 1888 EXPECT_FALSE(voe_.GetSend(channel_num)); |
1891 EXPECT_TRUE(channel_->SetPlayout(false)); | 1889 EXPECT_TRUE(channel_->SetPlayout(false)); |
1892 EXPECT_FALSE(voe_.GetPlayout(channel_num)); | 1890 EXPECT_FALSE(voe_.GetPlayout(channel_num)); |
1893 } | 1891 } |
1894 | 1892 |
1895 // Test that we can add and remove send streams. | 1893 // Test that we can add and remove send streams. |
1896 TEST_F(WebRtcVoiceEngineTestFake, CreateAndDeleteMultipleSendStreams) { | 1894 TEST_F(WebRtcVoiceEngineTestFake, CreateAndDeleteMultipleSendStreams) { |
1897 SetupForMultiSendStream(); | 1895 SetupForMultiSendStream(); |
1898 | 1896 |
1899 static const uint32 kSsrcs4[] = {1, 2, 3, 4}; | 1897 static const uint32_t kSsrcs4[] = {1, 2, 3, 4}; |
1900 | 1898 |
1901 // Set the global state for sending. | 1899 // Set the global state for sending. |
1902 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 1900 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); |
1903 | 1901 |
1904 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { | 1902 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { |
1905 EXPECT_TRUE(channel_->AddSendStream( | 1903 EXPECT_TRUE(channel_->AddSendStream( |
1906 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); | 1904 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); |
1907 | 1905 |
1908 // Verify that we are in a sending state for all the created streams. | 1906 // Verify that we are in a sending state for all the created streams. |
1909 int channel_num = voe_.GetChannelFromLocalSsrc(kSsrcs4[i]); | 1907 int channel_num = voe_.GetChannelFromLocalSsrc(kSsrcs4[i]); |
(...skipping 14 matching lines...) Expand all Loading... |
1924 // Stream should already be deleted. | 1922 // Stream should already be deleted. |
1925 EXPECT_FALSE(channel_->RemoveSendStream(kSsrcs4[i])); | 1923 EXPECT_FALSE(channel_->RemoveSendStream(kSsrcs4[i])); |
1926 EXPECT_EQ(-1, voe_.GetChannelFromLocalSsrc(kSsrcs4[i])); | 1924 EXPECT_EQ(-1, voe_.GetChannelFromLocalSsrc(kSsrcs4[i])); |
1927 } | 1925 } |
1928 } | 1926 } |
1929 | 1927 |
1930 // Test SetSendCodecs correctly configure the codecs in all send streams. | 1928 // Test SetSendCodecs correctly configure the codecs in all send streams. |
1931 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithMultipleSendStreams) { | 1929 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithMultipleSendStreams) { |
1932 SetupForMultiSendStream(); | 1930 SetupForMultiSendStream(); |
1933 | 1931 |
1934 static const uint32 kSsrcs4[] = {1, 2, 3, 4}; | 1932 static const uint32_t kSsrcs4[] = {1, 2, 3, 4}; |
1935 // Create send streams. | 1933 // Create send streams. |
1936 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { | 1934 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { |
1937 EXPECT_TRUE(channel_->AddSendStream( | 1935 EXPECT_TRUE(channel_->AddSendStream( |
1938 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); | 1936 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); |
1939 } | 1937 } |
1940 | 1938 |
1941 cricket::AudioSendParameters parameters; | 1939 cricket::AudioSendParameters parameters; |
1942 // Set ISAC(16K) and CN(16K). VAD should be activated. | 1940 // Set ISAC(16K) and CN(16K). VAD should be activated. |
1943 parameters.codecs.push_back(kIsacCodec); | 1941 parameters.codecs.push_back(kIsacCodec); |
1944 parameters.codecs.push_back(kCn16000Codec); | 1942 parameters.codecs.push_back(kCn16000Codec); |
(...skipping 18 matching lines...) Expand all Loading... |
1963 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); | 1961 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); |
1964 EXPECT_STREQ("PCMU", gcodec.plname); | 1962 EXPECT_STREQ("PCMU", gcodec.plname); |
1965 EXPECT_FALSE(voe_.GetVAD(channel_num)); | 1963 EXPECT_FALSE(voe_.GetVAD(channel_num)); |
1966 } | 1964 } |
1967 } | 1965 } |
1968 | 1966 |
1969 // Test we can SetSend on all send streams correctly. | 1967 // Test we can SetSend on all send streams correctly. |
1970 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { | 1968 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { |
1971 SetupForMultiSendStream(); | 1969 SetupForMultiSendStream(); |
1972 | 1970 |
1973 static const uint32 kSsrcs4[] = {1, 2, 3, 4}; | 1971 static const uint32_t kSsrcs4[] = {1, 2, 3, 4}; |
1974 // Create the send channels and they should be a SEND_NOTHING date. | 1972 // Create the send channels and they should be a SEND_NOTHING date. |
1975 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { | 1973 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { |
1976 EXPECT_TRUE(channel_->AddSendStream( | 1974 EXPECT_TRUE(channel_->AddSendStream( |
1977 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); | 1975 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); |
1978 int channel_num = voe_.GetLastChannel(); | 1976 int channel_num = voe_.GetLastChannel(); |
1979 EXPECT_FALSE(voe_.GetSend(channel_num)); | 1977 EXPECT_FALSE(voe_.GetSend(channel_num)); |
1980 } | 1978 } |
1981 | 1979 |
1982 // Set the global state for starting sending. | 1980 // Set the global state for starting sending. |
1983 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 1981 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); |
1984 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { | 1982 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { |
1985 // Verify that we are in a sending state for all the send streams. | 1983 // Verify that we are in a sending state for all the send streams. |
1986 int channel_num = voe_.GetChannelFromLocalSsrc(kSsrcs4[i]); | 1984 int channel_num = voe_.GetChannelFromLocalSsrc(kSsrcs4[i]); |
1987 EXPECT_TRUE(voe_.GetSend(channel_num)); | 1985 EXPECT_TRUE(voe_.GetSend(channel_num)); |
1988 } | 1986 } |
1989 | 1987 |
1990 // Set the global state for stopping sending. | 1988 // Set the global state for stopping sending. |
1991 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 1989 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); |
1992 for (unsigned int i = 1; i < ARRAY_SIZE(kSsrcs4); ++i) { | 1990 for (unsigned int i = 1; i < ARRAY_SIZE(kSsrcs4); ++i) { |
1993 // Verify that we are in a stop state for all the send streams. | 1991 // Verify that we are in a stop state for all the send streams. |
1994 int channel_num = voe_.GetChannelFromLocalSsrc(kSsrcs4[i]); | 1992 int channel_num = voe_.GetChannelFromLocalSsrc(kSsrcs4[i]); |
1995 EXPECT_FALSE(voe_.GetSend(channel_num)); | 1993 EXPECT_FALSE(voe_.GetSend(channel_num)); |
1996 } | 1994 } |
1997 } | 1995 } |
1998 | 1996 |
1999 // Test we can set the correct statistics on all send streams. | 1997 // Test we can set the correct statistics on all send streams. |
2000 TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) { | 1998 TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) { |
2001 SetupForMultiSendStream(); | 1999 SetupForMultiSendStream(); |
2002 | 2000 |
2003 static const uint32 kSsrcs4[] = {1, 2, 3, 4}; | 2001 static const uint32_t kSsrcs4[] = {1, 2, 3, 4}; |
2004 // Create send streams. | 2002 // Create send streams. |
2005 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { | 2003 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs4); ++i) { |
2006 EXPECT_TRUE(channel_->AddSendStream( | 2004 EXPECT_TRUE(channel_->AddSendStream( |
2007 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); | 2005 cricket::StreamParams::CreateLegacy(kSsrcs4[i]))); |
2008 } | 2006 } |
2009 // Create a receive stream to check that none of the send streams end up in | 2007 // Create a receive stream to check that none of the send streams end up in |
2010 // the receive stream stats. | 2008 // the receive stream stats. |
2011 EXPECT_TRUE(channel_->AddRecvStream( | 2009 EXPECT_TRUE(channel_->AddRecvStream( |
2012 cricket::StreamParams::CreateLegacy(kSsrc2))); | 2010 cricket::StreamParams::CreateLegacy(kSsrc2))); |
2013 // We need send codec to be set to get all stats. | 2011 // We need send codec to be set to get all stats. |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2429 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2427 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); |
2430 int channel_num1 = voe_.GetLastChannel(); | 2428 int channel_num1 = voe_.GetLastChannel(); |
2431 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2429 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
2432 int channel_num2 = voe_.GetLastChannel(); | 2430 int channel_num2 = voe_.GetLastChannel(); |
2433 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2431 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); |
2434 int channel_num3 = voe_.GetLastChannel(); | 2432 int channel_num3 = voe_.GetLastChannel(); |
2435 // Create packets with the right SSRCs. | 2433 // Create packets with the right SSRCs. |
2436 char packets[4][sizeof(kPcmuFrame)]; | 2434 char packets[4][sizeof(kPcmuFrame)]; |
2437 for (size_t i = 0; i < ARRAY_SIZE(packets); ++i) { | 2435 for (size_t i = 0; i < ARRAY_SIZE(packets); ++i) { |
2438 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); | 2436 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); |
2439 rtc::SetBE32(packets[i] + 8, static_cast<uint32>(i)); | 2437 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); |
2440 } | 2438 } |
2441 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); | 2439 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); |
2442 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); | 2440 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); |
2443 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); | 2441 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); |
2444 DeliverPacket(packets[0], sizeof(packets[0])); | 2442 DeliverPacket(packets[0], sizeof(packets[0])); |
2445 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); | 2443 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); |
2446 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); | 2444 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); |
2447 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); | 2445 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); |
2448 DeliverPacket(packets[1], sizeof(packets[1])); | 2446 DeliverPacket(packets[1], sizeof(packets[1])); |
2449 EXPECT_TRUE(voe_.CheckPacket(channel_num1, packets[1], | 2447 EXPECT_TRUE(voe_.CheckPacket(channel_num1, packets[1], |
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3140 | 3138 |
3141 EXPECT_TRUE(channel_->SetOutputScaling(kSsrc2, 2, 1)); | 3139 EXPECT_TRUE(channel_->SetOutputScaling(kSsrc2, 2, 1)); |
3142 channel_id = voe_.GetLastChannel(); | 3140 channel_id = voe_.GetLastChannel(); |
3143 EXPECT_EQ(0, voe_.GetChannelOutputVolumeScaling(channel_id, scale)); | 3141 EXPECT_EQ(0, voe_.GetChannelOutputVolumeScaling(channel_id, scale)); |
3144 EXPECT_EQ(0, voe_.GetOutputVolumePan(channel_id, left, right)); | 3142 EXPECT_EQ(0, voe_.GetOutputVolumePan(channel_id, left, right)); |
3145 EXPECT_DOUBLE_EQ(2, left * scale); | 3143 EXPECT_DOUBLE_EQ(2, left * scale); |
3146 EXPECT_DOUBLE_EQ(1, right * scale); | 3144 EXPECT_DOUBLE_EQ(1, right * scale); |
3147 } | 3145 } |
3148 | 3146 |
3149 TEST_F(WebRtcVoiceEngineTestFake, SetsSyncGroupFromSyncLabel) { | 3147 TEST_F(WebRtcVoiceEngineTestFake, SetsSyncGroupFromSyncLabel) { |
3150 const uint32 kAudioSsrc = 123; | 3148 const uint32_t kAudioSsrc = 123; |
3151 const std::string kSyncLabel = "AvSyncLabel"; | 3149 const std::string kSyncLabel = "AvSyncLabel"; |
3152 | 3150 |
3153 EXPECT_TRUE(SetupEngine()); | 3151 EXPECT_TRUE(SetupEngine()); |
3154 cricket::StreamParams sp = cricket::StreamParams::CreateLegacy(kAudioSsrc); | 3152 cricket::StreamParams sp = cricket::StreamParams::CreateLegacy(kAudioSsrc); |
3155 sp.sync_label = kSyncLabel; | 3153 sp.sync_label = kSyncLabel; |
3156 // Creating two channels to make sure that sync label is set properly for both | 3154 // Creating two channels to make sure that sync label is set properly for both |
3157 // the default voice channel and following ones. | 3155 // the default voice channel and following ones. |
3158 EXPECT_TRUE(channel_->AddRecvStream(sp)); | 3156 EXPECT_TRUE(channel_->AddRecvStream(sp)); |
3159 sp.ssrcs[0] += 1; | 3157 sp.ssrcs[0] += 1; |
3160 EXPECT_TRUE(channel_->AddRecvStream(sp)); | 3158 EXPECT_TRUE(channel_->AddRecvStream(sp)); |
3161 | 3159 |
3162 ASSERT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3160 ASSERT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3163 EXPECT_EQ(kSyncLabel, | 3161 EXPECT_EQ(kSyncLabel, |
3164 call_.GetAudioReceiveStream(kAudioSsrc)->GetConfig().sync_group) | 3162 call_.GetAudioReceiveStream(kAudioSsrc)->GetConfig().sync_group) |
3165 << "SyncGroup should be set based on sync_label"; | 3163 << "SyncGroup should be set based on sync_label"; |
3166 EXPECT_EQ(kSyncLabel, | 3164 EXPECT_EQ(kSyncLabel, |
3167 call_.GetAudioReceiveStream(kAudioSsrc + 1)->GetConfig().sync_group) | 3165 call_.GetAudioReceiveStream(kAudioSsrc + 1)->GetConfig().sync_group) |
3168 << "SyncGroup should be set based on sync_label"; | 3166 << "SyncGroup should be set based on sync_label"; |
3169 } | 3167 } |
3170 | 3168 |
3171 TEST_F(WebRtcVoiceEngineTestFake, CanChangeCombinedBweOption) { | 3169 TEST_F(WebRtcVoiceEngineTestFake, CanChangeCombinedBweOption) { |
3172 // Test that changing the combined_audio_video_bwe option results in the | 3170 // Test that changing the combined_audio_video_bwe option results in the |
3173 // expected state changes on an associated Call. | 3171 // expected state changes on an associated Call. |
3174 std::vector<uint32> ssrcs; | 3172 std::vector<uint32_t> ssrcs; |
3175 ssrcs.push_back(223); | 3173 ssrcs.push_back(223); |
3176 ssrcs.push_back(224); | 3174 ssrcs.push_back(224); |
3177 | 3175 |
3178 EXPECT_TRUE(SetupEngine()); | 3176 EXPECT_TRUE(SetupEngine()); |
3179 cricket::WebRtcVoiceMediaChannel* media_channel = | 3177 cricket::WebRtcVoiceMediaChannel* media_channel = |
3180 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3178 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3181 for (uint32 ssrc : ssrcs) { | 3179 for (uint32_t ssrc : ssrcs) { |
3182 EXPECT_TRUE(media_channel->AddRecvStream( | 3180 EXPECT_TRUE(media_channel->AddRecvStream( |
3183 cricket::StreamParams::CreateLegacy(ssrc))); | 3181 cricket::StreamParams::CreateLegacy(ssrc))); |
3184 } | 3182 } |
3185 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3183 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3186 | 3184 |
3187 // Combined BWE should be disabled. | 3185 // Combined BWE should be disabled. |
3188 for (uint32 ssrc : ssrcs) { | 3186 for (uint32_t ssrc : ssrcs) { |
3189 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3187 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3190 EXPECT_NE(nullptr, s); | 3188 EXPECT_NE(nullptr, s); |
3191 EXPECT_EQ(false, s->GetConfig().combined_audio_video_bwe); | 3189 EXPECT_EQ(false, s->GetConfig().combined_audio_video_bwe); |
3192 } | 3190 } |
3193 | 3191 |
3194 // Enable combined BWE option - now it should be set up. | 3192 // Enable combined BWE option - now it should be set up. |
3195 send_parameters_.options.combined_audio_video_bwe.Set(true); | 3193 send_parameters_.options.combined_audio_video_bwe.Set(true); |
3196 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); | 3194 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); |
3197 for (uint32 ssrc : ssrcs) { | 3195 for (uint32_t ssrc : ssrcs) { |
3198 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3196 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3199 EXPECT_NE(nullptr, s); | 3197 EXPECT_NE(nullptr, s); |
3200 EXPECT_EQ(true, s->GetConfig().combined_audio_video_bwe); | 3198 EXPECT_EQ(true, s->GetConfig().combined_audio_video_bwe); |
3201 } | 3199 } |
3202 | 3200 |
3203 // Disable combined BWE option - should be disabled again. | 3201 // Disable combined BWE option - should be disabled again. |
3204 send_parameters_.options.combined_audio_video_bwe.Set(false); | 3202 send_parameters_.options.combined_audio_video_bwe.Set(false); |
3205 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); | 3203 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); |
3206 for (uint32 ssrc : ssrcs) { | 3204 for (uint32_t ssrc : ssrcs) { |
3207 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3205 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3208 EXPECT_NE(nullptr, s); | 3206 EXPECT_NE(nullptr, s); |
3209 EXPECT_EQ(false, s->GetConfig().combined_audio_video_bwe); | 3207 EXPECT_EQ(false, s->GetConfig().combined_audio_video_bwe); |
3210 } | 3208 } |
3211 | 3209 |
3212 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3210 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3213 } | 3211 } |
3214 | 3212 |
3215 TEST_F(WebRtcVoiceEngineTestFake, ConfigureCombinedBweForNewRecvStreams) { | 3213 TEST_F(WebRtcVoiceEngineTestFake, ConfigureCombinedBweForNewRecvStreams) { |
3216 // Test that adding receive streams after enabling combined bandwidth | 3214 // Test that adding receive streams after enabling combined bandwidth |
3217 // estimation will correctly configure each channel. | 3215 // estimation will correctly configure each channel. |
3218 EXPECT_TRUE(SetupEngine()); | 3216 EXPECT_TRUE(SetupEngine()); |
3219 cricket::WebRtcVoiceMediaChannel* media_channel = | 3217 cricket::WebRtcVoiceMediaChannel* media_channel = |
3220 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3218 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3221 send_parameters_.options.combined_audio_video_bwe.Set(true); | 3219 send_parameters_.options.combined_audio_video_bwe.Set(true); |
3222 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); | 3220 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); |
3223 | 3221 |
3224 static const uint32 kSsrcs[] = {1, 2, 3, 4}; | 3222 static const uint32_t kSsrcs[] = {1, 2, 3, 4}; |
3225 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs); ++i) { | 3223 for (unsigned int i = 0; i < ARRAY_SIZE(kSsrcs); ++i) { |
3226 EXPECT_TRUE(media_channel->AddRecvStream( | 3224 EXPECT_TRUE(media_channel->AddRecvStream( |
3227 cricket::StreamParams::CreateLegacy(kSsrcs[i]))); | 3225 cricket::StreamParams::CreateLegacy(kSsrcs[i]))); |
3228 EXPECT_NE(nullptr, call_.GetAudioReceiveStream(kSsrcs[i])); | 3226 EXPECT_NE(nullptr, call_.GetAudioReceiveStream(kSsrcs[i])); |
3229 } | 3227 } |
3230 EXPECT_EQ(ARRAY_SIZE(kSsrcs), call_.GetAudioReceiveStreams().size()); | 3228 EXPECT_EQ(ARRAY_SIZE(kSsrcs), call_.GetAudioReceiveStreams().size()); |
3231 } | 3229 } |
3232 | 3230 |
3233 TEST_F(WebRtcVoiceEngineTestFake, ConfiguresAudioReceiveStreamRtpExtensions) { | 3231 TEST_F(WebRtcVoiceEngineTestFake, ConfiguresAudioReceiveStreamRtpExtensions) { |
3234 // Test that setting the header extensions results in the expected state | 3232 // Test that setting the header extensions results in the expected state |
3235 // changes on an associated Call. | 3233 // changes on an associated Call. |
3236 std::vector<uint32> ssrcs; | 3234 std::vector<uint32_t> ssrcs; |
3237 ssrcs.push_back(223); | 3235 ssrcs.push_back(223); |
3238 ssrcs.push_back(224); | 3236 ssrcs.push_back(224); |
3239 | 3237 |
3240 EXPECT_TRUE(SetupEngine()); | 3238 EXPECT_TRUE(SetupEngine()); |
3241 cricket::WebRtcVoiceMediaChannel* media_channel = | 3239 cricket::WebRtcVoiceMediaChannel* media_channel = |
3242 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3240 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3243 send_parameters_.options.combined_audio_video_bwe.Set(true); | 3241 send_parameters_.options.combined_audio_video_bwe.Set(true); |
3244 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); | 3242 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); |
3245 for (uint32 ssrc : ssrcs) { | 3243 for (uint32_t ssrc : ssrcs) { |
3246 EXPECT_TRUE(media_channel->AddRecvStream( | 3244 EXPECT_TRUE(media_channel->AddRecvStream( |
3247 cricket::StreamParams::CreateLegacy(ssrc))); | 3245 cricket::StreamParams::CreateLegacy(ssrc))); |
3248 } | 3246 } |
3249 | 3247 |
3250 // Combined BWE should be set up, but with no configured extensions. | 3248 // Combined BWE should be set up, but with no configured extensions. |
3251 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3249 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3252 for (uint32 ssrc : ssrcs) { | 3250 for (uint32_t ssrc : ssrcs) { |
3253 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3251 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3254 EXPECT_NE(nullptr, s); | 3252 EXPECT_NE(nullptr, s); |
3255 EXPECT_EQ(0, s->GetConfig().rtp.extensions.size()); | 3253 EXPECT_EQ(0, s->GetConfig().rtp.extensions.size()); |
3256 } | 3254 } |
3257 | 3255 |
3258 // Set up receive extensions. | 3256 // Set up receive extensions. |
3259 const auto& e_exts = engine_.rtp_header_extensions(); | 3257 const auto& e_exts = engine_.rtp_header_extensions(); |
3260 cricket::AudioRecvParameters recv_parameters; | 3258 cricket::AudioRecvParameters recv_parameters; |
3261 recv_parameters.extensions = e_exts; | 3259 recv_parameters.extensions = e_exts; |
3262 channel_->SetRecvParameters(recv_parameters); | 3260 channel_->SetRecvParameters(recv_parameters); |
3263 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3261 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3264 for (uint32 ssrc : ssrcs) { | 3262 for (uint32_t ssrc : ssrcs) { |
3265 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3263 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3266 EXPECT_NE(nullptr, s); | 3264 EXPECT_NE(nullptr, s); |
3267 const auto& s_exts = s->GetConfig().rtp.extensions; | 3265 const auto& s_exts = s->GetConfig().rtp.extensions; |
3268 EXPECT_EQ(e_exts.size(), s_exts.size()); | 3266 EXPECT_EQ(e_exts.size(), s_exts.size()); |
3269 for (const auto& e_ext : e_exts) { | 3267 for (const auto& e_ext : e_exts) { |
3270 for (const auto& s_ext : s_exts) { | 3268 for (const auto& s_ext : s_exts) { |
3271 if (e_ext.id == s_ext.id) { | 3269 if (e_ext.id == s_ext.id) { |
3272 EXPECT_EQ(e_ext.uri, s_ext.name); | 3270 EXPECT_EQ(e_ext.uri, s_ext.name); |
3273 } | 3271 } |
3274 } | 3272 } |
3275 } | 3273 } |
3276 } | 3274 } |
3277 | 3275 |
3278 // Disable receive extensions. | 3276 // Disable receive extensions. |
3279 channel_->SetRecvParameters(cricket::AudioRecvParameters()); | 3277 channel_->SetRecvParameters(cricket::AudioRecvParameters()); |
3280 for (uint32 ssrc : ssrcs) { | 3278 for (uint32_t ssrc : ssrcs) { |
3281 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3279 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3282 EXPECT_NE(nullptr, s); | 3280 EXPECT_NE(nullptr, s); |
3283 EXPECT_EQ(0, s->GetConfig().rtp.extensions.size()); | 3281 EXPECT_EQ(0, s->GetConfig().rtp.extensions.size()); |
3284 } | 3282 } |
3285 } | 3283 } |
3286 | 3284 |
3287 TEST_F(WebRtcVoiceEngineTestFake, DeliverAudioPacket_Call) { | 3285 TEST_F(WebRtcVoiceEngineTestFake, DeliverAudioPacket_Call) { |
3288 // Test that packets are forwarded to the Call when configured accordingly. | 3286 // Test that packets are forwarded to the Call when configured accordingly. |
3289 const uint32 kAudioSsrc = 1; | 3287 const uint32_t kAudioSsrc = 1; |
3290 rtc::Buffer kPcmuPacket(kPcmuFrame, sizeof(kPcmuFrame)); | 3288 rtc::Buffer kPcmuPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
3291 static const unsigned char kRtcp[] = { | 3289 static const unsigned char kRtcp[] = { |
3292 0x80, 0xc9, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, | 3290 0x80, 0xc9, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, |
3293 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, | 3291 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, |
3294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 3292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
3295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | 3293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
3296 }; | 3294 }; |
3297 rtc::Buffer kRtcpPacket(kRtcp, sizeof(kRtcp)); | 3295 rtc::Buffer kRtcpPacket(kRtcp, sizeof(kRtcp)); |
3298 | 3296 |
3299 EXPECT_TRUE(SetupEngine()); | 3297 EXPECT_TRUE(SetupEngine()); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3525 cricket::WebRtcVoiceEngine engine; | 3523 cricket::WebRtcVoiceEngine engine; |
3526 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); | 3524 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); |
3527 rtc::scoped_ptr<webrtc::Call> call( | 3525 rtc::scoped_ptr<webrtc::Call> call( |
3528 webrtc::Call::Create(webrtc::Call::Config())); | 3526 webrtc::Call::Create(webrtc::Call::Config())); |
3529 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), | 3527 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), |
3530 call.get()); | 3528 call.get()); |
3531 cricket::AudioRecvParameters parameters; | 3529 cricket::AudioRecvParameters parameters; |
3532 parameters.codecs = engine.codecs(); | 3530 parameters.codecs = engine.codecs(); |
3533 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3531 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3534 } | 3532 } |
OLD | NEW |