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

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

Issue 1128383003: Implementation of MediaCodecPlayer stage 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed some comments Created 5 years, 7 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 return new BrowserMediaPlayerManager(rfh, audio_monitor); 72 return new BrowserMediaPlayerManager(rfh, audio_monitor);
73 } 73 }
74 74
75 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const { 75 ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const {
76 return ContentViewCoreImpl::FromWebContents(web_contents()); 76 return ContentViewCoreImpl::FromWebContents(web_contents());
77 } 77 }
78 78
79 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( 79 MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
80 const MediaPlayerHostMsg_Initialize_Params& media_player_params, 80 const MediaPlayerHostMsg_Initialize_Params& media_player_params,
81 bool hide_url_log, 81 bool hide_url_log,
82 MediaPlayerManager* manager,
83 BrowserDemuxerAndroid* demuxer) { 82 BrowserDemuxerAndroid* demuxer) {
84 switch (media_player_params.type) { 83 switch (media_player_params.type) {
85 case MEDIA_PLAYER_TYPE_URL: { 84 case MEDIA_PLAYER_TYPE_URL: {
86 const std::string user_agent = GetContentClient()->GetUserAgent(); 85 const std::string user_agent = GetContentClient()->GetUserAgent();
87 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge( 86 MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge(
88 media_player_params.player_id, 87 media_player_params.player_id,
89 media_player_params.url, 88 media_player_params.url,
90 media_player_params.first_party_for_cookies, 89 media_player_params.first_party_for_cookies,
91 user_agent, 90 user_agent,
92 hide_url_log, 91 hide_url_log,
93 manager, 92 this,
94 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 93 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
95 weak_ptr_factory_.GetWeakPtr()), 94 weak_ptr_factory_.GetWeakPtr()),
96 media_player_params.frame_url, 95 media_player_params.frame_url,
97 media_player_params.allow_credentials); 96 media_player_params.allow_credentials);
98 BrowserMediaPlayerManager* browser_media_player_manager =
99 static_cast<BrowserMediaPlayerManager*>(manager);
100 ContentViewCoreImpl* content_view_core_impl = 97 ContentViewCoreImpl* content_view_core_impl =
101 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents( 98 static_cast<ContentViewCoreImpl*>(ContentViewCore::FromWebContents(
102 browser_media_player_manager->web_contents_)); 99 web_contents_));
103 if (!content_view_core_impl) { 100 if (!content_view_core_impl) {
104 // May reach here due to prerendering. Don't extract the metadata 101 // May reach here due to prerendering. Don't extract the metadata
105 // since it is expensive. 102 // since it is expensive.
106 // TODO(qinmin): extract the metadata once the user decided to load 103 // TODO(qinmin): extract the metadata once the user decided to load
107 // the page. 104 // the page.
108 browser_media_player_manager->OnMediaMetadataChanged( 105 OnMediaMetadataChanged(
109 media_player_params.player_id, base::TimeDelta(), 0, 0, false); 106 media_player_params.player_id, base::TimeDelta(), 0, 0, false);
110 } else if (!content_view_core_impl->ShouldBlockMediaRequest( 107 } else if (!content_view_core_impl->ShouldBlockMediaRequest(
111 media_player_params.url)) { 108 media_player_params.url)) {
112 media_player_bridge->Initialize(); 109 media_player_bridge->Initialize();
113 } 110 }
114 return media_player_bridge; 111 return media_player_bridge;
115 } 112 }
116 113
117 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: { 114 case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: {
118 if (base::CommandLine::ForCurrentProcess()-> 115 if (base::CommandLine::ForCurrentProcess()->
119 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) { 116 HasSwitch(switches::kEnableMediaThreadForMediaPlayback)) {
120 return new MediaCodecPlayer( 117 return new MediaCodecPlayer(
121 media_player_params.player_id, 118 media_player_params.player_id,
122 manager, 119 weak_ptr_factory_.GetWeakPtr(),
123 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 120 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
124 weak_ptr_factory_.GetWeakPtr()), 121 weak_ptr_factory_.GetWeakPtr()),
125 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), 122 demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
126 media_player_params.frame_url); 123 media_player_params.frame_url);
127 } else { 124 } else {
128 return new MediaSourcePlayer( 125 return new MediaSourcePlayer(
129 media_player_params.player_id, 126 media_player_params.player_id,
130 manager, 127 this,
131 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested, 128 base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesRequested,
132 weak_ptr_factory_.GetWeakPtr()), 129 weak_ptr_factory_.GetWeakPtr()),
133 demuxer->CreateDemuxer(media_player_params.demuxer_client_id), 130 demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
134 media_player_params.frame_url); 131 media_player_params.frame_url);
135 } 132 }
136 } 133 }
137 } 134 }
138 135
139 NOTREACHED(); 136 NOTREACHED();
140 return NULL; 137 return NULL;
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 media_player_params.demuxer_client_id > 0) 457 media_player_params.demuxer_client_id > 0)
461 << "Media source players must have positive demuxer client IDs: " 458 << "Media source players must have positive demuxer client IDs: "
462 << media_player_params.demuxer_client_id; 459 << media_player_params.demuxer_client_id;
463 460
464 RemovePlayer(media_player_params.player_id); 461 RemovePlayer(media_player_params.player_id);
465 462
466 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>( 463 RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>(
467 web_contents()->GetRenderProcessHost()); 464 web_contents()->GetRenderProcessHost());
468 MediaPlayerAndroid* player = 465 MediaPlayerAndroid* player =
469 CreateMediaPlayer(media_player_params, 466 CreateMediaPlayer(media_player_params,
470
471 host->GetBrowserContext()->IsOffTheRecord(), 467 host->GetBrowserContext()->IsOffTheRecord(),
472 this, 468 //this,
qinmin 2015/05/26 00:49:19 just drop this line
Tima Vaisburd 2015/05/28 02:00:34 Done.
473 host->browser_demuxer_android().get()); 469 host->browser_demuxer_android().get());
474 470
475 if (!player) 471 if (!player)
476 return; 472 return;
477 473
478 AddPlayer(player); 474 AddPlayer(player);
479 } 475 }
480 476
481 void BrowserMediaPlayerManager::OnStart(int player_id) { 477 void BrowserMediaPlayerManager::OnStart(int player_id) {
482 MediaPlayerAndroid* player = GetPlayer(player_id); 478 MediaPlayerAndroid* player = GetPlayer(player_id);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 external_video_surface_container_->ReleaseExternalVideoSurface(player_id); 615 external_video_surface_container_->ReleaseExternalVideoSurface(player_id);
620 #endif // defined(VIDEO_HOLE) 616 #endif // defined(VIDEO_HOLE)
621 } 617 }
622 618
623 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) { 619 void BrowserMediaPlayerManager::ReleasePlayer(MediaPlayerAndroid* player) {
624 player->Release(); 620 player->Release();
625 ReleaseMediaResources(player->player_id()); 621 ReleaseMediaResources(player->player_id());
626 } 622 }
627 623
628 } // namespace content 624 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698