OLD | NEW |
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 |
11 MediaPlayerRendererClient::MediaPlayerRendererClient( | 11 MediaPlayerRendererClient::MediaPlayerRendererClient( |
12 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, | 12 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, |
13 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, | 13 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, |
14 media::MojoRenderer* mojo_renderer, | 14 media::MojoRenderer* mojo_renderer, |
15 media::ScopedStreamTextureWrapper stream_texture_wrapper, | 15 media::ScopedStreamTextureWrapper stream_texture_wrapper, |
16 media::VideoRendererSink* sink) | 16 media::VideoRendererSink* sink) |
17 : mojo_renderer_(mojo_renderer), | 17 : mojo_renderer_(mojo_renderer), |
18 stream_texture_wrapper_(std::move(stream_texture_wrapper)), | 18 stream_texture_wrapper_(std::move(stream_texture_wrapper)), |
19 client_(nullptr), | 19 client_(nullptr), |
20 sink_(sink), | 20 sink_(sink), |
21 media_task_runner_(std::move(media_task_runner)), | 21 media_task_runner_(std::move(media_task_runner)), |
22 compositor_task_runner_(std::move(compositor_task_runner)), | 22 compositor_task_runner_(std::move(compositor_task_runner)), |
23 weak_factory_(this) {} | 23 weak_factory_(this) {} |
24 | 24 |
25 MediaPlayerRendererClient::~MediaPlayerRendererClient() {} | 25 MediaPlayerRendererClient::~MediaPlayerRendererClient() {} |
26 | 26 |
27 void MediaPlayerRendererClient::Initialize( | 27 void MediaPlayerRendererClient::Initialize( |
28 media::DemuxerStreamProvider* demuxer_stream_provider, | 28 media::MediaResource* media_resource, |
29 media::RendererClient* client, | 29 media::RendererClient* client, |
30 const media::PipelineStatusCB& init_cb) { | 30 const media::PipelineStatusCB& init_cb) { |
31 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 31 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
32 DCHECK(!init_cb_); | 32 DCHECK(!init_cb_); |
33 | 33 |
34 client_ = client; | 34 client_ = client; |
35 init_cb_ = init_cb; | 35 init_cb_ = init_cb; |
36 | 36 |
37 // Initialize the StreamTexture using a 1x1 texture because we do not have | 37 // Initialize the StreamTexture using a 1x1 texture because we do not have |
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::OnStreamTextureWrapperInitialized, | 48 base::Bind(&MediaPlayerRendererClient::OnStreamTextureWrapperInitialized, |
49 weak_factory_.GetWeakPtr(), demuxer_stream_provider)); | 49 weak_factory_.GetWeakPtr(), media_resource)); |
50 } | 50 } |
51 | 51 |
52 void MediaPlayerRendererClient::OnStreamTextureWrapperInitialized( | 52 void MediaPlayerRendererClient::OnStreamTextureWrapperInitialized( |
53 media::DemuxerStreamProvider* demuxer_stream_provider, | 53 media::MediaResource* media_resource, |
54 bool success) { | 54 bool success) { |
55 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 55 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
56 if (!success) { | 56 if (!success) { |
57 base::ResetAndReturn(&init_cb_).Run( | 57 base::ResetAndReturn(&init_cb_).Run( |
58 media::PipelineStatus::PIPELINE_ERROR_INITIALIZATION_FAILED); | 58 media::PipelineStatus::PIPELINE_ERROR_INITIALIZATION_FAILED); |
59 return; | 59 return; |
60 } | 60 } |
61 | 61 |
62 mojo_renderer_->Initialize( | 62 mojo_renderer_->Initialize( |
63 demuxer_stream_provider, this, | 63 media_resource, this, |
64 base::Bind(&MediaPlayerRendererClient::OnRemoteRendererInitialized, | 64 base::Bind(&MediaPlayerRendererClient::OnRemoteRendererInitialized, |
65 weak_factory_.GetWeakPtr())); | 65 weak_factory_.GetWeakPtr())); |
66 } | 66 } |
67 | 67 |
68 void MediaPlayerRendererClient::OnScopedSurfaceRequested( | 68 void MediaPlayerRendererClient::OnScopedSurfaceRequested( |
69 const base::UnguessableToken& request_token) { | 69 const base::UnguessableToken& request_token) { |
70 DCHECK(request_token); | 70 DCHECK(request_token); |
71 stream_texture_wrapper_->ForwardStreamTextureForSurfaceRequest(request_token); | 71 stream_texture_wrapper_->ForwardStreamTextureForSurfaceRequest(request_token); |
72 } | 72 } |
73 | 73 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 | 146 |
147 void MediaPlayerRendererClient::OnVideoOpacityChange(bool opaque) { | 147 void MediaPlayerRendererClient::OnVideoOpacityChange(bool opaque) { |
148 client_->OnVideoOpacityChange(opaque); | 148 client_->OnVideoOpacityChange(opaque); |
149 } | 149 } |
150 | 150 |
151 void MediaPlayerRendererClient::OnDurationChange(base::TimeDelta duration) { | 151 void MediaPlayerRendererClient::OnDurationChange(base::TimeDelta duration) { |
152 client_->OnDurationChange(duration); | 152 client_->OnDurationChange(duration); |
153 } | 153 } |
154 | 154 |
155 } // namespace content | 155 } // namespace content |
OLD | NEW |