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 |
11 #include <algorithm> | 11 #include <algorithm> |
12 #include <list> | |
13 #include <map> | 12 #include <map> |
14 #include <memory> | 13 #include <memory> |
15 #include <vector> | 14 #include <vector> |
16 | 15 |
17 #include "webrtc/base/arraysize.h" | 16 #include "webrtc/base/arraysize.h" |
18 #include "webrtc/base/gunit.h" | 17 #include "webrtc/base/gunit.h" |
19 #include "webrtc/base/stringutils.h" | 18 #include "webrtc/base/stringutils.h" |
20 #include "webrtc/common_video/h264/profile_level_id.h" | 19 #include "webrtc/common_video/h264/profile_level_id.h" |
21 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" | 20 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
22 #include "webrtc/media/base/mediaconstants.h" | 21 #include "webrtc/media/base/mediaconstants.h" |
(...skipping 2394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2417 cricket::VideoSendParameters parameters; | 2416 cricket::VideoSendParameters parameters; |
2418 parameters.codecs.push_back(GetEngineCodec("VP8")); | 2417 parameters.codecs.push_back(GetEngineCodec("VP8")); |
2419 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2418 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2420 | 2419 |
2421 FakeVideoSendStream* stream = AddSendStream(); | 2420 FakeVideoSendStream* stream = AddSendStream(); |
2422 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); | 2421 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); |
2423 | 2422 |
2424 EXPECT_EQ(-1, config.rtp.flexfec.payload_type); | 2423 EXPECT_EQ(-1, config.rtp.flexfec.payload_type); |
2425 } | 2424 } |
2426 | 2425 |
| 2426 TEST_F(WebRtcVideoChannel2FlexfecTest, SetRecvCodecsWithFec) { |
| 2427 AddRecvStream( |
| 2428 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); |
| 2429 const std::vector<FakeFlexfecReceiveStream*>& streams = |
| 2430 fake_call_->GetFlexfecReceiveStreams(); |
| 2431 |
| 2432 cricket::VideoRecvParameters recv_parameters; |
| 2433 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); |
| 2434 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); |
| 2435 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
| 2436 ASSERT_EQ(1U, streams.size()); |
| 2437 const FakeFlexfecReceiveStream* stream_with_recv_params = streams.front(); |
| 2438 EXPECT_EQ(GetEngineCodec("flexfec-03").id, |
| 2439 stream_with_recv_params->GetConfig().payload_type); |
| 2440 EXPECT_EQ(kFlexfecSsrc, stream_with_recv_params->GetConfig().remote_ssrc); |
| 2441 EXPECT_EQ(1U, |
| 2442 stream_with_recv_params->GetConfig().protected_media_ssrcs.size()); |
| 2443 EXPECT_EQ(kSsrcs1[0], |
| 2444 stream_with_recv_params->GetConfig().protected_media_ssrcs[0]); |
| 2445 } |
| 2446 |
2427 TEST_F(WebRtcVideoChannel2Test, | 2447 TEST_F(WebRtcVideoChannel2Test, |
2428 SetSendCodecRejectsRtxWithoutAssociatedPayloadType) { | 2448 SetSendCodecRejectsRtxWithoutAssociatedPayloadType) { |
2429 const int kUnusedPayloadType = 127; | 2449 const int kUnusedPayloadType = 127; |
2430 EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType)); | 2450 EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType)); |
2431 | 2451 |
2432 cricket::VideoSendParameters parameters; | 2452 cricket::VideoSendParameters parameters; |
2433 cricket::VideoCodec rtx_codec(kUnusedPayloadType, "rtx"); | 2453 cricket::VideoCodec rtx_codec(kUnusedPayloadType, "rtx"); |
2434 parameters.codecs.push_back(rtx_codec); | 2454 parameters.codecs.push_back(rtx_codec); |
2435 EXPECT_FALSE(channel_->SetSendParameters(parameters)) | 2455 EXPECT_FALSE(channel_->SetSendParameters(parameters)) |
2436 << "RTX codec without associated payload type should be rejected."; | 2456 << "RTX codec without associated payload type should be rejected."; |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2858 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled | 2878 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled |
2859 // by default. | 2879 // by default. |
2860 TEST_F(WebRtcVideoChannel2FlexfecTest, SetRecvParamsWithoutFecDisablesFec) { | 2880 TEST_F(WebRtcVideoChannel2FlexfecTest, SetRecvParamsWithoutFecDisablesFec) { |
2861 cricket::VideoSendParameters send_parameters; | 2881 cricket::VideoSendParameters send_parameters; |
2862 send_parameters.codecs.push_back(GetEngineCodec("VP8")); | 2882 send_parameters.codecs.push_back(GetEngineCodec("VP8")); |
2863 send_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); | 2883 send_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); |
2864 ASSERT_TRUE(channel_->SetSendParameters(send_parameters)); | 2884 ASSERT_TRUE(channel_->SetSendParameters(send_parameters)); |
2865 | 2885 |
2866 AddRecvStream( | 2886 AddRecvStream( |
2867 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); | 2887 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); |
2868 const std::list<FakeFlexfecReceiveStream>& streams = | 2888 const std::vector<FakeFlexfecReceiveStream*>& streams = |
2869 fake_call_->GetFlexfecReceiveStreams(); | 2889 fake_call_->GetFlexfecReceiveStreams(); |
2870 | 2890 |
2871 ASSERT_EQ(1U, streams.size()); | 2891 ASSERT_EQ(1U, streams.size()); |
2872 const FakeFlexfecReceiveStream& stream = streams.front(); | 2892 const FakeFlexfecReceiveStream* stream = streams.front(); |
2873 EXPECT_EQ(GetEngineCodec("flexfec-03").id, stream.GetConfig().payload_type); | 2893 EXPECT_EQ(GetEngineCodec("flexfec-03").id, stream->GetConfig().payload_type); |
2874 EXPECT_EQ(kFlexfecSsrc, stream.GetConfig().remote_ssrc); | 2894 EXPECT_EQ(kFlexfecSsrc, stream->GetConfig().remote_ssrc); |
2875 ASSERT_EQ(1U, stream.GetConfig().protected_media_ssrcs.size()); | 2895 ASSERT_EQ(1U, stream->GetConfig().protected_media_ssrcs.size()); |
2876 EXPECT_EQ(kSsrcs1[0], stream.GetConfig().protected_media_ssrcs[0]); | 2896 EXPECT_EQ(kSsrcs1[0], stream->GetConfig().protected_media_ssrcs[0]); |
2877 | 2897 |
2878 cricket::VideoRecvParameters recv_parameters; | 2898 cricket::VideoRecvParameters recv_parameters; |
2879 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); | 2899 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); |
2880 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); | 2900 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
2881 EXPECT_TRUE(streams.empty()) | 2901 EXPECT_TRUE(streams.empty()) |
2882 << "SetSendCodec without FlexFEC should disable current FlexFEC."; | 2902 << "SetSendCodec without FlexFEC should disable current FlexFEC."; |
2883 } | 2903 } |
2884 | 2904 |
2885 TEST_F(WebRtcVideoChannel2Test, SetSendParamsWithFecEnablesFec) { | 2905 TEST_F(WebRtcVideoChannel2Test, SetSendParamsWithFecEnablesFec) { |
2886 FakeVideoReceiveStream* stream = AddRecvStream(); | 2906 FakeVideoReceiveStream* stream = AddRecvStream(); |
(...skipping 20 matching lines...) Expand all Loading... |
2907 EXPECT_EQ(GetEngineCodec("ulpfec").id, | 2927 EXPECT_EQ(GetEngineCodec("ulpfec").id, |
2908 stream->GetConfig().rtp.ulpfec.ulpfec_payload_type) | 2928 stream->GetConfig().rtp.ulpfec.ulpfec_payload_type) |
2909 << "ULPFEC should be enabled on the receive stream."; | 2929 << "ULPFEC should be enabled on the receive stream."; |
2910 } | 2930 } |
2911 | 2931 |
2912 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled | 2932 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled |
2913 // by default. | 2933 // by default. |
2914 TEST_F(WebRtcVideoChannel2FlexfecTest, SetSendParamsWithFecEnablesFec) { | 2934 TEST_F(WebRtcVideoChannel2FlexfecTest, SetSendParamsWithFecEnablesFec) { |
2915 AddRecvStream( | 2935 AddRecvStream( |
2916 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); | 2936 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); |
2917 const std::list<FakeFlexfecReceiveStream>& streams = | 2937 const std::vector<FakeFlexfecReceiveStream*>& streams = |
2918 fake_call_->GetFlexfecReceiveStreams(); | 2938 fake_call_->GetFlexfecReceiveStreams(); |
2919 | 2939 |
2920 cricket::VideoRecvParameters recv_parameters; | 2940 cricket::VideoRecvParameters recv_parameters; |
2921 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); | 2941 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); |
2922 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); | 2942 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); |
2923 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); | 2943 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
2924 ASSERT_EQ(1U, streams.size()); | 2944 ASSERT_EQ(1U, streams.size()); |
2925 const FakeFlexfecReceiveStream& stream_with_recv_params = streams.front(); | 2945 const FakeFlexfecReceiveStream* stream_with_recv_params = streams.front(); |
2926 EXPECT_EQ(GetEngineCodec("flexfec-03").id, | 2946 EXPECT_EQ(GetEngineCodec("flexfec-03").id, |
2927 stream_with_recv_params.GetConfig().payload_type); | 2947 stream_with_recv_params->GetConfig().payload_type); |
2928 EXPECT_EQ(kFlexfecSsrc, stream_with_recv_params.GetConfig().remote_ssrc); | 2948 EXPECT_EQ(kFlexfecSsrc, stream_with_recv_params->GetConfig().remote_ssrc); |
2929 EXPECT_EQ(1U, | 2949 EXPECT_EQ(1U, |
2930 stream_with_recv_params.GetConfig().protected_media_ssrcs.size()); | 2950 stream_with_recv_params->GetConfig().protected_media_ssrcs.size()); |
2931 EXPECT_EQ(kSsrcs1[0], | 2951 EXPECT_EQ(kSsrcs1[0], |
2932 stream_with_recv_params.GetConfig().protected_media_ssrcs[0]); | 2952 stream_with_recv_params->GetConfig().protected_media_ssrcs[0]); |
2933 | 2953 |
2934 cricket::VideoSendParameters send_parameters; | 2954 cricket::VideoSendParameters send_parameters; |
2935 send_parameters.codecs.push_back(GetEngineCodec("VP8")); | 2955 send_parameters.codecs.push_back(GetEngineCodec("VP8")); |
2936 send_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); | 2956 send_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); |
2937 ASSERT_TRUE(channel_->SetSendParameters(send_parameters)); | 2957 ASSERT_TRUE(channel_->SetSendParameters(send_parameters)); |
2938 ASSERT_EQ(1U, streams.size()); | 2958 ASSERT_EQ(1U, streams.size()); |
2939 const FakeFlexfecReceiveStream& stream_with_send_params = streams.front(); | 2959 const FakeFlexfecReceiveStream* stream_with_send_params = streams.front(); |
2940 EXPECT_EQ(GetEngineCodec("flexfec-03").id, | 2960 EXPECT_EQ(GetEngineCodec("flexfec-03").id, |
2941 stream_with_send_params.GetConfig().payload_type); | 2961 stream_with_send_params->GetConfig().payload_type); |
2942 EXPECT_EQ(kFlexfecSsrc, stream_with_send_params.GetConfig().remote_ssrc); | 2962 EXPECT_EQ(kFlexfecSsrc, stream_with_send_params->GetConfig().remote_ssrc); |
2943 EXPECT_EQ(1U, | 2963 EXPECT_EQ(1U, |
2944 stream_with_send_params.GetConfig().protected_media_ssrcs.size()); | 2964 stream_with_send_params->GetConfig().protected_media_ssrcs.size()); |
2945 EXPECT_EQ(kSsrcs1[0], | 2965 EXPECT_EQ(kSsrcs1[0], |
2946 stream_with_send_params.GetConfig().protected_media_ssrcs[0]); | 2966 stream_with_send_params->GetConfig().protected_media_ssrcs[0]); |
2947 } | 2967 } |
2948 | 2968 |
2949 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectDuplicateFecPayloads) { | 2969 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectDuplicateFecPayloads) { |
2950 cricket::VideoRecvParameters parameters; | 2970 cricket::VideoRecvParameters parameters; |
2951 parameters.codecs.push_back(GetEngineCodec("VP8")); | 2971 parameters.codecs.push_back(GetEngineCodec("VP8")); |
2952 parameters.codecs.push_back(GetEngineCodec("red")); | 2972 parameters.codecs.push_back(GetEngineCodec("red")); |
2953 parameters.codecs[1].id = parameters.codecs[0].id; | 2973 parameters.codecs[1].id = parameters.codecs[0].id; |
2954 EXPECT_FALSE(channel_->SetRecvParameters(parameters)); | 2974 EXPECT_FALSE(channel_->SetRecvParameters(parameters)); |
2955 } | 2975 } |
2956 | 2976 |
(...skipping 1112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4069 | 4089 |
4070 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { | 4090 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { |
4071 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3); | 4091 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3); |
4072 } | 4092 } |
4073 | 4093 |
4074 // Test that we normalize send codec format size in simulcast. | 4094 // Test that we normalize send codec format size in simulcast. |
4075 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 4095 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |
4076 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2); | 4096 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2); |
4077 } | 4097 } |
4078 } // namespace cricket | 4098 } // namespace cricket |
OLD | NEW |