| OLD | NEW |
| 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/webmediaplayer_impl.h" | 5 #include "webkit/media/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 84 |
| 85 #define COMPILE_ASSERT_MATCHING_ENUM(name) \ | 85 #define COMPILE_ASSERT_MATCHING_ENUM(name) \ |
| 86 COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayer::CORSMode ## name) == \ | 86 COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayer::CORSMode ## name) == \ |
| 87 static_cast<int>(BufferedResourceLoader::k ## name), \ | 87 static_cast<int>(BufferedResourceLoader::k ## name), \ |
| 88 mismatching_enums) | 88 mismatching_enums) |
| 89 COMPILE_ASSERT_MATCHING_ENUM(Unspecified); | 89 COMPILE_ASSERT_MATCHING_ENUM(Unspecified); |
| 90 COMPILE_ASSERT_MATCHING_ENUM(Anonymous); | 90 COMPILE_ASSERT_MATCHING_ENUM(Anonymous); |
| 91 COMPILE_ASSERT_MATCHING_ENUM(UseCredentials); | 91 COMPILE_ASSERT_MATCHING_ENUM(UseCredentials); |
| 92 #undef COMPILE_ASSERT_MATCHING_ENUM | 92 #undef COMPILE_ASSERT_MATCHING_ENUM |
| 93 | 93 |
| 94 static WebKit::WebTimeRanges ConvertToWebTimeRanges( |
| 95 const media::Ranges<base::TimeDelta>& ranges) { |
| 96 WebKit::WebTimeRanges result(ranges.size()); |
| 97 for (size_t i = 0; i < ranges.size(); i++) { |
| 98 result[i].start = ranges.start(i).InSecondsF(); |
| 99 result[i].end = ranges.end(i).InSecondsF(); |
| 100 } |
| 101 return result; |
| 102 } |
| 103 |
| 94 WebMediaPlayerImpl::WebMediaPlayerImpl( | 104 WebMediaPlayerImpl::WebMediaPlayerImpl( |
| 95 WebKit::WebFrame* frame, | 105 WebKit::WebFrame* frame, |
| 96 WebKit::WebMediaPlayerClient* client, | 106 WebKit::WebMediaPlayerClient* client, |
| 97 base::WeakPtr<WebMediaPlayerDelegate> delegate, | 107 base::WeakPtr<WebMediaPlayerDelegate> delegate, |
| 98 media::FilterCollection* collection, | 108 media::FilterCollection* collection, |
| 99 WebKit::WebAudioSourceProvider* audio_source_provider, | 109 WebKit::WebAudioSourceProvider* audio_source_provider, |
| 100 media::MessageLoopFactory* message_loop_factory, | 110 media::MessageLoopFactory* message_loop_factory, |
| 101 MediaStreamClient* media_stream_client, | 111 MediaStreamClient* media_stream_client, |
| 102 media::MediaLog* media_log) | 112 media::MediaLog* media_log) |
| 103 : frame_(frame), | 113 : frame_(frame), |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 return network_state_; | 474 return network_state_; |
| 465 } | 475 } |
| 466 | 476 |
| 467 WebMediaPlayer::ReadyState WebMediaPlayerImpl::readyState() const { | 477 WebMediaPlayer::ReadyState WebMediaPlayerImpl::readyState() const { |
| 468 DCHECK_EQ(main_loop_, MessageLoop::current()); | 478 DCHECK_EQ(main_loop_, MessageLoop::current()); |
| 469 return ready_state_; | 479 return ready_state_; |
| 470 } | 480 } |
| 471 | 481 |
| 472 const WebKit::WebTimeRanges& WebMediaPlayerImpl::buffered() { | 482 const WebKit::WebTimeRanges& WebMediaPlayerImpl::buffered() { |
| 473 DCHECK_EQ(main_loop_, MessageLoop::current()); | 483 DCHECK_EQ(main_loop_, MessageLoop::current()); |
| 474 media::Ranges<base::TimeDelta> buffered_time_ranges = | 484 WebKit::WebTimeRanges web_ranges( |
| 475 pipeline_->GetBufferedTimeRanges(); | 485 ConvertToWebTimeRanges(pipeline_->GetBufferedTimeRanges())); |
| 476 WebKit::WebTimeRanges web_ranges(buffered_time_ranges.size()); | |
| 477 for (size_t i = 0; i < buffered_time_ranges.size(); ++i) { | |
| 478 web_ranges[i].start = buffered_time_ranges.start(i).InSecondsF(); | |
| 479 web_ranges[i].end = buffered_time_ranges.end(i).InSecondsF(); | |
| 480 } | |
| 481 buffered_.swap(web_ranges); | 486 buffered_.swap(web_ranges); |
| 482 return buffered_; | 487 return buffered_; |
| 483 } | 488 } |
| 484 | 489 |
| 485 float WebMediaPlayerImpl::maxTimeSeekable() const { | 490 float WebMediaPlayerImpl::maxTimeSeekable() const { |
| 486 DCHECK_EQ(main_loop_, MessageLoop::current()); | 491 DCHECK_EQ(main_loop_, MessageLoop::current()); |
| 487 | 492 |
| 488 // We don't support seeking in streaming media. | 493 // We don't support seeking in streaming media. |
| 489 if (proxy_ && proxy_->data_source() && proxy_->data_source()->IsStreaming()) | 494 if (proxy_ && proxy_->data_source() && proxy_->data_source()->IsStreaming()) |
| 490 return 0.0f; | 495 return 0.0f; |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 } | 654 } |
| 650 | 655 |
| 651 bool WebMediaPlayerImpl::sourceRemoveId(const WebKit::WebString& id) { | 656 bool WebMediaPlayerImpl::sourceRemoveId(const WebKit::WebString& id) { |
| 652 DCHECK(!id.isEmpty()); | 657 DCHECK(!id.isEmpty()); |
| 653 proxy_->DemuxerRemoveId(id.utf8().data()); | 658 proxy_->DemuxerRemoveId(id.utf8().data()); |
| 654 return true; | 659 return true; |
| 655 } | 660 } |
| 656 | 661 |
| 657 WebKit::WebTimeRanges WebMediaPlayerImpl::sourceBuffered( | 662 WebKit::WebTimeRanges WebMediaPlayerImpl::sourceBuffered( |
| 658 const WebKit::WebString& id) { | 663 const WebKit::WebString& id) { |
| 659 media::ChunkDemuxer::Ranges buffered_ranges; | 664 return ConvertToWebTimeRanges(proxy_->DemuxerBufferedRange(id.utf8().data())); |
| 660 if (!proxy_->DemuxerBufferedRange(id.utf8().data(), &buffered_ranges)) | |
| 661 return WebKit::WebTimeRanges(); | |
| 662 | |
| 663 WebKit::WebTimeRanges ranges(buffered_ranges.size()); | |
| 664 for (size_t i = 0; i < buffered_ranges.size(); i++) { | |
| 665 ranges[i].start = buffered_ranges[i].first.InSecondsF(); | |
| 666 ranges[i].end = buffered_ranges[i].second.InSecondsF(); | |
| 667 } | |
| 668 return ranges; | |
| 669 } | 665 } |
| 670 | 666 |
| 671 bool WebMediaPlayerImpl::sourceAppend(const unsigned char* data, | 667 bool WebMediaPlayerImpl::sourceAppend(const unsigned char* data, |
| 672 unsigned length) { | 668 unsigned length) { |
| 673 return sourceAppend(WebKit::WebString::fromUTF8("DefaultSourceId"), | 669 return sourceAppend(WebKit::WebString::fromUTF8("DefaultSourceId"), |
| 674 data, length); | 670 data, length); |
| 675 } | 671 } |
| 676 | 672 |
| 677 bool WebMediaPlayerImpl::sourceAppend(const WebKit::WebString& id, | 673 bool WebMediaPlayerImpl::sourceAppend(const WebKit::WebString& id, |
| 678 const unsigned char* data, | 674 const unsigned char* data, |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1021 return audio_source_provider_; | 1017 return audio_source_provider_; |
| 1022 } | 1018 } |
| 1023 | 1019 |
| 1024 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() { | 1020 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() { |
| 1025 DCHECK_EQ(main_loop_, MessageLoop::current()); | 1021 DCHECK_EQ(main_loop_, MessageLoop::current()); |
| 1026 incremented_externally_allocated_memory_ = true; | 1022 incremented_externally_allocated_memory_ = true; |
| 1027 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory); | 1023 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory); |
| 1028 } | 1024 } |
| 1029 | 1025 |
| 1030 } // namespace webkit_media | 1026 } // namespace webkit_media |
| OLD | NEW |