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

Side by Side Diff: media/base/android/mt/player.cc

Issue 1076013002: Added stub MediaSourcePlayer for developing behind the flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed binding for SetVideoSurface Created 5 years, 8 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "media/base/android/mt/player.h"
6
7 #include "base/bind.h"
8 #include "base/lazy_instance.h"
9 #include "base/logging.h"
10 #include "base/threading/thread.h"
11
12 #include "media/base/android/media_player_manager.h"
13
14 namespace media {
15 namespace mt {
16
17 class MediaThread : public base::Thread {
18 public:
19 MediaThread() : base::Thread("MediaSource_MediaThread") {
20 Start();
21 }
22 };
23
24 // Create media thread
25 base::LazyInstance<MediaThread>::Leaky
26 g_media_thread = LAZY_INSTANCE_INITIALIZER;
27
28
29 scoped_refptr<base::SingleThreadTaskRunner> GetMediaTaskRunner() {
30 return g_media_thread.Pointer()->task_runner();
31 }
32
33 Player::Player(
34 int player_id,
35 MediaPlayerManager* manager,
36 const RequestMediaResourcesCB& request_media_resources_cb,
37 scoped_ptr<DemuxerAndroid> demuxer,
38 const GURL& frame_url)
39 : MediaPlayerAndroid(player_id,
40 manager,
41 request_media_resources_cb,
42 frame_url),
43 demuxer_(demuxer.Pass()),
44 weak_factory_(this)
45 {
46 DVLOG(1) << "Player::Player: player_id:" << player_id;
47
48 demuxer_->Initialize(this);
49 weak_this_ = weak_factory_.GetWeakPtr();
50 }
51
52 Player::~Player()
53 {
54 // Called on UI thread, we need to release asynchronously
55 }
56
57 void Player::SetVideoSurface(gfx::ScopedJavaSurface surface) {
58 DVLOG(1) << __FUNCTION__;
59
60 GetMediaTaskRunner()->PostTask(
61 FROM_HERE, base::Bind(&Player::SetVideoSurfaceInternal,
62 weak_this_, base::Passed(&surface)));
63 }
64
65 void Player::Start() {
66 DVLOG(1) << __FUNCTION__;
67
68 GetMediaTaskRunner()->PostTask(
69 FROM_HERE, base::Bind(&Player::StartInternal, weak_this_));
70 }
71
72 void Player::Pause(bool /* is_media_related_action */) {
73 DVLOG(1) << __FUNCTION__;
74
75 GetMediaTaskRunner()->PostTask(
76 FROM_HERE, base::Bind(&Player::PauseInternal, weak_this_));
77 }
78
79 void Player::SeekTo(base::TimeDelta timestamp) {
80 DVLOG(1) << __FUNCTION__ << " " << timestamp;
81
82 GetMediaTaskRunner()->PostTask(
83 FROM_HERE, base::Bind(&Player::SeekToInternal, weak_this_, timestamp));
84 }
85
86 void Player::Release() {
87 DVLOG(1) << __FUNCTION__;
88
89 GetMediaTaskRunner()->PostTask(
90 FROM_HERE, base::Bind(&Player::ReleaseInternal, weak_this_));
91 }
92
93 void Player::SetVolume(double volume) {
94 DVLOG(1) << __FUNCTION__ << " " << volume;
95 }
96
97 int Player::GetVideoWidth() {
98 return 320;
99 }
100
101 int Player::GetVideoHeight() {
102 return 240;
103 }
104
105 base::TimeDelta Player::GetCurrentTime() {
106 return base::TimeDelta();
107 }
108
109 base::TimeDelta Player::GetDuration() {
110 return base::TimeDelta();
111 }
112
113 bool Player::IsPlaying() {
114 return false;
115 }
116
117 bool Player::CanPause() {
118 return false;
119 }
120
121 bool Player::CanSeekForward() {
122 return false;
123 }
124
125 bool Player::CanSeekBackward() {
126 return false;
127 }
128
129 bool Player::IsPlayerReady() {
130 DVLOG(1) << __FUNCTION__;
131 return true;
132 }
133
134 void Player::SetCdm(BrowserCdm* cdm) {
135 DVLOG(1) << __FUNCTION__;
136 }
137
138 void Player::OnDemuxerConfigsAvailable(const DemuxerConfigs& params) {
139 DVLOG(1) << __FUNCTION__;
140
141 // TODO: Post on UI thread
142 manager()->OnMediaMetadataChanged(
143 player_id(), base::TimeDelta::FromMilliseconds(100000),
144 GetVideoWidth(), GetVideoHeight(), true);
145 }
146
147 void Player::OnDemuxerDataAvailable(const DemuxerData& params) {
148 DVLOG(1) << __FUNCTION__;
149 }
150
151 void Player::OnDemuxerSeekDone(base::TimeDelta actual_browser_seek_time) {
152 DVLOG(1) << __FUNCTION__ << " actual_time:" << actual_browser_seek_time;
153 }
154
155 void Player::OnDemuxerDurationChanged(base::TimeDelta duration) {
156 DVLOG(1) << __FUNCTION__ << " duration:" << duration;
157 }
158
159
160 // Events from UI, called on Media thread
161
162 void Player::SetVideoSurfaceInternal(gfx::ScopedJavaSurface surface) {
163 DVLOG(1) << __FUNCTION__;
164 }
165
166 void Player::StartInternal() {
167 DVLOG(1) << __FUNCTION__;
168 }
169
170 void Player::PauseInternal() {
171 DVLOG(1) << __FUNCTION__;
172 }
173
174 void Player::SeekToInternal(base::TimeDelta timestamp) {
175 DVLOG(1) << __FUNCTION__ << " " << timestamp;
176 }
177
178 void Player::ReleaseInternal() {
179 DVLOG(1) << __FUNCTION__;
180 }
181
182 } // namespace mt
183 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698