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

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

Issue 2556983002: Fix SetStreamTextureSize crash (Closed)
Patch Set: Addressed comments Created 4 years 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 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/renderer/media/android/media_player_renderer_client.h" 5 #include "content/renderer/media/android/media_player_renderer_client.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 8
9 namespace content { 9 namespace content {
10 10
(...skipping 27 matching lines...) Expand all
38 // any size information from the MediaPlayer yet. 38 // any size information from the MediaPlayer yet.
39 // The size will be automatically updated in OnVideoNaturalSizeChange() once 39 // The size will be automatically updated in OnVideoNaturalSizeChange() once
40 // we parse the media's metadata. 40 // we parse the media's metadata.
41 // Unretained is safe here because |stream_texture_wrapper_| resets the 41 // Unretained is safe here because |stream_texture_wrapper_| resets the
42 // Closure it has before destroying itself on |compositor_task_runner_|, 42 // Closure it has before destroying itself on |compositor_task_runner_|,
43 // and |this| is garanteed to live until the Closure has been reset. 43 // and |this| is garanteed to live until the Closure has been reset.
44 stream_texture_wrapper_->Initialize( 44 stream_texture_wrapper_->Initialize(
45 base::Bind(&MediaPlayerRendererClient::OnFrameAvailable, 45 base::Bind(&MediaPlayerRendererClient::OnFrameAvailable,
46 base::Unretained(this)), 46 base::Unretained(this)),
47 gfx::Size(1, 1), compositor_task_runner_, 47 gfx::Size(1, 1), compositor_task_runner_,
48 base::Bind(&MediaPlayerRendererClient::InitializeRemoteRenderer, 48 base::Bind(&MediaPlayerRendererClient::OnStreamTextureWrapperInitialized,
49 weak_factory_.GetWeakPtr(), demuxer_stream_provider)); 49 weak_factory_.GetWeakPtr(), demuxer_stream_provider));
50 } 50 }
51 51
52 void MediaPlayerRendererClient::InitializeRemoteRenderer( 52 void MediaPlayerRendererClient::OnStreamTextureWrapperInitialized(
53 media::DemuxerStreamProvider* demuxer_stream_provider) { 53 media::DemuxerStreamProvider* demuxer_stream_provider,
54 bool success) {
54 DCHECK(media_task_runner_->BelongsToCurrentThread()); 55 DCHECK(media_task_runner_->BelongsToCurrentThread());
56 if (!success) {
57 base::ResetAndReturn(&init_cb_).Run(
58 media::PipelineStatus::PIPELINE_ERROR_INITIALIZATION_FAILED);
59 return;
60 }
61
55 mojo_renderer_->Initialize( 62 mojo_renderer_->Initialize(
56 demuxer_stream_provider, this, 63 demuxer_stream_provider, this,
57 base::Bind(&MediaPlayerRendererClient::CompleteInitialization, 64 base::Bind(&MediaPlayerRendererClient::OnRemoteRendererInitialized,
58 weak_factory_.GetWeakPtr())); 65 weak_factory_.GetWeakPtr()));
59 } 66 }
60 67
61 void MediaPlayerRendererClient::OnScopedSurfaceRequested( 68 void MediaPlayerRendererClient::OnScopedSurfaceRequested(
62 const base::UnguessableToken& request_token) { 69 const base::UnguessableToken& request_token) {
63 DCHECK(request_token); 70 DCHECK(request_token);
64 stream_texture_wrapper_->ForwardStreamTextureForSurfaceRequest(request_token); 71 stream_texture_wrapper_->ForwardStreamTextureForSurfaceRequest(request_token);
65 } 72 }
66 73
67 void MediaPlayerRendererClient::CompleteInitialization( 74 void MediaPlayerRendererClient::OnRemoteRendererInitialized(
68 media::PipelineStatus status) { 75 media::PipelineStatus status) {
69 DCHECK(media_task_runner_->BelongsToCurrentThread()); 76 DCHECK(media_task_runner_->BelongsToCurrentThread());
70 DCHECK(!init_cb_.is_null()); 77 DCHECK(!init_cb_.is_null());
71 78
72 // TODO(tguilbert): Measure and smooth out the initialization's ordering to 79 // TODO(tguilbert): Measure and smooth out the initialization's ordering to
73 // have the lowest total initialization time. 80 // have the lowest total initialization time.
74 mojo_renderer_->InitiateScopedSurfaceRequest( 81 mojo_renderer_->InitiateScopedSurfaceRequest(
75 base::Bind(&MediaPlayerRendererClient::OnScopedSurfaceRequested, 82 base::Bind(&MediaPlayerRendererClient::OnScopedSurfaceRequested,
76 weak_factory_.GetWeakPtr())); 83 weak_factory_.GetWeakPtr()));
77 84
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 146
140 void MediaPlayerRendererClient::OnVideoOpacityChange(bool opaque) { 147 void MediaPlayerRendererClient::OnVideoOpacityChange(bool opaque) {
141 client_->OnVideoOpacityChange(opaque); 148 client_->OnVideoOpacityChange(opaque);
142 } 149 }
143 150
144 void MediaPlayerRendererClient::OnDurationChange(base::TimeDelta duration) { 151 void MediaPlayerRendererClient::OnDurationChange(base::TimeDelta duration) {
145 client_->OnDurationChange(duration); 152 client_->OnDurationChange(duration);
146 } 153 }
147 154
148 } // namespace content 155 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698