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 |