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

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

Issue 441303002: 2D Canvas doesn't blend video with the destination buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add Copy() as syntactic sugar Created 6 years, 4 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_impl.h" 5 #include "content/renderer/media/webmediaplayer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 return duration(); 524 return duration();
525 } 525 }
526 526
527 bool WebMediaPlayerImpl::didLoadingProgress() { 527 bool WebMediaPlayerImpl::didLoadingProgress() {
528 DCHECK(main_loop_->BelongsToCurrentThread()); 528 DCHECK(main_loop_->BelongsToCurrentThread());
529 bool pipeline_progress = pipeline_.DidLoadingProgress(); 529 bool pipeline_progress = pipeline_.DidLoadingProgress();
530 bool data_progress = buffered_data_source_host_.DidLoadingProgress(); 530 bool data_progress = buffered_data_source_host_.DidLoadingProgress();
531 return pipeline_progress || data_progress; 531 return pipeline_progress || data_progress;
532 } 532 }
533 533
534 void WebMediaPlayerImpl::paint(WebCanvas* canvas, 534 void WebMediaPlayerImpl::paint(blink::WebCanvas* canvas,
535 const WebRect& rect, 535 const blink::WebRect& rect,
536 unsigned char alpha) { 536 unsigned char alpha) {
537 paint(canvas, rect, alpha, SkXfermode::kSrcOver_Mode);
538 }
539
540 void WebMediaPlayerImpl::paint(blink::WebCanvas* canvas,
541 const blink::WebRect& rect,
542 unsigned char alpha,
543 SkXfermode::Mode mode) {
537 DCHECK(main_loop_->BelongsToCurrentThread()); 544 DCHECK(main_loop_->BelongsToCurrentThread());
538 TRACE_EVENT0("media", "WebMediaPlayerImpl:paint"); 545 TRACE_EVENT0("media", "WebMediaPlayerImpl:paint");
539 546
540 // TODO(scherkus): Clarify paint() API contract to better understand when and 547 // TODO(scherkus): Clarify paint() API contract to better understand when and
541 // why it's being called. For example, today paint() is called when: 548 // why it's being called. For example, today paint() is called when:
542 // - We haven't reached HAVE_CURRENT_DATA and need to paint black 549 // - We haven't reached HAVE_CURRENT_DATA and need to paint black
543 // - We're painting to a canvas 550 // - We're painting to a canvas
544 // See http://crbug.com/341225 http://crbug.com/342621 for details. 551 // See http://crbug.com/341225 http://crbug.com/342621 for details.
545 scoped_refptr<media::VideoFrame> video_frame = 552 scoped_refptr<media::VideoFrame> video_frame =
546 GetCurrentFrameFromCompositor(); 553 GetCurrentFrameFromCompositor();
547 554
548 gfx::Rect gfx_rect(rect); 555 gfx::Rect gfx_rect(rect);
549 556
550 skcanvas_video_renderer_.Paint(video_frame.get(), 557 skcanvas_video_renderer_.Paint(video_frame.get(),
551 canvas, 558 canvas,
552 gfx_rect, 559 gfx_rect,
553 alpha, 560 alpha,
561 mode,
554 pipeline_metadata_.video_rotation); 562 pipeline_metadata_.video_rotation);
555 } 563 }
556 564
557 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const { 565 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const {
558 if (data_source_) 566 if (data_source_)
559 return data_source_->HasSingleOrigin(); 567 return data_source_->HasSingleOrigin();
560 return true; 568 return true;
561 } 569 }
562 570
563 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const { 571 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const {
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
1337 compositor_task_runner_->PostTask(FROM_HERE, 1345 compositor_task_runner_->PostTask(FROM_HERE,
1338 base::Bind(&GetCurrentFrameAndSignal, 1346 base::Bind(&GetCurrentFrameAndSignal,
1339 base::Unretained(compositor_), 1347 base::Unretained(compositor_),
1340 &video_frame, 1348 &video_frame,
1341 &event)); 1349 &event));
1342 event.Wait(); 1350 event.Wait();
1343 return video_frame; 1351 return video_frame;
1344 } 1352 }
1345 1353
1346 } // namespace content 1354 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698