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

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: rebase to ToT. improve TODO comments 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 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 return duration(); 529 return duration();
530 } 530 }
531 531
532 bool WebMediaPlayerImpl::didLoadingProgress() { 532 bool WebMediaPlayerImpl::didLoadingProgress() {
533 DCHECK(main_loop_->BelongsToCurrentThread()); 533 DCHECK(main_loop_->BelongsToCurrentThread());
534 bool pipeline_progress = pipeline_.DidLoadingProgress(); 534 bool pipeline_progress = pipeline_.DidLoadingProgress();
535 bool data_progress = buffered_data_source_host_.DidLoadingProgress(); 535 bool data_progress = buffered_data_source_host_.DidLoadingProgress();
536 return pipeline_progress || data_progress; 536 return pipeline_progress || data_progress;
537 } 537 }
538 538
539 void WebMediaPlayerImpl::paint(WebCanvas* canvas, 539 void WebMediaPlayerImpl::paint(blink::WebCanvas* canvas,
540 const WebRect& rect, 540 const blink::WebRect& rect,
541 unsigned char alpha) { 541 unsigned char alpha) {
542 paint(canvas, rect, alpha, SkXfermode::kSrcOver_Mode);
543 }
544
545 void WebMediaPlayerImpl::paint(blink::WebCanvas* canvas,
546 const blink::WebRect& rect,
547 unsigned char alpha,
548 SkXfermode::Mode mode) {
542 DCHECK(main_loop_->BelongsToCurrentThread()); 549 DCHECK(main_loop_->BelongsToCurrentThread());
543 TRACE_EVENT0("media", "WebMediaPlayerImpl:paint"); 550 TRACE_EVENT0("media", "WebMediaPlayerImpl:paint");
544 551
545 // TODO(scherkus): Clarify paint() API contract to better understand when and 552 // TODO(scherkus): Clarify paint() API contract to better understand when and
546 // why it's being called. For example, today paint() is called when: 553 // why it's being called. For example, today paint() is called when:
547 // - We haven't reached HAVE_CURRENT_DATA and need to paint black 554 // - We haven't reached HAVE_CURRENT_DATA and need to paint black
548 // - We're painting to a canvas 555 // - We're painting to a canvas
549 // See http://crbug.com/341225 http://crbug.com/342621 for details. 556 // See http://crbug.com/341225 http://crbug.com/342621 for details.
550 scoped_refptr<media::VideoFrame> video_frame = 557 scoped_refptr<media::VideoFrame> video_frame =
551 GetCurrentFrameFromCompositor(); 558 GetCurrentFrameFromCompositor();
552 559
553 gfx::Rect gfx_rect(rect); 560 gfx::Rect gfx_rect(rect);
554 561
555 skcanvas_video_renderer_.Paint(video_frame.get(), 562 skcanvas_video_renderer_.Paint(video_frame.get(),
556 canvas, 563 canvas,
557 gfx_rect, 564 gfx_rect,
558 alpha, 565 alpha,
566 mode,
559 pipeline_metadata_.video_rotation); 567 pipeline_metadata_.video_rotation);
560 } 568 }
561 569
562 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const { 570 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const {
563 if (data_source_) 571 if (data_source_)
564 return data_source_->HasSingleOrigin(); 572 return data_source_->HasSingleOrigin();
565 return true; 573 return true;
566 } 574 }
567 575
568 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const { 576 bool WebMediaPlayerImpl::didPassCORSAccessCheck() const {
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 compositor_task_runner_->PostTask(FROM_HERE, 1406 compositor_task_runner_->PostTask(FROM_HERE,
1399 base::Bind(&GetCurrentFrameAndSignal, 1407 base::Bind(&GetCurrentFrameAndSignal,
1400 base::Unretained(compositor_), 1408 base::Unretained(compositor_),
1401 &video_frame, 1409 &video_frame,
1402 &event)); 1410 &event));
1403 event.Wait(); 1411 event.Wait();
1404 return video_frame; 1412 return video_frame;
1405 } 1413 }
1406 1414
1407 } // namespace content 1415 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/webmediaplayer_impl.h ('k') | content/renderer/media/webmediaplayer_ms.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698