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();
