Chromium Code Reviews| 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_; |
| }; |