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

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

Issue 10558011: Fix ChunkDemuxer so it properly outputs buffered ranges. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address more CR comments and added an end of stream test case. Created 8 years, 6 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 | « media/filters/source_buffer_stream_unittest.cc ('k') | webkit/media/webmediaplayer_proxy.h » ('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/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
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
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
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
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
OLDNEW
« no previous file with comments | « media/filters/source_buffer_stream_unittest.cc ('k') | webkit/media/webmediaplayer_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698