| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  *  Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. |     2  *  Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 
|     3  * |     3  * | 
|     4  *  Use of this source code is governed by a BSD-style license |     4  *  Use of this source code is governed by a BSD-style license | 
|     5  *  that can be found in the LICENSE file in the root of the source |     5  *  that can be found in the LICENSE file in the root of the source | 
|     6  *  tree. An additional intellectual property rights grant can be found |     6  *  tree. An additional intellectual property rights grant can be found | 
|     7  *  in the file PATENTS.  All contributing project authors may |     7  *  in the file PATENTS.  All contributing project authors may | 
|     8  *  be found in the AUTHORS file in the root of the source tree. |     8  *  be found in the AUTHORS file in the root of the source tree. | 
|     9  */ |     9  */ | 
|    10  |    10  | 
| (...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1220   FakeVideoSendStream* send_stream = AddSendStream( |  1220   FakeVideoSendStream* send_stream = AddSendStream( | 
|  1221       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); |  1221       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); | 
|  1222  |  1222  | 
|  1223   ASSERT_EQ(rtx_ssrcs.size(), send_stream->GetConfig().rtp.rtx.ssrcs.size()); |  1223   ASSERT_EQ(rtx_ssrcs.size(), send_stream->GetConfig().rtp.rtx.ssrcs.size()); | 
|  1224   for (size_t i = 0; i < rtx_ssrcs.size(); ++i) |  1224   for (size_t i = 0; i < rtx_ssrcs.size(); ++i) | 
|  1225     EXPECT_EQ(rtx_ssrcs[i], send_stream->GetConfig().rtp.rtx.ssrcs[i]); |  1225     EXPECT_EQ(rtx_ssrcs[i], send_stream->GetConfig().rtp.rtx.ssrcs[i]); | 
|  1226  |  1226  | 
|  1227   // Receiver side. |  1227   // Receiver side. | 
|  1228   FakeVideoReceiveStream* recv_stream = AddRecvStream( |  1228   FakeVideoReceiveStream* recv_stream = AddRecvStream( | 
|  1229       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); |  1229       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); | 
|  1230   EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx_payload_types.empty()); |  1230   EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx.empty()); | 
|  1231   EXPECT_EQ(recv_stream->GetConfig().decoders.size(), |  1231   EXPECT_EQ(recv_stream->GetConfig().decoders.size(), | 
|  1232             recv_stream->GetConfig().rtp.rtx_payload_types.size()) |  1232             recv_stream->GetConfig().rtp.rtx.size()) | 
|  1233       << "RTX should be mapped for all decoders/payload types."; |  1233       << "RTX should be mapped for all decoders/payload types."; | 
|  1234   EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc); |  1234   for (const auto& kv : recv_stream->GetConfig().rtp.rtx) { | 
 |  1235     EXPECT_EQ(rtx_ssrcs[0], kv.second.ssrc); | 
 |  1236   } | 
