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

Side by Side Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 496683002: Updating buffered duration of local resource in android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/renderer/media/android/webmediaplayer_android.h" 5 #include "content/renderer/media/android/webmediaplayer_android.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/android/build_info.h" 9 #include "base/android/build_info.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 stream_texture_factory_(factory), 139 stream_texture_factory_(factory),
140 needs_external_surface_(false), 140 needs_external_surface_(false),
141 video_frame_provider_client_(NULL), 141 video_frame_provider_client_(NULL),
142 pending_playback_(false), 142 pending_playback_(false),
143 player_type_(MEDIA_PLAYER_TYPE_URL), 143 player_type_(MEDIA_PLAYER_TYPE_URL),
144 current_time_(0), 144 current_time_(0),
145 is_remote_(false), 145 is_remote_(false),
146 media_log_(media_log), 146 media_log_(media_log),
147 web_cdm_(NULL), 147 web_cdm_(NULL),
148 allow_stored_credentials_(false), 148 allow_stored_credentials_(false),
149 is_local_resource_(false),
149 weak_factory_(this) { 150 weak_factory_(this) {
150 DCHECK(player_manager_); 151 DCHECK(player_manager_);
151 DCHECK(cdm_manager_); 152 DCHECK(cdm_manager_);
152 153
153 DCHECK(main_thread_checker_.CalledOnValidThread()); 154 DCHECK(main_thread_checker_.CalledOnValidThread());
154 155
155 player_id_ = player_manager_->RegisterMediaPlayer(this); 156 player_id_ = player_manager_->RegisterMediaPlayer(this);
156 157
157 #if defined(VIDEO_HOLE) 158 #if defined(VIDEO_HOLE)
158 force_use_overlay_embedded_video_ = CommandLine::ForCurrentProcess()-> 159 force_use_overlay_embedded_video_ = CommandLine::ForCurrentProcess()->
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 player_type_ = MEDIA_PLAYER_TYPE_MEDIA_SOURCE; 210 player_type_ = MEDIA_PLAYER_TYPE_MEDIA_SOURCE;
210 break; 211 break;
211 212
212 case LoadTypeMediaStream: 213 case LoadTypeMediaStream:
213 CHECK(false) << "WebMediaPlayerAndroid doesn't support MediaStream on " 214 CHECK(false) << "WebMediaPlayerAndroid doesn't support MediaStream on "
214 "this platform"; 215 "this platform";
215 return; 216 return;
216 } 217 }
217 218
218 url_ = url; 219 url_ = url;
220 is_local_resource_ = url_.SchemeIsFile() || url_.SchemeIs("blob");
amogh.bihani 2014/08/21 09:06:31 Ah! sorry I'll make it to SchemeIsBlob in next PS.
qinmin 2014/08/21 16:43:07 I think you should also check whether the address
219 int demuxer_client_id = 0; 221 int demuxer_client_id = 0;
220 if (player_type_ != MEDIA_PLAYER_TYPE_URL) { 222 if (player_type_ != MEDIA_PLAYER_TYPE_URL) {
221 RendererDemuxerAndroid* demuxer = 223 RendererDemuxerAndroid* demuxer =
222 RenderThreadImpl::current()->renderer_demuxer(); 224 RenderThreadImpl::current()->renderer_demuxer();
223 demuxer_client_id = demuxer->GetNextDemuxerClientID(); 225 demuxer_client_id = demuxer->GetNextDemuxerClientID();
224 226
225 media_source_delegate_.reset(new MediaSourceDelegate( 227 media_source_delegate_.reset(new MediaSourceDelegate(
226 demuxer, demuxer_client_id, media_loop_, media_log_)); 228 demuxer, demuxer_client_id, media_loop_, media_log_));
227 229
228 if (player_type_ == MEDIA_PLAYER_TYPE_MEDIA_SOURCE) { 230 if (player_type_ == MEDIA_PLAYER_TYPE_MEDIA_SOURCE) {
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 return media_source_delegate_->VideoDecodedByteCount(); 674 return media_source_delegate_->VideoDecodedByteCount();
673 NOTIMPLEMENTED(); 675 NOTIMPLEMENTED();
674 return 0; 676 return 0;
675 } 677 }
676 678
677 void WebMediaPlayerAndroid::OnMediaMetadataChanged( 679 void WebMediaPlayerAndroid::OnMediaMetadataChanged(
678 const base::TimeDelta& duration, int width, int height, bool success) { 680 const base::TimeDelta& duration, int width, int height, bool success) {
679 DCHECK(main_thread_checker_.CalledOnValidThread()); 681 DCHECK(main_thread_checker_.CalledOnValidThread());
680 bool need_to_signal_duration_changed = false; 682 bool need_to_signal_duration_changed = false;
681 683
682 if (url_.SchemeIs("file")) 684 if (is_local_resource_)
683 UpdateNetworkState(WebMediaPlayer::NetworkStateLoaded); 685 UpdateNetworkState(WebMediaPlayer::NetworkStateLoaded);
684 686
685 // Update duration, if necessary, prior to ready state updates that may 687 // Update duration, if necessary, prior to ready state updates that may
686 // cause duration() query. 688 // cause duration() query.
687 if (!ignore_metadata_duration_change_ && duration_ != duration) { 689 if (!ignore_metadata_duration_change_ && duration_ != duration) {
688 duration_ = duration; 690 duration_ = duration;
689 691
690 // Client readyState transition from HAVE_NOTHING to HAVE_METADATA 692 // Client readyState transition from HAVE_NOTHING to HAVE_METADATA
691 // already triggers a durationchanged event. If this is a different 693 // already triggers a durationchanged event. If this is a different
692 // transition, remember to signal durationchanged. 694 // transition, remember to signal durationchanged.
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 832
831 // TODO(qinmin): This is a hack. We need the media element to stop showing the 833 // TODO(qinmin): This is a hack. We need the media element to stop showing the
832 // poster image by forcing it to call setDisplayMode(video). Should move the 834 // poster image by forcing it to call setDisplayMode(video). Should move the
833 // logic into HTMLMediaElement.cpp. 835 // logic into HTMLMediaElement.cpp.
834 client_->timeChanged(); 836 client_->timeChanged();
835 } 837 }
836 838
837 void WebMediaPlayerAndroid::OnTimeUpdate(const base::TimeDelta& current_time) { 839 void WebMediaPlayerAndroid::OnTimeUpdate(const base::TimeDelta& current_time) {
838 DCHECK(main_thread_checker_.CalledOnValidThread()); 840 DCHECK(main_thread_checker_.CalledOnValidThread());
839 current_time_ = current_time.InSecondsF(); 841 current_time_ = current_time.InSecondsF();
842 if (is_local_resource_ && current_time_ <= duration())
843 buffered_[0].end = current_time_;
840 } 844 }
841 845
842 void WebMediaPlayerAndroid::OnConnectedToRemoteDevice( 846 void WebMediaPlayerAndroid::OnConnectedToRemoteDevice(
843 const std::string& remote_playback_message) { 847 const std::string& remote_playback_message) {
844 DCHECK(main_thread_checker_.CalledOnValidThread()); 848 DCHECK(main_thread_checker_.CalledOnValidThread());
845 DCHECK(!media_source_delegate_); 849 DCHECK(!media_source_delegate_);
846 DrawRemotePlaybackText(remote_playback_message); 850 DrawRemotePlaybackText(remote_playback_message);
847 is_remote_ = true; 851 is_remote_ = true;
848 SetNeedsEstablishPeer(false); 852 SetNeedsEstablishPeer(false);
849 } 853 }
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
1721 player_manager_->EnterFullscreen(player_id_, frame_); 1725 player_manager_->EnterFullscreen(player_id_, frame_);
1722 SetNeedsEstablishPeer(false); 1726 SetNeedsEstablishPeer(false);
1723 } 1727 }
1724 } 1728 }
1725 1729
1726 bool WebMediaPlayerAndroid::canEnterFullscreen() const { 1730 bool WebMediaPlayerAndroid::canEnterFullscreen() const {
1727 return player_manager_->CanEnterFullscreen(frame_); 1731 return player_manager_->CanEnterFullscreen(frame_);
1728 } 1732 }
1729 1733
1730 } // namespace content 1734 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/android/webmediaplayer_android.h ('k') | media/base/android/media_player_bridge.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698