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

Side by Side Diff: content/renderer/media/webmediaplayer_ms.cc

Issue 1580493004: Plumb audio focus support for spitzer clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delegate_hookup
Patch Set: Fix crash, plumb. Created 4 years, 11 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/renderer/media/webmediaplayer_ms.h" 5 #include "content/renderer/media/webmediaplayer_ms.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 blink::WebMediaPlayerClient* client, 43 blink::WebMediaPlayerClient* client,
44 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, 44 base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
45 media::MediaLog* media_log, 45 media::MediaLog* media_log,
46 scoped_ptr<MediaStreamRendererFactory> factory, 46 scoped_ptr<MediaStreamRendererFactory> factory,
47 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, 47 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
48 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 48 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
49 const scoped_refptr<base::TaskRunner>& worker_task_runner, 49 const scoped_refptr<base::TaskRunner>& worker_task_runner,
50 media::GpuVideoAcceleratorFactories* gpu_factories, 50 media::GpuVideoAcceleratorFactories* gpu_factories,
51 const blink::WebString& sink_id, 51 const blink::WebString& sink_id,
52 const blink::WebSecurityOrigin& security_origin) 52 const blink::WebSecurityOrigin& security_origin)
53 : RenderFrameObserver(RenderFrame::FromWebFrame(frame)), 53 : frame_(frame),
54 frame_(frame),
55 network_state_(WebMediaPlayer::NetworkStateEmpty), 54 network_state_(WebMediaPlayer::NetworkStateEmpty),
56 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), 55 ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
57 buffered_(static_cast<size_t>(0)), 56 buffered_(static_cast<size_t>(0)),
58 client_(client), 57 client_(client),
59 delegate_(delegate), 58 delegate_(delegate),
60 paused_(true), 59 paused_(true),
61 render_frame_suspended_(false), 60 render_frame_suspended_(false),
62 received_first_frame_(false), 61 received_first_frame_(false),
63 media_log_(media_log), 62 media_log_(media_log),
64 renderer_factory_(std::move(factory)), 63 renderer_factory_(std::move(factory)),
65 media_task_runner_(media_task_runner), 64 media_task_runner_(media_task_runner),
66 worker_task_runner_(worker_task_runner), 65 worker_task_runner_(worker_task_runner),
67 gpu_factories_(gpu_factories), 66 gpu_factories_(gpu_factories),
68 compositor_task_runner_(compositor_task_runner), 67 compositor_task_runner_(compositor_task_runner),
69 initial_audio_output_device_id_(sink_id.utf8()), 68 initial_audio_output_device_id_(sink_id.utf8()),
70 initial_security_origin_(security_origin.isNull() 69 initial_security_origin_(security_origin.isNull()
71 ? url::Origin() 70 ? url::Origin()
72 : url::Origin(security_origin)) { 71 : url::Origin(security_origin)) {
73 DVLOG(1) << __FUNCTION__; 72 DVLOG(1) << __FUNCTION__;
74 DCHECK(client); 73 DCHECK(client);
74 if (delegate)
75 delegate->AddObserver(this);
76
75 media_log_->AddEvent( 77 media_log_->AddEvent(
76 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); 78 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
77 } 79 }
78 80
79 WebMediaPlayerMS::~WebMediaPlayerMS() { 81 WebMediaPlayerMS::~WebMediaPlayerMS() {
80 DVLOG(1) << __FUNCTION__; 82 DVLOG(1) << __FUNCTION__;
81 DCHECK(thread_checker_.CalledOnValidThread()); 83 DCHECK(thread_checker_.CalledOnValidThread());
82 84
83 if (compositor_ && !compositor_task_runner_->BelongsToCurrentThread()) 85 if (compositor_ && !compositor_task_runner_->BelongsToCurrentThread())
84 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release()); 86 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release());
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 NOTIMPLEMENTED(); 355 NOTIMPLEMENTED();
354 return 0; 356 return 0;
355 } 357 }
356 358
357 unsigned WebMediaPlayerMS::videoDecodedByteCount() const { 359 unsigned WebMediaPlayerMS::videoDecodedByteCount() const {
358 DCHECK(thread_checker_.CalledOnValidThread()); 360 DCHECK(thread_checker_.CalledOnValidThread());
359 NOTIMPLEMENTED(); 361 NOTIMPLEMENTED();
360 return 0; 362 return 0;
361 } 363 }
362 364
363 void WebMediaPlayerMS::WasHidden() { 365 blink::WebMediaPlayer* WebMediaPlayerMS::GetPlayer() {
366 return this;
367 }
368
369 void WebMediaPlayerMS::OnHidden() {
364 #if defined(OS_ANDROID) 370 #if defined(OS_ANDROID)
365 DCHECK(thread_checker_.CalledOnValidThread()); 371 DCHECK(thread_checker_.CalledOnValidThread());
366 DCHECK(!render_frame_suspended_); 372 DCHECK(!render_frame_suspended_);
367 373
368 // Method called when the RenderFrame is sent to background and suspended 374 // Method called when the RenderFrame is sent to background and suspended
369 // (android). Substitute the displayed VideoFrame with a copy to avoid 375 // (android). Substitute the displayed VideoFrame with a copy to avoid
370 // holding on to it unnecessarily. 376 // holding on to it unnecessarily.
371 render_frame_suspended_=true; 377 render_frame_suspended_=true;
372 if (!paused_) 378 if (!paused_)
373 compositor_->ReplaceCurrentFrameWithACopy(); 379 compositor_->ReplaceCurrentFrameWithACopy();
374 #endif // defined(OS_ANDROID) 380 #endif // defined(OS_ANDROID)
375 } 381 }
376 382
377 void WebMediaPlayerMS::WasShown() { 383 void WebMediaPlayerMS::OnShown() {
378 #if defined(OS_ANDROID) 384 #if defined(OS_ANDROID)
379 DCHECK(thread_checker_.CalledOnValidThread()); 385 DCHECK(thread_checker_.CalledOnValidThread());
380 386
381 render_frame_suspended_ = false; 387 render_frame_suspended_ = false;
382 #endif // defined(OS_ANDROID) 388 #endif // defined(OS_ANDROID)
383 } 389 }
384 390
391 void WebMediaPlayerMS::OnPlay() {
392 play();
393 client_->playbackStateChanged();
394 }
395
396 void WebMediaPlayerMS::OnPause() {
397 pause();
398 client_->playbackStateChanged();
399 }
400
385 bool WebMediaPlayerMS::copyVideoTextureToPlatformTexture( 401 bool WebMediaPlayerMS::copyVideoTextureToPlatformTexture(
386 blink::WebGraphicsContext3D* web_graphics_context, 402 blink::WebGraphicsContext3D* web_graphics_context,
387 unsigned int texture, 403 unsigned int texture,
388 unsigned int internal_format, 404 unsigned int internal_format,
389 unsigned int type, 405 unsigned int type,
390 bool premultiply_alpha, 406 bool premultiply_alpha,
391 bool flip_y) { 407 bool flip_y) {
392 TRACE_EVENT0("media", "WebMediaPlayerMS:copyVideoTextureToPlatformTexture"); 408 TRACE_EVENT0("media", "WebMediaPlayerMS:copyVideoTextureToPlatformTexture");
393 DCHECK(thread_checker_.CalledOnValidThread()); 409 DCHECK(thread_checker_.CalledOnValidThread());
394 410
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { 498 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() {
483 return &video_renderer_; 499 return &video_renderer_;
484 } 500 }
485 501
486 void WebMediaPlayerMS::ResetCanvasCache() { 502 void WebMediaPlayerMS::ResetCanvasCache() {
487 DCHECK(thread_checker_.CalledOnValidThread()); 503 DCHECK(thread_checker_.CalledOnValidThread());
488 video_renderer_.ResetCache(); 504 video_renderer_.ResetCache();
489 } 505 }
490 506
491 } // namespace content 507 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698