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

Side by Side Diff: content/browser/media/android/browser_media_player_manager.cc

Issue 1184373005: MediaCodecPlayer (stage 1 - play/pause only) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mtplayer-decoder
Patch Set: Rebased Created 5 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
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/browser/media/android/browser_media_player_manager.h" 5 #include "content/browser/media/android/browser_media_player_manager.h"
6 6
7 #include "base/android/scoped_java_ref.h" 7 #include "base/android/scoped_java_ref.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "content/browser/android/content_view_core_impl.h" 9 #include "content/browser/android/content_view_core_impl.h"
10 #include "content/browser/android/media_players_observer.h" 10 #include "content/browser/android/media_players_observer.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 return new BrowserMediaPlayerManager(rfh, audio_monitor); 128 return new BrowserMediaPlayerManager(rfh, audio_monitor);
129 } 129 }
130 130
131 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const { 131 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const {
132 return ContentViewCoreImpl::FromWebContents(web_contents()); 132 return ContentViewCoreImpl::FromWebContents(web_contents());
133 } 133 }
134 134
135 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( 135 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
136 const MediaPlayerHostMsg_Initialize_Params& media_player_params, 136 const MediaPlayerHostMsg_Initialize_Params& media_player_params,
137 bool hide_url_log, 137 bool hide_url_log,
138 MediaPlayerManager* manager,
139 BrowserDemuxerAndroid* demuxer) { 138 BrowserDemuxerAndroid* demuxer) {
140 switch (media_player_params.type) { 139 switch (media_player_params.type) {
141 case MEDIA_PLAYER_TYPE_URL: { 140 case MEDIA_PLAYER_TYPE_URL: {
142 const std::string user_agent = GetContentClient()->GetUserAgent(); 141 const std::string user_agent = GetContentClient()->GetUserAgent();
143 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( 142 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge(
144 media_player_params.player_id, 143 media_player_params.player_id,
145 media_player_params.url, 144 media_player_params.url,
146 media_player_params.first_party_for_cookies, 145 media_player_params.first_party_for_cookies,
147 user_agent, 146 user_agent,
148 hide_url_log, 147 hide_url_log,
149 manager, 148 this,
150 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 149 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
151 weak_ptr_factory_.GetWeakPtr()), 150 weak_ptr_factory_.GetWeakPtr()),
152 media_player_params.frame_url, 151 media_player_params.frame_url,
153 media_player_params.allow_credentials); 152 media_player_params.allow_credentials);
154 BrowserMediaPlayerManager* browser_media_player_manager =
155 static_cast<BrowserMediaPlayerManager*>(manager);
156 ContentViewCoreImpl* content_view_core_impl = 153 ContentViewCoreImpl* content_view_core_impl =
157 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( 154 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents(
158 browser_media_player_manager->web_contents_)); 155 web_contents_));
159 if (!content_view_core_impl) { 156 if (!content_view_core_impl) {
160 // May reach here due to prerendering. Don't extract the metadata 157 // May reach here due to prerendering. Don't extract the metadata
161 // since it is expensive. 158 // since it is expensive.
162 // TODO(qinmin): extract the metadata once the user decided to load 159 // TODO(qinmin): extract the metadata once the user decided to load
163 // the page. 160 // the page.
164 browser_media_player_manager->OnMediaMetadataChanged( 161 OnMediaMetadataChanged(
165 media_player_params.player_id, base::TimeDelta(), 0, 0, false); 162 media_player_params.player_id, base::TimeDelta(), 0, 0, false);
166 } else if (!content_view_core_impl->ShouldBlockMediaRequest( 163 } else if (!content_view_core_impl->ShouldBlockMediaRequest(
167 media_player_params.url)) { 164 media_player_params.url)) {
168 media_player_bridge->Initialize(); 165 media_player_bridge->Initialize();
169 } 166 }
170 return media_player_bridge; 167 return media_player_bridge;
171 } 168 }
172 169
173 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { 170 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: {
174 if (base::CommandLine::ForCurrentProcess()-> 171 if (base::CommandLine::ForCurrentProcess()->
175 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) { 172 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) {
176 return new MediaCodecPlayer( 173 return new MediaCodecPlayer(
177 media_player_params.player_id, 174 media_player_params.player_id,
178 manager, 175 weak_ptr_factory_.GetWeakPtr(),
179 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 176 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
180 weak_ptr_factory_.GetWeakPtr()), 177 weak_ptr_factory_.GetWeakPtr()),
181 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), 178 demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
182 media_player_params.frame_url); 179 media_player_params.frame_url);
183 } else { 180 } else {
184 return new MediaSourcePlayer( 181 return new MediaSourcePlayer(
185 media_player_params.player_id, 182 media_player_params.player_id,
186 manager, 183 this,
187 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 184 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
188 weak_ptr_factory_.GetWeakPtr()), 185 weak_ptr_factory_.GetWeakPtr()),
189 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), 186 demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
190 media_player_params.frame_url); 187 media_player_params.frame_url);
191 } 188 }
192 } 189 }
193 } 190 }
194 191
195 NOTREACHED(); 192 NOTREACHED();
196 return NULL; 193 return NULL;
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 media_player_params.demuxer_client_id > 0) 534 media_player_params.demuxer_client_id > 0)
538 << "Media source players must have positive demuxer client IDs: " 535 << "Media source players must have positive demuxer client IDs: "
539 << media_player_params.demuxer_client_id; 536 << media_player_params.demuxer_client_id;
540 537
541 RemovePlayer(media_player_params.player_id); 538 RemovePlayer(media_player_params.player_id);
542 539
543 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>( 540 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>(
544 web_contents()->GetRenderProcessHost()); 541 web_contents()->GetRenderProcessHost());
545 MediaPlayerAndroid* player = 542 MediaPlayerAndroid* player =
546 CreateMediaPlayer(media_player_params, 543 CreateMediaPlayer(media_player_params,
547
548 host->GetBrowserContext()->IsOffTheRecord(), 544 host->GetBrowserContext()->IsOffTheRecord(),
549 this,
550 host->browser_demuxer_android().get()); 545 host->browser_demuxer_android().get());
551 546
552 if (!player) 547 if (!player)
553 return; 548 return;
554 549
555 AddPlayer(player); 550 AddPlayer(player);
556 } 551 }
557 552
558 void BrowserMediaPlayerManager::OnStart(int player_id) { 553 void BrowserMediaPlayerManager::OnStart(int player_id) {
559 MediaPlayerAndroid* player = GetPlayer(player_id); 554 MediaPlayerAndroid* player = GetPlayer(player_id);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); 693 external_video_surface_container_->ReleaseExternalVideoSurface(player_id);
699 #endif // defined(VIDEO_HOLE) 694 #endif // defined(VIDEO_HOLE)
700 } 695 }
701 696
702 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { 697 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) {
703 player->Release(); 698 player->Release();
704 ReleaseMediaResources(player->player_id()); 699 ReleaseMediaResources(player->player_id());
705 } 700 }
706 701
707 } // namespace content 702 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698