OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2008 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 23 matching lines...) Expand all Loading... | |
34 using testing::ContainerEq; | 34 using testing::ContainerEq; |
35 using testing::Return; | 35 using testing::Return; |
36 using testing::StrictMock; | 36 using testing::StrictMock; |
37 | 37 |
38 namespace { | 38 namespace { |
39 | 39 |
40 constexpr uint32_t kMaxUnsignaledRecvStreams = 1; | 40 constexpr uint32_t kMaxUnsignaledRecvStreams = 1; |
41 | 41 |
42 const cricket::AudioCodec kPcmuCodec(0, "PCMU", 8000, 64000, 1); | 42 const cricket::AudioCodec kPcmuCodec(0, "PCMU", 8000, 64000, 1); |
43 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1); | 43 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1); |
44 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2); | 44 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 32000, 2); |
45 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1); | 45 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1); |
46 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1); | 46 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1); |
47 const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1); | 47 const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1); |
48 const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1); | 48 const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1); |
49 const cricket::AudioCodec | 49 const cricket::AudioCodec |
50 kTelephoneEventCodec1(106, "telephone-event", 8000, 0, 1); | 50 kTelephoneEventCodec1(106, "telephone-event", 8000, 0, 1); |
51 const cricket::AudioCodec | 51 const cricket::AudioCodec |
52 kTelephoneEventCodec2(107, "telephone-event", 32000, 0, 1); | 52 kTelephoneEventCodec2(107, "telephone-event", 32000, 0, 1); |
53 | 53 |
54 const uint32_t kSsrc0 = 0; | 54 const uint32_t kSsrc0 = 0; |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
355 return channel_->SetRtpSendParameters(ssrc, parameters); | 355 return channel_->SetRtpSendParameters(ssrc, parameters); |
356 } | 356 } |
357 | 357 |
358 void SetGlobalMaxBitrate(const cricket::AudioCodec& codec, int bitrate) { | 358 void SetGlobalMaxBitrate(const cricket::AudioCodec& codec, int bitrate) { |
359 cricket::AudioSendParameters send_parameters; | 359 cricket::AudioSendParameters send_parameters; |
360 send_parameters.codecs.push_back(codec); | 360 send_parameters.codecs.push_back(codec); |
361 send_parameters.max_bandwidth_bps = bitrate; | 361 send_parameters.max_bandwidth_bps = bitrate; |
362 SetSendParameters(send_parameters); | 362 SetSendParameters(send_parameters); |
363 } | 363 } |
364 | 364 |
365 void CheckSendCodec(int32_t ssrc, | 365 void CheckSendCodecBitrate(int32_t ssrc, |
366 const char expected_name[], | 366 const char expected_name[], |
367 int expected_channels, | 367 int expected_bitrate) { |
368 int expected_bitrate) { | 368 const auto& spec = GetSendStreamConfig(ssrc).send_codec_spec; |
369 const auto& codec = GetSendStreamConfig(ssrc).send_codec_spec.codec_inst; | 369 EXPECT_EQ(expected_name, spec->format.name); |
370 EXPECT_STREQ(expected_name, codec.plname); | 370 EXPECT_EQ(expected_bitrate, spec->target_bitrate_bps); |
371 EXPECT_EQ(expected_channels, codec.channels); | |
372 EXPECT_EQ(expected_bitrate, codec.rate); | |
373 } | 371 } |
374 | 372 |
375 int GetOpusMaxPlaybackRate(int32_t ssrc) { | 373 rtc::Optional<int> GetCodecBitrate(int32_t ssrc) { |
376 return GetSendStreamConfig(ssrc).send_codec_spec.opus_max_playback_rate; | 374 return GetSendStreamConfig(ssrc).send_codec_spec->target_bitrate_bps; |
377 } | |
378 | |
379 bool GetOpusDtx(int32_t ssrc) { | |
380 return GetSendStreamConfig(ssrc).send_codec_spec.enable_opus_dtx; | |
381 } | |
382 | |
383 bool GetCodecFec(int32_t ssrc) { | |
384 return GetSendStreamConfig(ssrc).send_codec_spec.enable_codec_fec; | |
385 } | |
386 | |
387 int GetCodecBitrate(int32_t ssrc) { | |
388 return GetSendStreamConfig(ssrc).send_codec_spec.codec_inst.rate; | |
389 } | |
390 | |
391 int GetCodecPacSize(int32_t ssrc) { | |
392 return GetSendStreamConfig(ssrc).send_codec_spec.codec_inst.pacsize; | |
393 } | 375 } |
394 | 376 |
395 const rtc::Optional<std::string>& GetAudioNetworkAdaptorConfig(int32_t ssrc) { | 377 const rtc::Optional<std::string>& GetAudioNetworkAdaptorConfig(int32_t ssrc) { |
396 return GetSendStreamConfig(ssrc).audio_network_adaptor_config; | 378 return GetSendStreamConfig(ssrc).audio_network_adaptor_config; |
397 } | 379 } |
398 | 380 |
399 void SetAndExpectMaxBitrate(const cricket::AudioCodec& codec, | 381 void SetAndExpectMaxBitrate(const cricket::AudioCodec& codec, |
400 int global_max, | 382 int global_max, |
401 int stream_max, | 383 int stream_max, |
402 bool expected_result, | 384 bool expected_result, |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
711 GetRecvStreamConfig(kSsrcX); | 693 GetRecvStreamConfig(kSsrcX); |
712 EXPECT_EQ(kSsrcX, config.rtp.remote_ssrc); | 694 EXPECT_EQ(kSsrcX, config.rtp.remote_ssrc); |
713 EXPECT_EQ(0xFA17FA17, config.rtp.local_ssrc); | 695 EXPECT_EQ(0xFA17FA17, config.rtp.local_ssrc); |
714 EXPECT_FALSE(config.rtp.transport_cc); | 696 EXPECT_FALSE(config.rtp.transport_cc); |
715 EXPECT_EQ(0u, config.rtp.extensions.size()); | 697 EXPECT_EQ(0u, config.rtp.extensions.size()); |
716 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), | 698 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), |
717 config.rtcp_send_transport); | 699 config.rtcp_send_transport); |
718 EXPECT_EQ("", config.sync_group); | 700 EXPECT_EQ("", config.sync_group); |
719 } | 701 } |
720 | 702 |
721 // Tests that the list of supported codecs is created properly and ordered | |
ossu
2017/04/25 11:58:11
A similar test is now in place for BuiltinAudioEnc
| |
722 // correctly (such that opus appears first). | |
723 // TODO(ossu): This test should move into a separate builtin audio codecs | |
724 // module. | |
725 TEST_F(WebRtcVoiceEngineTestFake, CodecOrder) { | |
726 const std::vector<cricket::AudioCodec>& codecs = engine_->send_codecs(); | |
727 ASSERT_FALSE(codecs.empty()); | |
728 EXPECT_STRCASEEQ("opus", codecs[0].name.c_str()); | |
729 EXPECT_EQ(48000, codecs[0].clockrate); | |
730 EXPECT_EQ(2, codecs[0].channels); | |
731 EXPECT_EQ(64000, codecs[0].bitrate); | |
732 } | |
733 | |
734 TEST_F(WebRtcVoiceEngineTestFake, OpusSupportsTransportCc) { | 703 TEST_F(WebRtcVoiceEngineTestFake, OpusSupportsTransportCc) { |
735 const std::vector<cricket::AudioCodec>& codecs = engine_->send_codecs(); | 704 const std::vector<cricket::AudioCodec>& codecs = engine_->send_codecs(); |
736 bool opus_found = false; | 705 bool opus_found = false; |
737 for (cricket::AudioCodec codec : codecs) { | 706 for (cricket::AudioCodec codec : codecs) { |
738 if (codec.name == "opus") { | 707 if (codec.name == "opus") { |
739 EXPECT_TRUE(HasTransportCc(codec)); | 708 EXPECT_TRUE(HasTransportCc(codec)); |
740 opus_found = true; | 709 opus_found = true; |
741 } | 710 } |
742 } | 711 } |
743 EXPECT_TRUE(opus_found); | 712 EXPECT_TRUE(opus_found); |
744 } | 713 } |
745 | 714 |
746 // Tests that we can find codecs by name or id, and that we interpret the | |
ossu
2017/04/25 11:58:11
This one just tests ToCodecInst, which is removed.
| |
747 // clockrate and bitrate fields properly. | |
748 TEST_F(WebRtcVoiceEngineTestFake, FindCodec) { | |
749 cricket::AudioCodec codec; | |
750 webrtc::CodecInst codec_inst; | |
751 // Find PCMU with explicit clockrate and bitrate. | |
752 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(kPcmuCodec, &codec_inst)); | |
753 // Find ISAC with explicit clockrate and 0 bitrate. | |
754 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(kIsacCodec, &codec_inst)); | |
755 // Find telephone-event with explicit clockrate and 0 bitrate. | |
756 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(kTelephoneEventCodec1, | |
757 &codec_inst)); | |
758 // Find telephone-event with explicit clockrate and 0 bitrate. | |
759 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(kTelephoneEventCodec2, | |
760 &codec_inst)); | |
761 // Find ISAC with a different payload id. | |
762 codec = kIsacCodec; | |
763 codec.id = 127; | |
764 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(codec, &codec_inst)); | |
765 EXPECT_EQ(codec.id, codec_inst.pltype); | |
766 // Find PCMU with a 0 clockrate. | |
767 codec = kPcmuCodec; | |
768 codec.clockrate = 0; | |
769 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(codec, &codec_inst)); | |
770 EXPECT_EQ(codec.id, codec_inst.pltype); | |
771 EXPECT_EQ(8000, codec_inst.plfreq); | |
772 // Find PCMU with a 0 bitrate. | |
773 codec = kPcmuCodec; | |
774 codec.bitrate = 0; | |
775 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(codec, &codec_inst)); | |
776 EXPECT_EQ(codec.id, codec_inst.pltype); | |
777 EXPECT_EQ(64000, codec_inst.rate); | |
778 // Find ISAC with an explicit bitrate. | |
779 codec = kIsacCodec; | |
780 codec.bitrate = 32000; | |
781 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(codec, &codec_inst)); | |
782 EXPECT_EQ(codec.id, codec_inst.pltype); | |
783 EXPECT_EQ(32000, codec_inst.rate); | |
784 } | |
785 | |
786 // Test that we set our inbound codecs properly, including changing PT. | 715 // Test that we set our inbound codecs properly, including changing PT. |
787 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecs) { | 716 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecs) { |
788 EXPECT_TRUE(SetupChannel()); | 717 EXPECT_TRUE(SetupChannel()); |
789 cricket::AudioRecvParameters parameters; | 718 cricket::AudioRecvParameters parameters; |
790 parameters.codecs.push_back(kIsacCodec); | 719 parameters.codecs.push_back(kIsacCodec); |
791 parameters.codecs.push_back(kPcmuCodec); | 720 parameters.codecs.push_back(kPcmuCodec); |
792 parameters.codecs.push_back(kTelephoneEventCodec1); | 721 parameters.codecs.push_back(kTelephoneEventCodec1); |
793 parameters.codecs.push_back(kTelephoneEventCodec2); | 722 parameters.codecs.push_back(kTelephoneEventCodec2); |
794 parameters.codecs[0].id = 106; // collide with existing CN 32k | 723 parameters.codecs[0].id = 106; // collide with existing CN 32k |
795 parameters.codecs[2].id = 126; | 724 parameters.codecs[2].id = 126; |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
927 EXPECT_TRUE(SetupRecvStream()); | 856 EXPECT_TRUE(SetupRecvStream()); |
928 cricket::AudioRecvParameters parameters; | 857 cricket::AudioRecvParameters parameters; |
929 parameters.codecs.push_back(kIsacCodec); | 858 parameters.codecs.push_back(kIsacCodec); |
930 parameters.codecs.push_back(kCn16000Codec); | 859 parameters.codecs.push_back(kCn16000Codec); |
931 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 860 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
932 channel_->SetPlayout(true); | 861 channel_->SetPlayout(true); |
933 | 862 |
934 parameters.codecs.push_back(kOpusCodec); | 863 parameters.codecs.push_back(kOpusCodec); |
935 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 864 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
936 EXPECT_TRUE(GetRecvStream(kSsrcX).started()); | 865 EXPECT_TRUE(GetRecvStream(kSsrcX).started()); |
937 webrtc::CodecInst gcodec; | |
938 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &gcodec)); | |
939 EXPECT_EQ(kOpusCodec.id, gcodec.pltype); | |
940 } | 866 } |
941 | 867 |
942 TEST_F(WebRtcVoiceEngineTestFake, SetSendBandwidthAuto) { | 868 TEST_F(WebRtcVoiceEngineTestFake, SetSendBandwidthAuto) { |
943 EXPECT_TRUE(SetupSendStream()); | 869 EXPECT_TRUE(SetupSendStream()); |
944 | 870 |
945 // Test that when autobw is enabled, bitrate is kept as the default | 871 // Test that when autobw is enabled, bitrate is kept as the default |
946 // value. autobw is enabled for the following tests because the target | 872 // value. autobw is enabled for the following tests because the target |
947 // bitrate is <= 0. | 873 // bitrate is <= 0. |
948 | 874 |
949 // ISAC, default bitrate == 32000. | 875 // ISAC, default bitrate == 32000. |
950 TestMaxSendBandwidth(kIsacCodec, 0, true, 32000); | 876 TestMaxSendBandwidth(kIsacCodec, 0, true, 32000); |
951 | 877 |
952 // PCMU, default bitrate == 64000. | 878 // PCMU, default bitrate == 64000. |
953 TestMaxSendBandwidth(kPcmuCodec, -1, true, 64000); | 879 TestMaxSendBandwidth(kPcmuCodec, -1, true, 64000); |
954 | 880 |
955 // opus, default bitrate == 64000. | 881 // opus, default bitrate == 32000 in mono. |
956 TestMaxSendBandwidth(kOpusCodec, -1, true, 64000); | 882 TestMaxSendBandwidth(kOpusCodec, -1, true, 32000); |
957 } | 883 } |
958 | 884 |
959 TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthMultiRateAsCaller) { | 885 TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthMultiRateAsCaller) { |
960 EXPECT_TRUE(SetupSendStream()); | 886 EXPECT_TRUE(SetupSendStream()); |
961 | 887 |
962 // Test that the bitrate of a multi-rate codec is always the maximum. | |
963 | |
964 // ISAC, default bitrate == 32000. | 888 // ISAC, default bitrate == 32000. |
965 TestMaxSendBandwidth(kIsacCodec, 40000, true, 40000); | |
966 TestMaxSendBandwidth(kIsacCodec, 16000, true, 16000); | 889 TestMaxSendBandwidth(kIsacCodec, 16000, true, 16000); |
967 // Rates above the max (56000) should be capped. | 890 // Rates above the max (56000) should be capped. |
968 TestMaxSendBandwidth(kIsacCodec, 100000, true, 56000); | 891 TestMaxSendBandwidth(kIsacCodec, 100000, true, 32000); |
969 | 892 |
970 // opus, default bitrate == 64000. | 893 // opus, default bitrate == 64000. |
971 TestMaxSendBandwidth(kOpusCodec, 96000, true, 96000); | 894 TestMaxSendBandwidth(kOpusCodec, 96000, true, 96000); |
972 TestMaxSendBandwidth(kOpusCodec, 48000, true, 48000); | 895 TestMaxSendBandwidth(kOpusCodec, 48000, true, 48000); |
973 // Rates above the max (510000) should be capped. | 896 // Rates above the max (510000) should be capped. |
974 TestMaxSendBandwidth(kOpusCodec, 600000, true, 510000); | 897 TestMaxSendBandwidth(kOpusCodec, 600000, true, 510000); |
975 } | 898 } |
976 | 899 |
977 TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthFixedRateAsCaller) { | 900 TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthFixedRateAsCaller) { |
978 EXPECT_TRUE(SetupSendStream()); | 901 EXPECT_TRUE(SetupSendStream()); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1021 send_parameters_.max_bandwidth_bps = 128; | 944 send_parameters_.max_bandwidth_bps = 128; |
1022 EXPECT_FALSE(channel_->SetSendParameters(send_parameters_)); | 945 EXPECT_FALSE(channel_->SetSendParameters(send_parameters_)); |
1023 EXPECT_EQ(64000, GetCodecBitrate(kSsrcX)); | 946 EXPECT_EQ(64000, GetCodecBitrate(kSsrcX)); |
1024 } | 947 } |
1025 | 948 |
1026 // Test that the per-stream bitrate limit and the global | 949 // Test that the per-stream bitrate limit and the global |
1027 // bitrate limit both apply. | 950 // bitrate limit both apply. |
1028 TEST_F(WebRtcVoiceEngineTestFake, SetMaxBitratePerStream) { | 951 TEST_F(WebRtcVoiceEngineTestFake, SetMaxBitratePerStream) { |
1029 EXPECT_TRUE(SetupSendStream()); | 952 EXPECT_TRUE(SetupSendStream()); |
1030 | 953 |
1031 // opus, default bitrate == 64000. | 954 // opus, default bitrate == 32000. |
1032 SetAndExpectMaxBitrate(kOpusCodec, 0, 0, true, 64000); | 955 SetAndExpectMaxBitrate(kOpusCodec, 0, 0, true, 32000); |
1033 SetAndExpectMaxBitrate(kOpusCodec, 48000, 0, true, 48000); | 956 SetAndExpectMaxBitrate(kOpusCodec, 48000, 0, true, 48000); |
1034 SetAndExpectMaxBitrate(kOpusCodec, 48000, 64000, true, 48000); | 957 SetAndExpectMaxBitrate(kOpusCodec, 48000, 64000, true, 48000); |
1035 SetAndExpectMaxBitrate(kOpusCodec, 64000, 48000, true, 48000); | 958 SetAndExpectMaxBitrate(kOpusCodec, 64000, 48000, true, 48000); |
1036 | 959 |
1037 // CBR codecs allow both maximums to exceed the bitrate. | 960 // CBR codecs allow both maximums to exceed the bitrate. |
1038 SetAndExpectMaxBitrate(kPcmuCodec, 0, 0, true, 64000); | 961 SetAndExpectMaxBitrate(kPcmuCodec, 0, 0, true, 64000); |
1039 SetAndExpectMaxBitrate(kPcmuCodec, 64001, 0, true, 64000); | 962 SetAndExpectMaxBitrate(kPcmuCodec, 64001, 0, true, 64000); |
1040 SetAndExpectMaxBitrate(kPcmuCodec, 0, 64001, true, 64000); | 963 SetAndExpectMaxBitrate(kPcmuCodec, 0, 64001, true, 64000); |
1041 SetAndExpectMaxBitrate(kPcmuCodec, 64001, 64001, true, 64000); | 964 SetAndExpectMaxBitrate(kPcmuCodec, 64001, 64001, true, 64000); |
1042 | 965 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1107 TEST_F(WebRtcVoiceEngineTestFake, RtpParametersArePerStream) { | 1030 TEST_F(WebRtcVoiceEngineTestFake, RtpParametersArePerStream) { |
1108 SetupForMultiSendStream(); | 1031 SetupForMultiSendStream(); |
1109 // Create send streams. | 1032 // Create send streams. |
1110 for (uint32_t ssrc : kSsrcs4) { | 1033 for (uint32_t ssrc : kSsrcs4) { |
1111 EXPECT_TRUE( | 1034 EXPECT_TRUE( |
1112 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(ssrc))); | 1035 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(ssrc))); |
1113 } | 1036 } |
1114 // Configure one stream to be limited by the stream config, another to be | 1037 // Configure one stream to be limited by the stream config, another to be |
1115 // limited by the global max, and the third one with no per-stream limit | 1038 // limited by the global max, and the third one with no per-stream limit |
1116 // (still subject to the global limit). | 1039 // (still subject to the global limit). |
1117 SetGlobalMaxBitrate(kOpusCodec, 64000); | 1040 SetGlobalMaxBitrate(kOpusCodec, 32000); |
1118 EXPECT_TRUE(SetMaxBitrateForStream(kSsrcs4[0], 48000)); | 1041 EXPECT_TRUE(SetMaxBitrateForStream(kSsrcs4[0], 24000)); |
1119 EXPECT_TRUE(SetMaxBitrateForStream(kSsrcs4[1], 96000)); | 1042 EXPECT_TRUE(SetMaxBitrateForStream(kSsrcs4[1], 48000)); |
1120 EXPECT_TRUE(SetMaxBitrateForStream(kSsrcs4[2], -1)); | 1043 EXPECT_TRUE(SetMaxBitrateForStream(kSsrcs4[2], -1)); |
1121 | 1044 |
1122 EXPECT_EQ(48000, GetCodecBitrate(kSsrcs4[0])); | 1045 EXPECT_EQ(24000, GetCodecBitrate(kSsrcs4[0])); |
1123 EXPECT_EQ(64000, GetCodecBitrate(kSsrcs4[1])); | 1046 EXPECT_EQ(32000, GetCodecBitrate(kSsrcs4[1])); |
1124 EXPECT_EQ(64000, GetCodecBitrate(kSsrcs4[2])); | 1047 EXPECT_EQ(32000, GetCodecBitrate(kSsrcs4[2])); |
1125 | 1048 |
1126 // Remove the global cap; the streams should switch to their respective | 1049 // Remove the global cap; the streams should switch to their respective |
1127 // maximums (or remain unchanged if there was no other limit on them.) | 1050 // maximums (or remain unchanged if there was no other limit on them.) |
1128 SetGlobalMaxBitrate(kOpusCodec, -1); | 1051 SetGlobalMaxBitrate(kOpusCodec, -1); |
1129 EXPECT_EQ(48000, GetCodecBitrate(kSsrcs4[0])); | 1052 EXPECT_EQ(24000, GetCodecBitrate(kSsrcs4[0])); |
1130 EXPECT_EQ(96000, GetCodecBitrate(kSsrcs4[1])); | 1053 EXPECT_EQ(48000, GetCodecBitrate(kSsrcs4[1])); |
1131 EXPECT_EQ(64000, GetCodecBitrate(kSsrcs4[2])); | 1054 EXPECT_EQ(32000, GetCodecBitrate(kSsrcs4[2])); |
1132 } | 1055 } |
1133 | 1056 |
1134 // Test that GetRtpSendParameters returns the currently configured codecs. | 1057 // Test that GetRtpSendParameters returns the currently configured codecs. |
1135 TEST_F(WebRtcVoiceEngineTestFake, GetRtpSendParametersCodecs) { | 1058 TEST_F(WebRtcVoiceEngineTestFake, GetRtpSendParametersCodecs) { |
1136 EXPECT_TRUE(SetupSendStream()); | 1059 EXPECT_TRUE(SetupSendStream()); |
1137 cricket::AudioSendParameters parameters; | 1060 cricket::AudioSendParameters parameters; |
1138 parameters.codecs.push_back(kIsacCodec); | 1061 parameters.codecs.push_back(kIsacCodec); |
1139 parameters.codecs.push_back(kPcmuCodec); | 1062 parameters.codecs.push_back(kPcmuCodec); |
1140 SetSendParameters(parameters); | 1063 SetSendParameters(parameters); |
1141 | 1064 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1277 | 1200 |
1278 // Test that we apply codecs properly. | 1201 // Test that we apply codecs properly. |
1279 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecs) { | 1202 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecs) { |
1280 EXPECT_TRUE(SetupSendStream()); | 1203 EXPECT_TRUE(SetupSendStream()); |
1281 cricket::AudioSendParameters parameters; | 1204 cricket::AudioSendParameters parameters; |
1282 parameters.codecs.push_back(kIsacCodec); | 1205 parameters.codecs.push_back(kIsacCodec); |
1283 parameters.codecs.push_back(kPcmuCodec); | 1206 parameters.codecs.push_back(kPcmuCodec); |
1284 parameters.codecs.push_back(kCn8000Codec); | 1207 parameters.codecs.push_back(kCn8000Codec); |
1285 parameters.codecs[0].id = 96; | 1208 parameters.codecs[0].id = 96; |
1286 parameters.codecs[0].bitrate = 48000; | 1209 parameters.codecs[0].bitrate = 48000; |
1287 const int initial_num = call_.GetNumCreatedSendStreams(); | |
1288 SetSendParameters(parameters); | 1210 SetSendParameters(parameters); |
1289 EXPECT_EQ(initial_num + 1, call_.GetNumCreatedSendStreams()); | 1211 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1290 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1212 EXPECT_EQ(96, send_codec_spec.payload_type); |
1291 EXPECT_EQ(96, send_codec_spec.codec_inst.pltype); | 1213 // EXPECT_EQ(48000, send_codec_spec.codec_inst.rate); |
the sun
2017/04/25 11:38:53
Why is this commented out?
ossu
2017/04/25 12:58:38
Oh, I believe I should still test that this gets s
ossu
2017/04/25 17:10:07
Turns out this failed at 48000, since mono ISAC on
| |
1292 EXPECT_EQ(48000, send_codec_spec.codec_inst.rate); | 1214 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
1293 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1215 EXPECT_NE(send_codec_spec.format.clockrate_hz, 8000); |
1294 EXPECT_NE(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | 1216 EXPECT_EQ(rtc::Optional<int>(), send_codec_spec.cng_payload_type); |
1295 EXPECT_EQ(-1, send_codec_spec.cng_payload_type); | 1217 // EXPECT_EQ(webrtc::kFreq8000Hz, send_codec_spec.cng_plfreq); |
the sun
2017/04/25 11:38:53
likewise
ossu
2017/04/25 12:58:38
CNG payload frequency is no longer tracked separat
| |
1296 EXPECT_FALSE(channel_->CanInsertDtmf()); | 1218 EXPECT_FALSE(channel_->CanInsertDtmf()); |
1297 } | 1219 } |
1298 | 1220 |
1299 // Test that VoE Channel doesn't call SetSendCodec again if same codec is tried | 1221 // Test that WebRtcVoiceEngine reconfigures, rather than recreates its |
1300 // to apply. | 1222 // AudioSendStream. |
1301 TEST_F(WebRtcVoiceEngineTestFake, DontResetSetSendCodec) { | 1223 TEST_F(WebRtcVoiceEngineTestFake, DontRecreateSendStream) { |
1302 EXPECT_TRUE(SetupSendStream()); | 1224 EXPECT_TRUE(SetupSendStream()); |
1303 cricket::AudioSendParameters parameters; | 1225 cricket::AudioSendParameters parameters; |
1304 parameters.codecs.push_back(kIsacCodec); | 1226 parameters.codecs.push_back(kIsacCodec); |
1305 parameters.codecs.push_back(kPcmuCodec); | 1227 parameters.codecs.push_back(kPcmuCodec); |
1306 parameters.codecs.push_back(kCn8000Codec); | 1228 parameters.codecs.push_back(kCn8000Codec); |
1307 parameters.codecs[0].id = 96; | 1229 parameters.codecs[0].id = 96; |
1308 parameters.codecs[0].bitrate = 48000; | 1230 parameters.codecs[0].bitrate = 48000; |
1309 const int initial_num = call_.GetNumCreatedSendStreams(); | 1231 const int initial_num = call_.GetNumCreatedSendStreams(); |
1310 SetSendParameters(parameters); | 1232 SetSendParameters(parameters); |
1311 EXPECT_EQ(initial_num + 1, call_.GetNumCreatedSendStreams()); | 1233 EXPECT_EQ(initial_num, call_.GetNumCreatedSendStreams()); |
1312 // Calling SetSendCodec again with same codec which is already set. | 1234 // Calling SetSendCodec again with same codec which is already set. |
1313 // In this case media channel shouldn't send codec to VoE. | 1235 // In this case media channel shouldn't send codec to VoE. |
1314 SetSendParameters(parameters); | 1236 SetSendParameters(parameters); |
1315 EXPECT_EQ(initial_num + 1, call_.GetNumCreatedSendStreams()); | 1237 EXPECT_EQ(initial_num, call_.GetNumCreatedSendStreams()); |
1316 } | 1238 } |
1317 | 1239 |
1318 // Verify that G722 is set with 16000 samples per second to WebRTC. | 1240 // TODO(ossu): Revisit if these tests need to be here, now that these kinds of |
ossu
2017/04/25 11:58:11
This one isn't applicable anymore, since we're not
| |
1319 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecG722) { | 1241 // tests should be available in AudioEncoderOpusTest. |
1320 EXPECT_TRUE(SetupSendStream()); | |
1321 cricket::AudioSendParameters parameters; | |
1322 parameters.codecs.push_back(kG722CodecSdp); | |
1323 SetSendParameters(parameters); | |
1324 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | |
1325 EXPECT_STREQ("G722", gcodec.plname); | |
1326 EXPECT_EQ(1, gcodec.channels); | |
1327 EXPECT_EQ(16000, gcodec.plfreq); | |
1328 } | |
1329 | 1242 |
1330 // Test that if clockrate is not 48000 for opus, we fail. | 1243 // Test that if clockrate is not 48000 for opus, we fail. |
1331 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusBadClockrate) { | 1244 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusBadClockrate) { |
1332 EXPECT_TRUE(SetupSendStream()); | 1245 EXPECT_TRUE(SetupSendStream()); |
1333 cricket::AudioSendParameters parameters; | 1246 cricket::AudioSendParameters parameters; |
1334 parameters.codecs.push_back(kOpusCodec); | 1247 parameters.codecs.push_back(kOpusCodec); |
1335 parameters.codecs[0].bitrate = 0; | 1248 parameters.codecs[0].bitrate = 0; |
1336 parameters.codecs[0].clockrate = 50000; | 1249 parameters.codecs[0].clockrate = 50000; |
1337 EXPECT_FALSE(channel_->SetSendParameters(parameters)); | 1250 EXPECT_FALSE(channel_->SetSendParameters(parameters)); |
1338 } | 1251 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1383 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusBad1Channel1Stereo) { | 1296 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusBad1Channel1Stereo) { |
1384 EXPECT_TRUE(SetupSendStream()); | 1297 EXPECT_TRUE(SetupSendStream()); |
1385 cricket::AudioSendParameters parameters; | 1298 cricket::AudioSendParameters parameters; |
1386 parameters.codecs.push_back(kOpusCodec); | 1299 parameters.codecs.push_back(kOpusCodec); |
1387 parameters.codecs[0].bitrate = 0; | 1300 parameters.codecs[0].bitrate = 0; |
1388 parameters.codecs[0].channels = 1; | 1301 parameters.codecs[0].channels = 1; |
1389 parameters.codecs[0].params["stereo"] = "1"; | 1302 parameters.codecs[0].params["stereo"] = "1"; |
1390 EXPECT_FALSE(channel_->SetSendParameters(parameters)); | 1303 EXPECT_FALSE(channel_->SetSendParameters(parameters)); |
1391 } | 1304 } |
1392 | 1305 |
1393 // Test that with bitrate=0 and no stereo, | 1306 // Test that with bitrate=0 and no stereo, bitrate is 32000. |
1394 // channels and bitrate are 1 and 32000. | |
1395 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGood0BitrateNoStereo) { | 1307 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGood0BitrateNoStereo) { |
1396 EXPECT_TRUE(SetupSendStream()); | 1308 EXPECT_TRUE(SetupSendStream()); |
1397 cricket::AudioSendParameters parameters; | 1309 cricket::AudioSendParameters parameters; |
1398 parameters.codecs.push_back(kOpusCodec); | 1310 parameters.codecs.push_back(kOpusCodec); |
1399 parameters.codecs[0].bitrate = 0; | 1311 parameters.codecs[0].bitrate = 0; |
1400 SetSendParameters(parameters); | 1312 SetSendParameters(parameters); |
1401 CheckSendCodec(kSsrcX, "opus", 1, 32000); | 1313 CheckSendCodecBitrate(kSsrcX, "opus", 32000); |
1402 } | 1314 } |
1403 | 1315 |
1404 // Test that with bitrate=0 and stereo=0, | 1316 // Test that with bitrate=0 and stereo=0, bitrate is 32000. |
1405 // channels and bitrate are 1 and 32000. | |
1406 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGood0Bitrate0Stereo) { | 1317 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGood0Bitrate0Stereo) { |
1407 EXPECT_TRUE(SetupSendStream()); | 1318 EXPECT_TRUE(SetupSendStream()); |
1408 cricket::AudioSendParameters parameters; | 1319 cricket::AudioSendParameters parameters; |
1409 parameters.codecs.push_back(kOpusCodec); | 1320 parameters.codecs.push_back(kOpusCodec); |
1410 parameters.codecs[0].bitrate = 0; | 1321 parameters.codecs[0].bitrate = 0; |
1411 parameters.codecs[0].params["stereo"] = "0"; | 1322 parameters.codecs[0].params["stereo"] = "0"; |
1412 SetSendParameters(parameters); | 1323 SetSendParameters(parameters); |
1413 CheckSendCodec(kSsrcX, "opus", 1, 32000); | 1324 CheckSendCodecBitrate(kSsrcX, "opus", 32000); |
1414 } | 1325 } |
1415 | 1326 |
1416 // Test that with bitrate=invalid and stereo=0, | 1327 // Test that with bitrate=invalid and stereo=0, bitrate is 32000. |
1417 // channels and bitrate are 1 and 32000. | |
1418 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodXBitrate0Stereo) { | 1328 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodXBitrate0Stereo) { |
1419 EXPECT_TRUE(SetupSendStream()); | 1329 EXPECT_TRUE(SetupSendStream()); |
1420 cricket::AudioSendParameters parameters; | 1330 cricket::AudioSendParameters parameters; |
1421 parameters.codecs.push_back(kOpusCodec); | 1331 parameters.codecs.push_back(kOpusCodec); |
1422 parameters.codecs[0].params["stereo"] = "0"; | 1332 parameters.codecs[0].params["stereo"] = "0"; |
1423 // bitrate that's out of the range between 6000 and 510000 will be clamped. | 1333 // bitrate that's out of the range between 6000 and 510000 will be clamped. |
1424 parameters.codecs[0].bitrate = 5999; | 1334 parameters.codecs[0].bitrate = 5999; |
1425 SetSendParameters(parameters); | 1335 SetSendParameters(parameters); |
1426 CheckSendCodec(kSsrcX, "opus", 1, 6000); | 1336 CheckSendCodecBitrate(kSsrcX, "opus", 6000); |
1427 | 1337 |
1428 parameters.codecs[0].bitrate = 510001; | 1338 parameters.codecs[0].bitrate = 510001; |
1429 SetSendParameters(parameters); | 1339 SetSendParameters(parameters); |
1430 CheckSendCodec(kSsrcX, "opus", 1, 510000); | 1340 CheckSendCodecBitrate(kSsrcX, "opus", 510000); |
1431 } | 1341 } |
1432 | 1342 |
1433 // Test that with bitrate=0 and stereo=1, | 1343 // Test that with bitrate=0 and stereo=1, bitrate is 64000. |
1434 // channels and bitrate are 2 and 64000. | |
1435 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGood0Bitrate1Stereo) { | 1344 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGood0Bitrate1Stereo) { |
1436 EXPECT_TRUE(SetupSendStream()); | 1345 EXPECT_TRUE(SetupSendStream()); |
1437 cricket::AudioSendParameters parameters; | 1346 cricket::AudioSendParameters parameters; |
1438 parameters.codecs.push_back(kOpusCodec); | 1347 parameters.codecs.push_back(kOpusCodec); |
1439 parameters.codecs[0].bitrate = 0; | 1348 parameters.codecs[0].bitrate = 0; |
1440 parameters.codecs[0].params["stereo"] = "1"; | 1349 parameters.codecs[0].params["stereo"] = "1"; |
1441 SetSendParameters(parameters); | 1350 SetSendParameters(parameters); |
1442 CheckSendCodec(kSsrcX, "opus", 2, 64000); | 1351 CheckSendCodecBitrate(kSsrcX, "opus", 64000); |
1443 } | 1352 } |
1444 | 1353 |
1445 // Test that with bitrate=invalid and stereo=1, | 1354 // Test that with bitrate=invalid and stereo=1, bitrate is 64000. |
1446 // channels and bitrate are 2 and 64000. | |
1447 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodXBitrate1Stereo) { | 1355 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodXBitrate1Stereo) { |
1448 EXPECT_TRUE(SetupSendStream()); | 1356 EXPECT_TRUE(SetupSendStream()); |
1449 cricket::AudioSendParameters parameters; | 1357 cricket::AudioSendParameters parameters; |
1450 parameters.codecs.push_back(kOpusCodec); | 1358 parameters.codecs.push_back(kOpusCodec); |
1451 parameters.codecs[0].params["stereo"] = "1"; | 1359 parameters.codecs[0].params["stereo"] = "1"; |
1452 // bitrate that's out of the range between 6000 and 510000 will be clamped. | 1360 // bitrate that's out of the range between 6000 and 510000 will be clamped. |
1453 parameters.codecs[0].bitrate = 5999; | 1361 parameters.codecs[0].bitrate = 5999; |
1454 SetSendParameters(parameters); | 1362 SetSendParameters(parameters); |
1455 CheckSendCodec(kSsrcX, "opus", 2, 6000); | 1363 CheckSendCodecBitrate(kSsrcX, "opus", 6000); |
1456 | 1364 |
1457 parameters.codecs[0].bitrate = 510001; | 1365 parameters.codecs[0].bitrate = 510001; |
1458 SetSendParameters(parameters); | 1366 SetSendParameters(parameters); |
1459 CheckSendCodec(kSsrcX, "opus", 2, 510000); | 1367 CheckSendCodecBitrate(kSsrcX, "opus", 510000); |
1460 } | 1368 } |
1461 | 1369 |
1462 // Test that with bitrate=N and stereo unset, | 1370 // Test that with bitrate=N and stereo unset, bitrate is N. |
1463 // channels and bitrate are 1 and N. | |
1464 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrateNoStereo) { | 1371 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrateNoStereo) { |
1465 EXPECT_TRUE(SetupSendStream()); | 1372 EXPECT_TRUE(SetupSendStream()); |
1466 cricket::AudioSendParameters parameters; | 1373 cricket::AudioSendParameters parameters; |
1467 parameters.codecs.push_back(kOpusCodec); | 1374 parameters.codecs.push_back(kOpusCodec); |
1468 parameters.codecs[0].bitrate = 96000; | 1375 parameters.codecs[0].bitrate = 96000; |
1469 SetSendParameters(parameters); | 1376 SetSendParameters(parameters); |
1470 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1377 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1471 EXPECT_EQ(111, gcodec.pltype); | 1378 EXPECT_EQ(111, spec.payload_type); |
1472 EXPECT_EQ(96000, gcodec.rate); | 1379 EXPECT_EQ(96000, spec.target_bitrate_bps); |
1473 EXPECT_STREQ("opus", gcodec.plname); | 1380 EXPECT_EQ("opus", spec.format.name); |
1474 EXPECT_EQ(1, gcodec.channels); | 1381 EXPECT_EQ(2, spec.format.num_channels); |
1475 EXPECT_EQ(48000, gcodec.plfreq); | 1382 EXPECT_EQ(48000, spec.format.clockrate_hz); |
1476 } | 1383 } |
1477 | 1384 |
1478 // Test that with bitrate=N and stereo=0, | 1385 // Test that with bitrate=N and stereo=0, bitrate is N. |
1479 // channels and bitrate are 1 and N. | |
1480 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrate0Stereo) { | 1386 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrate0Stereo) { |
1481 EXPECT_TRUE(SetupSendStream()); | 1387 EXPECT_TRUE(SetupSendStream()); |
1482 cricket::AudioSendParameters parameters; | 1388 cricket::AudioSendParameters parameters; |
1483 parameters.codecs.push_back(kOpusCodec); | 1389 parameters.codecs.push_back(kOpusCodec); |
1484 parameters.codecs[0].bitrate = 30000; | 1390 parameters.codecs[0].bitrate = 30000; |
1485 parameters.codecs[0].params["stereo"] = "0"; | 1391 parameters.codecs[0].params["stereo"] = "0"; |
1486 SetSendParameters(parameters); | 1392 SetSendParameters(parameters); |
1487 CheckSendCodec(kSsrcX, "opus", 1, 30000); | 1393 CheckSendCodecBitrate(kSsrcX, "opus", 30000); |
1488 } | 1394 } |
1489 | 1395 |
1490 // Test that with bitrate=N and without any parameters, | 1396 // Test that with bitrate=N and without any parameters, bitrate is N. |
1491 // channels and bitrate are 1 and N. | |
1492 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrateNoParameters) { | 1397 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrateNoParameters) { |
1493 EXPECT_TRUE(SetupSendStream()); | 1398 EXPECT_TRUE(SetupSendStream()); |
1494 cricket::AudioSendParameters parameters; | 1399 cricket::AudioSendParameters parameters; |
1495 parameters.codecs.push_back(kOpusCodec); | 1400 parameters.codecs.push_back(kOpusCodec); |
1496 parameters.codecs[0].bitrate = 30000; | 1401 parameters.codecs[0].bitrate = 30000; |
1497 SetSendParameters(parameters); | 1402 SetSendParameters(parameters); |
1498 CheckSendCodec(kSsrcX, "opus", 1, 30000); | 1403 CheckSendCodecBitrate(kSsrcX, "opus", 30000); |
1499 } | 1404 } |
1500 | 1405 |
1501 // Test that with bitrate=N and stereo=1, | 1406 // Test that with bitrate=N and stereo=1, bitrate is N. |
1502 // channels and bitrate are 2 and N. | |
1503 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrate1Stereo) { | 1407 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusGoodNBitrate1Stereo) { |
1504 EXPECT_TRUE(SetupSendStream()); | 1408 EXPECT_TRUE(SetupSendStream()); |
1505 cricket::AudioSendParameters parameters; | 1409 cricket::AudioSendParameters parameters; |
1506 parameters.codecs.push_back(kOpusCodec); | 1410 parameters.codecs.push_back(kOpusCodec); |
1507 parameters.codecs[0].bitrate = 30000; | 1411 parameters.codecs[0].bitrate = 30000; |
1508 parameters.codecs[0].params["stereo"] = "1"; | 1412 parameters.codecs[0].params["stereo"] = "1"; |
1509 SetSendParameters(parameters); | 1413 SetSendParameters(parameters); |
1510 CheckSendCodec(kSsrcX, "opus", 2, 30000); | 1414 CheckSendCodecBitrate(kSsrcX, "opus", 30000); |
1511 } | |
1512 | |
1513 // Test that bitrate will be overridden by the "maxaveragebitrate" parameter. | |
1514 // Also test that the "maxaveragebitrate" can't be set to values outside the | |
1515 // range of 6000 and 510000 | |
1516 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusMaxAverageBitrate) { | |
the sun
2017/04/25 11:38:53
Why is this test removed?
ossu
2017/04/25 11:58:11
It has been put in AudioEncoderOpusTest instead, w
| |
1517 EXPECT_TRUE(SetupSendStream()); | |
1518 cricket::AudioSendParameters parameters; | |
1519 parameters.codecs.push_back(kOpusCodec); | |
1520 parameters.codecs[0].bitrate = 30000; | |
1521 // Ignore if less than 6000. | |
1522 parameters.codecs[0].params["maxaveragebitrate"] = "5999"; | |
1523 SetSendParameters(parameters); | |
1524 EXPECT_EQ(6000, GetCodecBitrate(kSsrcX)); | |
1525 | |
1526 // Ignore if larger than 510000. | |
1527 parameters.codecs[0].params["maxaveragebitrate"] = "510001"; | |
1528 SetSendParameters(parameters); | |
1529 EXPECT_EQ(510000, GetCodecBitrate(kSsrcX)); | |
1530 | |
1531 parameters.codecs[0].params["maxaveragebitrate"] = "200000"; | |
1532 SetSendParameters(parameters); | |
1533 EXPECT_EQ(200000, GetCodecBitrate(kSsrcX)); | |
1534 } | 1415 } |
1535 | 1416 |
1536 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithBitrates) { | 1417 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithBitrates) { |
1537 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", | 1418 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", |
1538 200000); | 1419 200000); |
1539 } | 1420 } |
1540 | 1421 |
1541 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithHighMaxBitrate) { | 1422 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithHighMaxBitrate) { |
1542 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); | 1423 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); |
1543 } | 1424 } |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1659 cricket::kParamValueEmpty)); | 1540 cricket::kParamValueEmpty)); |
1660 SetSendParameters(parameters); | 1541 SetSendParameters(parameters); |
1661 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); | 1542 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrcX).rtp.nack.rtp_history_ms); |
1662 | 1543 |
1663 EXPECT_TRUE(AddRecvStream(kSsrcY)); | 1544 EXPECT_TRUE(AddRecvStream(kSsrcY)); |
1664 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); | 1545 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcY).rtp.nack.rtp_history_ms); |
1665 EXPECT_TRUE(AddRecvStream(kSsrcZ)); | 1546 EXPECT_TRUE(AddRecvStream(kSsrcZ)); |
1666 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcZ).rtp.nack.rtp_history_ms); | 1547 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrcZ).rtp.nack.rtp_history_ms); |
1667 } | 1548 } |
1668 | 1549 |
1669 // Test that without useinbandfec, Opus FEC is off. | |
1670 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecNoOpusFec) { | |
the sun
2017/04/25 11:38:53
Where are these test cases living now?
ossu
2017/04/25 11:58:11
They have been moved to their respective codec imp
| |
1671 EXPECT_TRUE(SetupSendStream()); | |
1672 cricket::AudioSendParameters parameters; | |
1673 parameters.codecs.push_back(kOpusCodec); | |
1674 SetSendParameters(parameters); | |
1675 EXPECT_FALSE(GetCodecFec(kSsrcX)); | |
1676 } | |
1677 | |
1678 // Test that with useinbandfec=0, Opus FEC is off. | |
1679 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusDisableFec) { | |
1680 EXPECT_TRUE(SetupSendStream()); | |
1681 cricket::AudioSendParameters parameters; | |
1682 parameters.codecs.push_back(kOpusCodec); | |
1683 parameters.codecs[0].bitrate = 0; | |
1684 parameters.codecs[0].params["useinbandfec"] = "0"; | |
1685 SetSendParameters(parameters); | |
1686 CheckSendCodec(kSsrcX, "opus", 1, 32000); | |
1687 } | |
1688 | |
1689 // Test that with useinbandfec=1, Opus FEC is on. | |
1690 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusEnableFec) { | |
1691 EXPECT_TRUE(SetupSendStream()); | |
1692 cricket::AudioSendParameters parameters; | |
1693 parameters.codecs.push_back(kOpusCodec); | |
1694 parameters.codecs[0].bitrate = 0; | |
1695 parameters.codecs[0].params["useinbandfec"] = "1"; | |
1696 SetSendParameters(parameters); | |
1697 EXPECT_TRUE(GetCodecFec(kSsrcX)); | |
1698 CheckSendCodec(kSsrcX, "opus", 1, 32000); | |
1699 } | |
1700 | |
1701 // Test that with useinbandfec=1, stereo=1, Opus FEC is on. | |
1702 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecOpusEnableFecStereo) { | |
1703 EXPECT_TRUE(SetupSendStream()); | |
1704 cricket::AudioSendParameters parameters; | |
1705 parameters.codecs.push_back(kOpusCodec); | |
1706 parameters.codecs[0].bitrate = 0; | |
1707 parameters.codecs[0].params["stereo"] = "1"; | |
1708 parameters.codecs[0].params["useinbandfec"] = "1"; | |
1709 SetSendParameters(parameters); | |
1710 EXPECT_TRUE(GetCodecFec(kSsrcX)); | |
1711 CheckSendCodec(kSsrcX, "opus", 2, 64000); | |
1712 } | |
1713 | |
1714 // Test that with non-Opus, codec FEC is off. | |
1715 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecIsacNoFec) { | |
1716 EXPECT_TRUE(SetupSendStream()); | |
1717 cricket::AudioSendParameters parameters; | |
1718 parameters.codecs.push_back(kIsacCodec); | |
1719 SetSendParameters(parameters); | |
1720 EXPECT_FALSE(GetCodecFec(kSsrcX)); | |
1721 } | |
1722 | |
1723 // Test the with non-Opus, even if useinbandfec=1, FEC is off. | |
1724 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecIsacWithParamNoFec) { | |
1725 EXPECT_TRUE(SetupSendStream()); | |
1726 cricket::AudioSendParameters parameters; | |
1727 parameters.codecs.push_back(kIsacCodec); | |
1728 parameters.codecs[0].params["useinbandfec"] = "1"; | |
1729 SetSendParameters(parameters); | |
1730 EXPECT_FALSE(GetCodecFec(kSsrcX)); | |
1731 } | |
1732 | |
1733 // Test that Opus FEC status can be changed. | |
1734 TEST_F(WebRtcVoiceEngineTestFake, ChangeOpusFecStatus) { | |
1735 EXPECT_TRUE(SetupSendStream()); | |
1736 cricket::AudioSendParameters parameters; | |
1737 parameters.codecs.push_back(kOpusCodec); | |
1738 SetSendParameters(parameters); | |
1739 EXPECT_FALSE(GetCodecFec(kSsrcX)); | |
1740 | |
1741 parameters.codecs[0].params["useinbandfec"] = "1"; | |
1742 SetSendParameters(parameters); | |
1743 EXPECT_TRUE(GetCodecFec(kSsrcX)); | |
1744 } | |
1745 | |
1746 TEST_F(WebRtcVoiceEngineTestFake, TransportCcCanBeEnabledAndDisabled) { | 1550 TEST_F(WebRtcVoiceEngineTestFake, TransportCcCanBeEnabledAndDisabled) { |
1747 EXPECT_TRUE(SetupChannel()); | 1551 EXPECT_TRUE(SetupChannel()); |
1748 cricket::AudioSendParameters send_parameters; | 1552 cricket::AudioSendParameters send_parameters; |
1749 send_parameters.codecs.push_back(kOpusCodec); | 1553 send_parameters.codecs.push_back(kOpusCodec); |
1750 EXPECT_TRUE(send_parameters.codecs[0].feedback_params.params().empty()); | 1554 EXPECT_TRUE(send_parameters.codecs[0].feedback_params.params().empty()); |
1751 SetSendParameters(send_parameters); | 1555 SetSendParameters(send_parameters); |
1752 | 1556 |
1753 cricket::AudioRecvParameters recv_parameters; | 1557 cricket::AudioRecvParameters recv_parameters; |
1754 recv_parameters.codecs.push_back(kIsacCodec); | 1558 recv_parameters.codecs.push_back(kIsacCodec); |
1755 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); | 1559 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
1756 EXPECT_TRUE(AddRecvStream(kSsrcX)); | 1560 EXPECT_TRUE(AddRecvStream(kSsrcX)); |
1757 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrcX) != nullptr); | 1561 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrcX) != nullptr); |
1758 EXPECT_FALSE( | 1562 EXPECT_FALSE( |
1759 call_.GetAudioReceiveStream(kSsrcX)->GetConfig().rtp.transport_cc); | 1563 call_.GetAudioReceiveStream(kSsrcX)->GetConfig().rtp.transport_cc); |
1760 | 1564 |
1761 send_parameters.codecs = engine_->send_codecs(); | 1565 send_parameters.codecs = engine_->send_codecs(); |
1762 SetSendParameters(send_parameters); | 1566 SetSendParameters(send_parameters); |
1763 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrcX) != nullptr); | 1567 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrcX) != nullptr); |
1764 EXPECT_TRUE( | 1568 EXPECT_TRUE( |
1765 call_.GetAudioReceiveStream(kSsrcX)->GetConfig().rtp.transport_cc); | 1569 call_.GetAudioReceiveStream(kSsrcX)->GetConfig().rtp.transport_cc); |
1766 } | 1570 } |
1767 | 1571 |
1768 // Test maxplaybackrate <= 8000 triggers Opus narrow band mode. | |
ossu
2017/04/25 11:58:11
These have been moved to Opus's own tests.
| |
1769 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateNb) { | |
1770 EXPECT_TRUE(SetupSendStream()); | |
1771 cricket::AudioSendParameters parameters; | |
1772 parameters.codecs.push_back(kOpusCodec); | |
1773 parameters.codecs[0].bitrate = 0; | |
1774 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 8000); | |
1775 SetSendParameters(parameters); | |
1776 EXPECT_EQ(8000, GetOpusMaxPlaybackRate(kSsrcX)); | |
1777 EXPECT_EQ(12000, GetCodecBitrate(kSsrcX)); | |
1778 | |
1779 parameters.codecs[0].SetParam(cricket::kCodecParamStereo, "1"); | |
1780 SetSendParameters(parameters); | |
1781 EXPECT_EQ(24000, GetCodecBitrate(kSsrcX)); | |
1782 } | |
1783 | |
1784 // Test 8000 < maxplaybackrate <= 12000 triggers Opus medium band mode. | |
1785 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateMb) { | |
1786 EXPECT_TRUE(SetupSendStream()); | |
1787 cricket::AudioSendParameters parameters; | |
1788 parameters.codecs.push_back(kOpusCodec); | |
1789 parameters.codecs[0].bitrate = 0; | |
1790 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 8001); | |
1791 SetSendParameters(parameters); | |
1792 EXPECT_EQ(8001, GetOpusMaxPlaybackRate(kSsrcX)); | |
1793 EXPECT_EQ(20000, GetCodecBitrate(kSsrcX)); | |
1794 | |
1795 parameters.codecs[0].SetParam(cricket::kCodecParamStereo, "1"); | |
1796 SetSendParameters(parameters); | |
1797 EXPECT_EQ(40000, GetCodecBitrate(kSsrcX)); | |
1798 } | |
1799 | |
1800 // Test 12000 < maxplaybackrate <= 16000 triggers Opus wide band mode. | |
1801 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateWb) { | |
1802 EXPECT_TRUE(SetupSendStream()); | |
1803 cricket::AudioSendParameters parameters; | |
1804 parameters.codecs.push_back(kOpusCodec); | |
1805 parameters.codecs[0].bitrate = 0; | |
1806 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 12001); | |
1807 SetSendParameters(parameters); | |
1808 EXPECT_EQ(12001, GetOpusMaxPlaybackRate(kSsrcX)); | |
1809 EXPECT_EQ(20000, GetCodecBitrate(kSsrcX)); | |
1810 | |
1811 parameters.codecs[0].SetParam(cricket::kCodecParamStereo, "1"); | |
1812 SetSendParameters(parameters); | |
1813 EXPECT_EQ(40000, GetCodecBitrate(kSsrcX)); | |
1814 } | |
1815 | |
1816 // Test 16000 < maxplaybackrate <= 24000 triggers Opus super wide band mode. | |
1817 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateSwb) { | |
1818 EXPECT_TRUE(SetupSendStream()); | |
1819 cricket::AudioSendParameters parameters; | |
1820 parameters.codecs.push_back(kOpusCodec); | |
1821 parameters.codecs[0].bitrate = 0; | |
1822 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 16001); | |
1823 SetSendParameters(parameters); | |
1824 EXPECT_EQ(16001, GetOpusMaxPlaybackRate(kSsrcX)); | |
1825 EXPECT_EQ(32000, GetCodecBitrate(kSsrcX)); | |
1826 | |
1827 parameters.codecs[0].SetParam(cricket::kCodecParamStereo, "1"); | |
1828 SetSendParameters(parameters); | |
1829 EXPECT_EQ(64000, GetCodecBitrate(kSsrcX)); | |
1830 } | |
1831 | |
1832 // Test 24000 < maxplaybackrate triggers Opus full band mode. | |
1833 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateFb) { | |
1834 EXPECT_TRUE(SetupSendStream()); | |
1835 cricket::AudioSendParameters parameters; | |
1836 parameters.codecs.push_back(kOpusCodec); | |
1837 parameters.codecs[0].bitrate = 0; | |
1838 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 24001); | |
1839 SetSendParameters(parameters); | |
1840 EXPECT_EQ(24001, GetOpusMaxPlaybackRate(kSsrcX)); | |
1841 EXPECT_EQ(32000, GetCodecBitrate(kSsrcX)); | |
1842 | |
1843 parameters.codecs[0].SetParam(cricket::kCodecParamStereo, "1"); | |
1844 SetSendParameters(parameters); | |
1845 EXPECT_EQ(64000, GetCodecBitrate(kSsrcX)); | |
1846 } | |
1847 | |
1848 // Test Opus that without maxplaybackrate, default playback rate is used. | |
1849 TEST_F(WebRtcVoiceEngineTestFake, DefaultOpusMaxPlaybackRate) { | |
1850 EXPECT_TRUE(SetupSendStream()); | |
1851 cricket::AudioSendParameters parameters; | |
1852 parameters.codecs.push_back(kOpusCodec); | |
1853 SetSendParameters(parameters); | |
1854 EXPECT_EQ(48000, GetOpusMaxPlaybackRate(kSsrcX)); | |
1855 } | |
1856 | |
1857 // Test the with non-Opus, maxplaybackrate has no effect. | |
1858 TEST_F(WebRtcVoiceEngineTestFake, SetNonOpusMaxPlaybackRate) { | |
1859 EXPECT_TRUE(SetupSendStream()); | |
1860 cricket::AudioSendParameters parameters; | |
1861 parameters.codecs.push_back(kIsacCodec); | |
1862 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 32000); | |
1863 SetSendParameters(parameters); | |
1864 EXPECT_EQ(0, GetOpusMaxPlaybackRate(kSsrcX)); | |
1865 } | |
1866 | |
1867 // Test maxplaybackrate can be set on two streams. | |
ossu
2017/04/25 11:58:11
I don't think this one is applicable anymore, sinc
| |
1868 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateOnTwoStreams) { | |
1869 EXPECT_TRUE(SetupSendStream()); | |
1870 cricket::AudioSendParameters parameters; | |
1871 parameters.codecs.push_back(kOpusCodec); | |
1872 SetSendParameters(parameters); | |
1873 EXPECT_EQ(48000, GetOpusMaxPlaybackRate(kSsrcX)); | |
1874 | |
1875 parameters.codecs[0].SetParam(cricket::kCodecParamMaxPlaybackRate, 8000); | |
1876 SetSendParameters(parameters); | |
1877 EXPECT_EQ(8000, GetOpusMaxPlaybackRate(kSsrcX)); | |
1878 | |
1879 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrcY)); | |
1880 EXPECT_EQ(8000, GetOpusMaxPlaybackRate(kSsrcY)); | |
1881 } | |
1882 | |
1883 // Test that with usedtx=0, Opus DTX is off. | |
1884 TEST_F(WebRtcVoiceEngineTestFake, DisableOpusDtxOnOpus) { | |
1885 EXPECT_TRUE(SetupSendStream()); | |
1886 cricket::AudioSendParameters parameters; | |
1887 parameters.codecs.push_back(kOpusCodec); | |
1888 parameters.codecs[0].params["usedtx"] = "0"; | |
1889 SetSendParameters(parameters); | |
1890 EXPECT_FALSE(GetOpusDtx(kSsrcX)); | |
1891 } | |
1892 | |
1893 // Test that with usedtx=1, Opus DTX is on. | |
1894 TEST_F(WebRtcVoiceEngineTestFake, EnableOpusDtxOnOpus) { | |
1895 EXPECT_TRUE(SetupSendStream()); | |
1896 cricket::AudioSendParameters parameters; | |
1897 parameters.codecs.push_back(kOpusCodec); | |
1898 parameters.codecs[0].params["usedtx"] = "1"; | |
1899 SetSendParameters(parameters); | |
1900 EXPECT_TRUE(GetOpusDtx(kSsrcX)); | |
1901 } | |
1902 | |
1903 // Test that usedtx=1 works with stereo Opus. | |
1904 TEST_F(WebRtcVoiceEngineTestFake, EnableOpusDtxOnOpusStereo) { | |
1905 EXPECT_TRUE(SetupSendStream()); | |
1906 cricket::AudioSendParameters parameters; | |
1907 parameters.codecs.push_back(kOpusCodec); | |
1908 parameters.codecs[0].params["usedtx"] = "1"; | |
1909 parameters.codecs[0].params["stereo"] = "1"; | |
1910 SetSendParameters(parameters); | |
1911 EXPECT_TRUE(GetOpusDtx(kSsrcX)); | |
1912 } | |
1913 | |
1914 // Test that usedtx=1 does not work with non Opus. | |
1915 TEST_F(WebRtcVoiceEngineTestFake, CannotEnableOpusDtxOnNonOpus) { | |
1916 EXPECT_TRUE(SetupSendStream()); | |
1917 cricket::AudioSendParameters parameters; | |
1918 parameters.codecs.push_back(kIsacCodec); | |
1919 parameters.codecs[0].params["usedtx"] = "1"; | |
1920 SetSendParameters(parameters); | |
1921 EXPECT_FALSE(GetOpusDtx(kSsrcX)); | |
1922 } | |
1923 | |
1924 // Test that we can switch back and forth between Opus and ISAC with CN. | 1572 // Test that we can switch back and forth between Opus and ISAC with CN. |
1925 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsIsacOpusSwitching) { | 1573 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsIsacOpusSwitching) { |
1926 EXPECT_TRUE(SetupSendStream()); | 1574 EXPECT_TRUE(SetupSendStream()); |
1927 | 1575 |
1928 cricket::AudioSendParameters opus_parameters; | 1576 cricket::AudioSendParameters opus_parameters; |
1929 opus_parameters.codecs.push_back(kOpusCodec); | 1577 opus_parameters.codecs.push_back(kOpusCodec); |
1930 SetSendParameters(opus_parameters); | 1578 SetSendParameters(opus_parameters); |
1931 { | 1579 { |
1932 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1580 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1933 EXPECT_EQ(111, gcodec.pltype); | 1581 EXPECT_EQ(111, spec.payload_type); |
1934 EXPECT_STREQ("opus", gcodec.plname); | 1582 EXPECT_STRCASEEQ("opus", spec.format.name.c_str()); |
1935 } | 1583 } |
1936 | 1584 |
1937 cricket::AudioSendParameters isac_parameters; | 1585 cricket::AudioSendParameters isac_parameters; |
1938 isac_parameters.codecs.push_back(kIsacCodec); | 1586 isac_parameters.codecs.push_back(kIsacCodec); |
1939 isac_parameters.codecs.push_back(kCn16000Codec); | 1587 isac_parameters.codecs.push_back(kCn16000Codec); |
1940 isac_parameters.codecs.push_back(kOpusCodec); | 1588 isac_parameters.codecs.push_back(kOpusCodec); |
1941 SetSendParameters(isac_parameters); | 1589 SetSendParameters(isac_parameters); |
1942 { | 1590 { |
1943 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1591 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1944 EXPECT_EQ(103, gcodec.pltype); | 1592 EXPECT_EQ(103, spec.payload_type); |
1945 EXPECT_STREQ("ISAC", gcodec.plname); | 1593 EXPECT_STRCASEEQ("ISAC", spec.format.name.c_str()); |
1946 } | 1594 } |
1947 | 1595 |
1948 SetSendParameters(opus_parameters); | 1596 SetSendParameters(opus_parameters); |
1949 { | 1597 { |
1950 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1598 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1951 EXPECT_EQ(111, gcodec.pltype); | 1599 EXPECT_EQ(111, spec.payload_type); |
1952 EXPECT_STREQ("opus", gcodec.plname); | 1600 EXPECT_STRCASEEQ("opus", spec.format.name.c_str()); |
1953 } | 1601 } |
1954 } | 1602 } |
1955 | 1603 |
1956 // Test that we handle various ways of specifying bitrate. | 1604 // Test that we handle various ways of specifying bitrate. |
1957 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsBitrate) { | 1605 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsBitrate) { |
1958 EXPECT_TRUE(SetupSendStream()); | 1606 EXPECT_TRUE(SetupSendStream()); |
1959 cricket::AudioSendParameters parameters; | 1607 cricket::AudioSendParameters parameters; |
1960 parameters.codecs.push_back(kIsacCodec); // bitrate == 32000 | 1608 parameters.codecs.push_back(kIsacCodec); // bitrate == 32000 |
1961 SetSendParameters(parameters); | 1609 SetSendParameters(parameters); |
1962 { | 1610 { |
1963 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1611 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1964 EXPECT_EQ(103, gcodec.pltype); | 1612 EXPECT_EQ(103, spec.payload_type); |
1965 EXPECT_STREQ("ISAC", gcodec.plname); | 1613 EXPECT_STRCASEEQ("ISAC", spec.format.name.c_str()); |
1966 EXPECT_EQ(32000, gcodec.rate); | 1614 EXPECT_EQ(32000, spec.target_bitrate_bps); |
1967 } | 1615 } |
1968 | 1616 |
1969 parameters.codecs[0].bitrate = 0; // bitrate == default | 1617 parameters.codecs[0].bitrate = 0; // bitrate == default |
1970 SetSendParameters(parameters); | 1618 SetSendParameters(parameters); |
1971 { | 1619 { |
1972 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1620 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1973 EXPECT_EQ(103, gcodec.pltype); | 1621 EXPECT_EQ(103, spec.payload_type); |
1974 EXPECT_STREQ("ISAC", gcodec.plname); | 1622 EXPECT_STRCASEEQ("ISAC", spec.format.name.c_str()); |
1975 EXPECT_EQ(32000, gcodec.rate); | 1623 EXPECT_EQ(32000, spec.target_bitrate_bps); |
1976 } | 1624 } |
1977 parameters.codecs[0].bitrate = 28000; // bitrate == 28000 | 1625 parameters.codecs[0].bitrate = 28000; // bitrate == 28000 |
1978 SetSendParameters(parameters); | 1626 SetSendParameters(parameters); |
1979 { | 1627 { |
1980 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1628 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1981 EXPECT_EQ(103, gcodec.pltype); | 1629 EXPECT_EQ(103, spec.payload_type); |
1982 EXPECT_STREQ("ISAC", gcodec.plname); | 1630 EXPECT_STRCASEEQ("ISAC", spec.format.name.c_str()); |
1983 EXPECT_EQ(28000, gcodec.rate); | 1631 EXPECT_EQ(28000, spec.target_bitrate_bps); |
1984 } | 1632 } |
1985 | 1633 |
1986 parameters.codecs[0] = kPcmuCodec; // bitrate == 64000 | 1634 parameters.codecs[0] = kPcmuCodec; // bitrate == 64000 |
1987 SetSendParameters(parameters); | 1635 SetSendParameters(parameters); |
1988 { | 1636 { |
1989 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1637 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1990 EXPECT_EQ(0, gcodec.pltype); | 1638 EXPECT_EQ(0, spec.payload_type); |
1991 EXPECT_STREQ("PCMU", gcodec.plname); | 1639 EXPECT_STRCASEEQ("PCMU", spec.format.name.c_str()); |
1992 EXPECT_EQ(64000, gcodec.rate); | 1640 EXPECT_EQ(64000, spec.target_bitrate_bps); |
1993 } | 1641 } |
1994 | 1642 |
1995 parameters.codecs[0].bitrate = 0; // bitrate == default | 1643 parameters.codecs[0].bitrate = 0; // bitrate == default |
1996 SetSendParameters(parameters); | 1644 SetSendParameters(parameters); |
1997 { | 1645 { |
1998 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1646 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
1999 EXPECT_EQ(0, gcodec.pltype); | 1647 EXPECT_EQ(0, spec.payload_type); |
2000 EXPECT_STREQ("PCMU", gcodec.plname); | 1648 EXPECT_STREQ("PCMU", spec.format.name.c_str()); |
2001 EXPECT_EQ(64000, gcodec.rate); | 1649 EXPECT_EQ(64000, spec.target_bitrate_bps); |
2002 } | 1650 } |
2003 | 1651 |
2004 parameters.codecs[0] = kOpusCodec; | 1652 parameters.codecs[0] = kOpusCodec; |
2005 parameters.codecs[0].bitrate = 0; // bitrate == default | 1653 parameters.codecs[0].bitrate = 0; // bitrate == default |
2006 SetSendParameters(parameters); | 1654 SetSendParameters(parameters); |
2007 { | 1655 { |
2008 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1656 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2009 EXPECT_EQ(111, gcodec.pltype); | 1657 EXPECT_EQ(111, spec.payload_type); |
2010 EXPECT_STREQ("opus", gcodec.plname); | 1658 EXPECT_STREQ("opus", spec.format.name.c_str()); |
2011 EXPECT_EQ(32000, gcodec.rate); | 1659 EXPECT_EQ(32000, spec.target_bitrate_bps); |
2012 } | 1660 } |
2013 } | 1661 } |
2014 | 1662 |
2015 // Test that we could set packet size specified in kCodecParamPTime. | |
ossu
2017/04/25 11:58:11
These have been moved to the respective codec test
| |
2016 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsPTimeAsPacketSize) { | |
2017 EXPECT_TRUE(SetupSendStream()); | |
2018 cricket::AudioSendParameters parameters; | |
2019 parameters.codecs.push_back(kOpusCodec); | |
2020 parameters.codecs[0].SetParam(cricket::kCodecParamPTime, 40); // Within range. | |
2021 SetSendParameters(parameters); | |
2022 EXPECT_EQ(1920, GetCodecPacSize(kSsrcX)); // Opus gets 40ms. | |
2023 | |
2024 parameters.codecs[0].SetParam(cricket::kCodecParamPTime, 5); // Below range. | |
2025 SetSendParameters(parameters); | |
2026 EXPECT_EQ(480, GetCodecPacSize(kSsrcX)); // Opus gets 10ms. | |
2027 | |
2028 parameters.codecs[0].SetParam(cricket::kCodecParamPTime, 80); // Beyond range. | |
2029 SetSendParameters(parameters); | |
2030 EXPECT_EQ(2880, GetCodecPacSize(kSsrcX)); // Opus gets 60ms. | |
2031 | |
2032 parameters.codecs[0] = kIsacCodec; // Also try Isac, with unsupported size. | |
2033 parameters.codecs[0].SetParam(cricket::kCodecParamPTime, 40); // Within range. | |
2034 SetSendParameters(parameters); | |
2035 EXPECT_EQ(480, GetCodecPacSize( | |
2036 kSsrcX)); // Isac gets 30ms as the next smallest value. | |
2037 | |
2038 parameters.codecs[0] = kG722CodecSdp; // Try G722 @8kHz as negotiated in SDP. | |
2039 parameters.codecs[0].SetParam(cricket::kCodecParamPTime, 40); | |
2040 SetSendParameters(parameters); | |
2041 EXPECT_EQ(640, GetCodecPacSize( | |
2042 kSsrcX)); // G722 gets 40ms @16kHz as defined in VoE. | |
2043 } | |
2044 | |
2045 // Test that we fail if no codecs are specified. | 1663 // Test that we fail if no codecs are specified. |
2046 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsNoCodecs) { | 1664 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsNoCodecs) { |
2047 EXPECT_TRUE(SetupSendStream()); | 1665 EXPECT_TRUE(SetupSendStream()); |
2048 cricket::AudioSendParameters parameters; | 1666 cricket::AudioSendParameters parameters; |
2049 EXPECT_FALSE(channel_->SetSendParameters(parameters)); | 1667 EXPECT_FALSE(channel_->SetSendParameters(parameters)); |
2050 } | 1668 } |
2051 | 1669 |
2052 // Test that we can set send codecs even with telephone-event codec as the first | 1670 // Test that we can set send codecs even with telephone-event codec as the first |
2053 // one on the list. | 1671 // one on the list. |
2054 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsDTMFOnTop) { | 1672 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsDTMFOnTop) { |
2055 EXPECT_TRUE(SetupSendStream()); | 1673 EXPECT_TRUE(SetupSendStream()); |
2056 cricket::AudioSendParameters parameters; | 1674 cricket::AudioSendParameters parameters; |
2057 parameters.codecs.push_back(kTelephoneEventCodec1); | 1675 parameters.codecs.push_back(kTelephoneEventCodec1); |
2058 parameters.codecs.push_back(kIsacCodec); | 1676 parameters.codecs.push_back(kIsacCodec); |
2059 parameters.codecs.push_back(kPcmuCodec); | 1677 parameters.codecs.push_back(kPcmuCodec); |
2060 parameters.codecs[0].id = 98; // DTMF | 1678 parameters.codecs[0].id = 98; // DTMF |
2061 parameters.codecs[1].id = 96; | 1679 parameters.codecs[1].id = 96; |
2062 SetSendParameters(parameters); | 1680 SetSendParameters(parameters); |
2063 const auto& gcodec = GetSendStreamConfig(kSsrcX).send_codec_spec.codec_inst; | 1681 const auto& spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2064 EXPECT_EQ(96, gcodec.pltype); | 1682 EXPECT_EQ(96, spec.payload_type); |
2065 EXPECT_STREQ("ISAC", gcodec.plname); | 1683 EXPECT_STRCASEEQ("ISAC", spec.format.name.c_str()); |
2066 EXPECT_TRUE(channel_->CanInsertDtmf()); | 1684 EXPECT_TRUE(channel_->CanInsertDtmf()); |
2067 } | 1685 } |
2068 | 1686 |
2069 // Test that payload type range is limited for telephone-event codec. | 1687 // Test that payload type range is limited for telephone-event codec. |
2070 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsDTMFPayloadTypeOutOfRange) { | 1688 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsDTMFPayloadTypeOutOfRange) { |
2071 EXPECT_TRUE(SetupSendStream()); | 1689 EXPECT_TRUE(SetupSendStream()); |
2072 cricket::AudioSendParameters parameters; | 1690 cricket::AudioSendParameters parameters; |
2073 parameters.codecs.push_back(kTelephoneEventCodec2); | 1691 parameters.codecs.push_back(kTelephoneEventCodec2); |
2074 parameters.codecs.push_back(kIsacCodec); | 1692 parameters.codecs.push_back(kIsacCodec); |
2075 parameters.codecs[0].id = 0; // DTMF | 1693 parameters.codecs[0].id = 0; // DTMF |
(...skipping 15 matching lines...) Expand all Loading... | |
2091 // one on the list. | 1709 // one on the list. |
2092 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNOnTop) { | 1710 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNOnTop) { |
2093 EXPECT_TRUE(SetupSendStream()); | 1711 EXPECT_TRUE(SetupSendStream()); |
2094 cricket::AudioSendParameters parameters; | 1712 cricket::AudioSendParameters parameters; |
2095 parameters.codecs.push_back(kCn16000Codec); | 1713 parameters.codecs.push_back(kCn16000Codec); |
2096 parameters.codecs.push_back(kIsacCodec); | 1714 parameters.codecs.push_back(kIsacCodec); |
2097 parameters.codecs.push_back(kPcmuCodec); | 1715 parameters.codecs.push_back(kPcmuCodec); |
2098 parameters.codecs[0].id = 98; // wideband CN | 1716 parameters.codecs[0].id = 98; // wideband CN |
2099 parameters.codecs[1].id = 96; | 1717 parameters.codecs[1].id = 96; |
2100 SetSendParameters(parameters); | 1718 SetSendParameters(parameters); |
2101 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1719 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2102 EXPECT_EQ(96, send_codec_spec.codec_inst.pltype); | 1720 EXPECT_EQ(96, send_codec_spec.payload_type); |
2103 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1721 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2104 EXPECT_EQ(98, send_codec_spec.cng_payload_type); | 1722 EXPECT_EQ(98, send_codec_spec.cng_payload_type); |
2105 EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); | 1723 // EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); |
the sun
2017/04/25 11:38:53
commented out - why?
ossu
2017/04/25 12:58:38
Forgot to remove it. It's no longer possible to in
| |
2106 } | 1724 } |
2107 | 1725 |
2108 // Test that we set VAD and DTMF types correctly as caller. | 1726 // Test that we set VAD and DTMF types correctly as caller. |
2109 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNandDTMFAsCaller) { | 1727 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNandDTMFAsCaller) { |
2110 EXPECT_TRUE(SetupSendStream()); | 1728 EXPECT_TRUE(SetupSendStream()); |
2111 cricket::AudioSendParameters parameters; | 1729 cricket::AudioSendParameters parameters; |
2112 parameters.codecs.push_back(kIsacCodec); | 1730 parameters.codecs.push_back(kIsacCodec); |
2113 parameters.codecs.push_back(kPcmuCodec); | 1731 parameters.codecs.push_back(kPcmuCodec); |
2114 // TODO(juberti): cn 32000 | 1732 // TODO(juberti): cn 32000 |
2115 parameters.codecs.push_back(kCn16000Codec); | 1733 parameters.codecs.push_back(kCn16000Codec); |
2116 parameters.codecs.push_back(kCn8000Codec); | 1734 parameters.codecs.push_back(kCn8000Codec); |
2117 parameters.codecs.push_back(kTelephoneEventCodec1); | 1735 parameters.codecs.push_back(kTelephoneEventCodec1); |
2118 parameters.codecs[0].id = 96; | 1736 parameters.codecs[0].id = 96; |
2119 parameters.codecs[2].id = 97; // wideband CN | 1737 parameters.codecs[2].id = 97; // wideband CN |
2120 parameters.codecs[4].id = 98; // DTMF | 1738 parameters.codecs[4].id = 98; // DTMF |
2121 SetSendParameters(parameters); | 1739 SetSendParameters(parameters); |
2122 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1740 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2123 EXPECT_EQ(96, send_codec_spec.codec_inst.pltype); | 1741 EXPECT_EQ(96, send_codec_spec.payload_type); |
2124 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1742 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2125 EXPECT_EQ(1, send_codec_spec.codec_inst.channels); | 1743 EXPECT_EQ(1, send_codec_spec.format.num_channels); |
2126 EXPECT_EQ(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | |
2127 EXPECT_EQ(97, send_codec_spec.cng_payload_type); | 1744 EXPECT_EQ(97, send_codec_spec.cng_payload_type); |
2128 EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); | |
2129 EXPECT_TRUE(channel_->CanInsertDtmf()); | 1745 EXPECT_TRUE(channel_->CanInsertDtmf()); |
2130 } | 1746 } |
2131 | 1747 |
2132 // Test that we set VAD and DTMF types correctly as callee. | 1748 // Test that we set VAD and DTMF types correctly as callee. |
2133 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNandDTMFAsCallee) { | 1749 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNandDTMFAsCallee) { |
2134 EXPECT_TRUE(SetupChannel()); | 1750 EXPECT_TRUE(SetupChannel()); |
2135 cricket::AudioSendParameters parameters; | 1751 cricket::AudioSendParameters parameters; |
2136 parameters.codecs.push_back(kIsacCodec); | 1752 parameters.codecs.push_back(kIsacCodec); |
2137 parameters.codecs.push_back(kPcmuCodec); | 1753 parameters.codecs.push_back(kPcmuCodec); |
2138 // TODO(juberti): cn 32000 | 1754 // TODO(juberti): cn 32000 |
2139 parameters.codecs.push_back(kCn16000Codec); | 1755 parameters.codecs.push_back(kCn16000Codec); |
2140 parameters.codecs.push_back(kCn8000Codec); | 1756 parameters.codecs.push_back(kCn8000Codec); |
2141 parameters.codecs.push_back(kTelephoneEventCodec2); | 1757 parameters.codecs.push_back(kTelephoneEventCodec2); |
2142 parameters.codecs[0].id = 96; | 1758 parameters.codecs[0].id = 96; |
2143 parameters.codecs[2].id = 97; // wideband CN | 1759 parameters.codecs[2].id = 97; // wideband CN |
2144 parameters.codecs[4].id = 98; // DTMF | 1760 parameters.codecs[4].id = 98; // DTMF |
2145 SetSendParameters(parameters); | 1761 SetSendParameters(parameters); |
2146 EXPECT_TRUE(channel_->AddSendStream( | 1762 EXPECT_TRUE(channel_->AddSendStream( |
2147 cricket::StreamParams::CreateLegacy(kSsrcX))); | 1763 cricket::StreamParams::CreateLegacy(kSsrcX))); |
2148 | 1764 |
2149 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1765 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2150 EXPECT_EQ(96, send_codec_spec.codec_inst.pltype); | 1766 EXPECT_EQ(96, send_codec_spec.payload_type); |
2151 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1767 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2152 EXPECT_EQ(1, send_codec_spec.codec_inst.channels); | 1768 EXPECT_EQ(1, send_codec_spec.format.num_channels); |
2153 EXPECT_EQ(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | |
2154 EXPECT_EQ(97, send_codec_spec.cng_payload_type); | 1769 EXPECT_EQ(97, send_codec_spec.cng_payload_type); |
2155 EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); | |
2156 EXPECT_TRUE(channel_->CanInsertDtmf()); | 1770 EXPECT_TRUE(channel_->CanInsertDtmf()); |
2157 } | 1771 } |
2158 | 1772 |
2159 // Test that we only apply VAD if we have a CN codec that matches the | 1773 // Test that we only apply VAD if we have a CN codec that matches the |
2160 // send codec clockrate. | 1774 // send codec clockrate. |
2161 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNNoMatch) { | 1775 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCNNoMatch) { |
2162 EXPECT_TRUE(SetupSendStream()); | 1776 EXPECT_TRUE(SetupSendStream()); |
2163 cricket::AudioSendParameters parameters; | 1777 cricket::AudioSendParameters parameters; |
2164 // Set ISAC(16K) and CN(16K). VAD should be activated. | 1778 // Set ISAC(16K) and CN(16K). VAD should be activated. |
2165 parameters.codecs.push_back(kIsacCodec); | 1779 parameters.codecs.push_back(kIsacCodec); |
2166 parameters.codecs.push_back(kCn16000Codec); | 1780 parameters.codecs.push_back(kCn16000Codec); |
2167 parameters.codecs[1].id = 97; | 1781 parameters.codecs[1].id = 97; |
2168 SetSendParameters(parameters); | 1782 SetSendParameters(parameters); |
2169 { | 1783 { |
2170 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1784 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2171 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1785 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2172 EXPECT_EQ(1, send_codec_spec.codec_inst.channels); | 1786 EXPECT_EQ(1, send_codec_spec.format.num_channels); |
2173 EXPECT_EQ(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | |
2174 EXPECT_EQ(97, send_codec_spec.cng_payload_type); | 1787 EXPECT_EQ(97, send_codec_spec.cng_payload_type); |
2175 EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); | |
2176 } | 1788 } |
2177 // Set PCMU(8K) and CN(16K). VAD should not be activated. | 1789 // Set PCMU(8K) and CN(16K). VAD should not be activated. |
2178 parameters.codecs[0] = kPcmuCodec; | 1790 parameters.codecs[0] = kPcmuCodec; |
2179 SetSendParameters(parameters); | 1791 SetSendParameters(parameters); |
2180 { | 1792 { |
2181 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1793 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2182 EXPECT_STREQ("PCMU", send_codec_spec.codec_inst.plname); | 1794 EXPECT_STRCASEEQ("PCMU", send_codec_spec.format.name.c_str()); |
2183 EXPECT_NE(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | 1795 EXPECT_EQ(rtc::Optional<int>(), send_codec_spec.cng_payload_type); |
2184 } | 1796 } |
2185 // Set PCMU(8K) and CN(8K). VAD should be activated. | 1797 // Set PCMU(8K) and CN(8K). VAD should be activated. |
2186 parameters.codecs[1] = kCn8000Codec; | 1798 parameters.codecs[1] = kCn8000Codec; |
2187 SetSendParameters(parameters); | 1799 SetSendParameters(parameters); |
2188 { | 1800 { |
2189 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1801 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2190 EXPECT_STREQ("PCMU", send_codec_spec.codec_inst.plname); | 1802 EXPECT_STRCASEEQ("PCMU", send_codec_spec.format.name.c_str()); |
2191 EXPECT_EQ(1, send_codec_spec.codec_inst.channels); | 1803 EXPECT_EQ(1, send_codec_spec.format.num_channels); |
2192 EXPECT_EQ(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | |
2193 EXPECT_EQ(13, send_codec_spec.cng_payload_type); | 1804 EXPECT_EQ(13, send_codec_spec.cng_payload_type); |
2194 EXPECT_EQ(webrtc::kFreq8000Hz, send_codec_spec.cng_plfreq); | |
2195 } | 1805 } |
2196 // Set ISAC(16K) and CN(8K). VAD should not be activated. | 1806 // Set ISAC(16K) and CN(8K). VAD should not be activated. |
2197 parameters.codecs[0] = kIsacCodec; | 1807 parameters.codecs[0] = kIsacCodec; |
2198 SetSendParameters(parameters); | 1808 SetSendParameters(parameters); |
2199 { | 1809 { |
2200 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1810 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2201 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1811 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2202 EXPECT_NE(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | 1812 EXPECT_EQ(rtc::Optional<int>(), send_codec_spec.cng_payload_type); |
2203 } | 1813 } |
2204 } | 1814 } |
2205 | 1815 |
2206 // Test that we perform case-insensitive matching of codec names. | 1816 // Test that we perform case-insensitive matching of codec names. |
2207 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCaseInsensitive) { | 1817 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsCaseInsensitive) { |
2208 EXPECT_TRUE(SetupSendStream()); | 1818 EXPECT_TRUE(SetupSendStream()); |
2209 cricket::AudioSendParameters parameters; | 1819 cricket::AudioSendParameters parameters; |
2210 parameters.codecs.push_back(kIsacCodec); | 1820 parameters.codecs.push_back(kIsacCodec); |
2211 parameters.codecs.push_back(kPcmuCodec); | 1821 parameters.codecs.push_back(kPcmuCodec); |
2212 parameters.codecs.push_back(kCn16000Codec); | 1822 parameters.codecs.push_back(kCn16000Codec); |
2213 parameters.codecs.push_back(kCn8000Codec); | 1823 parameters.codecs.push_back(kCn8000Codec); |
2214 parameters.codecs.push_back(kTelephoneEventCodec1); | 1824 parameters.codecs.push_back(kTelephoneEventCodec1); |
2215 parameters.codecs[0].name = "iSaC"; | 1825 parameters.codecs[0].name = "iSaC"; |
2216 parameters.codecs[0].id = 96; | 1826 parameters.codecs[0].id = 96; |
2217 parameters.codecs[2].id = 97; // wideband CN | 1827 parameters.codecs[2].id = 97; // wideband CN |
2218 parameters.codecs[4].id = 98; // DTMF | 1828 parameters.codecs[4].id = 98; // DTMF |
2219 SetSendParameters(parameters); | 1829 SetSendParameters(parameters); |
2220 const auto& send_codec_spec = GetSendStreamConfig(kSsrcX).send_codec_spec; | 1830 const auto& send_codec_spec = *GetSendStreamConfig(kSsrcX).send_codec_spec; |
2221 EXPECT_EQ(96, send_codec_spec.codec_inst.pltype); | 1831 EXPECT_EQ(96, send_codec_spec.payload_type); |
2222 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1832 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2223 EXPECT_EQ(1, send_codec_spec.codec_inst.channels); | 1833 EXPECT_EQ(1, send_codec_spec.format.num_channels); |
2224 EXPECT_EQ(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | |
2225 EXPECT_EQ(97, send_codec_spec.cng_payload_type); | 1834 EXPECT_EQ(97, send_codec_spec.cng_payload_type); |
2226 EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); | |
2227 EXPECT_TRUE(channel_->CanInsertDtmf()); | 1835 EXPECT_TRUE(channel_->CanInsertDtmf()); |
2228 } | 1836 } |
2229 | 1837 |
2230 class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake { | 1838 class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake { |
2231 public: | 1839 public: |
2232 WebRtcVoiceEngineWithSendSideBweTest() | 1840 WebRtcVoiceEngineWithSendSideBweTest() |
2233 : WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {} | 1841 : WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {} |
2234 }; | 1842 }; |
2235 | 1843 |
2236 TEST_F(WebRtcVoiceEngineWithSendSideBweTest, | 1844 TEST_F(WebRtcVoiceEngineWithSendSideBweTest, |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2374 // Set ISAC(16K) and CN(16K). VAD should be activated. | 1982 // Set ISAC(16K) and CN(16K). VAD should be activated. |
2375 parameters.codecs.push_back(kIsacCodec); | 1983 parameters.codecs.push_back(kIsacCodec); |
2376 parameters.codecs.push_back(kCn16000Codec); | 1984 parameters.codecs.push_back(kCn16000Codec); |
2377 parameters.codecs[1].id = 97; | 1985 parameters.codecs[1].id = 97; |
2378 SetSendParameters(parameters); | 1986 SetSendParameters(parameters); |
2379 | 1987 |
2380 // Verify ISAC and VAD are corrected configured on all send channels. | 1988 // Verify ISAC and VAD are corrected configured on all send channels. |
2381 for (uint32_t ssrc : kSsrcs4) { | 1989 for (uint32_t ssrc : kSsrcs4) { |
2382 ASSERT_TRUE(call_.GetAudioSendStream(ssrc) != nullptr); | 1990 ASSERT_TRUE(call_.GetAudioSendStream(ssrc) != nullptr); |
2383 const auto& send_codec_spec = | 1991 const auto& send_codec_spec = |
2384 call_.GetAudioSendStream(ssrc)->GetConfig().send_codec_spec; | 1992 *call_.GetAudioSendStream(ssrc)->GetConfig().send_codec_spec; |
2385 EXPECT_STREQ("ISAC", send_codec_spec.codec_inst.plname); | 1993 EXPECT_STRCASEEQ("ISAC", send_codec_spec.format.name.c_str()); |
2386 EXPECT_EQ(send_codec_spec.codec_inst.plfreq, send_codec_spec.cng_plfreq); | 1994 EXPECT_EQ(1, send_codec_spec.format.num_channels); |
2387 EXPECT_EQ(1, send_codec_spec.codec_inst.channels); | |
2388 EXPECT_EQ(97, send_codec_spec.cng_payload_type); | 1995 EXPECT_EQ(97, send_codec_spec.cng_payload_type); |
2389 EXPECT_EQ(webrtc::kFreq16000Hz, send_codec_spec.cng_plfreq); | |
2390 } | 1996 } |
2391 | 1997 |
2392 // Change to PCMU(8K) and CN(16K). | 1998 // Change to PCMU(8K) and CN(16K). |
2393 parameters.codecs[0] = kPcmuCodec; | 1999 parameters.codecs[0] = kPcmuCodec; |
2394 SetSendParameters(parameters); | 2000 SetSendParameters(parameters); |
2395 for (uint32_t ssrc : kSsrcs4) { | 2001 for (uint32_t ssrc : kSsrcs4) { |
2396 ASSERT_TRUE(call_.GetAudioSendStream(ssrc) != nullptr); | 2002 ASSERT_TRUE(call_.GetAudioSendStream(ssrc) != nullptr); |
2397 const auto& send_codec_spec = | 2003 const auto& send_codec_spec = |
2398 call_.GetAudioSendStream(ssrc)->GetConfig().send_codec_spec; | 2004 *call_.GetAudioSendStream(ssrc)->GetConfig().send_codec_spec; |
2399 EXPECT_STREQ("PCMU", send_codec_spec.codec_inst.plname); | 2005 EXPECT_STRCASEEQ("PCMU", send_codec_spec.format.name.c_str()); |
2400 EXPECT_EQ(-1, send_codec_spec.cng_payload_type); | 2006 EXPECT_EQ(rtc::Optional<int>(), send_codec_spec.cng_payload_type); |
2401 } | 2007 } |
2402 } | 2008 } |
2403 | 2009 |
2404 // Test we can SetSend on all send streams correctly. | 2010 // Test we can SetSend on all send streams correctly. |
2405 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { | 2011 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { |
2406 SetupForMultiSendStream(); | 2012 SetupForMultiSendStream(); |
2407 | 2013 |
2408 // Create the send channels and they should be a "not sending" date. | 2014 // Create the send channels and they should be a "not sending" date. |
2409 for (uint32_t ssrc : kSsrcs4) { | 2015 for (uint32_t ssrc : kSsrcs4) { |
2410 EXPECT_TRUE(channel_->AddSendStream( | 2016 EXPECT_TRUE(channel_->AddSendStream( |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2586 } | 2192 } |
2587 | 2193 |
2588 TEST_F(WebRtcVoiceEngineTestFake, AudioSendResetAudioNetworkAdaptor) { | 2194 TEST_F(WebRtcVoiceEngineTestFake, AudioSendResetAudioNetworkAdaptor) { |
2589 EXPECT_TRUE(SetupSendStream()); | 2195 EXPECT_TRUE(SetupSendStream()); |
2590 send_parameters_.options.audio_network_adaptor = rtc::Optional<bool>(true); | 2196 send_parameters_.options.audio_network_adaptor = rtc::Optional<bool>(true); |
2591 send_parameters_.options.audio_network_adaptor_config = | 2197 send_parameters_.options.audio_network_adaptor_config = |
2592 rtc::Optional<std::string>("1234"); | 2198 rtc::Optional<std::string>("1234"); |
2593 SetSendParameters(send_parameters_); | 2199 SetSendParameters(send_parameters_); |
2594 EXPECT_EQ(send_parameters_.options.audio_network_adaptor_config, | 2200 EXPECT_EQ(send_parameters_.options.audio_network_adaptor_config, |
2595 GetAudioNetworkAdaptorConfig(kSsrcX)); | 2201 GetAudioNetworkAdaptorConfig(kSsrcX)); |
2596 const int initial_num = call_.GetNumCreatedSendStreams(); | |
2597 cricket::AudioOptions options; | 2202 cricket::AudioOptions options; |
2598 options.audio_network_adaptor = rtc::Optional<bool>(false); | 2203 options.audio_network_adaptor = rtc::Optional<bool>(false); |
2599 SetAudioSend(kSsrcX, true, nullptr, &options); | 2204 SetAudioSend(kSsrcX, true, nullptr, &options); |
2600 // AudioSendStream expected to be recreated. | |
2601 EXPECT_EQ(initial_num + 1, call_.GetNumCreatedSendStreams()); | |
2602 EXPECT_EQ(rtc::Optional<std::string>(), GetAudioNetworkAdaptorConfig(kSsrcX)); | 2205 EXPECT_EQ(rtc::Optional<std::string>(), GetAudioNetworkAdaptorConfig(kSsrcX)); |
2603 } | 2206 } |
2604 | 2207 |
2605 TEST_F(WebRtcVoiceEngineTestFake, AudioNetworkAdaptorNotGetOverridden) { | 2208 TEST_F(WebRtcVoiceEngineTestFake, AudioNetworkAdaptorNotGetOverridden) { |
2606 EXPECT_TRUE(SetupSendStream()); | 2209 EXPECT_TRUE(SetupSendStream()); |
2607 send_parameters_.options.audio_network_adaptor = rtc::Optional<bool>(true); | 2210 send_parameters_.options.audio_network_adaptor = rtc::Optional<bool>(true); |
2608 send_parameters_.options.audio_network_adaptor_config = | 2211 send_parameters_.options.audio_network_adaptor_config = |
2609 rtc::Optional<std::string>("1234"); | 2212 rtc::Optional<std::string>("1234"); |
2610 SetSendParameters(send_parameters_); | 2213 SetSendParameters(send_parameters_); |
2611 EXPECT_EQ(send_parameters_.options.audio_network_adaptor_config, | 2214 EXPECT_EQ(send_parameters_.options.audio_network_adaptor_config, |
(...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3664 webrtc::RtcEventLogNullImpl event_log; | 3267 webrtc::RtcEventLogNullImpl event_log; |
3665 std::unique_ptr<webrtc::Call> call( | 3268 std::unique_ptr<webrtc::Call> call( |
3666 webrtc::Call::Create(webrtc::Call::Config(&event_log))); | 3269 webrtc::Call::Create(webrtc::Call::Config(&event_log))); |
3667 cricket::VoiceMediaChannel* channel = engine.CreateChannel( | 3270 cricket::VoiceMediaChannel* channel = engine.CreateChannel( |
3668 call.get(), cricket::MediaConfig(), cricket::AudioOptions()); | 3271 call.get(), cricket::MediaConfig(), cricket::AudioOptions()); |
3669 EXPECT_TRUE(channel != nullptr); | 3272 EXPECT_TRUE(channel != nullptr); |
3670 delete channel; | 3273 delete channel; |
3671 } | 3274 } |
3672 } | 3275 } |
3673 | 3276 |
3674 // Tests that the library is configured with the codecs we want. | 3277 // Verify the payload id of common audio codecs, including CN, ISAC, and G722. |
ossu
2017/04/25 11:58:11
Generally tests ToCodecInst, which no longer exist
| |
3675 TEST(WebRtcVoiceEngineTest, HasCorrectCodecs) { | 3278 TEST(WebRtcVoiceEngineTest, HasCorrectPayloadTypeMapping) { |
3676 // TODO(ossu): These tests should move into a future "builtin audio codecs" | |
3677 // module. | |
3678 | |
3679 // Check codecs by name. | |
3680 #ifdef WEBRTC_CODEC_OPUS | |
3681 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3682 cricket::AudioCodec(96, "OPUS", 48000, 0, 2), nullptr)); | |
3683 #endif | |
3684 #if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) | |
3685 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3686 cricket::AudioCodec(96, "ISAC", 16000, 0, 1), nullptr)); | |
3687 #endif | |
3688 #if (defined(WEBRTC_CODEC_ISAC)) | |
3689 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3690 cricket::AudioCodec(96, "ISAC", 32000, 0, 1), nullptr)); | |
3691 #endif | |
3692 #ifdef WEBRTC_CODEC_ILBC | |
3693 // Check that name matching is case-insensitive. | |
3694 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3695 cricket::AudioCodec(96, "ILBC", 8000, 0, 1), nullptr)); | |
3696 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3697 cricket::AudioCodec(96, "iLBC", 8000, 0, 1), nullptr)); | |
3698 #endif | |
3699 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3700 cricket::AudioCodec(96, "CN", 32000, 0, 1), nullptr)); | |
3701 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3702 cricket::AudioCodec(96, "CN", 16000, 0, 1), nullptr)); | |
3703 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3704 cricket::AudioCodec(96, "telephone-event", 8000, 0, 1), nullptr)); | |
3705 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3706 cricket::AudioCodec(96, "telephone-event", 16000, 0, 1), nullptr)); | |
3707 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3708 cricket::AudioCodec(96, "telephone-event", 32000, 0, 1), nullptr)); | |
3709 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3710 cricket::AudioCodec(96, "telephone-event", 48000, 0, 1), nullptr)); | |
3711 // Check codecs with an id by id. | |
3712 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3713 cricket::AudioCodec(0, "", 8000, 0, 1), nullptr)); // PCMU | |
3714 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3715 cricket::AudioCodec(8, "", 8000, 0, 1), nullptr)); // PCMA | |
3716 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3717 cricket::AudioCodec(9, "", 8000, 0, 1), nullptr)); // G722 | |
3718 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3719 cricket::AudioCodec(13, "", 8000, 0, 1), nullptr)); // CN | |
3720 // Check sample/bitrate matching. | |
3721 EXPECT_TRUE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3722 cricket::AudioCodec(0, "PCMU", 8000, 64000, 1), nullptr)); | |
3723 // Check that bad codecs fail. | |
3724 EXPECT_FALSE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3725 cricket::AudioCodec(99, "ABCD", 0, 0, 1), nullptr)); | |
3726 EXPECT_FALSE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3727 cricket::AudioCodec(88, "", 0, 0, 1), nullptr)); | |
3728 EXPECT_FALSE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3729 cricket::AudioCodec(0, "", 0, 0, 2), nullptr)); | |
3730 EXPECT_FALSE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3731 cricket::AudioCodec(0, "", 5000, 0, 1), nullptr)); | |
3732 EXPECT_FALSE(cricket::WebRtcVoiceEngine::ToCodecInst( | |
3733 cricket::AudioCodec(0, "", 0, 5000, 1), nullptr)); | |
3734 | |
3735 // Verify the payload id of common audio codecs, including CN, ISAC, and G722. | |
3736 // TODO(ossu): Why are the payload types of codecs with non-static payload | 3279 // TODO(ossu): Why are the payload types of codecs with non-static payload |
3737 // type assignments checked here? It shouldn't really matter. | 3280 // type assignments checked here? It shouldn't really matter. |
3738 cricket::WebRtcVoiceEngine engine( | 3281 cricket::WebRtcVoiceEngine engine( |
3739 nullptr, webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr); | 3282 nullptr, webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr); |
3740 for (const cricket::AudioCodec& codec : engine.send_codecs()) { | 3283 for (const cricket::AudioCodec& codec : engine.send_codecs()) { |
3741 if (codec.name == "CN" && codec.clockrate == 16000) { | 3284 auto is_codec = [&codec](const char* name, int clockrate = 0) { |
3285 return STR_CASE_CMP(codec.name.c_str(), name) == 0 && | |
3286 (clockrate == 0 || codec.clockrate == clockrate); | |
3287 }; | |
3288 if (is_codec("CN", 16000)) { | |
3742 EXPECT_EQ(105, codec.id); | 3289 EXPECT_EQ(105, codec.id); |
3743 } else if (codec.name == "CN" && codec.clockrate == 32000) { | 3290 } else if (is_codec("CN", 32000)) { |
3744 EXPECT_EQ(106, codec.id); | 3291 EXPECT_EQ(106, codec.id); |
3745 } else if (codec.name == "ISAC" && codec.clockrate == 16000) { | 3292 } else if (is_codec("ISAC", 16000)) { |
3746 EXPECT_EQ(103, codec.id); | 3293 EXPECT_EQ(103, codec.id); |
3747 } else if (codec.name == "ISAC" && codec.clockrate == 32000) { | 3294 } else if (is_codec("ISAC", 32000)) { |
3748 EXPECT_EQ(104, codec.id); | 3295 EXPECT_EQ(104, codec.id); |
3749 } else if (codec.name == "G722" && codec.clockrate == 8000) { | 3296 } else if (is_codec("G722", 8000)) { |
3750 EXPECT_EQ(9, codec.id); | 3297 EXPECT_EQ(9, codec.id); |
3751 } else if (codec.name == "telephone-event" && codec.clockrate == 8000) { | 3298 } else if (is_codec("telephone-event", 8000)) { |
3752 EXPECT_EQ(126, codec.id); | 3299 EXPECT_EQ(126, codec.id); |
3753 // TODO(solenberg): 16k, 32k, 48k DTMF should be dynamically assigned. | 3300 // TODO(solenberg): 16k, 32k, 48k DTMF should be dynamically assigned. |
3754 // Remove these checks once both send and receive side assigns payload types | 3301 // Remove these checks once both send and receive side assigns payload types |
3755 // dynamically. | 3302 // dynamically. |
3756 } else if (codec.name == "telephone-event" && codec.clockrate == 16000) { | 3303 } else if (is_codec("telephone-event", 16000)) { |
3757 EXPECT_EQ(113, codec.id); | 3304 EXPECT_EQ(113, codec.id); |
3758 } else if (codec.name == "telephone-event" && codec.clockrate == 32000) { | 3305 } else if (is_codec("telephone-event", 32000)) { |
3759 EXPECT_EQ(112, codec.id); | 3306 EXPECT_EQ(112, codec.id); |
3760 } else if (codec.name == "telephone-event" && codec.clockrate == 48000) { | 3307 } else if (is_codec("telephone-event", 48000)) { |
3761 EXPECT_EQ(110, codec.id); | 3308 EXPECT_EQ(110, codec.id); |
3762 } else if (codec.name == "opus") { | 3309 } else if (is_codec("opus")) { |
3763 EXPECT_EQ(111, codec.id); | 3310 EXPECT_EQ(111, codec.id); |
3764 ASSERT_TRUE(codec.params.find("minptime") != codec.params.end()); | 3311 ASSERT_TRUE(codec.params.find("minptime") != codec.params.end()); |
3765 EXPECT_EQ("10", codec.params.find("minptime")->second); | 3312 EXPECT_EQ("10", codec.params.find("minptime")->second); |
3766 ASSERT_TRUE(codec.params.find("useinbandfec") != codec.params.end()); | 3313 ASSERT_TRUE(codec.params.find("useinbandfec") != codec.params.end()); |
3767 EXPECT_EQ("1", codec.params.find("useinbandfec")->second); | 3314 EXPECT_EQ("1", codec.params.find("useinbandfec")->second); |
3768 } | 3315 } |
3769 } | 3316 } |
3770 } | 3317 } |
3771 | 3318 |
3772 // Tests that VoE supports at least 32 channels | 3319 // Tests that VoE supports at least 32 channels |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3881 // Without this cast, the comparison turned unsigned and, thus, failed for -1. | 3428 // Without this cast, the comparison turned unsigned and, thus, failed for -1. |
3882 const int num_specs = static_cast<int>(specs.size()); | 3429 const int num_specs = static_cast<int>(specs.size()); |
3883 EXPECT_GE(find_codec({"cn", 8000, 1}), num_specs); | 3430 EXPECT_GE(find_codec({"cn", 8000, 1}), num_specs); |
3884 EXPECT_GE(find_codec({"cn", 16000, 1}), num_specs); | 3431 EXPECT_GE(find_codec({"cn", 16000, 1}), num_specs); |
3885 EXPECT_EQ(find_codec({"cn", 32000, 1}), -1); | 3432 EXPECT_EQ(find_codec({"cn", 32000, 1}), -1); |
3886 EXPECT_GE(find_codec({"telephone-event", 8000, 1}), num_specs); | 3433 EXPECT_GE(find_codec({"telephone-event", 8000, 1}), num_specs); |
3887 EXPECT_GE(find_codec({"telephone-event", 16000, 1}), num_specs); | 3434 EXPECT_GE(find_codec({"telephone-event", 16000, 1}), num_specs); |
3888 EXPECT_GE(find_codec({"telephone-event", 32000, 1}), num_specs); | 3435 EXPECT_GE(find_codec({"telephone-event", 32000, 1}), num_specs); |
3889 EXPECT_GE(find_codec({"telephone-event", 48000, 1}), num_specs); | 3436 EXPECT_GE(find_codec({"telephone-event", 48000, 1}), num_specs); |
3890 } | 3437 } |
OLD | NEW |