Adds support for signaling a=msid lines without a=ssrc lines.

Currently in the SDP we require an a=ssrc line in the m= section in
order for a StreamParams object to be created with that
MediaContentDescription. This change creates a StreamParams object
without ssrcs in the case that a=msid lines are signaled, but ssrcs
are not. When the remote description is set, this allows us to store
the "unsignaled" StreamParams object in the media channel to later
be used when the first packet is received and we create the
receive stream.

Bug: webrtc:7932, webrtc:7933
Change-Id: Ib6734abeee62b8ed688a8208722c402134c074ef
Reviewed-on: https://webrtc-review.googlesource.com/63141
Commit-Queue: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22712}
diff --git a/media/base/mediachannel.h b/media/base/mediachannel.h
index d1a2d3a..df20582 100644
--- a/media/base/mediachannel.h
+++ b/media/base/mediachannel.h
@@ -203,11 +203,13 @@
   // by sp.
   virtual bool AddSendStream(const StreamParams& sp) = 0;
   // Removes an outgoing media stream.
-  // ssrc must be the first SSRC of the media stream if the stream uses
-  // multiple SSRCs.
+  // SSRC must be the first SSRC of the media stream if the stream uses
+  // multiple SSRCs. In the case of an ssrc of 0, the possibly cached
+  // StreamParams is removed.
   virtual bool RemoveSendStream(uint32_t ssrc) = 0;
-  // Creates a new incoming media stream with SSRCs and CNAME as described
-  // by sp.
+  // Creates a new incoming media stream with SSRCs, CNAME as described
+  // by sp. In the case of a sp without SSRCs, the unsignaled sp is cached
+  // to be used later for unsignaled streams received.
   virtual bool AddRecvStream(const StreamParams& sp) = 0;
   // Removes an incoming media stream.
   // ssrc must be the first SSRC of the media stream if the stream uses