Adding SDP parsing for Simulcast.

Parsing simulcast according to:
https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13#section-5.1
Created SdpSerializer for making serialized components more testable.
Simulcast functionality is still not accessible to users.

Bug: webrtc:10055
Change-Id: Ia6e4cef756cb954521dd19e22911f8eb6498880e
Reviewed-on: https://webrtc-review.googlesource.com/c/112160
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25883}
diff --git a/pc/sdpserializer.h b/pc/sdpserializer.h
new file mode 100644
index 0000000..428b420
--- /dev/null
+++ b/pc/sdpserializer.h
@@ -0,0 +1,49 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef PC_SDPSERIALIZER_H_
+#define PC_SDPSERIALIZER_H_
+
+#include <string>
+
+#include "absl/strings/string_view.h"
+#include "api/rtcerror.h"
+#include "pc/sessiondescription.h"
+
+namespace webrtc {
+
+// This class should serialize components of the SDP (and not the SDP itself).
+// Example:
+//     SimulcastDescription can be serialized and deserialized by this class.
+//     The serializer will know how to translate the data to spec-compliant
+//     format without knowing about the SDP attribute details (a=simulcast:)
+// Usage:
+//     Consider the SDP attribute for simulcast a=simulcast:<configuration>.
+//     The SDP serializtion code (webrtcsdp.h) should use |SdpSerializer| to
+//     serialize and deserialize the <configuration> section.
+// This class will allow testing the serialization of components without
+// having to serialize the entire SDP while hiding implementation details
+// from callers of sdp serialization (webrtcsdp.h).
+class SdpSerializer {
+ public:
+  // Serialization for the Simulcast description according to
+  // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13#section-5.1
+  std::string SerializeSimulcastDescription(
+      const cricket::SimulcastDescription& simulcast) const;
+
+  // Deserialization for the SimulcastDescription according to
+  // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13#section-5.1
+  RTCErrorOr<cricket::SimulcastDescription> DeserializeSimulcastDescription(
+      absl::string_view string) const;
+};
+
+}  // namespace webrtc
+
+#endif  // PC_SDPSERIALIZER_H_