Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Unified Diff: chromecast/media/cma/backend/media_clock_device_default.cc

Issue 1257013003: Load CMA backend from shared library (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromecast/media/cma/backend/media_clock_device_default.cc
diff --git a/chromecast/media/cma/backend/media_clock_device_default.cc b/chromecast/media/cma/backend/media_clock_device_default.cc
index 086083dda3f3721b6726af4aa41d7805a552ad7b..0855cf32e7a919e6c4427399068628a56263bc44 100644
--- a/chromecast/media/cma/backend/media_clock_device_default.cc
+++ b/chromecast/media/cma/backend/media_clock_device_default.cc
@@ -8,25 +8,53 @@
namespace chromecast {
namespace media {
+namespace {
+
+// Return true if transition from |state1| to |state2| is a valid state
+// transition.
+inline static bool IsValidStateTransition(MediaClockDevice::State state1,
+ MediaClockDevice::State state2) {
+ if (state2 == state1)
+ return true;
+
+ // All states can transition to |kStateError|.
+ if (state2 == MediaClockDevice::kStateError)
+ return true;
+
+ // All the other valid FSM transitions.
+ switch (state1) {
+ case MediaClockDevice::kStateUninitialized:
+ return state2 == MediaClockDevice::kStateIdle;
+ case MediaClockDevice::kStateIdle:
+ return state2 == MediaClockDevice::kStateRunning ||
+ state2 == MediaClockDevice::kStateUninitialized;
+ case MediaClockDevice::kStateRunning:
+ return state2 == MediaClockDevice::kStateIdle;
+ case MediaClockDevice::kStateError:
+ return state2 == MediaClockDevice::kStateUninitialized;
+ default:
+ return false;
+ }
+}
+
+} // namespace
MediaClockDeviceDefault::MediaClockDeviceDefault()
- : state_(kStateUninitialized),
- media_time_(::media::kNoTimestamp()) {
- DetachFromThread();
+ : state_(kStateUninitialized), media_time_(::media::kNoTimestamp()) {
+ thread_checker_.DetachFromThread();
}
MediaClockDeviceDefault::~MediaClockDeviceDefault() {
}
MediaClockDevice::State MediaClockDeviceDefault::GetState() const {
- DCHECK(CalledOnValidThread());
+ DCHECK(thread_checker_.CalledOnValidThread());
return state_;
}
bool MediaClockDeviceDefault::SetState(State new_state) {
- DCHECK(CalledOnValidThread());
- if (!MediaClockDevice::IsValidStateTransition(state_, new_state))
- return false;
+ DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(IsValidStateTransition(state_, new_state));
if (new_state == state_)
return true;
@@ -47,15 +75,15 @@ bool MediaClockDeviceDefault::SetState(State new_state) {
return true;
}
-bool MediaClockDeviceDefault::ResetTimeline(base::TimeDelta time) {
- DCHECK(CalledOnValidThread());
+bool MediaClockDeviceDefault::ResetTimeline(int64_t time_microseconds) {
+ DCHECK(thread_checker_.CalledOnValidThread());
DCHECK_EQ(state_, kStateIdle);
- media_time_ = time;
+ media_time_ = base::TimeDelta::FromMicroseconds(time_microseconds);
return true;
}
bool MediaClockDeviceDefault::SetRate(float rate) {
- DCHECK(CalledOnValidThread());
+ DCHECK(thread_checker_.CalledOnValidThread());
if (state_ == kStateRunning) {
base::TimeTicks now = base::TimeTicks::Now();
media_time_ = media_time_ + (now - stc_) * rate_;
@@ -66,18 +94,18 @@ bool MediaClockDeviceDefault::SetRate(float rate) {
return true;
}
-base::TimeDelta MediaClockDeviceDefault::GetTime() {
- DCHECK(CalledOnValidThread());
+int64_t MediaClockDeviceDefault::GetTimeMicroseconds() {
+ DCHECK(thread_checker_.CalledOnValidThread());
if (state_ != kStateRunning)
- return media_time_;
+ return media_time_.InMicroseconds();
if (media_time_ == ::media::kNoTimestamp())
- return ::media::kNoTimestamp();
+ return media_time_.InMicroseconds();
base::TimeTicks now = base::TimeTicks::Now();
base::TimeDelta interpolated_media_time =
media_time_ + (now - stc_) * rate_;
- return interpolated_media_time;
+ return interpolated_media_time.InMicroseconds();
}
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698