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

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

Issue 2471903002: Add MediaServiceThrottler (Closed)
Patch Set: Adressed comments Created 4 years, 1 month 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
« no previous file with comments | « content/browser/media/android/media_player_renderer.h ('k') | media/base/android/BUILD.gn » ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/media_player_renderer.h" 5 #include "content/browser/media/android/media_player_renderer.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/callback_helpers.h"
9 #include "content/browser/android/scoped_surface_request_manager.h" 10 #include "content/browser/android/scoped_surface_request_manager.h"
10 #include "content/browser/media/android/media_resource_getter_impl.h" 11 #include "content/browser/media/android/media_resource_getter_impl.h"
11 #include "content/public/browser/browser_context.h" 12 #include "content/public/browser/browser_context.h"
12 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
13 #include "content/public/browser/render_process_host.h" 14 #include "content/public/browser/render_process_host.h"
14 #include "content/public/browser/storage_partition.h" 15 #include "content/public/browser/storage_partition.h"
15 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
16 #include "content/public/common/content_client.h" 17 #include "content/public/common/content_client.h"
18 #include "media/base/android/media_service_throttler.h"
17 19
18 // TODO(tguilbert): Remove this ID once MediaPlayerManager has been deleted 20 // TODO(tguilbert): Remove this ID once MediaPlayerManager has been deleted
19 // and MediaPlayerBridge updated. See comment in header file. 21 // and MediaPlayerBridge updated. See comment in header file.
20 constexpr int kUnusedAndIrrelevantPlayerId = 0; 22 constexpr int kUnusedAndIrrelevantPlayerId = 0;
21 23
22 namespace content { 24 namespace content {
23 25
24 MediaPlayerRenderer::MediaPlayerRenderer(RenderFrameHost* render_frame_host) 26 MediaPlayerRenderer::MediaPlayerRenderer(RenderFrameHost* render_frame_host)
25 : render_frame_host_(render_frame_host), 27 : render_frame_host_(render_frame_host),
26 has_error_(false), 28 has_error_(false),
27 weak_factory_(this) {} 29 weak_factory_(this) {}
28 30
29 MediaPlayerRenderer::~MediaPlayerRenderer() { 31 MediaPlayerRenderer::~MediaPlayerRenderer() {
30 CancelScopedSurfaceRequest(); 32 CancelScopedSurfaceRequest();
31 } 33 }
32 34
33 void MediaPlayerRenderer::Initialize( 35 void MediaPlayerRenderer::Initialize(
34 media::DemuxerStreamProvider* demuxer_stream_provider, 36 media::DemuxerStreamProvider* demuxer_stream_provider,
35 media::RendererClient* client, 37 media::RendererClient* client,
36 const media::PipelineStatusCB& init_cb) { 38 const media::PipelineStatusCB& init_cb) {
37 DVLOG(1) << __func__; 39 DVLOG(1) << __func__;
40
41 DCHECK_CURRENTLY_ON(BrowserThread::UI);
42
43 renderer_client_ = client;
44
38 if (demuxer_stream_provider->GetType() != 45 if (demuxer_stream_provider->GetType() !=
39 media::DemuxerStreamProvider::Type::URL) { 46 media::DemuxerStreamProvider::Type::URL) {
40 DLOG(ERROR) << "DemuxerStreamProvider is not of Type URL"; 47 DLOG(ERROR) << "DemuxerStreamProvider is not of Type URL";
41 init_cb.Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED); 48 init_cb.Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED);
42 return; 49 return;
43 } 50 }
44 51
45 media::MediaUrlParams url_params = 52 base::TimeDelta creation_delay =
46 demuxer_stream_provider->GetMediaUrlParams(); 53 media::MediaServiceThrottler::GetInstance()->GetDelayForClientCreation();
47 renderer_client_ = client; 54
55 if (creation_delay.is_zero()) {
56 CreateMediaPlayer(demuxer_stream_provider->GetMediaUrlParams(), init_cb);
57 return;
58 }
59
60 BrowserThread::PostDelayedTask(
61 BrowserThread::UI, FROM_HERE,
62 base::Bind(&MediaPlayerRenderer::CreateMediaPlayer,
63 weak_factory_.GetWeakPtr(),
64 demuxer_stream_provider->GetMediaUrlParams(), init_cb),
65 creation_delay);
66 }
67
68 void MediaPlayerRenderer::CreateMediaPlayer(
69 const media::MediaUrlParams& url_params,
70 const media::PipelineStatusCB& init_cb) {
71 DCHECK_CURRENTLY_ON(BrowserThread::UI);
48 72
49 const std::string user_agent = GetContentClient()->GetUserAgent(); 73 const std::string user_agent = GetContentClient()->GetUserAgent();
50 74
51 media_player_.reset(new media::MediaPlayerBridge( 75 media_player_.reset(new media::MediaPlayerBridge(
52 kUnusedAndIrrelevantPlayerId, url_params.media_url, 76 kUnusedAndIrrelevantPlayerId, url_params.media_url,
53 url_params.first_party_for_cookies, user_agent, 77 url_params.first_party_for_cookies, user_agent,
54 false, // hide_url_log 78 false, // hide_url_log
55 this, base::Bind(&MediaPlayerRenderer::OnDecoderResourcesReleased, 79 this, base::Bind(&MediaPlayerRenderer::OnDecoderResourcesReleased,
56 weak_factory_.GetWeakPtr()), 80 weak_factory_.GetWeakPtr()),
57 GURL(), // frame_url 81 GURL(), // frame_url
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 void MediaPlayerRenderer::CancelScopedSurfaceRequest() { 269 void MediaPlayerRenderer::CancelScopedSurfaceRequest() {
246 if (!surface_request_token_) 270 if (!surface_request_token_)
247 return; 271 return;
248 272
249 ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest( 273 ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest(
250 surface_request_token_); 274 surface_request_token_);
251 surface_request_token_ = base::UnguessableToken(); 275 surface_request_token_ = base::UnguessableToken();
252 } 276 }
253 277
254 } // namespace content 278 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/android/media_player_renderer.h ('k') | media/base/android/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698