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

Unified Diff: chromecast/public/media/media_clock_device.h

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, 5 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/public/media/media_clock_device.h
diff --git a/chromecast/media/cma/backend/media_clock_device.h b/chromecast/public/media/media_clock_device.h
similarity index 57%
rename from chromecast/media/cma/backend/media_clock_device.h
rename to chromecast/public/media/media_clock_device.h
index b625dd57f8289e097768c56d6b72f83dd9b2da45..9d0eaea794f96e56d31de0763c888837a33aa8d4 100644
--- a/chromecast/media/cma/backend/media_clock_device.h
+++ b/chromecast/public/media/media_clock_device.h
@@ -2,15 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROMECAST_MEDIA_CMA_BACKEND_MEDIA_CLOCK_DEVICE_H_
-#define CHROMECAST_MEDIA_CMA_BACKEND_MEDIA_CLOCK_DEVICE_H_
+#ifndef CHROMECAST_PUBLIC_MEDIA_MEDIA_CLOCK_DEVICE_H_
+#define CHROMECAST_PUBLIC_MEDIA_MEDIA_CLOCK_DEVICE_H_
#include <string>
-#include "base/basictypes.h"
-#include "base/macros.h"
-#include "base/threading/non_thread_safe.h"
-#include "base/time/time.h"
+#include "chromecast/public/time_delta.h"
byungchul 2015/07/27 18:22:23 relative to chromecast/public
halliwell 2015/07/28 02:19:36 TimeDelta removed now anyway.
namespace chromecast {
namespace media {
@@ -30,8 +27,7 @@ namespace media {
// |kUninitialized| state to the |kIdle| state.
// - The initial value of the timeline can only be set in the kIdle state.
//
-class MediaClockDevice
- : NON_EXPORTED_BASE(public base::NonThreadSafe) {
+class MediaClockDevice {
public:
enum State {
kStateUninitialized,
@@ -42,13 +38,43 @@ class MediaClockDevice
// Return true if transition from |state1| to |state2| is a valid state
// transition.
- static bool IsValidStateTransition(State state1, State state2);
+ inline static bool IsValidStateTransition(State state1, State state2) {
+ if (state2 == state1)
+ return true;
- // Returns string representation of state (for logging)
- static std::string StateToString(const State& state);
+ // All states can transition to |kStateError|.
+ bool is_transition_valid = (state2 == kStateError);
+
+ // All the other valid FSM transitions.
+ is_transition_valid =
+ is_transition_valid ||
+ (state1 == kStateUninitialized && (state2 == kStateIdle)) ||
+ (state1 == kStateIdle &&
+ (state2 == kStateRunning || state2 == kStateUninitialized)) ||
+ (state1 == kStateRunning && (state2 == kStateIdle)) ||
+ (state1 == kStateError && (state2 == kStateUninitialized));
- MediaClockDevice();
- virtual ~MediaClockDevice();
+ return is_transition_valid;
+ }
+
+ // Returns string representation of state (for logging)
+ inline static std::string StateToString(const State& state) {
+ switch (state) {
+ case kStateUninitialized:
+ return "Uninitialized";
+ case kStateIdle:
+ return "Idle";
+ case kStateRunning:
+ return "Running";
+ case kStateError:
+ return "Error";
+ default:
+ return "";
+ }
+ }
byungchul 2015/07/27 18:22:23 Why are these 2 files defined here inline? Is it a
halliwell 2015/07/28 02:19:36 Yes, it's allowed. And all vendors call these fun
byungchul 2015/07/28 18:05:43 I think 1) StateToString() is not necessary to be
halliwell 2015/07/28 23:26:06 StateToString now moved out into implementation co
+
+ MediaClockDevice() {}
+ virtual ~MediaClockDevice() {}
// Return the current state of the media clock.
virtual State GetState() const = 0;
@@ -60,7 +86,7 @@ class MediaClockDevice
// Sets the initial value of the timeline.
// Can only be invoked in state kStateIdle.
// Returns true when successful.
- virtual bool ResetTimeline(base::TimeDelta time) = 0;
+ virtual bool ResetTimeline(TimeDelta time) = 0;
// Sets the clock rate.
// Setting it to 0 means the clock is not progressing and that the renderer
@@ -70,10 +96,7 @@ class MediaClockDevice
// Retrieves the media clock time.
// Can only be invoked in states kStateIdle or kStateRunning.
- virtual base::TimeDelta GetTime() = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MediaClockDevice);
+ virtual TimeDelta GetTime() = 0;
};
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698