Fix default link capacity in standalone loopback tests

A recent change in the link capacity parameter from int to DataRate
broke the implicit mapping of 0 kbps to infinite capacity, causing
tests to fail unless an explicit capacity was specified. This
change updates the following tests to use infinite capacity by default:

  screenshare_loopback
  sv_loopback
  video_loopback

This fix restores the expected behavior and maintains backward
compatibility.

Bug: webrtc:42224804
Change-Id: I244ea3a0f8f83a81f2dbcf40e5ff921e326f24e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/354540
Reviewed-by: Erik Språng <sprang@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42475}
diff --git a/video/screenshare_loopback.cc b/video/screenshare_loopback.cc
index 9cbe501..882e58f 100644
--- a/video/screenshare_loopback.cc
+++ b/video/screenshare_loopback.cc
@@ -141,8 +141,11 @@
           link_capacity,
           0,
           "Capacity (kbps) of the fake link. 0 means infinite.");
-int LinkCapacityKbps() {
-  return absl::GetFlag(FLAGS_link_capacity);
+webrtc::DataRate LinkCapacity() {
+  int link_capacity_kbps = absl::GetFlag(FLAGS_link_capacity);
+  return link_capacity_kbps == 0
+             ? webrtc::DataRate::Infinity()
+             : webrtc::DataRate::KilobitsPerSec(link_capacity_kbps);
 }
 
 ABSL_FLAG(int, queue_size, 0, "Size of the bottleneck link queue in packets.");
@@ -314,8 +317,7 @@
 void Loopback() {
   BuiltInNetworkBehaviorConfig pipe_config;
   pipe_config.loss_percent = LossPercent();
-  pipe_config.link_capacity =
-      webrtc::DataRate::KilobitsPerSec(LinkCapacityKbps());
+  pipe_config.link_capacity = LinkCapacity();
   pipe_config.queue_length_packets = QueueSize();
   pipe_config.queue_delay_ms = AvgPropagationDelayMs();
   pipe_config.delay_standard_deviation_ms = StdPropagationDelayMs();
diff --git a/video/sv_loopback.cc b/video/sv_loopback.cc
index 67b27e8..86bdaf5 100644
--- a/video/sv_loopback.cc
+++ b/video/sv_loopback.cc
@@ -533,8 +533,10 @@
   return absl::GetFlag(FLAGS_avg_burst_loss_length);
 }
 
-int LinkCapacityKbps() {
-  return absl::GetFlag(FLAGS_link_capacity);
+DataRate LinkCapacity() {
+  int link_capacity_kbps = absl::GetFlag(FLAGS_link_capacity);
+  return link_capacity_kbps == 0 ? DataRate::Infinity()
+                                 : DataRate::KilobitsPerSec(link_capacity_kbps);
 }
 
 int QueueSize() {
@@ -585,7 +587,7 @@
   BuiltInNetworkBehaviorConfig pipe_config;
   pipe_config.loss_percent = LossPercent();
   pipe_config.avg_burst_loss_length = AvgBurstLossLength();
-  pipe_config.link_capacity = DataRate::KilobitsPerSec(LinkCapacityKbps());
+  pipe_config.link_capacity = LinkCapacity();
   pipe_config.queue_length_packets = QueueSize();
   pipe_config.queue_delay_ms = AvgPropagationDelayMs();
   pipe_config.delay_standard_deviation_ms = StdPropagationDelayMs();
diff --git a/video/video_loopback.cc b/video/video_loopback.cc
index 973ffe6..6358105 100644
--- a/video/video_loopback.cc
+++ b/video/video_loopback.cc
@@ -284,8 +284,10 @@
   return static_cast<int>(absl::GetFlag(FLAGS_avg_burst_loss_length));
 }
 
-int LinkCapacityKbps() {
-  return static_cast<int>(absl::GetFlag(FLAGS_link_capacity));
+DataRate LinkCapacity() {
+  int link_capacity_kbps = absl::GetFlag(FLAGS_link_capacity);
+  return link_capacity_kbps == 0 ? DataRate::Infinity()
+                                 : DataRate::KilobitsPerSec(link_capacity_kbps);
 }
 
 int QueueSize() {
@@ -358,7 +360,7 @@
   BuiltInNetworkBehaviorConfig pipe_config;
   pipe_config.loss_percent = LossPercent();
   pipe_config.avg_burst_loss_length = AvgBurstLossLength();
-  pipe_config.link_capacity = DataRate::KilobitsPerSec(LinkCapacityKbps());
+  pipe_config.link_capacity = LinkCapacity();
   pipe_config.queue_length_packets = QueueSize();
   pipe_config.queue_delay_ms = AvgPropagationDelayMs();
   pipe_config.delay_standard_deviation_ms = StdPropagationDelayMs();