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

Side by Side Diff: media/blink/webmediaplayer_impl.cc

Issue 1873513003: Add video-rendering to mojo media pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 4 years, 8 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 "media/blink/webmediaplayer_impl.h" 5 #include "media/blink/webmediaplayer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <string> 10 #include <string>
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 supports_save_(true), 188 supports_save_(true),
189 chunk_demuxer_(NULL), 189 chunk_demuxer_(NULL),
190 url_index_(url_index), 190 url_index_(url_index),
191 // Threaded compositing isn't enabled universally yet. 191 // Threaded compositing isn't enabled universally yet.
192 compositor_task_runner_( 192 compositor_task_runner_(
193 params.compositor_task_runner() 193 params.compositor_task_runner()
194 ? params.compositor_task_runner() 194 ? params.compositor_task_runner()
195 : base::MessageLoop::current()->task_runner()), 195 : base::MessageLoop::current()->task_runner()),
196 compositor_(new VideoFrameCompositor( 196 compositor_(new VideoFrameCompositor(
197 compositor_task_runner_, 197 compositor_task_runner_,
198 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged),
199 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), 198 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))),
200 is_cdm_attached_(false), 199 is_cdm_attached_(false),
201 #if defined(OS_ANDROID) // WMPI_CAST 200 #if defined(OS_ANDROID) // WMPI_CAST
202 cast_impl_(this, client_, params.context_3d_cb()), 201 cast_impl_(this, client_, params.context_3d_cb()),
203 #endif 202 #endif
204 volume_(1.0), 203 volume_(1.0),
205 volume_multiplier_(1.0), 204 volume_multiplier_(1.0),
206 renderer_factory_(std::move(renderer_factory)), 205 renderer_factory_(std::move(renderer_factory)),
207 surface_manager_(params.surface_manager()), 206 surface_manager_(params.surface_manager()),
208 suppress_destruction_errors_(false), 207 suppress_destruction_errors_(false),
(...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after
1269 // ... and we're ready to go! 1268 // ... and we're ready to go!
1270 seeking_ = true; 1269 seeking_ = true;
1271 1270
1272 // TODO(sandersd): On Android, defer Start() if the tab is not visible. 1271 // TODO(sandersd): On Android, defer Start() if the tab is not visible.
1273 bool is_streaming = (data_source_ && data_source_->IsStreaming()); 1272 bool is_streaming = (data_source_ && data_source_->IsStreaming());
1274 pipeline_controller_.Start( 1273 pipeline_controller_.Start(
1275 demuxer_.get(), is_streaming, is_static, 1274 demuxer_.get(), is_streaming, is_static,
1276 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), 1275 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded),
1277 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), 1276 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata),
1278 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), 1277 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged),
1278 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged),
1279 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), 1279 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged),
1280 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack), 1280 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack),
1281 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey)); 1281 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey));
1282 } 1282 }
1283 1283
1284 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { 1284 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) {
1285 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; 1285 DVLOG(1) << __FUNCTION__ << "(" << state << ")";
1286 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1286 DCHECK(main_task_runner_->BelongsToCurrentThread());
1287 network_state_ = state; 1287 network_state_ = state;
1288 // Always notify to ensure client has the latest value. 1288 // Always notify to ensure client has the latest value.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1322 1322
1323 void WebMediaPlayerImpl::OnDurationChanged() { 1323 void WebMediaPlayerImpl::OnDurationChanged() {
1324 // TODO(sandersd): We should call delegate_->DidPlay() with the new duration, 1324 // TODO(sandersd): We should call delegate_->DidPlay() with the new duration,
1325 // especially if it changed from <5s to >5s. 1325 // especially if it changed from <5s to >5s.
1326 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) 1326 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing)
1327 return; 1327 return;
1328 1328
1329 client_->durationChanged(); 1329 client_->durationChanged();
1330 } 1330 }
1331 1331
1332 void WebMediaPlayerImpl::OnNaturalSizeChanged(gfx::Size size) { 1332 void WebMediaPlayerImpl::OnNaturalSizeChanged(const gfx::Size& size) {
1333 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1333 DCHECK(main_task_runner_->BelongsToCurrentThread());
1334 DCHECK_NE(ready_state_, WebMediaPlayer::ReadyStateHaveNothing); 1334 DCHECK_NE(ready_state_, WebMediaPlayer::ReadyStateHaveNothing);
1335 TRACE_EVENT0("media", "WebMediaPlayerImpl::OnNaturalSizeChanged"); 1335 TRACE_EVENT0("media", "WebMediaPlayerImpl::OnNaturalSizeChanged");
1336 1336
1337 media_log_->AddEvent( 1337 media_log_->AddEvent(
1338 media_log_->CreateVideoSizeSetEvent(size.width(), size.height())); 1338 media_log_->CreateVideoSizeSetEvent(size.width(), size.height()));
1339 1339
1340 if (fullscreen_ && surface_manager_ && 1340 if (fullscreen_ && surface_manager_ &&
1341 pipeline_metadata_.natural_size != size) { 1341 pipeline_metadata_.natural_size != size) {
1342 surface_manager_->NaturalSizeChanged(size); 1342 surface_manager_->NaturalSizeChanged(size);
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1594 << ", Video: " << stats.video_memory_usage << ", DataSource: " 1594 << ", Video: " << stats.video_memory_usage << ", DataSource: "
1595 << (data_source_ ? data_source_->GetMemoryUsage() : 0) 1595 << (data_source_ ? data_source_->GetMemoryUsage() : 0)
1596 << ", Demuxer: " << demuxer_memory_usage; 1596 << ", Demuxer: " << demuxer_memory_usage;
1597 1597
1598 const int64_t delta = current_memory_usage - last_reported_memory_usage_; 1598 const int64_t delta = current_memory_usage - last_reported_memory_usage_;
1599 last_reported_memory_usage_ = current_memory_usage; 1599 last_reported_memory_usage_ = current_memory_usage;
1600 adjust_allocated_memory_cb_.Run(delta); 1600 adjust_allocated_memory_cb_.Run(delta);
1601 } 1601 }
1602 1602
1603 } // namespace media 1603 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698