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

Unified Diff: webrtc/media/base/streamparams.cc

Issue 2503403004: Add support for FEC-FR semantics in StreamParams. (Closed)
Patch Set: No inline inside class declaration. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/media/base/streamparams.h ('k') | webrtc/media/base/streamparams_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/base/streamparams.cc
diff --git a/webrtc/media/base/streamparams.cc b/webrtc/media/base/streamparams.cc
index da80f02fb568f72154f1c31fc0e700712b106b34..2bbf04563be47b6de7e0ee69b966e6c649cf00cd 100644
--- a/webrtc/media/base/streamparams.cc
+++ b/webrtc/media/base/streamparams.cc
@@ -23,6 +23,7 @@ void AddStream(std::vector<StreamParams>* streams, const StreamParams& stream) {
}
const char kFecSsrcGroupSemantics[] = "FEC";
+const char kFecFrSsrcGroupSemantics[] = "FEC-FR";
const char kFidSsrcGroupSemantics[] = "FID";
const char kSimSsrcGroupSemantics[] = "SIM";
@@ -200,10 +201,33 @@ bool IsOneSsrcStream(const StreamParams& sp) {
if (sp.ssrcs.size() == 1 && sp.ssrc_groups.empty()) {
return true;
}
+ const SsrcGroup* fid_group = sp.get_ssrc_group(kFidSsrcGroupSemantics);
+ const SsrcGroup* fecfr_group = sp.get_ssrc_group(kFecFrSsrcGroupSemantics);
if (sp.ssrcs.size() == 2) {
- const SsrcGroup* fid_group = sp.get_ssrc_group(kFidSsrcGroupSemantics);
- if (fid_group != NULL) {
- return (sp.ssrcs == fid_group->ssrcs);
+ if (fid_group != nullptr && sp.ssrcs == fid_group->ssrcs) {
+ return true;
+ }
+ if (fecfr_group != nullptr && sp.ssrcs == fecfr_group->ssrcs) {
+ return true;
+ }
+ }
+ if (sp.ssrcs.size() == 3) {
+ if (fid_group == nullptr || fecfr_group == nullptr) {
+ return false;
+ }
+ if (sp.ssrcs[0] != fid_group->ssrcs[0] ||
+ sp.ssrcs[0] != fecfr_group->ssrcs[0]) {
+ return false;
+ }
+ // We do not check for FlexFEC over RTX,
+ // as this combination is not supported.
+ if (sp.ssrcs[1] == fid_group->ssrcs[1] &&
+ sp.ssrcs[2] == fecfr_group->ssrcs[1]) {
+ return true;
+ }
+ if (sp.ssrcs[1] == fecfr_group->ssrcs[1] &&
+ sp.ssrcs[2] == fid_group->ssrcs[1]) {
+ return true;
}
}
return false;
« no previous file with comments | « webrtc/media/base/streamparams.h ('k') | webrtc/media/base/streamparams_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698