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

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

Issue 1357943003: I444ToABGR for skcanvas in one step. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/skcanvas_video_renderer.h" 5 #include "media/blink/skcanvas_video_renderer.h"
6 6
7 #include "gpu/GLES2/gl2extchromium.h" 7 #include "gpu/GLES2/gl2extchromium.h"
8 #include "gpu/command_buffer/client/gles2_interface.h" 8 #include "gpu/command_buffer/client/gles2_interface.h"
9 #include "gpu/command_buffer/common/mailbox_holder.h" 9 #include "gpu/command_buffer/common/mailbox_holder.h"
10 #include "media/base/video_frame.h" 10 #include "media/base/video_frame.h"
11 #include "media/base/yuv_convert.h" 11 #include "media/base/yuv_convert.h"
12 #include "skia/ext/refptr.h" 12 #include "skia/ext/refptr.h"
13 #include "third_party/libyuv/include/libyuv.h" 13 #include "third_party/libyuv/include/libyuv.h"
14 #include "third_party/skia/include/core/SkCanvas.h" 14 #include "third_party/skia/include/core/SkCanvas.h"
15 #include "third_party/skia/include/core/SkImage.h" 15 #include "third_party/skia/include/core/SkImage.h"
16 #include "third_party/skia/include/core/SkImageGenerator.h" 16 #include "third_party/skia/include/core/SkImageGenerator.h"
17 #include "third_party/skia/include/gpu/GrContext.h" 17 #include "third_party/skia/include/gpu/GrContext.h"
18 #include "third_party/skia/include/gpu/GrPaint.h" 18 #include "third_party/skia/include/gpu/GrPaint.h"
19 #include "third_party/skia/include/gpu/GrTexture.h" 19 #include "third_party/skia/include/gpu/GrTexture.h"
20 #include "third_party/skia/include/gpu/GrTextureProvider.h" 20 #include "third_party/skia/include/gpu/GrTextureProvider.h"
21 #include "third_party/skia/include/gpu/SkGr.h" 21 #include "third_party/skia/include/gpu/SkGr.h"
22 #include "ui/gfx/geometry/rect_f.h" 22 #include "ui/gfx/geometry/rect_f.h"
23 23
24 // Skia internal format depends on a platform. On Android it is ABGR, on others 24 // Skia internal format depends on a platform. On Android it is ABGR, on others
25 // it is ARGB. 25 // it is ARGB.
26 #if SK_B32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_R32_SHIFT == 16 && \ 26 #if SK_B32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_R32_SHIFT == 16 && \
27 SK_A32_SHIFT == 24 27 SK_A32_SHIFT == 24
28 #define LIBYUV_I420_TO_ARGB libyuv::I420ToARGB 28 #define LIBYUV_I420_TO_ARGB libyuv::I420ToARGB
29 #define LIBYUV_I422_TO_ARGB libyuv::I422ToARGB 29 #define LIBYUV_I422_TO_ARGB libyuv::I422ToARGB
30 #define LIBYUV_I444_TO_ARGB libyuv::I444ToARGB
30 #define LIBYUV_I420ALPHA_TO_ARGB libyuv::I420AlphaToARGB 31 #define LIBYUV_I420ALPHA_TO_ARGB libyuv::I420AlphaToARGB
31 #define LIBYUV_J420_TO_ARGB libyuv::J420ToARGB 32 #define LIBYUV_J420_TO_ARGB libyuv::J420ToARGB
32 #define LIBYUV_H420_TO_ARGB libyuv::H420ToARGB 33 #define LIBYUV_H420_TO_ARGB libyuv::H420ToARGB
33 #elif SK_R32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_B32_SHIFT == 16 && \ 34 #elif SK_R32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_B32_SHIFT == 16 && \
34 SK_A32_SHIFT == 24 35 SK_A32_SHIFT == 24
35 #define LIBYUV_I420_TO_ARGB libyuv::I420ToABGR 36 #define LIBYUV_I420_TO_ARGB libyuv::I420ToABGR
36 #define LIBYUV_I422_TO_ARGB libyuv::I422ToABGR 37 #define LIBYUV_I422_TO_ARGB libyuv::I422ToABGR
38 #define LIBYUV_I444_TO_ARGB libyuv::I444ToABGR
37 #define LIBYUV_I420ALPHA_TO_ARGB libyuv::I420AlphaToABGR 39 #define LIBYUV_I420ALPHA_TO_ARGB libyuv::I420AlphaToABGR
38 #define LIBYUV_J420_TO_ARGB libyuv::J420ToABGR 40 #define LIBYUV_J420_TO_ARGB libyuv::J420ToABGR
39 #define LIBYUV_H420_TO_ARGB libyuv::H420ToABGR 41 #define LIBYUV_H420_TO_ARGB libyuv::H420ToABGR
40 #else 42 #else
41 #error Unexpected Skia ARGB_8888 layout! 43 #error Unexpected Skia ARGB_8888 layout!
42 #endif 44 #endif
43 45
44 namespace media { 46 namespace media {
45 47
46 namespace { 48 namespace {
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 video_frame->stride(VideoFrame::kVPlane), 507 video_frame->stride(VideoFrame::kVPlane),
506 video_frame->visible_data(VideoFrame::kAPlane), 508 video_frame->visible_data(VideoFrame::kAPlane),
507 video_frame->stride(VideoFrame::kAPlane), 509 video_frame->stride(VideoFrame::kAPlane),
508 static_cast<uint8*>(rgb_pixels), 510 static_cast<uint8*>(rgb_pixels),
509 row_bytes, 511 row_bytes,
510 video_frame->visible_rect().width(), 512 video_frame->visible_rect().width(),
511 video_frame->visible_rect().height()); 513 video_frame->visible_rect().height());
512 break; 514 break;
513 515
514 case PIXEL_FORMAT_YV24: 516 case PIXEL_FORMAT_YV24:
515 libyuv::I444ToARGB( 517 LIBYUV_I444_TO_ARGB(
516 video_frame->visible_data(VideoFrame::kYPlane), 518 video_frame->visible_data(VideoFrame::kYPlane),
517 video_frame->stride(VideoFrame::kYPlane), 519 video_frame->stride(VideoFrame::kYPlane),
518 video_frame->visible_data(VideoFrame::kUPlane), 520 video_frame->visible_data(VideoFrame::kUPlane),
519 video_frame->stride(VideoFrame::kUPlane), 521 video_frame->stride(VideoFrame::kUPlane),
520 video_frame->visible_data(VideoFrame::kVPlane), 522 video_frame->visible_data(VideoFrame::kVPlane),
521 video_frame->stride(VideoFrame::kVPlane), 523 video_frame->stride(VideoFrame::kVPlane),
522 static_cast<uint8*>(rgb_pixels), 524 static_cast<uint8*>(rgb_pixels),
523 row_bytes, 525 row_bytes,
524 video_frame->visible_rect().width(), 526 video_frame->visible_rect().width(),
525 video_frame->visible_rect().height()); 527 video_frame->visible_rect().height());
526 #if SK_R32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_B32_SHIFT == 16 && \
527 SK_A32_SHIFT == 24
528 libyuv::ARGBToABGR(static_cast<uint8*>(rgb_pixels),
529 row_bytes,
530 static_cast<uint8*>(rgb_pixels),
531 row_bytes,
532 video_frame->visible_rect().width(),
533 video_frame->visible_rect().height());
534 #endif
535 break; 528 break;
536 case PIXEL_FORMAT_NV12: 529 case PIXEL_FORMAT_NV12:
537 case PIXEL_FORMAT_NV21: 530 case PIXEL_FORMAT_NV21:
538 case PIXEL_FORMAT_UYVY: 531 case PIXEL_FORMAT_UYVY:
539 case PIXEL_FORMAT_YUY2: 532 case PIXEL_FORMAT_YUY2:
540 case PIXEL_FORMAT_ARGB: 533 case PIXEL_FORMAT_ARGB:
541 case PIXEL_FORMAT_XRGB: 534 case PIXEL_FORMAT_XRGB:
542 case PIXEL_FORMAT_RGB24: 535 case PIXEL_FORMAT_RGB24:
543 case PIXEL_FORMAT_RGB32: 536 case PIXEL_FORMAT_RGB32:
544 case PIXEL_FORMAT_MJPEG: 537 case PIXEL_FORMAT_MJPEG:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 video_frame->UpdateReleaseSyncPoint(&client); 581 video_frame->UpdateReleaseSyncPoint(&client);
589 } 582 }
590 583
591 void SkCanvasVideoRenderer::ResetCache() { 584 void SkCanvasVideoRenderer::ResetCache() {
592 // Clear cached values. 585 // Clear cached values.
593 last_image_ = nullptr; 586 last_image_ = nullptr;
594 last_timestamp_ = kNoTimestamp(); 587 last_timestamp_ = kNoTimestamp();
595 } 588 }
596 589
597 } // namespace media 590 } // namespace media
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698