Move string_to_number.h to webrtc namespace

Bug: webrtc:42232595
Change-Id: I104cff12bf40509fb4554b98f7af16975263285a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/377520
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43911}
diff --git a/api/audio_codecs/L16/audio_encoder_L16.cc b/api/audio_codecs/L16/audio_encoder_L16.cc
index 3bbaa79..2010a90 100644
--- a/api/audio_codecs/L16/audio_encoder_L16.cc
+++ b/api/audio_codecs/L16/audio_encoder_L16.cc
@@ -43,7 +43,7 @@
   config.num_channels = rtc::dchecked_cast<int>(format.num_channels);
   auto ptime_iter = format.parameters.find("ptime");
   if (ptime_iter != format.parameters.end()) {
-    const auto ptime = rtc::StringToNumber<int>(ptime_iter->second);
+    const auto ptime = StringToNumber<int>(ptime_iter->second);
     if (ptime && *ptime > 0) {
       config.frame_size_ms = rtc::SafeClamp(10 * (*ptime / 10), 10, 60);
     }
diff --git a/api/audio_codecs/g711/audio_encoder_g711.cc b/api/audio_codecs/g711/audio_encoder_g711.cc
index aa676a2..e36d2f9 100644
--- a/api/audio_codecs/g711/audio_encoder_g711.cc
+++ b/api/audio_codecs/g711/audio_encoder_g711.cc
@@ -44,7 +44,7 @@
     config.frame_size_ms = 20;
     auto ptime_iter = format.parameters.find("ptime");
     if (ptime_iter != format.parameters.end()) {
-      const auto ptime = rtc::StringToNumber<int>(ptime_iter->second);
+      const auto ptime = StringToNumber<int>(ptime_iter->second);
       if (ptime && *ptime > 0) {
         config.frame_size_ms = rtc::SafeClamp(10 * (*ptime / 10), 10, 60);
       }
diff --git a/api/audio_codecs/g722/audio_encoder_g722.cc b/api/audio_codecs/g722/audio_encoder_g722.cc
index 6c932ef..80387a1 100644
--- a/api/audio_codecs/g722/audio_encoder_g722.cc
+++ b/api/audio_codecs/g722/audio_encoder_g722.cc
@@ -43,7 +43,7 @@
   config.num_channels = rtc::checked_cast<int>(format.num_channels);
   auto ptime_iter = format.parameters.find("ptime");
   if (ptime_iter != format.parameters.end()) {
-    auto ptime = rtc::StringToNumber<int>(ptime_iter->second);
+    auto ptime = StringToNumber<int>(ptime_iter->second);
     if (ptime && *ptime > 0) {
       const int whole_packets = *ptime / 10;
       config.frame_size_ms = rtc::SafeClamp<int>(whole_packets * 10, 10, 60);
diff --git a/api/video_codecs/av1_profile.cc b/api/video_codecs/av1_profile.cc
index 177ebf0..247790d 100644
--- a/api/video_codecs/av1_profile.cc
+++ b/api/video_codecs/av1_profile.cc
@@ -35,7 +35,7 @@
 }
 
 std::optional<AV1Profile> StringToAV1Profile(absl::string_view str) {
-  const std::optional<int> i = rtc::StringToNumber<int>(str);
+  const std::optional<int> i = StringToNumber<int>(str);
   if (!i.has_value())
     return std::nullopt;
 
diff --git a/api/video_codecs/h265_profile_tier_level.cc b/api/video_codecs/h265_profile_tier_level.cc
index 92ea0c8..f63321a 100644
--- a/api/video_codecs/h265_profile_tier_level.cc
+++ b/api/video_codecs/h265_profile_tier_level.cc
@@ -66,7 +66,7 @@
 
 // Annex A of https://www.itu.int/rec/T-REC-H.265 (08/21), section A.3.
 std::optional<H265Profile> StringToH265Profile(const std::string& profile) {
-  std::optional<int> i = rtc::StringToNumber<int>(profile);
+  std::optional<int> i = StringToNumber<int>(profile);
   if (!i.has_value()) {
     return std::nullopt;
   }
@@ -102,7 +102,7 @@
 // Annex A of https://www.itu.int/rec/T-REC-H.265 (08/21), section A.4,
 // tiers and levels.
 std::optional<H265Tier> StringToH265Tier(const std::string& tier) {
-  std::optional<int> i = rtc::StringToNumber<int>(tier);
+  std::optional<int> i = StringToNumber<int>(tier);
   if (!i.has_value()) {
     return std::nullopt;
   }
@@ -118,7 +118,7 @@
 }
 
 std::optional<H265Level> StringToH265Level(const std::string& level) {
-  const std::optional<int> i = rtc::StringToNumber<int>(level);
+  const std::optional<int> i = StringToNumber<int>(level);
   if (!i.has_value())
     return std::nullopt;
 
diff --git a/api/video_codecs/vp9_profile.cc b/api/video_codecs/vp9_profile.cc
index a00849d..ef9ab7e 100644
--- a/api/video_codecs/vp9_profile.cc
+++ b/api/video_codecs/vp9_profile.cc
@@ -38,7 +38,7 @@
 }
 
 std::optional<VP9Profile> StringToVP9Profile(const std::string& str) {
-  const std::optional<int> i = rtc::StringToNumber<int>(str);
+  const std::optional<int> i = StringToNumber<int>(str);
   if (!i.has_value())
     return std::nullopt;
 
diff --git a/media/base/sdp_video_format_utils.cc b/media/base/sdp_video_format_utils.cc
index c76afad..6a79531 100644
--- a/media/base/sdp_video_format_utils.cc
+++ b/media/base/sdp_video_format_utils.cc
@@ -64,8 +64,7 @@
   if (max_frame_rate_it == params.end())
     return std::nullopt;
 
-  const std::optional<int> i =
-      rtc::StringToNumber<int>(max_frame_rate_it->second);
+  const std::optional<int> i = StringToNumber<int>(max_frame_rate_it->second);
   if (!i.has_value() || i.value() <= 0)
     return std::nullopt;
   return i;
diff --git a/modules/audio_coding/codecs/opus/audio_coder_opus_common.cc b/modules/audio_coding/codecs/opus/audio_coder_opus_common.cc
index 7e127cc..486f3a9 100644
--- a/modules/audio_coding/codecs/opus/audio_coder_opus_common.cc
+++ b/modules/audio_coding/codecs/opus/audio_coder_opus_common.cc
@@ -39,7 +39,7 @@
                                               : (next_comma - pos);
     auto substring_with_number =
         comma_separated_list.substr(pos, distance_to_next_comma);
-    auto conv = rtc::StringToNumber<int>(substring_with_number);
+    auto conv = StringToNumber<int>(substring_with_number);
     if (!conv.has_value()) {
       return std::nullopt;
     }
diff --git a/modules/audio_coding/codecs/opus/audio_coder_opus_common.h b/modules/audio_coding/codecs/opus/audio_coder_opus_common.h
index 708ae4a..320b5918 100644
--- a/modules/audio_coding/codecs/opus/audio_coder_opus_common.h
+++ b/modules/audio_coding/codecs/opus/audio_coder_opus_common.h
@@ -29,7 +29,7 @@
 template <typename T>
 std::optional<T> GetFormatParameter(const SdpAudioFormat& format,
                                     absl::string_view param) {
-  return rtc::StringToNumber<T>(GetFormatParameter(format, param).value_or(""));
+  return StringToNumber<T>(GetFormatParameter(format, param).value_or(""));
 }
 
 template <>
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_multi_channel_opus_impl.cc b/modules/audio_coding/codecs/opus/audio_encoder_multi_channel_opus_impl.cc
index 45f3be1..f669b8d 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_multi_channel_opus_impl.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_multi_channel_opus_impl.cc
@@ -108,7 +108,7 @@
       CalculateDefaultBitrate(max_playback_rate_hz, num_channels);
 
   if (bitrate_param) {
-    const auto bitrate = rtc::StringToNumber<int>(*bitrate_param);
+    const auto bitrate = StringToNumber<int>(*bitrate_param);
     if (bitrate) {
       const int chosen_bitrate =
           std::max(AudioEncoderOpusConfig::kMinBitrateBps,
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 83f3560..4bf81ff 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -94,7 +94,7 @@
       CalculateDefaultBitrate(max_playback_rate_hz, num_channels);
 
   if (bitrate_param) {
-    const auto bitrate = rtc::StringToNumber<int>(*bitrate_param);
+    const auto bitrate = StringToNumber<int>(*bitrate_param);
     if (bitrate) {
       const int chosen_bitrate =
           std::max(AudioEncoderOpusConfig::kMinBitrateBps,
diff --git a/modules/audio_processing/test/conversational_speech/timing.cc b/modules/audio_processing/test/conversational_speech/timing.cc
index 95ec9f5..189e6e9 100644
--- a/modules/audio_processing/test/conversational_speech/timing.cc
+++ b/modules/audio_processing/test/conversational_speech/timing.cc
@@ -35,10 +35,10 @@
     RTC_CHECK_LE(fields.size(), 4);
     int gain = 0;
     if (fields.size() == 4) {
-      gain = rtc::StringToNumber<int>(fields[3]).value_or(0);
+      gain = StringToNumber<int>(fields[3]).value_or(0);
     }
     return Turn(fields[0], fields[1],
-                rtc::StringToNumber<int>(fields[2]).value_or(0), gain);
+                StringToNumber<int>(fields[2]).value_or(0), gain);
   };
 
   // Init.
diff --git a/pc/ice_server_parsing.cc b/pc/ice_server_parsing.cc
index bceb1f0..60e5a83 100644
--- a/pc/ice_server_parsing.cc
+++ b/pc/ice_server_parsing.cc
@@ -96,7 +96,7 @@
       return false;
     }
   }
-  return rtc::StringToNumber<int>(in_str);
+  return StringToNumber<int>(in_str);
 }
 
 // This method parses IPv6 and IPv4 literal strings, along with hostnames in
diff --git a/pc/simulcast_sdp_serializer.cc b/pc/simulcast_sdp_serializer.cc
index 521ec4e..750a2d0 100644
--- a/pc/simulcast_sdp_serializer.cc
+++ b/pc/simulcast_sdp_serializer.cc
@@ -164,7 +164,7 @@
   }
 
   for (const std::string& payload_type : string_payloads) {
-    std::optional<int> value = rtc::StringToNumber<int>(payload_type);
+    std::optional<int> value = StringToNumber<int>(payload_type);
     if (!value.has_value()) {
       return ParseError("Invalid payload type: " + payload_type);
     }
diff --git a/rtc_base/string_encode.h b/rtc_base/string_encode.h
index 836f236..4625ba7 100644
--- a/rtc_base/string_encode.h
+++ b/rtc_base/string_encode.h
@@ -96,7 +96,7 @@
                                   int>::type = 0>
 static bool FromString(absl::string_view s, T* t) {
   RTC_DCHECK(t);
-  std::optional<T> result = StringToNumber<T>(s);
+  std::optional<T> result = webrtc::StringToNumber<T>(s);
 
   if (result)
     *t = *result;
diff --git a/rtc_base/string_to_number.cc b/rtc_base/string_to_number.cc
index b02288b..e88c97a 100644
--- a/rtc_base/string_to_number.cc
+++ b/rtc_base/string_to_number.cc
@@ -17,7 +17,7 @@
 
 #include "rtc_base/checks.h"
 
-namespace rtc {
+namespace webrtc {
 namespace string_to_number_internal {
 
 std::optional<signed_type> ParseSigned(absl::string_view str, int base) {
@@ -101,4 +101,4 @@
 template std::optional<long double> ParseFloatingPoint(absl::string_view str);
 
 }  // namespace string_to_number_internal
-}  // namespace rtc
+}  // namespace webrtc
diff --git a/rtc_base/string_to_number.h b/rtc_base/string_to_number.h
index d6e3b38..5ae3ce0 100644
--- a/rtc_base/string_to_number.h
+++ b/rtc_base/string_to_number.h
@@ -18,7 +18,7 @@
 
 #include "absl/strings/string_view.h"
 
-namespace rtc {
+namespace webrtc {
 
 // This file declares a family of functions to parse integers from strings.
 // The standard C library functions either fail to indicate errors (atoi, etc.)
@@ -100,6 +100,12 @@
   return string_to_number_internal::ParseFloatingPoint<T>(str);
 }
 
+}  //  namespace webrtc
+
+// Re-export symbols from the webrtc namespace for backwards compatibility.
+// TODO(bugs.webrtc.org/4222596): Remove once all references are updated.
+namespace rtc {
+using ::webrtc::StringToNumber;
 }  // namespace rtc
 
 #endif  // RTC_BASE_STRING_TO_NUMBER_H_
diff --git a/rtc_base/string_to_number_unittest.cc b/rtc_base/string_to_number_unittest.cc
index 0c6164d..77b1437 100644
--- a/rtc_base/string_to_number_unittest.cc
+++ b/rtc_base/string_to_number_unittest.cc
@@ -19,7 +19,7 @@
 #include "absl/strings/string_view.h"
 #include "test/gtest.h"
 
-namespace rtc {
+namespace webrtc {
 
 namespace {
 // clang-format off
@@ -135,4 +135,4 @@
   EXPECT_EQ(std::nullopt, StringToNumber<int8_t>("-256"));
 }
 
-}  // namespace rtc
+}  // namespace webrtc
diff --git a/rtc_base/unique_id_generator.cc b/rtc_base/unique_id_generator.cc
index b29f4c6..8d95821 100644
--- a/rtc_base/unique_id_generator.cc
+++ b/rtc_base/unique_id_generator.cc
@@ -60,7 +60,7 @@
   // TODO(webrtc:13579): remove string copy here once absl::string_view version
   // of StringToNumber is available.
   std::optional<uint32_t> int_value =
-      StringToNumber<uint32_t>(std::string(value));
+      webrtc::StringToNumber<uint32_t>(std::string(value));
   // The underlying generator works for uint32_t values, so if the provided
   // value is not a uint32_t it will never be generated anyway.
   if (int_value.has_value()) {
diff --git a/rtc_tools/video_file_reader.cc b/rtc_tools/video_file_reader.cc
index 5ec2bfd..68c371a 100644
--- a/rtc_tools/video_file_reader.cc
+++ b/rtc_tools/video_file_reader.cc
@@ -155,10 +155,10 @@
     const std::string suffix = field.substr(1);
     switch (prefix) {
       case 'W':
-        width = rtc::StringToNumber<int>(suffix);
+        width = StringToNumber<int>(suffix);
         break;
       case 'H':
-        height = rtc::StringToNumber<int>(suffix);
+        height = StringToNumber<int>(suffix);
         break;
       case 'C':
         if (suffix != "420" && suffix != "420mpeg2") {
@@ -173,10 +173,9 @@
         std::vector<std::string> fraction;
         rtc::tokenize(suffix, ':', &fraction);
         if (fraction.size() == 2) {
-          const std::optional<int> numerator =
-              rtc::StringToNumber<int>(fraction[0]);
+          const std::optional<int> numerator = StringToNumber<int>(fraction[0]);
           const std::optional<int> denominator =
-              rtc::StringToNumber<int>(fraction[1]);
+              StringToNumber<int>(fraction[1]);
           if (numerator && denominator && *denominator != 0)
             fps = *numerator / static_cast<float>(*denominator);
           break;