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

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

Issue 9860027: Remove DemuxerFactory and URL parameter from Pipeline. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: again 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
« no previous file with comments | « webkit/media/buffered_data_source.h ('k') | webkit/media/buffered_data_source_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 DCHECK(initialize_cb_.is_null() && loader_.get()) 118 DCHECK(initialize_cb_.is_null() && loader_.get())
114 << "Initialize() must complete before calling HasSingleOrigin()"; 119 << "Initialize() must complete before calling HasSingleOrigin()";
115 return loader_->HasSingleOrigin(); 120 return loader_->HasSingleOrigin();
116 } 121 }
117 122
118 void BufferedDataSource::Abort() { 123 void BufferedDataSource::Abort() {
119 DCHECK(MessageLoop::current() == render_loop_); 124 DCHECK(MessageLoop::current() == render_loop_);
120 125
(...skipping 13 matching lines...) Expand all
134 139
135 render_loop_->PostTask(FROM_HERE, 140 render_loop_->PostTask(FROM_HERE,
136 base::Bind(&BufferedDataSource::CleanupTask, this)); 141 base::Bind(&BufferedDataSource::CleanupTask, this));
137 } 142 }
138 143
139 void BufferedDataSource::SetPlaybackRate(float playback_rate) { 144 void BufferedDataSource::SetPlaybackRate(float playback_rate) {
140 render_loop_->PostTask(FROM_HERE, base::Bind( 145 render_loop_->PostTask(FROM_HERE, base::Bind(
141 &BufferedDataSource::SetPlaybackRateTask, this, playback_rate)); 146 &BufferedDataSource::SetPlaybackRateTask, this, playback_rate));
142 } 147 }
143 148
144 void BufferedDataSource::SetPreload(media::Preload preload) {
145 render_loop_->PostTask(FROM_HERE, base::Bind(
146 &BufferedDataSource::SetPreloadTask, this, preload));
147 }
148
149 void BufferedDataSource::SetBitrate(int bitrate) { 149 void BufferedDataSource::SetBitrate(int bitrate) {
150 render_loop_->PostTask(FROM_HERE, base::Bind( 150 render_loop_->PostTask(FROM_HERE, base::Bind(
151 &BufferedDataSource::SetBitrateTask, this, bitrate)); 151 &BufferedDataSource::SetBitrateTask, this, bitrate));
152 } 152 }
153 153
154 ///////////////////////////////////////////////////////////////////////////// 154 /////////////////////////////////////////////////////////////////////////////
155 // media::DataSource implementation. 155 // media::DataSource implementation.
156 void BufferedDataSource::Read( 156 void BufferedDataSource::Read(
157 int64 position, int size, uint8* data, 157 int64 position, int size, uint8* data,
158 const media::DataSource::ReadCB& read_cb) { 158 const media::DataSource::ReadCB& read_cb) {
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 bool previously_paused = media_is_paused_; 270 bool previously_paused = media_is_paused_;
271 media_is_paused_ = (playback_rate == 0.0); 271 media_is_paused_ = (playback_rate == 0.0);
272 272
273 if (!media_has_played_ && previously_paused && !media_is_paused_) 273 if (!media_has_played_ && previously_paused && !media_is_paused_)
274 media_has_played_ = true; 274 media_has_played_ = true;
275 275
276 BufferedResourceLoader::DeferStrategy strategy = ChooseDeferStrategy(); 276 BufferedResourceLoader::DeferStrategy strategy = ChooseDeferStrategy();
277 loader_->UpdateDeferStrategy(strategy); 277 loader_->UpdateDeferStrategy(strategy);
278 } 278 }
279 279
280 void BufferedDataSource::SetPreloadTask(media::Preload preload) {
281 DCHECK(MessageLoop::current() == render_loop_);
282 preload_ = preload;
283 }
284
285 void BufferedDataSource::SetBitrateTask(int bitrate) { 280 void BufferedDataSource::SetBitrateTask(int bitrate) {
286 DCHECK(MessageLoop::current() == render_loop_); 281 DCHECK(MessageLoop::current() == render_loop_);
287 DCHECK(loader_.get()); 282 DCHECK(loader_.get());
288 283
289 bitrate_ = bitrate; 284 bitrate_ = bitrate;
290 loader_->SetBitrate(bitrate); 285 loader_->SetBitrate(bitrate);
291 } 286 }
292 287
293 BufferedResourceLoader::DeferStrategy 288 BufferedResourceLoader::DeferStrategy
294 BufferedDataSource::ChooseDeferStrategy() { 289 BufferedDataSource::ChooseDeferStrategy() {
295 DCHECK(MessageLoop::current() == render_loop_); 290 DCHECK(MessageLoop::current() == render_loop_);
296 // If the page indicated preload=metadata, then load exactly what is needed 291 // If the page indicated preload=metadata, then load exactly what is needed
297 // needed for starting playback. 292 // needed for starting playback.
298 if (!media_has_played_ && preload_ == media::METADATA) 293 if (!media_has_played_ && preload_ == METADATA)
299 return BufferedResourceLoader::kReadThenDefer; 294 return BufferedResourceLoader::kReadThenDefer;
300 295
301 // If the playback has started (at which point the preload value is ignored) 296 // If the playback has started (at which point the preload value is ignored)
302 // and we're paused, then try to load as much as possible. 297 // and we're paused, then try to load as much as possible.
303 if (media_has_played_ && media_is_paused_) 298 if (media_has_played_ && media_is_paused_)
304 return BufferedResourceLoader::kNeverDefer; 299 return BufferedResourceLoader::kNeverDefer;
305 300
306 // If media is currently playing or the page indicated preload=auto, 301 // If media is currently playing or the page indicated preload=auto,
307 // use threshold strategy to enable/disable deferring when the buffer 302 // use threshold strategy to enable/disable deferring when the buffer
308 // is full/depleted. 303 // is full/depleted.
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 584
590 if (!host()) 585 if (!host())
591 return; 586 return;
592 587
593 if (total_bytes_ != kPositionNotSpecified) 588 if (total_bytes_ != kPositionNotSpecified)
594 host()->SetTotalBytes(total_bytes_); 589 host()->SetTotalBytes(total_bytes_);
595 host()->SetBufferedBytes(buffered_bytes_); 590 host()->SetBufferedBytes(buffered_bytes_);
596 } 591 }
597 592
598 } // namespace webkit_media 593 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/buffered_data_source.h ('k') | webkit/media/buffered_data_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698