|  1235 } |  1237 } | 
|  1236  |  1238  | 
|  1237 TEST_F(WebRtcVideoChannel2Test, RecvStreamWithRtx) { |  1239 TEST_F(WebRtcVideoChannel2Test, RecvStreamWithRtx) { | 
|  1238   // Setup one channel with an associated RTX stream. |  1240   // Setup one channel with an associated RTX stream. | 
|  1239   cricket::StreamParams params = |  1241   cricket::StreamParams params = | 
|  1240       cricket::StreamParams::CreateLegacy(kSsrcs1[0]); |  1242       cricket::StreamParams::CreateLegacy(kSsrcs1[0]); | 
|  1241   params.AddFidSsrc(kSsrcs1[0], kRtxSsrcs1[0]); |  1243   params.AddFidSsrc(kSsrcs1[0], kRtxSsrcs1[0]); | 
|  1242   FakeVideoReceiveStream* recv_stream = AddRecvStream(params); |  1244   FakeVideoReceiveStream* recv_stream = AddRecvStream(params); | 
|  1243   EXPECT_EQ(kRtxSsrcs1[0], recv_stream->GetConfig().rtp.rtx_ssrc); |  1245   EXPECT_EQ(kRtxSsrcs1[0], | 
 |  1246             recv_stream->GetConfig().rtp.rtx.begin()->second.ssrc); | 
|  1244 } |  1247 } | 
|  1245  |  1248  | 
|  1246 TEST_F(WebRtcVideoChannel2Test, RecvStreamNoRtx) { |  1249 TEST_F(WebRtcVideoChannel2Test, RecvStreamNoRtx) { | 
|  1247   // Setup one channel without an associated RTX stream. |  1250   // Setup one channel without an associated RTX stream. | 
|  1248   cricket::StreamParams params = |  1251   cricket::StreamParams params = | 
|  1249       cricket::StreamParams::CreateLegacy(kSsrcs1[0]); |  1252       cricket::StreamParams::CreateLegacy(kSsrcs1[0]); | 
|  1250   FakeVideoReceiveStream* recv_stream = AddRecvStream(params); |  1253   FakeVideoReceiveStream* recv_stream = AddRecvStream(params); | 
|  1251   ASSERT_EQ(0U, recv_stream->GetConfig().rtp.rtx_ssrc); |  1254   ASSERT_TRUE(recv_stream->GetConfig().rtp.rtx.empty()); | 
|  1252 } |  1255 } | 
|  1253  |  1256  | 
|  1254 TEST_F(WebRtcVideoChannel2Test, NoHeaderExtesionsByDefault) { |  1257 TEST_F(WebRtcVideoChannel2Test, NoHeaderExtesionsByDefault) { | 
|  1255   FakeVideoSendStream* send_stream = |  1258   FakeVideoSendStream* send_stream = | 
|  1256       AddSendStream(cricket::StreamParams::CreateLegacy(kSsrcs1[0])); |  1259       AddSendStream(cricket::StreamParams::CreateLegacy(kSsrcs1[0])); | 
|  1257   ASSERT_TRUE(send_stream->GetConfig().rtp.extensions.empty()); |  1260   ASSERT_TRUE(send_stream->GetConfig().rtp.extensions.empty()); | 
|  1258  |  1261  | 
|  1259   FakeVideoReceiveStream* recv_stream = |  1262   FakeVideoReceiveStream* recv_stream = | 
|  1260       AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrcs1[0])); |  1263       AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrcs1[0])); | 
|  1261   ASSERT_TRUE(recv_stream->GetConfig().rtp.extensions.empty()); |  1264   ASSERT_TRUE(recv_stream->GetConfig().rtp.extensions.empty()); | 
| (...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2471     cricket::VideoCodec rtx_codec = cricket::VideoCodec::CreateRtxCodec( |  2474     cricket::VideoCodec rtx_codec = cricket::VideoCodec::CreateRtxCodec( | 
|  2472         kUnusedPayloadType1, kUnusedPayloadType2); |  2475         kUnusedPayloadType1, kUnusedPayloadType2); | 
|  2473     cricket::VideoSendParameters parameters; |  2476     cricket::VideoSendParameters parameters; | 
|  2474     parameters.codecs.push_back(GetEngineCodec("VP8")); |  2477     parameters.codecs.push_back(GetEngineCodec("VP8")); | 
|  2475     parameters.codecs.push_back(rtx_codec); |  2478     parameters.codecs.push_back(rtx_codec); | 
|  2476     EXPECT_FALSE(channel_->SetSendParameters(parameters)) |  2479     EXPECT_FALSE(channel_->SetSendParameters(parameters)) | 
|  2477         << "RTX without matching video codec should be rejected."; |  2480         << "RTX without matching video codec should be rejected."; | 
|  2478   } |  2481   } | 
|  2479 } |  2482 } | 
|  2480  |  2483  | 
|  2481 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithChangedRtxPayloadType) { |  | 
|  2482   const int kUnusedPayloadType1 = 126; |  | 
|  2483   const int kUnusedPayloadType2 = 127; |  | 
|  2484   EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType1)); |  | 
|  2485   EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType2)); |  | 
|  2486  |  | 
|  2487   // SSRCs for RTX. |  | 
|  2488   cricket::StreamParams params = |  | 
|  2489       cricket::StreamParams::CreateLegacy(kSsrcs1[0]); |  | 
|  2490   params.AddFidSsrc(kSsrcs1[0], kRtxSsrcs1[0]); |  | 
|  2491   AddSendStream(params); |  | 
|  2492  |  | 
|  2493   // Original payload type for RTX. |  | 
|  2494   cricket::VideoSendParameters parameters; |  | 
|  2495   parameters.codecs.push_back(GetEngineCodec("VP8")); |  | 
|  2496   cricket::VideoCodec rtx_codec(kUnusedPayloadType1, "rtx"); |  | 
|  2497   rtx_codec.SetParam("apt", GetEngineCodec("VP8").id); |  | 
|  2498   parameters.codecs.push_back(rtx_codec); |  | 
|  2499   EXPECT_TRUE(channel_->SetSendParameters(parameters)); |  | 
|  2500   ASSERT_EQ(1U, fake_call_->GetVideoSendStreams().size()); |  | 
|  2501   const webrtc::VideoSendStream::Config& config_before = |  | 
|  2502       fake_call_->GetVideoSendStreams()[0]->GetConfig(); |  | 
|  2503   EXPECT_EQ(kUnusedPayloadType1, config_before.rtp.rtx.payload_type); |  | 
|  2504   ASSERT_EQ(1U, config_before.rtp.rtx.ssrcs.size()); |  | 
|  2505   EXPECT_EQ(kRtxSsrcs1[0], config_before.rtp.rtx.ssrcs[0]); |  | 
|  2506  |  | 
|  2507   // Change payload type for RTX. |  | 
|  2508   parameters.codecs[1].id = kUnusedPayloadType2; |  | 
|  2509   EXPECT_TRUE(channel_->SetSendParameters(parameters)); |  | 
|  2510   ASSERT_EQ(1U, fake_call_->GetVideoSendStreams().size()); |  | 
|  2511   const webrtc::VideoSendStream::Config& config_after = |  | 
|  2512       fake_call_->GetVideoSendStreams()[0]->GetConfig(); |  | 
|  2513   EXPECT_EQ(kUnusedPayloadType2, config_after.rtp.rtx.payload_type); |  | 
|  2514   ASSERT_EQ(1U, config_after.rtp.rtx.ssrcs.size()); |  | 
|  2515   EXPECT_EQ(kRtxSsrcs1[0], config_after.rtp.rtx.ssrcs[0]); |  | 
|  2516 } |  | 
|  2517  |  | 
|  2518 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFecDisablesFec) { |  2484 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFecDisablesFec) { | 
|  2519   cricket::VideoSendParameters parameters; |  2485   cricket::VideoSendParameters parameters; | 
|  2520   parameters.codecs.push_back(GetEngineCodec("VP8")); |  2486   parameters.codecs.push_back(GetEngineCodec("VP8")); | 
|  2521   parameters.codecs.push_back(GetEngineCodec("ulpfec")); |  2487   parameters.codecs.push_back(GetEngineCodec("ulpfec")); | 
|  2522   ASSERT_TRUE(channel_->SetSendParameters(parameters)); |  2488   ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 
|  2523  |  2489  | 
|  2524   FakeVideoSendStream* stream = AddSendStream(); |  2490   FakeVideoSendStream* stream = AddSendStream(); | 
|  2525   webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); |  2491   webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); | 
|  2526  |  2492  | 
|  2527   EXPECT_EQ(GetEngineCodec("ulpfec").id, config.rtp.ulpfec.ulpfec_payload_type); |  2493   EXPECT_EQ(GetEngineCodec("ulpfec").id, config.rtp.ulpfec.ulpfec_payload_type); | 
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2838  |  2804  | 
|  2839   cricket::VideoCodec rtx_codec2(kUnusedPayloadType2, "rtx"); |  2805   cricket::VideoCodec rtx_codec2(kUnusedPayloadType2, "rtx"); | 
|  2840   rtx_codec2.SetParam("apt", rtx_codec.id); |  2806   rtx_codec2.SetParam("apt", rtx_codec.id); | 
|  2841   parameters.codecs.push_back(rtx_codec2); |  2807   parameters.codecs.push_back(rtx_codec2); | 
|  2842  |  2808  | 
|  2843   EXPECT_FALSE(channel_->SetRecvParameters(parameters)) << |  2809   EXPECT_FALSE(channel_->SetRecvParameters(parameters)) << | 
|  2844       "RTX codec with another RTX as associated payload type should be " |  2810       "RTX codec with another RTX as associated payload type should be " | 
|  2845       "rejected."; |  2811       "rejected."; | 
|  2846 } |  2812 } | 
|  2847  |  2813  | 
|  2848 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithChangedRtxPayloadType) { |  | 
|  2849   const int kUnusedPayloadType1 = 126; |  | 
|  2850   const int kUnusedPayloadType2 = 127; |  | 
|  2851   EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType1)); |  | 
|  2852   EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType2)); |  | 
|  2853  |  | 
|  2854   // SSRCs for RTX. |  | 
|  2855   cricket::StreamParams params = |  | 
|  2856       cricket::StreamParams::CreateLegacy(kSsrcs1[0]); |  | 
|  2857   params.AddFidSsrc(kSsrcs1[0], kRtxSsrcs1[0]); |  | 
|  2858   AddRecvStream(params); |  | 
|  2859  |  | 
|  2860   // Original payload type for RTX. |  | 
|  2861   cricket::VideoRecvParameters parameters; |  | 
|  2862   parameters.codecs.push_back(GetEngineCodec("VP8")); |  | 
|  2863   cricket::VideoCodec rtx_codec(kUnusedPayloadType1, "rtx"); |  | 
|  2864   rtx_codec.SetParam("apt", GetEngineCodec("VP8").id); |  | 
|  2865   parameters.codecs.push_back(rtx_codec); |  | 
|  2866   EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |  | 
|  2867   ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size()); |  | 
|  2868   const webrtc::VideoReceiveStream::Config& config_before = |  | 
|  2869       fake_call_->GetVideoReceiveStreams()[0]->GetConfig(); |  | 
|  2870   EXPECT_EQ(1U, config_before.rtp.rtx_payload_types.size()); |  | 
|  2871   auto it_before = |  | 
|  2872       config_before.rtp.rtx_payload_types.find(GetEngineCodec("VP8").id); |  | 
|  2873   ASSERT_NE(it_before, config_before.rtp.rtx_payload_types.end()); |  | 
|  2874   EXPECT_EQ(kUnusedPayloadType1, it_before->second); |  | 
|  2875   EXPECT_EQ(kRtxSsrcs1[0], config_before.rtp.rtx_ssrc); |  | 
|  2876  |  | 
|  2877   // Change payload type for RTX. |  | 
|  2878   parameters.codecs[1].id = kUnusedPayloadType2; |  | 
|  2879   EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |  | 
|  2880   ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size()); |  | 
|  2881   const webrtc::VideoReceiveStream::Config& config_after = |  | 
|  2882       fake_call_->GetVideoReceiveStreams()[0]->GetConfig(); |  | 
|  2883   EXPECT_EQ(1U, config_after.rtp.rtx_payload_types.size()); |  | 
|  2884   auto it_after = |  | 
|  2885       config_after.rtp.rtx_payload_types.find(GetEngineCodec("VP8").id); |  | 
|  2886   ASSERT_NE(it_after, config_after.rtp.rtx_payload_types.end()); |  | 
|  2887   EXPECT_EQ(kUnusedPayloadType2, it_after->second); |  | 
|  2888   EXPECT_EQ(kRtxSsrcs1[0], config_after.rtp.rtx_ssrc); |  | 
|  2889 } |  | 
|  2890  |  | 
|  2891 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsDifferentPayloadType) { |  2814 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsDifferentPayloadType) { | 
|  2892   cricket::VideoRecvParameters parameters; |  2815   cricket::VideoRecvParameters parameters; | 
|  2893   parameters.codecs.push_back(GetEngineCodec("VP8")); |  2816   parameters.codecs.push_back(GetEngineCodec("VP8")); | 
|  2894   parameters.codecs[0].id = 99; |  2817   parameters.codecs[0].id = 99; | 
|  2895   EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |  2818   EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 
|  2896 } |  2819 } | 
|  2897  |  2820  | 
|  2898 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsAcceptDefaultCodecs) { |  2821 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsAcceptDefaultCodecs) { | 
|  2899   cricket::VideoRecvParameters parameters; |  2822   cricket::VideoRecvParameters parameters; | 
|  2900   parameters.codecs = engine_.codecs(); |  2823   parameters.codecs = engine_.codecs(); | 
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3510   uint8_t data[kDataLength]; |  3433   uint8_t data[kDataLength]; | 
|  3511   memset(data, 0, sizeof(data)); |  3434   memset(data, 0, sizeof(data)); | 
|  3512   rtc::SetBE32(&data[8], ssrcs[0]); |  3435   rtc::SetBE32(&data[8], ssrcs[0]); | 
|  3513   rtc::CopyOnWriteBuffer packet(data, kDataLength); |  3436   rtc::CopyOnWriteBuffer packet(data, kDataLength); | 
|  3514   rtc::PacketTime packet_time; |  3437   rtc::PacketTime packet_time; | 
|  3515   channel_->OnPacketReceived(&packet, packet_time); |  3438   channel_->OnPacketReceived(&packet, packet_time); | 
|  3516  |  3439  | 
|  3517   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()) |  3440   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()) | 
|  3518       << "No default receive stream created."; |  3441       << "No default receive stream created."; | 
|  3519   FakeVideoReceiveStream* recv_stream = fake_call_->GetVideoReceiveStreams()[0]; |  3442   FakeVideoReceiveStream* recv_stream = fake_call_->GetVideoReceiveStreams()[0]; | 
|  3520   EXPECT_EQ(0u, recv_stream->GetConfig().rtp.rtx_ssrc) |  3443   EXPECT_TRUE(recv_stream->GetConfig().rtp.rtx.empty()) | 
|  3521       << "Default receive stream should not have configured RTX"; |  3444       << "Default receive stream should not have configured RTX"; | 
|  3522  |  3445  | 
|  3523   EXPECT_TRUE(channel_->AddRecvStream( |  3446   EXPECT_TRUE(channel_->AddRecvStream( | 
|  3524       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs))); |  3447       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs))); | 
|  3525   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()) |  3448   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()) | 
|  3526       << "AddRecvStream should have reconfigured, not added a new receiver."; |  3449       << "AddRecvStream should've reconfigured, not added a new receiver."; | 
|  3527   recv_stream = fake_call_->GetVideoReceiveStreams()[0]; |  3450   recv_stream = fake_call_->GetVideoReceiveStreams()[0]; | 
|  3528   EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx_payload_types.empty()); |  3451   EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx.empty()); | 
|  3529   EXPECT_EQ(recv_stream->GetConfig().decoders.size(), |  3452   EXPECT_EQ(recv_stream->GetConfig().decoders.size(), | 
|  3530             recv_stream->GetConfig().rtp.rtx_payload_types.size()) |  3453             recv_stream->GetConfig().rtp.rtx.size()) | 
|  3531       << "RTX should be mapped for all decoders/payload types."; |  3454       << "RTX should be mapped for all decoders/payload types."; | 
|  3532   EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc); |  3455   for (const auto& kv : recv_stream->GetConfig().rtp.rtx) { | 
 |  3456     EXPECT_EQ(rtx_ssrcs[0], kv.second.ssrc); | 
 |  3457   } | 
