Index: mojo/services/media/common/cpp/timeline_rate.h |
diff --git a/mojo/services/media/common/cpp/timeline_rate.h b/mojo/services/media/common/cpp/timeline_rate.h |
index 7aa021622b0b09e04e1381d497c7ab5239ca256b..05576cdb8d258559f9d646ad87e9ec2072eede8a 100644 |
--- a/mojo/services/media/common/cpp/timeline_rate.h |
+++ b/mojo/services/media/common/cpp/timeline_rate.h |
@@ -62,6 +62,18 @@ class TimelineRate { |
explicit TimelineRate(uint32_t subject_delta) |
: subject_delta_(subject_delta), reference_delta_(1) {} |
+ explicit TimelineRate(float rate_as_float) |
+ : subject_delta_( |
+ rate_as_float > 1.0f |
+ ? kFloatFactor |
+ : static_cast<uint32_t>(kFloatFactor * rate_as_float)), |
kulakowski
2016/05/24 13:57:24
This kFloatFactor feels a bit opaque.
dalesat
2016/05/24 18:09:15
Added comments.
|
+ reference_delta_( |
+ rate_as_float > 1.0f |
+ ? static_cast<uint32_t>(kFloatFactor / rate_as_float) |
+ : kFloatFactor) { |
+ Reduce(&subject_delta_, &reference_delta_); |
+ } |
+ |
TimelineRate(uint32_t subject_delta, uint32_t reference_delta) |
: subject_delta_(subject_delta), reference_delta_(reference_delta) { |
MOJO_DCHECK(reference_delta != 0); |
@@ -84,6 +96,8 @@ class TimelineRate { |
uint32_t reference_delta() const { return reference_delta_; } |
private: |
+ static constexpr uint32_t kFloatFactor = 1ul << 23; |
+ |
uint32_t subject_delta_; |
uint32_t reference_delta_; |
}; |