RID parsing for Simulcast support.

Adding RidDescription to StreamParams that will contain the list of rids
for the track.
Adding receive_stream to MediaContentDescription to allow identifying
the stream that originates from the answerer (but is referenced by the
sender). For example, to signal that it will be received in Simulcast.

Bug: webrtc:10073.
Change-Id: Icd9a6b0a69d42bef51f525e673ce447255584334
Reviewed-on: https://webrtc-review.googlesource.com/c/113794
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25978}
diff --git a/pc/simulcastdescription.cc b/pc/simulcastdescription.cc
index eca67a7..8fff520 100644
--- a/pc/simulcastdescription.cc
+++ b/pc/simulcastdescription.cc
@@ -17,7 +17,6 @@
 
 SimulcastLayer::SimulcastLayer(const std::string& rid, bool is_paused)
     : rid{rid}, is_paused{is_paused} {
-  // TODO(amithi, bugs.webrtc.org/10073): Validate rid format.
   RTC_DCHECK(!rid.empty());
 }
 
@@ -41,4 +40,15 @@
   return send_layers_.empty() && receive_layers_.empty();
 }
 
+std::vector<SimulcastLayer> SimulcastLayerList::GetAllLayers() const {
+  std::vector<SimulcastLayer> result;
+  for (auto groupIt = begin(); groupIt != end(); groupIt++) {
+    for (auto it = groupIt->begin(); it != groupIt->end(); it++) {
+      result.push_back(*it);
+    }
+  }
+
+  return result;
+}
+
 }  // namespace cricket