OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2011 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 19 matching lines...) Expand all Loading... |
30 #include <set> | 30 #include <set> |
31 #include <string> | 31 #include <string> |
32 #include <vector> | 32 #include <vector> |
33 | 33 |
34 #include "webrtc/base/basictypes.h" | 34 #include "webrtc/base/basictypes.h" |
35 #include "webrtc/base/constructormagic.h" | 35 #include "webrtc/base/constructormagic.h" |
36 | 36 |
37 namespace cricket { | 37 namespace cricket { |
38 | 38 |
39 extern const char kFecSsrcGroupSemantics[]; | 39 extern const char kFecSsrcGroupSemantics[]; |
| 40 extern const char kFecFrSsrcGroupSemantics[]; |
40 extern const char kFidSsrcGroupSemantics[]; | 41 extern const char kFidSsrcGroupSemantics[]; |
41 extern const char kSimSsrcGroupSemantics[]; | 42 extern const char kSimSsrcGroupSemantics[]; |
42 | 43 |
43 struct SsrcGroup { | 44 struct SsrcGroup { |
44 SsrcGroup(const std::string& usage, const std::vector<uint32_t>& ssrcs) | 45 SsrcGroup(const std::string& usage, const std::vector<uint32_t>& ssrcs) |
45 : semantics(usage), ssrcs(ssrcs) {} | 46 : semantics(usage), ssrcs(ssrcs) {} |
46 | 47 |
47 bool operator==(const SsrcGroup& other) const { | 48 bool operator==(const SsrcGroup& other) const { |
48 return (semantics == other.semantics && ssrcs == other.ssrcs); | 49 return (semantics == other.semantics && ssrcs == other.ssrcs); |
49 } | 50 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 it != ssrc_groups.end(); ++it) { | 106 it != ssrc_groups.end(); ++it) { |
106 if (it->has_semantics(semantics)) { | 107 if (it->has_semantics(semantics)) { |
107 return &(*it); | 108 return &(*it); |
108 } | 109 } |
109 } | 110 } |
110 return NULL; | 111 return NULL; |
111 } | 112 } |
112 | 113 |
113 // Convenience function to add an FID ssrc for a primary_ssrc | 114 // Convenience function to add an FID ssrc for a primary_ssrc |
114 // that's already been added. | 115 // that's already been added. |
115 inline bool AddFidSsrc(uint32_t primary_ssrc, uint32_t fid_ssrc) { | 116 bool AddFidSsrc(uint32_t primary_ssrc, uint32_t fid_ssrc) { |
116 return AddSecondarySsrc(kFidSsrcGroupSemantics, primary_ssrc, fid_ssrc); | 117 return AddSecondarySsrc(kFidSsrcGroupSemantics, primary_ssrc, fid_ssrc); |
117 } | 118 } |
118 | 119 |
119 // Convenience function to lookup the FID ssrc for a primary_ssrc. | 120 // Convenience function to lookup the FID ssrc for a primary_ssrc. |
120 // Returns false if primary_ssrc not found or FID not defined for it. | 121 // Returns false if primary_ssrc not found or FID not defined for it. |
121 inline bool GetFidSsrc(uint32_t primary_ssrc, uint32_t* fid_ssrc) const { | 122 bool GetFidSsrc(uint32_t primary_ssrc, uint32_t* fid_ssrc) const { |
122 return GetSecondarySsrc(kFidSsrcGroupSemantics, primary_ssrc, fid_ssrc); | 123 return GetSecondarySsrc(kFidSsrcGroupSemantics, primary_ssrc, fid_ssrc); |
123 } | 124 } |
124 | 125 |
| 126 // Convenience function to add an FEC-FR ssrc for a primary_ssrc |
| 127 // that's already been added. |
| 128 bool AddFecFrSsrc(uint32_t primary_ssrc, uint32_t fecfr_ssrc) { |
| 129 return AddSecondarySsrc(kFecFrSsrcGroupSemantics, primary_ssrc, fecfr_ssrc); |
| 130 } |
| 131 |
| 132 // Convenience function to lookup the FEC-FR ssrc for a primary_ssrc. |
| 133 // Returns false if primary_ssrc not found or FEC-FR not defined for it. |
| 134 bool GetFecFrSsrc(uint32_t primary_ssrc, uint32_t* fecfr_ssrc) const { |
| 135 return GetSecondarySsrc(kFecFrSsrcGroupSemantics, primary_ssrc, fecfr_ssrc); |
| 136 } |
| 137 |
125 // Convenience to get all the SIM SSRCs if there are SIM ssrcs, or | 138 // Convenience to get all the SIM SSRCs if there are SIM ssrcs, or |
126 // the first SSRC otherwise. | 139 // the first SSRC otherwise. |
127 void GetPrimarySsrcs(std::vector<uint32_t>* ssrcs) const; | 140 void GetPrimarySsrcs(std::vector<uint32_t>* ssrcs) const; |
128 | 141 |
129 // Convenience to get all the FID SSRCs for the given primary ssrcs. | 142 // Convenience to get all the FID SSRCs for the given primary ssrcs. |
130 // If a given primary SSRC does not have a FID SSRC, the list of FID | 143 // If a given primary SSRC does not have a FID SSRC, the list of FID |
131 // SSRCS will be smaller than the list of primary SSRCs. | 144 // SSRCS will be smaller than the list of primary SSRCs. |
132 void GetFidSsrcs(const std::vector<uint32_t>& primary_ssrcs, | 145 void GetFidSsrcs(const std::vector<uint32_t>& primary_ssrcs, |
133 std::vector<uint32_t>* fid_ssrcs) const; | 146 std::vector<uint32_t>* fid_ssrcs) const; |
134 | 147 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 inline bool RemoveStreamByIds(StreamParamsVec* streams, | 295 inline bool RemoveStreamByIds(StreamParamsVec* streams, |
283 const std::string& groupid, | 296 const std::string& groupid, |
284 const std::string& id) { | 297 const std::string& id) { |
285 return RemoveStream(streams, | 298 return RemoveStream(streams, |
286 [&groupid, &id](const StreamParams& sp) { | 299 [&groupid, &id](const StreamParams& sp) { |
287 return sp.groupid == groupid && sp.id == id; | 300 return sp.groupid == groupid && sp.id == id; |
288 }); | 301 }); |
289 } | 302 } |
290 | 303 |
291 // Checks if |sp| defines parameters for a single primary stream. There may | 304 // Checks if |sp| defines parameters for a single primary stream. There may |
292 // be an RTX stream associated with the primary stream. Leaving as non-static so | 305 // be an RTX stream or a FlexFEC stream (or both) associated with the primary |
293 // we can test this function. | 306 // stream. Leaving as non-static so we can test this function. |
294 bool IsOneSsrcStream(const StreamParams& sp); | 307 bool IsOneSsrcStream(const StreamParams& sp); |
295 | 308 |
296 // Checks if |sp| defines parameters for one Simulcast stream. There may be RTX | 309 // Checks if |sp| defines parameters for one Simulcast stream. There may be RTX |
297 // streams associated with the simulcast streams. Leaving as non-static so we | 310 // streams associated with the simulcast streams. Leaving as non-static so we |
298 // can test this function. | 311 // can test this function. |
299 bool IsSimulcastStream(const StreamParams& sp); | 312 bool IsSimulcastStream(const StreamParams& sp); |
300 | 313 |
301 } // namespace cricket | 314 } // namespace cricket |
302 | 315 |
303 #endif // WEBRTC_MEDIA_BASE_STREAMPARAMS_H_ | 316 #endif // WEBRTC_MEDIA_BASE_STREAMPARAMS_H_ |
OLD | NEW |