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

Side by Side Diff: media/base/pipeline_impl.cc

Issue 8661002: Fire CanPlayThrough immediately for local and streaming media files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // TODO(scherkus): clean up PipelineImpl... too many crazy function names, 5 // TODO(scherkus): clean up PipelineImpl... too many crazy function names,
6 // potential deadlocks, etc... 6 // potential deadlocks, etc...
7 7
8 #include "media/base/pipeline_impl.h" 8 #include "media/base/pipeline_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 } 302 }
303 303
304 void PipelineImpl::GetNaturalVideoSize(gfx::Size* out_size) const { 304 void PipelineImpl::GetNaturalVideoSize(gfx::Size* out_size) const {
305 CHECK(out_size); 305 CHECK(out_size);
306 base::AutoLock auto_lock(lock_); 306 base::AutoLock auto_lock(lock_);
307 *out_size = natural_size_; 307 *out_size = natural_size_;
308 } 308 }
309 309
310 bool PipelineImpl::IsStreaming() const { 310 bool PipelineImpl::IsStreaming() const {
311 base::AutoLock auto_lock(lock_); 311 base::AutoLock auto_lock(lock_);
312 return streaming_; 312 return streaming_ || media_stream_;
313 } 313 }
314 314
315 bool PipelineImpl::IsLoaded() const { 315 bool PipelineImpl::IsLoaded() const {
316 base::AutoLock auto_lock(lock_); 316 base::AutoLock auto_lock(lock_);
317 return loaded_; 317 return loaded_;
318 } 318 }
319 319
320 PipelineStatistics PipelineImpl::GetStatistics() const { 320 PipelineStatistics PipelineImpl::GetStatistics() const {
321 base::AutoLock auto_lock(lock_); 321 base::AutoLock auto_lock(lock_);
322 return statistics_; 322 return statistics_;
(...skipping 28 matching lines...) Expand all
351 running_ = false; 351 running_ = false;
352 stop_pending_ = false; 352 stop_pending_ = false;
353 seek_pending_ = false; 353 seek_pending_ = false;
354 tearing_down_ = false; 354 tearing_down_ = false;
355 error_caused_teardown_ = false; 355 error_caused_teardown_ = false;
356 playback_rate_change_pending_ = false; 356 playback_rate_change_pending_ = false;
357 duration_ = kZero; 357 duration_ = kZero;
358 buffered_time_ = kZero; 358 buffered_time_ = kZero;
359 buffered_bytes_ = 0; 359 buffered_bytes_ = 0;
360 streaming_ = false; 360 streaming_ = false;
361 media_stream_ = false;
361 loaded_ = false; 362 loaded_ = false;
362 total_bytes_ = 0; 363 total_bytes_ = 0;
363 natural_size_.SetSize(0, 0); 364 natural_size_.SetSize(0, 0);
364 volume_ = 1.0f; 365 volume_ = 1.0f;
365 preload_ = AUTO; 366 preload_ = AUTO;
366 playback_rate_ = 0.0f; 367 playback_rate_ = 0.0f;
367 pending_playback_rate_ = 0.0f; 368 pending_playback_rate_ = 0.0f;
368 status_ = PIPELINE_OK; 369 status_ = PIPELINE_OK;
369 has_audio_ = false; 370 has_audio_ = false;
370 has_video_ = false; 371 has_video_ = false;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 541
541 void PipelineImpl::SetNaturalVideoSize(const gfx::Size& size) { 542 void PipelineImpl::SetNaturalVideoSize(const gfx::Size& size) {
542 DCHECK(IsRunning()); 543 DCHECK(IsRunning());
543 media_log_->AddEvent(media_log_->CreateVideoSizeSetEvent( 544 media_log_->AddEvent(media_log_->CreateVideoSizeSetEvent(
544 size.width(), size.height())); 545 size.width(), size.height()));
545 546
546 base::AutoLock auto_lock(lock_); 547 base::AutoLock auto_lock(lock_);
547 natural_size_ = size; 548 natural_size_ = size;
548 } 549 }
549 550
551 void PipelineImpl::SetMediaStream(bool is_media_stream) {
552 base::AutoLock auto_lock(lock_);
553 media_stream_ = is_media_stream;
554 download_rate_monitor_.set_media_stream(media_stream_);
555 }
556
550 void PipelineImpl::SetStreaming(bool streaming) { 557 void PipelineImpl::SetStreaming(bool streaming) {
551 DCHECK(IsRunning()); 558 DCHECK(IsRunning());
552 media_log_->AddEvent( 559 media_log_->AddEvent(
553 media_log_->CreateBooleanEvent( 560 media_log_->CreateBooleanEvent(
554 MediaLogEvent::STREAMING_SET, "streaming", streaming)); 561 MediaLogEvent::STREAMING_SET, "streaming", streaming));
555 562
556 base::AutoLock auto_lock(lock_); 563 base::AutoLock auto_lock(lock_);
557 streaming_ = streaming; 564 streaming_ = streaming;
565 download_rate_monitor_.set_streaming(streaming_);
558 } 566 }
559 567
560 void PipelineImpl::NotifyEnded() { 568 void PipelineImpl::NotifyEnded() {
561 DCHECK(IsRunning()); 569 DCHECK(IsRunning());
562 message_loop_->PostTask(FROM_HERE, 570 message_loop_->PostTask(FROM_HERE,
563 base::Bind(&PipelineImpl::NotifyEndedTask, this)); 571 base::Bind(&PipelineImpl::NotifyEndedTask, this));
564 media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::ENDED)); 572 media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::ENDED));
565 } 573 }
566 574
567 void PipelineImpl::SetLoaded(bool loaded) { 575 void PipelineImpl::SetLoaded(bool loaded) {
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 message_loop_->PostTask(FROM_HERE, 1439 message_loop_->PostTask(FROM_HERE,
1432 base::Bind(&PipelineImpl::NotifyCanPlayThrough, this)); 1440 base::Bind(&PipelineImpl::NotifyCanPlayThrough, this));
1433 } 1441 }
1434 1442
1435 void PipelineImpl::NotifyCanPlayThrough() { 1443 void PipelineImpl::NotifyCanPlayThrough() {
1436 DCHECK_EQ(MessageLoop::current(), message_loop_); 1444 DCHECK_EQ(MessageLoop::current(), message_loop_);
1437 NotifyNetworkEventTask(CAN_PLAY_THROUGH); 1445 NotifyNetworkEventTask(CAN_PLAY_THROUGH);
1438 } 1446 }
1439 1447
1440 } // namespace media 1448 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698