From 667f7a7ed73d0443d29ea81233289b917795b7e8 Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Thu, 29 Mar 2018 17:18:20 +0200 Subject: [PATCH] Added conversion to double from network time units. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: None Change-Id: Ib936bb232418fdd06b48f9c5bea1d2b1c80a09b1 Reviewed-on: https://webrtc-review.googlesource.com/65541 Reviewed-by: Björn Terelius Commit-Queue: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#22710} --- .../network_control/include/network_units.h | 5 +++++ .../network_control/network_units.cc | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/modules/congestion_controller/network_control/include/network_units.h b/modules/congestion_controller/network_control/include/network_units.h index 60cbb519d9..4a61c747bb 100644 --- a/modules/congestion_controller/network_control/include/network_units.h +++ b/modules/congestion_controller/network_control/include/network_units.h @@ -67,6 +67,9 @@ class TimeDelta { return microseconds_; } TimeDelta Abs() const { return TimeDelta::us(std::abs(us())); } + + double SecondsAsDouble() const; + bool IsZero() const { return microseconds_ == 0; } bool IsFinite() const { return IsInitialized() && !IsInfinite(); } bool IsInitialized() const { @@ -188,6 +191,8 @@ class Timestamp { microseconds_ += other.us(); return *this; } + + double SecondsAsDouble() const; bool operator==(const Timestamp& other) const { return microseconds_ == other.microseconds_; } diff --git a/modules/congestion_controller/network_control/network_units.cc b/modules/congestion_controller/network_control/network_units.cc index 806ad977de..a04eef7e90 100644 --- a/modules/congestion_controller/network_control/network_units.cc +++ b/modules/congestion_controller/network_control/network_units.cc @@ -19,6 +19,27 @@ TimeDelta TimeDelta::operator*(double scalar) const { DataSize DataSize::operator*(double scalar) const { return DataSize::bytes(std::round(bytes() * scalar)); } +double TimeDelta::SecondsAsDouble() const { + if (IsPlusInfinity()) { + return std::numeric_limits::infinity(); + } else if (IsMinusInfinity()) { + return -std::numeric_limits::infinity(); + } else if (!IsInitialized()) { + return std::numeric_limits::signaling_NaN(); + } else { + return us() * 1e-6; + } +} + +double Timestamp::SecondsAsDouble() const { + if (IsInfinite()) { + return std::numeric_limits::infinity(); + } else if (!IsInitialized()) { + return std::numeric_limits::signaling_NaN(); + } else { + return us() * 1e-6; + } +} DataRate DataRate::operator*(double scalar) const { return DataRate::bytes_per_second(std::round(bytes_per_second() * scalar));