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

Side by Side Diff: webrtc/media/engine/webrtcvideoengine2_unittest.cc

Issue 2645703003: Stop leaking FlexfecReceiveStream objects after call shutdown. (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 unified diff | Download patch
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698