OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "remoting/test/frame_generator_util.h" | 5 #include "remoting/test/frame_generator_util.h" |
6 | 6 |
7 #include "base/base_paths.h" | 7 #include "base/base_paths.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "third_party/skia/include/core/SkBitmap.h" | 10 #include "third_party/skia/include/core/SkBitmap.h" |
11 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" | 11 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" |
12 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" | 12 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" |
13 #include "ui/gfx/codec/png_codec.h" | 13 #include "ui/gfx/codec/png_codec.h" |
14 | 14 |
15 namespace { | 15 namespace { |
16 // dst_stride is int, not size_t, as it may be negative for inverted (in Y) | 16 // dst_stride is int, not size_t, as it may be negative for inverted (in Y) |
17 // images. | 17 // images. |
18 void CopyPixelsToBuffer(const SkBitmap& src, | 18 void CopyPixelsToBuffer(const SkBitmap& src, |
19 uint8_t* dst_pixels, | 19 uint8_t* dst_pixels, |
20 int dst_stride) { | 20 int dst_stride) { |
21 SkBitmap tmp(src); | 21 const char* src_pixels = static_cast<const char*>(src.getPixels()); |
22 tmp.lockPixels(); | 22 size_t src_stride = src.rowBytes(); |
23 const char* src_pixels = static_cast<const char*>(tmp.getPixels()); | |
24 size_t src_stride = tmp.rowBytes(); | |
25 // Only need to copy the important parts of the row. | 23 // Only need to copy the important parts of the row. |
26 size_t bytes_per_row = tmp.width() * tmp.bytesPerPixel(); | 24 size_t bytes_per_row = src.width() * src.bytesPerPixel(); |
27 for (int y = 0; y < tmp.height(); ++y) { | 25 for (int y = 0; y < src.height(); ++y) { |
28 memcpy(dst_pixels, src_pixels, bytes_per_row); | 26 memcpy(dst_pixels, src_pixels, bytes_per_row); |
29 src_pixels += src_stride; | 27 src_pixels += src_stride; |
30 dst_pixels += dst_stride; | 28 dst_pixels += dst_stride; |
31 } | 29 } |
32 } | 30 } |
33 } // namespace | 31 } // namespace |
34 | 32 |
35 namespace remoting { | 33 namespace remoting { |
36 namespace test { | 34 namespace test { |
37 | 35 |
(...skipping 26 matching lines...) Expand all Loading... |
64 uint32_t* data = reinterpret_cast<uint32_t*>( | 62 uint32_t* data = reinterpret_cast<uint32_t*>( |
65 frame->GetFrameDataAtPos(webrtc::DesktopVector(rect.left(), y))); | 63 frame->GetFrameDataAtPos(webrtc::DesktopVector(rect.left(), y))); |
66 for (int x = 0; x < rect.width(); ++x) { | 64 for (int x = 0; x < rect.width(); ++x) { |
67 data[x] = color; | 65 data[x] = color; |
68 } | 66 } |
69 } | 67 } |
70 } | 68 } |
71 | 69 |
72 } // namespace test | 70 } // namespace test |
73 } // namespace remoting | 71 } // namespace remoting |
OLD | NEW |