|  3533 } |  3458 } | 
|  3534  |  3459  | 
|  3535 TEST_F(WebRtcVideoChannel2Test, RejectsAddingStreamsWithMissingSsrcsForRtx) { |  3460 TEST_F(WebRtcVideoChannel2Test, RejectsAddingStreamsWithMissingSsrcsForRtx) { | 
|  3536   EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |  3461   EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 
|  3537  |  3462  | 
|  3538   const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs1); |  3463   const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs1); | 
|  3539   const std::vector<uint32_t> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1); |  3464   const std::vector<uint32_t> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1); | 
|  3540  |  3465  | 
|  3541   StreamParams sp = |  3466   StreamParams sp = | 
|  3542       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs); |  3467       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs); | 
| (...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4166  |  4091  | 
|  4167 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { |  4092 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { | 
|  4168   VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3); |  4093   VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3); | 
|  4169 } |  4094 } | 
|  4170  |  4095  | 
|  4171 // Test that we normalize send codec format size in simulcast. |  4096 // Test that we normalize send codec format size in simulcast. | 
|  4172 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |  4097 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 
|  4173   VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2); |  4098   VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2); | 
|  4174 } |  4099 } | 
|  4175 }  // namespace cricket |  4100 }  // namespace cricket | 
| OLD | NEW |