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

Side by Side 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: Unit test + android fixes 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromecast/media/cma/backend/media_clock_device_default.h" 5 #include "chromecast/media/cma/backend/media_clock_device_default.h"
6 6
7 #include "chromecast/base/time_conversions.h"
7 #include "media/base/buffers.h" 8 #include "media/base/buffers.h"
8 9
9 namespace chromecast { 10 namespace chromecast {
10 namespace media { 11 namespace media {
11 12
12 MediaClockDeviceDefault::MediaClockDeviceDefault() 13 MediaClockDeviceDefault::MediaClockDeviceDefault()
13 : state_(kStateUninitialized), 14 : state_(kStateUninitialized), media_time_(TimeDelta::Invalid()) {
14 media_time_(::media::kNoTimestamp()) { 15 thread_checker_.DetachFromThread();
15 DetachFromThread();
16 } 16 }
17 17
18 MediaClockDeviceDefault::~MediaClockDeviceDefault() { 18 MediaClockDeviceDefault::~MediaClockDeviceDefault() {
19 } 19 }
20 20
21 MediaClockDevice::State MediaClockDeviceDefault::GetState() const { 21 MediaClockDevice::State MediaClockDeviceDefault::GetState() const {
22 DCHECK(CalledOnValidThread()); 22 DCHECK(thread_checker_.CalledOnValidThread());
23 return state_; 23 return state_;
24 } 24 }
25 25
26 bool MediaClockDeviceDefault::SetState(State new_state) { 26 bool MediaClockDeviceDefault::SetState(State new_state) {
27 DCHECK(CalledOnValidThread()); 27 DCHECK(thread_checker_.CalledOnValidThread());
28 if (!MediaClockDevice::IsValidStateTransition(state_, new_state)) 28 if (!MediaClockDevice::IsValidStateTransition(state_, new_state))
29 return false; 29 return false;
30 30
31 if (new_state == state_) 31 if (new_state == state_)
32 return true; 32 return true;
33 33
34 state_ = new_state; 34 state_ = new_state;
35 35
36 if (state_ == kStateRunning) { 36 if (state_ == kStateRunning) {
37 stc_ = base::TimeTicks::Now(); 37 stc_ = base::TimeTicks::Now();
38 DCHECK(media_time_ != ::media::kNoTimestamp()); 38 DCHECK(media_time_ != TimeDelta::Invalid());
39 return true; 39 return true;
40 } 40 }
41 41
42 if (state_ == kStateIdle) { 42 if (state_ == kStateIdle) {
43 media_time_ = ::media::kNoTimestamp(); 43 media_time_ = TimeDelta::Invalid();
44 return true; 44 return true;
45 } 45 }
46 46
47 return true; 47 return true;
48 } 48 }
49 49
50 bool MediaClockDeviceDefault::ResetTimeline(base::TimeDelta time) { 50 bool MediaClockDeviceDefault::ResetTimeline(TimeDelta time) {
51 DCHECK(CalledOnValidThread()); 51 DCHECK(thread_checker_.CalledOnValidThread());
52 DCHECK_EQ(state_, kStateIdle); 52 DCHECK_EQ(state_, kStateIdle);
53 media_time_ = time; 53 media_time_ = time;
54 return true; 54 return true;
55 } 55 }
56 56
57 bool MediaClockDeviceDefault::SetRate(float rate) { 57 bool MediaClockDeviceDefault::SetRate(float rate) {
58 DCHECK(CalledOnValidThread()); 58 DCHECK(thread_checker_.CalledOnValidThread());
59 if (state_ == kStateRunning) { 59 if (state_ == kStateRunning) {
60 base::TimeTicks now = base::TimeTicks::Now(); 60 base::TimeTicks now = base::TimeTicks::Now();
61 media_time_ = media_time_ + (now - stc_) * rate_; 61 media_time_ = media_time_ + FromBaseTimeDelta((now - stc_) * rate_);
62 stc_ = now; 62 stc_ = now;
63 } 63 }
64 64
65 rate_ = rate; 65 rate_ = rate;
66 return true; 66 return true;
67 } 67 }
68 68
69 base::TimeDelta MediaClockDeviceDefault::GetTime() { 69 TimeDelta MediaClockDeviceDefault::GetTime() {
70 DCHECK(CalledOnValidThread()); 70 DCHECK(thread_checker_.CalledOnValidThread());
71 if (state_ != kStateRunning) 71 if (state_ != kStateRunning)
72 return media_time_; 72 return media_time_;
73 73
74 if (media_time_ == ::media::kNoTimestamp()) 74 if (media_time_ == TimeDelta::Invalid())
75 return ::media::kNoTimestamp(); 75 return TimeDelta::Invalid();
76 76
77 base::TimeTicks now = base::TimeTicks::Now(); 77 base::TimeTicks now = base::TimeTicks::Now();
78 base::TimeDelta interpolated_media_time = 78 TimeDelta interpolated_media_time =
79 media_time_ + (now - stc_) * rate_; 79 media_time_ + FromBaseTimeDelta((now - stc_) * rate_);
80 return interpolated_media_time; 80 return interpolated_media_time;
81 } 81 }
82 82
83 } // namespace media 83 } // namespace media
84 } // namespace chromecast 84 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698