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

Side by Side Diff: webkit/media/buffered_data_source.cc

Issue 9864022: Move DataSource::SetPreload() to BufferedDataSource. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: Created 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/media/buffered_data_source.h" 5 #include "webkit/media/buffered_data_source.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "media/base/media_log.h" 9 #include "media/base/media_log.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 24 matching lines...) Expand all
35 read_position_(0), 35 read_position_(0),
36 read_size_(0), 36 read_size_(0),
37 read_buffer_(NULL), 37 read_buffer_(NULL),
38 intermediate_read_buffer_(new uint8[kInitialReadBufferSize]), 38 intermediate_read_buffer_(new uint8[kInitialReadBufferSize]),
39 intermediate_read_buffer_size_(kInitialReadBufferSize), 39 intermediate_read_buffer_size_(kInitialReadBufferSize),
40 render_loop_(render_loop), 40 render_loop_(render_loop),
41 stop_signal_received_(false), 41 stop_signal_received_(false),
42 stopped_on_render_loop_(false), 42 stopped_on_render_loop_(false),
43 media_is_paused_(true), 43 media_is_paused_(true),
44 media_has_played_(false), 44 media_has_played_(false),
45 preload_(media::AUTO), 45 preload_(AUTO),
46 cache_miss_retries_left_(kNumCacheMissRetries), 46 cache_miss_retries_left_(kNumCacheMissRetries),
47 bitrate_(0), 47 bitrate_(0),
48 playback_rate_(0.0), 48 playback_rate_(0.0),
49 media_log_(media_log) { 49 media_log_(media_log) {
50 } 50 }
51 51
52 BufferedDataSource::~BufferedDataSource() {} 52 BufferedDataSource::~BufferedDataSource() {}
53 53
54 // A factory method to create BufferedResourceLoader using the read parameters. 54 // A factory method to create BufferedResourceLoader using the read parameters.
55 // This method can be overrided to inject mock BufferedResourceLoader object 55 // This method can be overrided to inject mock BufferedResourceLoader object
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 // the full range of the resource to obtain the instance size because 101 // the full range of the resource to obtain the instance size because
102 // we won't be served HTTP headers. 102 // we won't be served HTTP headers.
103 loader_.reset(CreateResourceLoader(kPositionNotSpecified, 103 loader_.reset(CreateResourceLoader(kPositionNotSpecified,
104 kPositionNotSpecified)); 104 kPositionNotSpecified));
105 loader_->Start( 105 loader_->Start(
106 base::Bind(&BufferedDataSource::NonHttpInitialStartCallback, this), 106 base::Bind(&BufferedDataSource::NonHttpInitialStartCallback, this),
107 base::Bind(&BufferedDataSource::NetworkEventCallback, this), 107 base::Bind(&BufferedDataSource::NetworkEventCallback, this),
108 frame_); 108 frame_);
109 } 109 }
110 110
111 void BufferedDataSource::SetPreload(Preload preload) {
112 DCHECK(MessageLoop::current() == render_loop_);
113 preload_ = preload;
114 }
115
111 bool BufferedDataSource::HasSingleOrigin() { 116 bool BufferedDataSource::HasSingleOrigin() {
112 DCHECK(MessageLoop::current() == render_loop_); 117 DCHECK(MessageLoop::current() == render_loop_);
113 return loader_.get() ? loader_->HasSingleOrigin() : true; 118 return loader_.get() ? loader_->HasSingleOrigin() : true;
114 } 119 }
115 120
116 void BufferedDataSource::Abort() { 121 void BufferedDataSource::Abort() {
117 DCHECK(MessageLoop::current() == render_loop_); 122 DCHECK(MessageLoop::current() == render_loop_);
118 123
119 CleanupTask(); 124 CleanupTask();
120 frame_ = NULL; 125 frame_ = NULL;
(...skipping 11 matching lines...) Expand all
132 137
133 render_loop_->PostTask(FROM_HERE, 138 render_loop_->PostTask(FROM_HERE,
134 base::Bind(&BufferedDataSource::CleanupTask, this)); 139 base::Bind(&BufferedDataSource::CleanupTask, this));
135 } 140 }
136 141
137 void BufferedDataSource::SetPlaybackRate(float playback_rate) { 142 void BufferedDataSource::SetPlaybackRate(float playback_rate) {
138 render_loop_->PostTask(FROM_HERE, base::Bind( 143 render_loop_->PostTask(FROM_HERE, base::Bind(
139 &BufferedDataSource::SetPlaybackRateTask, this, playback_rate)); 144 &BufferedDataSource::SetPlaybackRateTask, this, playback_rate));
140 } 145 }
141 146
142 void BufferedDataSource::SetPreload(media::Preload preload) {
143 render_loop_->PostTask(FROM_HERE, base::Bind(
144 &BufferedDataSource::SetPreloadTask, this, preload));
145 }
146
147 void BufferedDataSource::SetBitrate(int bitrate) { 147 void BufferedDataSource::SetBitrate(int bitrate) {
148 render_loop_->PostTask(FROM_HERE, base::Bind( 148 render_loop_->PostTask(FROM_HERE, base::Bind(
149 &BufferedDataSource::SetBitrateTask, this, bitrate)); 149 &BufferedDataSource::SetBitrateTask, this, bitrate));
150 } 150 }
151 151
152 ///////////////////////////////////////////////////////////////////////////// 152 /////////////////////////////////////////////////////////////////////////////
153 // media::DataSource implementation. 153 // media::DataSource implementation.
154 void BufferedDataSource::Read( 154 void BufferedDataSource::Read(
155 int64 position, size_t size, uint8* data, 155 int64 position, size_t size, uint8* data,
156 const media::DataSource::ReadCB& read_cb) { 156 const media::DataSource::ReadCB& read_cb) {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 bool previously_paused = media_is_paused_; 269 bool previously_paused = media_is_paused_;
270 media_is_paused_ = (playback_rate == 0.0); 270 media_is_paused_ = (playback_rate == 0.0);
271 271
272 if (!media_has_played_ && previously_paused && !media_is_paused_) 272 if (!media_has_played_ && previously_paused && !media_is_paused_)
273 media_has_played_ = true; 273 media_has_played_ = true;
274 274
275 BufferedResourceLoader::DeferStrategy strategy = ChooseDeferStrategy(); 275 BufferedResourceLoader::DeferStrategy strategy = ChooseDeferStrategy();
276 loader_->UpdateDeferStrategy(strategy); 276 loader_->UpdateDeferStrategy(strategy);
277 } 277 }
278 278
279 void BufferedDataSource::SetPreloadTask(media::Preload preload) {
280 DCHECK(MessageLoop::current() == render_loop_);
281 preload_ = preload;
282 }
283
284 void BufferedDataSource::SetBitrateTask(int bitrate) { 279 void BufferedDataSource::SetBitrateTask(int bitrate) {
285 DCHECK(MessageLoop::current() == render_loop_); 280 DCHECK(MessageLoop::current() == render_loop_);
286 DCHECK(loader_.get()); 281 DCHECK(loader_.get());
287 282
288 bitrate_ = bitrate; 283 bitrate_ = bitrate;
289 loader_->SetBitrate(bitrate); 284 loader_->SetBitrate(bitrate);
290 } 285 }
291 286
292 BufferedResourceLoader::DeferStrategy 287 BufferedResourceLoader::DeferStrategy
293 BufferedDataSource::ChooseDeferStrategy() { 288 BufferedDataSource::ChooseDeferStrategy() {
294 DCHECK(MessageLoop::current() == render_loop_); 289 DCHECK(MessageLoop::current() == render_loop_);
295 // If the page indicated preload=metadata, then load exactly what is needed 290 // If the page indicated preload=metadata, then load exactly what is needed
296 // needed for starting playback. 291 // needed for starting playback.
297 if (!media_has_played_ && preload_ == media::METADATA) 292 if (!media_has_played_ && preload_ == METADATA)
298 return BufferedResourceLoader::kReadThenDefer; 293 return BufferedResourceLoader::kReadThenDefer;
299 294
300 // If the playback has started (at which point the preload value is ignored) 295 // If the playback has started (at which point the preload value is ignored)
301 // and we're paused, then try to load as much as possible. 296 // and we're paused, then try to load as much as possible.
302 if (media_has_played_ && media_is_paused_) 297 if (media_has_played_ && media_is_paused_)
303 return BufferedResourceLoader::kNeverDefer; 298 return BufferedResourceLoader::kNeverDefer;
304 299
305 // If media is currently playing or the page indicated preload=auto, 300 // If media is currently playing or the page indicated preload=auto,
306 // use threshold strategy to enable/disable deferring when the buffer 301 // use threshold strategy to enable/disable deferring when the buffer
307 // is full/depleted. 302 // is full/depleted.
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 583
589 if (!host()) 584 if (!host())
590 return; 585 return;
591 586
592 if (total_bytes_ != kPositionNotSpecified) 587 if (total_bytes_ != kPositionNotSpecified)
593 host()->SetTotalBytes(total_bytes_); 588 host()->SetTotalBytes(total_bytes_);
594 host()->SetBufferedBytes(buffered_bytes_); 589 host()->SetBufferedBytes(buffered_bytes_);
595 } 590 }
596 591
597 } // namespace webkit_media 592 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698