| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 using cricket::CryptoParamsVec; | 52 using cricket::CryptoParamsVec; |
| 53 using cricket::AudioContentDescription; | 53 using cricket::AudioContentDescription; |
| 54 using cricket::VideoContentDescription; | 54 using cricket::VideoContentDescription; |
| 55 using cricket::DataContentDescription; | 55 using cricket::DataContentDescription; |
| 56 using cricket::GetFirstAudioContent; | 56 using cricket::GetFirstAudioContent; |
| 57 using cricket::GetFirstVideoContent; | 57 using cricket::GetFirstVideoContent; |
| 58 using cricket::GetFirstDataContent; | 58 using cricket::GetFirstDataContent; |
| 59 using cricket::GetFirstAudioContentDescription; | 59 using cricket::GetFirstAudioContentDescription; |
| 60 using cricket::GetFirstVideoContentDescription; | 60 using cricket::GetFirstVideoContentDescription; |
| 61 using cricket::GetFirstDataContentDescription; | 61 using cricket::GetFirstDataContentDescription; |
| 62 using cricket::kAutoBandwidth; | |
| 63 using cricket::AudioCodec; | 62 using cricket::AudioCodec; |
| 64 using cricket::VideoCodec; | 63 using cricket::VideoCodec; |
| 65 using cricket::DataCodec; | 64 using cricket::DataCodec; |
| 66 using cricket::NS_JINGLE_RTP; | 65 using cricket::NS_JINGLE_RTP; |
| 67 using cricket::MEDIA_TYPE_AUDIO; | 66 using cricket::MEDIA_TYPE_AUDIO; |
| 68 using cricket::MEDIA_TYPE_VIDEO; | 67 using cricket::MEDIA_TYPE_VIDEO; |
| 69 using cricket::MEDIA_TYPE_DATA; | 68 using cricket::MEDIA_TYPE_DATA; |
| 70 using cricket::RtpHeaderExtension; | 69 using cricket::RtpHeaderExtension; |
| 71 using cricket::SEC_DISABLED; | 70 using cricket::SEC_DISABLED; |
| 72 using cricket::SEC_ENABLED; | 71 using cricket::SEC_ENABLED; |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 const ContentInfo* ac = offer->GetContentByName("audio"); | 469 const ContentInfo* ac = offer->GetContentByName("audio"); |
| 471 const ContentInfo* vc = offer->GetContentByName("video"); | 470 const ContentInfo* vc = offer->GetContentByName("video"); |
| 472 ASSERT_TRUE(ac != NULL); | 471 ASSERT_TRUE(ac != NULL); |
| 473 ASSERT_TRUE(vc == NULL); | 472 ASSERT_TRUE(vc == NULL); |
| 474 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); | 473 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); |
| 475 const AudioContentDescription* acd = | 474 const AudioContentDescription* acd = |
| 476 static_cast<const AudioContentDescription*>(ac->description); | 475 static_cast<const AudioContentDescription*>(ac->description); |
| 477 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); | 476 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); |
| 478 EXPECT_EQ(f1_.audio_codecs(), acd->codecs()); | 477 EXPECT_EQ(f1_.audio_codecs(), acd->codecs()); |
| 479 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc | 478 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc |
| 480 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto) | 479 EXPECT_EQ(rtc::Optional<int>(), |
| 480 acd->bandwidth()); // default bandwidth (auto) |
| 481 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on | 481 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on |
| 482 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); | 482 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); |
| 483 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); | 483 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); |
| 484 } | 484 } |
| 485 | 485 |
| 486 // Create a typical video offer, and ensure it matches what we expect. | 486 // Create a typical video offer, and ensure it matches what we expect. |
| 487 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateVideoOffer) { | 487 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateVideoOffer) { |
| 488 MediaSessionOptions opts; | 488 MediaSessionOptions opts; |
| 489 opts.recv_video = true; | 489 opts.recv_video = true; |
| 490 f1_.set_secure(SEC_ENABLED); | 490 f1_.set_secure(SEC_ENABLED); |
| 491 std::unique_ptr<SessionDescription> offer(f1_.CreateOffer(opts, NULL)); | 491 std::unique_ptr<SessionDescription> offer(f1_.CreateOffer(opts, NULL)); |
| 492 ASSERT_TRUE(offer.get() != NULL); | 492 ASSERT_TRUE(offer.get() != NULL); |
| 493 const ContentInfo* ac = offer->GetContentByName("audio"); | 493 const ContentInfo* ac = offer->GetContentByName("audio"); |
| 494 const ContentInfo* vc = offer->GetContentByName("video"); | 494 const ContentInfo* vc = offer->GetContentByName("video"); |
| 495 ASSERT_TRUE(ac != NULL); | 495 ASSERT_TRUE(ac != NULL); |
| 496 ASSERT_TRUE(vc != NULL); | 496 ASSERT_TRUE(vc != NULL); |
| 497 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); | 497 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); |
| 498 EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type); | 498 EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type); |
| 499 const AudioContentDescription* acd = | 499 const AudioContentDescription* acd = |
| 500 static_cast<const AudioContentDescription*>(ac->description); | 500 static_cast<const AudioContentDescription*>(ac->description); |
| 501 const VideoContentDescription* vcd = | 501 const VideoContentDescription* vcd = |
| 502 static_cast<const VideoContentDescription*>(vc->description); | 502 static_cast<const VideoContentDescription*>(vc->description); |
| 503 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); | 503 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); |
| 504 EXPECT_EQ(f1_.audio_codecs(), acd->codecs()); | 504 EXPECT_EQ(f1_.audio_codecs(), acd->codecs()); |
| 505 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc | 505 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc |
| 506 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto) | 506 EXPECT_EQ(rtc::Optional<int>(), |
| 507 acd->bandwidth()); // default bandwidth (auto) |
| 507 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on | 508 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on |
| 508 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); | 509 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); |
| 509 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); | 510 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); |
| 510 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); | 511 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); |
| 511 EXPECT_EQ(f1_.video_codecs(), vcd->codecs()); | 512 EXPECT_EQ(f1_.video_codecs(), vcd->codecs()); |
| 512 EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc | 513 EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc |
| 513 EXPECT_EQ(kAutoBandwidth, vcd->bandwidth()); // default bandwidth (auto) | 514 EXPECT_EQ(rtc::Optional<int>(), |
| 515 vcd->bandwidth()); // default bandwidth (auto) |
| 514 EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on | 516 EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on |
| 515 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 517 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 516 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol()); | 518 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol()); |
| 517 } | 519 } |
| 518 | 520 |
| 519 // Test creating an offer with bundle where the Codecs have the same dynamic | 521 // Test creating an offer with bundle where the Codecs have the same dynamic |
| 520 // RTP playlod type. The test verifies that the offer don't contain the | 522 // RTP playlod type. The test verifies that the offer don't contain the |
| 521 // duplicate RTP payload types. | 523 // duplicate RTP payload types. |
| 522 TEST_F(MediaSessionDescriptionFactoryTest, TestBundleOfferWithSameCodecPlType) { | 524 TEST_F(MediaSessionDescriptionFactoryTest, TestBundleOfferWithSameCodecPlType) { |
| 523 const VideoCodec& offered_video_codec = f2_.video_codecs()[0]; | 525 const VideoCodec& offered_video_codec = f2_.video_codecs()[0]; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 ASSERT_TRUE(dc != NULL); | 605 ASSERT_TRUE(dc != NULL); |
| 604 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); | 606 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); |
| 605 EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type); | 607 EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type); |
| 606 const AudioContentDescription* acd = | 608 const AudioContentDescription* acd = |
| 607 static_cast<const AudioContentDescription*>(ac->description); | 609 static_cast<const AudioContentDescription*>(ac->description); |
| 608 const DataContentDescription* dcd = | 610 const DataContentDescription* dcd = |
| 609 static_cast<const DataContentDescription*>(dc->description); | 611 static_cast<const DataContentDescription*>(dc->description); |
| 610 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); | 612 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); |
| 611 EXPECT_EQ(f1_.audio_codecs(), acd->codecs()); | 613 EXPECT_EQ(f1_.audio_codecs(), acd->codecs()); |
| 612 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc | 614 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc |
| 613 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto) | 615 EXPECT_EQ(rtc::Optional<int>(), |
| 616 acd->bandwidth()); // default bandwidth (auto) |
| 614 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on | 617 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on |
| 615 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); | 618 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); |
| 616 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); | 619 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); |
| 617 EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type()); | 620 EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type()); |
| 618 EXPECT_EQ(f1_.data_codecs(), dcd->codecs()); | 621 EXPECT_EQ(f1_.data_codecs(), dcd->codecs()); |
| 619 EXPECT_NE(0U, dcd->first_ssrc()); // a random nonzero ssrc | 622 EXPECT_NE(0U, dcd->first_ssrc()); // a random nonzero ssrc |
| 623 EXPECT_TRUE(dcd->bandwidth()); |
| 620 EXPECT_EQ(cricket::kDataMaxBandwidth, | 624 EXPECT_EQ(cricket::kDataMaxBandwidth, |
| 621 dcd->bandwidth()); // default bandwidth (auto) | 625 *dcd->bandwidth()); // default bandwidth (auto) |
| 622 EXPECT_TRUE(dcd->rtcp_mux()); // rtcp-mux defaults on | 626 EXPECT_TRUE(dcd->rtcp_mux()); // rtcp-mux defaults on |
| 623 ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 627 ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 624 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), dcd->protocol()); | 628 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), dcd->protocol()); |
| 625 } | 629 } |
| 626 | 630 |
| 627 // Create an SCTP data offer with bundle without error. | 631 // Create an SCTP data offer with bundle without error. |
| 628 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateSctpDataOffer) { | 632 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateSctpDataOffer) { |
| 629 MediaSessionOptions opts; | 633 MediaSessionOptions opts; |
| 630 opts.recv_audio = false; | 634 opts.recv_audio = false; |
| 631 opts.bundle_enabled = true; | 635 opts.bundle_enabled = true; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 753 f2_.CreateAnswer(offer.get(), MediaSessionOptions(), NULL)); | 757 f2_.CreateAnswer(offer.get(), MediaSessionOptions(), NULL)); |
| 754 const ContentInfo* ac = answer->GetContentByName("audio"); | 758 const ContentInfo* ac = answer->GetContentByName("audio"); |
| 755 const ContentInfo* vc = answer->GetContentByName("video"); | 759 const ContentInfo* vc = answer->GetContentByName("video"); |
| 756 ASSERT_TRUE(ac != NULL); | 760 ASSERT_TRUE(ac != NULL); |
| 757 ASSERT_TRUE(vc == NULL); | 761 ASSERT_TRUE(vc == NULL); |
| 758 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); | 762 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); |
| 759 const AudioContentDescription* acd = | 763 const AudioContentDescription* acd = |
| 760 static_cast<const AudioContentDescription*>(ac->description); | 764 static_cast<const AudioContentDescription*>(ac->description); |
| 761 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); | 765 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); |
| 762 EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs()); | 766 EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs()); |
| 763 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc | 767 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc |
| 764 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // negotiated auto bw | 768 EXPECT_EQ(rtc::Optional<int>(), acd->bandwidth()); // negotiated auto bw |
| 765 EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux | 769 EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux |
| 766 ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32); | 770 ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32); |
| 767 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); | 771 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), acd->protocol()); |
| 768 } | 772 } |
| 769 | 773 |
| 770 // Create a typical video answer, and ensure it matches what we expect. | 774 // Create a typical video answer, and ensure it matches what we expect. |
| 771 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateVideoAnswer) { | 775 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateVideoAnswer) { |
| 772 MediaSessionOptions opts; | 776 MediaSessionOptions opts; |
| 773 opts.recv_video = true; | 777 opts.recv_video = true; |
| 774 f1_.set_secure(SEC_ENABLED); | 778 f1_.set_secure(SEC_ENABLED); |
| 775 f2_.set_secure(SEC_ENABLED); | 779 f2_.set_secure(SEC_ENABLED); |
| 776 std::unique_ptr<SessionDescription> offer(f1_.CreateOffer(opts, NULL)); | 780 std::unique_ptr<SessionDescription> offer(f1_.CreateOffer(opts, NULL)); |
| 777 ASSERT_TRUE(offer.get() != NULL); | 781 ASSERT_TRUE(offer.get() != NULL); |
| 778 std::unique_ptr<SessionDescription> answer( | 782 std::unique_ptr<SessionDescription> answer( |
| 779 f2_.CreateAnswer(offer.get(), opts, NULL)); | 783 f2_.CreateAnswer(offer.get(), opts, NULL)); |
| 780 const ContentInfo* ac = answer->GetContentByName("audio"); | 784 const ContentInfo* ac = answer->GetContentByName("audio"); |
| 781 const ContentInfo* vc = answer->GetContentByName("video"); | 785 const ContentInfo* vc = answer->GetContentByName("video"); |
| 782 ASSERT_TRUE(ac != NULL); | 786 ASSERT_TRUE(ac != NULL); |
| 783 ASSERT_TRUE(vc != NULL); | 787 ASSERT_TRUE(vc != NULL); |
| 784 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); | 788 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); |
| 785 EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type); | 789 EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type); |
| 786 const AudioContentDescription* acd = | 790 const AudioContentDescription* acd = |
| 787 static_cast<const AudioContentDescription*>(ac->description); | 791 static_cast<const AudioContentDescription*>(ac->description); |
| 788 const VideoContentDescription* vcd = | 792 const VideoContentDescription* vcd = |
| 789 static_cast<const VideoContentDescription*>(vc->description); | 793 static_cast<const VideoContentDescription*>(vc->description); |
| 790 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); | 794 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); |
| 791 EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs()); | 795 EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs()); |
| 792 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // negotiated auto bw | 796 EXPECT_EQ(rtc::Optional<int>(), acd->bandwidth()); // negotiated auto bw |
| 793 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc | 797 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc |
| 794 EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux | 798 EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux |
| 795 ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32); | 799 ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32); |
| 796 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); | 800 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); |
| 797 EXPECT_EQ(MAKE_VECTOR(kVideoCodecsAnswer), vcd->codecs()); | 801 EXPECT_EQ(MAKE_VECTOR(kVideoCodecsAnswer), vcd->codecs()); |
| 798 EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc | 802 EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc |
| 799 EXPECT_TRUE(vcd->rtcp_mux()); // negotiated rtcp-mux | 803 EXPECT_TRUE(vcd->rtcp_mux()); // negotiated rtcp-mux |
| 800 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 804 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 801 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol()); | 805 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol()); |
| 802 } | 806 } |
| 803 | 807 |
| 804 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswer) { | 808 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateDataAnswer) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 815 ASSERT_TRUE(ac != NULL); | 819 ASSERT_TRUE(ac != NULL); |
| 816 ASSERT_TRUE(vc != NULL); | 820 ASSERT_TRUE(vc != NULL); |
| 817 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); | 821 EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type); |
| 818 EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type); | 822 EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type); |
| 819 const AudioContentDescription* acd = | 823 const AudioContentDescription* acd = |
| 820 static_cast<const AudioContentDescription*>(ac->description); | 824 static_cast<const AudioContentDescription*>(ac->description); |
| 821 const DataContentDescription* vcd = | 825 const DataContentDescription* vcd = |
| 822 static_cast<const DataContentDescription*>(vc->description); | 826 static_cast<const DataContentDescription*>(vc->description); |
| 823 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); | 827 EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type()); |
| 824 EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs()); | 828 EXPECT_EQ(MAKE_VECTOR(kAudioCodecsAnswer), acd->codecs()); |
| 825 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // negotiated auto bw | 829 EXPECT_EQ(rtc::Optional<int>(), acd->bandwidth()); // negotiated auto bw |
| 826 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc | 830 EXPECT_NE(0U, acd->first_ssrc()); // a random nonzero ssrc |
| 827 EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux | 831 EXPECT_TRUE(acd->rtcp_mux()); // negotiated rtcp-mux |
| 828 ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32); | 832 ASSERT_CRYPTO(acd, 1U, CS_AES_CM_128_HMAC_SHA1_32); |
| 829 EXPECT_EQ(MEDIA_TYPE_DATA, vcd->type()); | 833 EXPECT_EQ(MEDIA_TYPE_DATA, vcd->type()); |
| 830 EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), vcd->codecs()); | 834 EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), vcd->codecs()); |
| 831 EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc | 835 EXPECT_NE(0U, vcd->first_ssrc()); // a random nonzero ssrc |
| 832 EXPECT_TRUE(vcd->rtcp_mux()); // negotiated rtcp-mux | 836 EXPECT_TRUE(vcd->rtcp_mux()); // negotiated rtcp-mux |
| 833 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 837 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 834 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol()); | 838 EXPECT_EQ(std::string(cricket::kMediaProtocolSavpf), vcd->protocol()); |
| 835 } | 839 } |
| 836 | 840 |
| 837 // Verifies that the order of the media contents in the offer is preserved in | 841 // Verifies that the order of the media contents in the offer is preserved in |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1225 const StreamParamsVec& audio_streams = acd->streams(); | 1229 const StreamParamsVec& audio_streams = acd->streams(); |
| 1226 ASSERT_EQ(2U, audio_streams.size()); | 1230 ASSERT_EQ(2U, audio_streams.size()); |
| 1227 EXPECT_EQ(audio_streams[0].cname , audio_streams[1].cname); | 1231 EXPECT_EQ(audio_streams[0].cname , audio_streams[1].cname); |
| 1228 EXPECT_EQ(kAudioTrack1, audio_streams[0].id); | 1232 EXPECT_EQ(kAudioTrack1, audio_streams[0].id); |
| 1229 ASSERT_EQ(1U, audio_streams[0].ssrcs.size()); | 1233 ASSERT_EQ(1U, audio_streams[0].ssrcs.size()); |
| 1230 EXPECT_NE(0U, audio_streams[0].ssrcs[0]); | 1234 EXPECT_NE(0U, audio_streams[0].ssrcs[0]); |
| 1231 EXPECT_EQ(kAudioTrack2, audio_streams[1].id); | 1235 EXPECT_EQ(kAudioTrack2, audio_streams[1].id); |
| 1232 ASSERT_EQ(1U, audio_streams[1].ssrcs.size()); | 1236 ASSERT_EQ(1U, audio_streams[1].ssrcs.size()); |
| 1233 EXPECT_NE(0U, audio_streams[1].ssrcs[0]); | 1237 EXPECT_NE(0U, audio_streams[1].ssrcs[0]); |
| 1234 | 1238 |
| 1235 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto) | 1239 EXPECT_EQ(rtc::Optional<int>(), |
| 1240 acd->bandwidth()); // default bandwidth (auto) |
| 1236 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on | 1241 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on |
| 1237 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); | 1242 ASSERT_CRYPTO(acd, 2U, CS_AES_CM_128_HMAC_SHA1_32); |
| 1238 | 1243 |
| 1239 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); | 1244 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); |
| 1240 EXPECT_EQ(f1_.video_codecs(), vcd->codecs()); | 1245 EXPECT_EQ(f1_.video_codecs(), vcd->codecs()); |
| 1241 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 1246 ASSERT_CRYPTO(vcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 1242 | 1247 |
| 1243 const StreamParamsVec& video_streams = vcd->streams(); | 1248 const StreamParamsVec& video_streams = vcd->streams(); |
| 1244 ASSERT_EQ(1U, video_streams.size()); | 1249 ASSERT_EQ(1U, video_streams.size()); |
| 1245 EXPECT_EQ(video_streams[0].cname, audio_streams[0].cname); | 1250 EXPECT_EQ(video_streams[0].cname, audio_streams[0].cname); |
| 1246 EXPECT_EQ(kVideoTrack1, video_streams[0].id); | 1251 EXPECT_EQ(kVideoTrack1, video_streams[0].id); |
| 1247 EXPECT_EQ(kAutoBandwidth, vcd->bandwidth()); // default bandwidth (auto) | 1252 EXPECT_EQ(rtc::Optional<int>(), |
| 1253 vcd->bandwidth()); // default bandwidth (auto) |
| 1248 EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on | 1254 EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on |
| 1249 | 1255 |
| 1250 EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type()); | 1256 EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type()); |
| 1251 EXPECT_EQ(f1_.data_codecs(), dcd->codecs()); | 1257 EXPECT_EQ(f1_.data_codecs(), dcd->codecs()); |
| 1252 ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 1258 ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 1253 | 1259 |
| 1254 const StreamParamsVec& data_streams = dcd->streams(); | 1260 const StreamParamsVec& data_streams = dcd->streams(); |
| 1255 ASSERT_EQ(2U, data_streams.size()); | 1261 ASSERT_EQ(2U, data_streams.size()); |
| 1256 EXPECT_EQ(data_streams[0].cname , data_streams[1].cname); | 1262 EXPECT_EQ(data_streams[0].cname , data_streams[1].cname); |
| 1257 EXPECT_EQ(kDataTrack1, data_streams[0].id); | 1263 EXPECT_EQ(kDataTrack1, data_streams[0].id); |
| 1258 ASSERT_EQ(1U, data_streams[0].ssrcs.size()); | 1264 ASSERT_EQ(1U, data_streams[0].ssrcs.size()); |
| 1259 EXPECT_NE(0U, data_streams[0].ssrcs[0]); | 1265 EXPECT_NE(0U, data_streams[0].ssrcs[0]); |
| 1260 EXPECT_EQ(kDataTrack2, data_streams[1].id); | 1266 EXPECT_EQ(kDataTrack2, data_streams[1].id); |
| 1261 ASSERT_EQ(1U, data_streams[1].ssrcs.size()); | 1267 ASSERT_EQ(1U, data_streams[1].ssrcs.size()); |
| 1262 EXPECT_NE(0U, data_streams[1].ssrcs[0]); | 1268 EXPECT_NE(0U, data_streams[1].ssrcs[0]); |
| 1263 | 1269 |
| 1270 EXPECT_TRUE(dcd->bandwidth()); |
| 1264 EXPECT_EQ(cricket::kDataMaxBandwidth, | 1271 EXPECT_EQ(cricket::kDataMaxBandwidth, |
| 1265 dcd->bandwidth()); // default bandwidth (auto) | 1272 *dcd->bandwidth()); // default bandwidth (auto) |
| 1266 EXPECT_TRUE(dcd->rtcp_mux()); // rtcp-mux defaults on | 1273 EXPECT_TRUE(dcd->rtcp_mux()); // rtcp-mux defaults on |
| 1267 ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); | 1274 ASSERT_CRYPTO(dcd, 1U, CS_AES_CM_128_HMAC_SHA1_80); |
| 1268 | 1275 |
| 1269 | 1276 |
| 1270 // Update the offer. Add a new video track that is not synched to the | 1277 // Update the offer. Add a new video track that is not synched to the |
| 1271 // other tracks and replace audio track 2 with audio track 3. | 1278 // other tracks and replace audio track 2 with audio track 3. |
| 1272 opts.AddSendStream(MEDIA_TYPE_VIDEO, kVideoTrack2, kMediaStream2); | 1279 opts.AddSendStream(MEDIA_TYPE_VIDEO, kVideoTrack2, kMediaStream2); |
| 1273 opts.RemoveSendStream(MEDIA_TYPE_AUDIO, kAudioTrack2); | 1280 opts.RemoveSendStream(MEDIA_TYPE_AUDIO, kAudioTrack2); |
| 1274 opts.AddSendStream(MEDIA_TYPE_AUDIO, kAudioTrack3, kMediaStream1); | 1281 opts.AddSendStream(MEDIA_TYPE_AUDIO, kAudioTrack3, kMediaStream1); |
| 1275 opts.RemoveSendStream(MEDIA_TYPE_DATA, kDataTrack2); | 1282 opts.RemoveSendStream(MEDIA_TYPE_DATA, kDataTrack2); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1397 const StreamParamsVec& audio_streams = acd->streams(); | 1404 const StreamParamsVec& audio_streams = acd->streams(); |
| 1398 ASSERT_EQ(2U, audio_streams.size()); | 1405 ASSERT_EQ(2U, audio_streams.size()); |
| 1399 EXPECT_TRUE(audio_streams[0].cname == audio_streams[1].cname); | 1406 EXPECT_TRUE(audio_streams[0].cname == audio_streams[1].cname); |
| 1400 EXPECT_EQ(kAudioTrack1, audio_streams[0].id); | 1407 EXPECT_EQ(kAudioTrack1, audio_streams[0].id); |
| 1401 ASSERT_EQ(1U, audio_streams[0].ssrcs.size()); | 1408 ASSERT_EQ(1U, audio_streams[0].ssrcs.size()); |
| 1402 EXPECT_NE(0U, audio_streams[0].ssrcs[0]); | 1409 EXPECT_NE(0U, audio_streams[0].ssrcs[0]); |
| 1403 EXPECT_EQ(kAudioTrack2, audio_streams[1].id); | 1410 EXPECT_EQ(kAudioTrack2, audio_streams[1].id); |
| 1404 ASSERT_EQ(1U, audio_streams[1].ssrcs.size()); | 1411 ASSERT_EQ(1U, audio_streams[1].ssrcs.size()); |
| 1405 EXPECT_NE(0U, audio_streams[1].ssrcs[0]); | 1412 EXPECT_NE(0U, audio_streams[1].ssrcs[0]); |
| 1406 | 1413 |
| 1407 EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto) | 1414 EXPECT_EQ(rtc::Optional<int>(), |
| 1415 acd->bandwidth()); // default bandwidth (auto) |
| 1408 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on | 1416 EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on |
| 1409 | 1417 |
| 1410 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); | 1418 EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type()); |
| 1411 EXPECT_EQ(MAKE_VECTOR(kVideoCodecsAnswer), vcd->codecs()); | 1419 EXPECT_EQ(MAKE_VECTOR(kVideoCodecsAnswer), vcd->codecs()); |
| 1412 | 1420 |
| 1413 const StreamParamsVec& video_streams = vcd->streams(); | 1421 const StreamParamsVec& video_streams = vcd->streams(); |
| 1414 ASSERT_EQ(1U, video_streams.size()); | 1422 ASSERT_EQ(1U, video_streams.size()); |
| 1415 EXPECT_EQ(video_streams[0].cname, audio_streams[0].cname); | 1423 EXPECT_EQ(video_streams[0].cname, audio_streams[0].cname); |
| 1416 EXPECT_EQ(kVideoTrack1, video_streams[0].id); | 1424 EXPECT_EQ(kVideoTrack1, video_streams[0].id); |
| 1417 EXPECT_EQ(kAutoBandwidth, vcd->bandwidth()); // default bandwidth (auto) | 1425 EXPECT_EQ(rtc::Optional<int>(), vcd->bandwidth()); // default bandwidth |
| 1418 EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on | 1426 EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on |
| 1419 | 1427 |
| 1420 EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type()); | 1428 EXPECT_EQ(MEDIA_TYPE_DATA, dcd->type()); |
| 1421 EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), dcd->codecs()); | 1429 EXPECT_EQ(MAKE_VECTOR(kDataCodecsAnswer), dcd->codecs()); |
| 1422 | 1430 |
| 1423 const StreamParamsVec& data_streams = dcd->streams(); | 1431 const StreamParamsVec& data_streams = dcd->streams(); |
| 1424 ASSERT_EQ(2U, data_streams.size()); | 1432 ASSERT_EQ(2U, data_streams.size()); |
| 1425 EXPECT_TRUE(data_streams[0].cname == data_streams[1].cname); | 1433 EXPECT_TRUE(data_streams[0].cname == data_streams[1].cname); |
| 1426 EXPECT_EQ(kDataTrack1, data_streams[0].id); | 1434 EXPECT_EQ(kDataTrack1, data_streams[0].id); |
| 1427 ASSERT_EQ(1U, data_streams[0].ssrcs.size()); | 1435 ASSERT_EQ(1U, data_streams[0].ssrcs.size()); |
| 1428 EXPECT_NE(0U, data_streams[0].ssrcs[0]); | 1436 EXPECT_NE(0U, data_streams[0].ssrcs[0]); |
| 1429 EXPECT_EQ(kDataTrack2, data_streams[1].id); | 1437 EXPECT_EQ(kDataTrack2, data_streams[1].id); |
| 1430 ASSERT_EQ(1U, data_streams[1].ssrcs.size()); | 1438 ASSERT_EQ(1U, data_streams[1].ssrcs.size()); |
| 1431 EXPECT_NE(0U, data_streams[1].ssrcs[0]); | 1439 EXPECT_NE(0U, data_streams[1].ssrcs[0]); |
| 1432 | 1440 |
| 1441 EXPECT_TRUE(dcd->bandwidth()); |
| 1433 EXPECT_EQ(cricket::kDataMaxBandwidth, | 1442 EXPECT_EQ(cricket::kDataMaxBandwidth, |
| 1434 dcd->bandwidth()); // default bandwidth (auto) | 1443 *dcd->bandwidth()); // default bandwidth (auto) |
| 1435 EXPECT_TRUE(dcd->rtcp_mux()); // rtcp-mux defaults on | 1444 EXPECT_TRUE(dcd->rtcp_mux()); // rtcp-mux defaults on |
| 1436 | 1445 |
| 1437 // Update the answer. Add a new video track that is not synched to the | 1446 // Update the answer. Add a new video track that is not synched to the |
| 1438 // other traacks and remove 1 audio track. | 1447 // other traacks and remove 1 audio track. |
| 1439 opts.AddSendStream(MEDIA_TYPE_VIDEO, kVideoTrack2, kMediaStream2); | 1448 opts.AddSendStream(MEDIA_TYPE_VIDEO, kVideoTrack2, kMediaStream2); |
| 1440 opts.RemoveSendStream(MEDIA_TYPE_AUDIO, kAudioTrack2); | 1449 opts.RemoveSendStream(MEDIA_TYPE_AUDIO, kAudioTrack2); |
| 1441 opts.RemoveSendStream(MEDIA_TYPE_DATA, kDataTrack2); | 1450 opts.RemoveSendStream(MEDIA_TYPE_DATA, kDataTrack2); |
| 1442 std::unique_ptr<SessionDescription> updated_answer( | 1451 std::unique_ptr<SessionDescription> updated_answer( |
| 1443 f2_.CreateAnswer(offer.get(), opts, answer.get())); | 1452 f2_.CreateAnswer(offer.get(), opts, answer.get())); |
| 1444 | 1453 |
| 1445 ASSERT_TRUE(updated_answer.get() != NULL); | 1454 ASSERT_TRUE(updated_answer.get() != NULL); |
| (...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2384 const ContentInfo* audio_content = GetFirstAudioContent(updated_offer.get()); | 2393 const ContentInfo* audio_content = GetFirstAudioContent(updated_offer.get()); |
| 2385 const ContentInfo* video_content = GetFirstVideoContent(updated_offer.get()); | 2394 const ContentInfo* video_content = GetFirstVideoContent(updated_offer.get()); |
| 2386 const ContentInfo* data_content = GetFirstDataContent(updated_offer.get()); | 2395 const ContentInfo* data_content = GetFirstDataContent(updated_offer.get()); |
| 2387 ASSERT_TRUE(audio_content != nullptr); | 2396 ASSERT_TRUE(audio_content != nullptr); |
| 2388 ASSERT_TRUE(video_content != nullptr); | 2397 ASSERT_TRUE(video_content != nullptr); |
| 2389 ASSERT_TRUE(data_content != nullptr); | 2398 ASSERT_TRUE(data_content != nullptr); |
| 2390 EXPECT_EQ("audio_modified", audio_content->name); | 2399 EXPECT_EQ("audio_modified", audio_content->name); |
| 2391 EXPECT_EQ("video_modified", video_content->name); | 2400 EXPECT_EQ("video_modified", video_content->name); |
| 2392 EXPECT_EQ("data_modified", data_content->name); | 2401 EXPECT_EQ("data_modified", data_content->name); |
| 2393 } | 2402 } |
| OLD | NEW |