| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 if (!target_cryptos) { | 626 if (!target_cryptos) { |
| 627 return; | 627 return; |
| 628 } | 628 } |
| 629 target_cryptos->erase(std::remove_if(target_cryptos->begin(), | 629 target_cryptos->erase(std::remove_if(target_cryptos->begin(), |
| 630 target_cryptos->end(), | 630 target_cryptos->end(), |
| 631 bind2nd(ptr_fun(CryptoNotFound), | 631 bind2nd(ptr_fun(CryptoNotFound), |
| 632 &filter)), | 632 &filter)), |
| 633 target_cryptos->end()); | 633 target_cryptos->end()); |
| 634 } | 634 } |
| 635 | 635 |
| 636 static bool IsRtpProtocol(const std::string& protocol) { |
| 637 return protocol.empty() || |
| 638 (protocol.find(cricket::kMediaProtocolRtpPrefix) != std::string::npos); |
| 639 } |
| 640 |
| 636 static bool IsRtpContent(SessionDescription* sdesc, | 641 static bool IsRtpContent(SessionDescription* sdesc, |
| 637 const std::string& content_name) { | 642 const std::string& content_name) { |
| 638 bool is_rtp = false; | 643 bool is_rtp = false; |
| 639 ContentInfo* content = sdesc->GetContentByName(content_name); | 644 ContentInfo* content = sdesc->GetContentByName(content_name); |
| 640 if (IsMediaContent(content)) { | 645 if (IsMediaContent(content)) { |
| 641 MediaContentDescription* media_desc = | 646 MediaContentDescription* media_desc = |
| 642 static_cast<MediaContentDescription*>(content->description); | 647 static_cast<MediaContentDescription*>(content->description); |
| 643 if (!media_desc) { | 648 if (!media_desc) { |
| 644 return false; | 649 return false; |
| 645 } | 650 } |
| 646 is_rtp = media_desc->protocol().empty() || | 651 is_rtp = IsRtpProtocol(media_desc->protocol()); |
| 647 (media_desc->protocol().find(cricket::kMediaProtocolRtpPrefix) != | |
| 648 std::string::npos); | |
| 649 } | 652 } |
| 650 return is_rtp; | 653 return is_rtp; |
| 651 } | 654 } |
| 652 | 655 |
| 653 // Updates the crypto parameters of the |sdesc| according to the given | 656 // Updates the crypto parameters of the |sdesc| according to the given |
| 654 // |bundle_group|. The crypto parameters of all the contents within the | 657 // |bundle_group|. The crypto parameters of all the contents within the |
| 655 // |bundle_group| should be updated to use the common subset of the | 658 // |bundle_group| should be updated to use the common subset of the |
| 656 // available cryptos. | 659 // available cryptos. |
| 657 static bool UpdateCryptoParamsForBundle(const ContentGroup& bundle_group, | 660 static bool UpdateCryptoParamsForBundle(const ContentGroup& bundle_group, |
| 658 SessionDescription* sdesc) { | 661 SessionDescription* sdesc) { |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1060 // Make sure the answer media content direction is per default set as | 1063 // Make sure the answer media content direction is per default set as |
| 1061 // described in RFC3264 section 6.1. | 1064 // described in RFC3264 section 6.1. |
| 1062 switch (offer->direction()) { | 1065 switch (offer->direction()) { |
| 1063 case MD_INACTIVE: | 1066 case MD_INACTIVE: |
| 1064 answer->set_direction(MD_INACTIVE); | 1067 answer->set_direction(MD_INACTIVE); |
| 1065 break; | 1068 break; |
| 1066 case MD_SENDONLY: | 1069 case MD_SENDONLY: |
| 1067 answer->set_direction(MD_RECVONLY); | 1070 answer->set_direction(MD_RECVONLY); |
| 1068 break; | 1071 break; |
| 1069 case MD_RECVONLY: | 1072 case MD_RECVONLY: |
| 1070 answer->set_direction(answer->streams().empty() ? MD_INACTIVE | 1073 answer->set_direction(IsRtpProtocol(answer->protocol()) && |
| 1071 : MD_SENDONLY); | 1074 answer->streams().empty() |
| 1075 ? MD_INACTIVE |
| 1076 : MD_SENDONLY); |
| 1072 break; | 1077 break; |
| 1073 case MD_SENDRECV: | 1078 case MD_SENDRECV: |
| 1074 answer->set_direction(answer->streams().empty() ? MD_RECVONLY | 1079 answer->set_direction(IsRtpProtocol(answer->protocol()) && |
| 1075 : MD_SENDRECV); | 1080 answer->streams().empty() |
| 1081 ? MD_RECVONLY |
| 1082 : MD_SENDRECV); |
| 1076 break; | 1083 break; |
| 1077 default: | 1084 default: |
| 1078 RTC_DCHECK(false && "MediaContentDescription has unexpected direction."); | 1085 RTC_DCHECK(false && "MediaContentDescription has unexpected direction."); |
| 1079 break; | 1086 break; |
| 1080 } | 1087 } |
| 1081 | 1088 |
| 1082 return true; | 1089 return true; |
| 1083 } | 1090 } |
| 1084 | 1091 |
| 1085 static bool IsMediaProtocolSupported(MediaType type, | 1092 static bool IsMediaProtocolSupported(MediaType type, |
| (...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1955 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_VIDEO)); | 1962 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_VIDEO)); |
| 1956 } | 1963 } |
| 1957 | 1964 |
| 1958 const DataContentDescription* GetFirstDataContentDescription( | 1965 const DataContentDescription* GetFirstDataContentDescription( |
| 1959 const SessionDescription* sdesc) { | 1966 const SessionDescription* sdesc) { |
| 1960 return static_cast<const DataContentDescription*>( | 1967 return static_cast<const DataContentDescription*>( |
| 1961 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_DATA)); | 1968 GetFirstMediaContentDescription(sdesc, MEDIA_TYPE_DATA)); |
| 1962 } | 1969 } |
| 1963 | 1970 |
| 1964 } // namespace cricket | 1971 } // namespace cricket |
| OLD | NEW |