Move SdpType from/to string definition close to declaration.

The definition of a function should always be compiled by the build
target that contains the declaration (see [1]).

This will avoid some unexpected linker errors when refactoring the
codebase and changing dependencies.

[1] - https://webrtc.googlesource.com/src/+/HEAD/style-guide.md#h-cc-pairs

Bug: webrtc:9862
Change-Id: I58e207c93c85f8884edfb4ab451e62dfe3d4760e
Reviewed-on: https://webrtc-review.googlesource.com/c/105321
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25139}
diff --git a/api/jsep.cc b/api/jsep.cc
index 52a60f9..01f5720 100644
--- a/api/jsep.cc
+++ b/api/jsep.cc
@@ -38,4 +38,32 @@
   OnFailure(RTCError(RTCErrorType::INTERNAL_ERROR, std::string(error)));
 }
 
+const char SessionDescriptionInterface::kOffer[] = "offer";
+const char SessionDescriptionInterface::kPrAnswer[] = "pranswer";
+const char SessionDescriptionInterface::kAnswer[] = "answer";
+
+const char* SdpTypeToString(SdpType type) {
+  switch (type) {
+    case SdpType::kOffer:
+      return SessionDescriptionInterface::kOffer;
+    case SdpType::kPrAnswer:
+      return SessionDescriptionInterface::kPrAnswer;
+    case SdpType::kAnswer:
+      return SessionDescriptionInterface::kAnswer;
+  }
+  return "";
+}
+
+absl::optional<SdpType> SdpTypeFromString(const std::string& type_str) {
+  if (type_str == SessionDescriptionInterface::kOffer) {
+    return SdpType::kOffer;
+  } else if (type_str == SessionDescriptionInterface::kPrAnswer) {
+    return SdpType::kPrAnswer;
+  } else if (type_str == SessionDescriptionInterface::kAnswer) {
+    return SdpType::kAnswer;
+  } else {
+    return absl::nullopt;
+  }
+}
+
 }  // namespace webrtc
diff --git a/pc/jsepsessiondescription.cc b/pc/jsepsessiondescription.cc
index b590eca..13d0743 100644
--- a/pc/jsepsessiondescription.cc
+++ b/pc/jsepsessiondescription.cc
@@ -92,37 +92,9 @@
 
 }  // namespace
 
-const char SessionDescriptionInterface::kOffer[] = "offer";
-const char SessionDescriptionInterface::kPrAnswer[] = "pranswer";
-const char SessionDescriptionInterface::kAnswer[] = "answer";
-
 const int JsepSessionDescription::kDefaultVideoCodecId = 100;
 const char JsepSessionDescription::kDefaultVideoCodecName[] = "VP8";
 
-const char* SdpTypeToString(SdpType type) {
-  switch (type) {
-    case SdpType::kOffer:
-      return SessionDescriptionInterface::kOffer;
-    case SdpType::kPrAnswer:
-      return SessionDescriptionInterface::kPrAnswer;
-    case SdpType::kAnswer:
-      return SessionDescriptionInterface::kAnswer;
-  }
-  return "";
-}
-
-absl::optional<SdpType> SdpTypeFromString(const std::string& type_str) {
-  if (type_str == SessionDescriptionInterface::kOffer) {
-    return SdpType::kOffer;
-  } else if (type_str == SessionDescriptionInterface::kPrAnswer) {
-    return SdpType::kPrAnswer;
-  } else if (type_str == SessionDescriptionInterface::kAnswer) {
-    return SdpType::kAnswer;
-  } else {
-    return absl::nullopt;
-  }
-}
-
 // TODO(steveanton): Remove this default implementation once Chromium has been
 // updated.
 SdpType SessionDescriptionInterface::GetType() const {