OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/browser/media/capture/desktop_capture_device.h" | 5 #include "content/browser/media/capture/desktop_capture_device.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <string.h> | 9 #include <string.h> |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 DoOnIncomingCapturedVideoFrame(); | 105 DoOnIncomingCapturedVideoFrame(); |
106 } | 106 } |
107 | 107 |
108 double GetBufferPoolUtilization() const override { return 0.0; } | 108 double GetBufferPoolUtilization() const override { return 0.0; } |
109 }; | 109 }; |
110 | 110 |
111 // Creates a DesktopFrame that has the first pixel bytes set to | 111 // Creates a DesktopFrame that has the first pixel bytes set to |
112 // kFakePixelValueFirst, and the rest of the bytes set to kFakePixelValue, for | 112 // kFakePixelValueFirst, and the rest of the bytes set to kFakePixelValue, for |
113 // UnpackedFrame and InvertedFrame verification. | 113 // UnpackedFrame and InvertedFrame verification. |
114 webrtc::BasicDesktopFrame* CreateBasicFrame(const webrtc::DesktopSize& size) { | 114 webrtc::BasicDesktopFrame* CreateBasicFrame(const webrtc::DesktopSize& size) { |
115 webrtc::BasicDesktopFrame* frame = new webrtc::BasicDesktopFrame(size);; | 115 webrtc::BasicDesktopFrame* frame = new webrtc::BasicDesktopFrame(size); |
116 DCHECK_EQ(frame->size().width() * webrtc::DesktopFrame::kBytesPerPixel, | 116 DCHECK_EQ(frame->size().width() * webrtc::DesktopFrame::kBytesPerPixel, |
117 frame->stride()); | 117 frame->stride()); |
118 memset(frame->data(), | 118 memset(frame->data(), |
119 kFakePixelValue, | 119 kFakePixelValue, |
120 frame->stride() * frame->size().height()); | 120 frame->stride() * frame->size().height()); |
121 memset(frame->data(), | 121 memset(frame->data(), |
122 kFakePixelValueFirst, | 122 kFakePixelValueFirst, |
123 webrtc::DesktopFrame::kBytesPerPixel); | 123 webrtc::DesktopFrame::kBytesPerPixel); |
124 return frame; | 124 return frame; |
125 } | 125 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 memset(data(), kFramePaddingValue, stride() * size().height()); | 161 memset(data(), kFramePaddingValue, stride() * size().height()); |
162 CopyPixelsFrom(*frame, | 162 CopyPixelsFrom(*frame, |
163 webrtc::DesktopVector(), | 163 webrtc::DesktopVector(), |
164 webrtc::DesktopRect::MakeSize(size())); | 164 webrtc::DesktopRect::MakeSize(size())); |
165 delete frame; | 165 delete frame; |
166 } | 166 } |
167 ~UnpackedDesktopFrame() override { | 167 ~UnpackedDesktopFrame() override { |
168 delete[] data_; | 168 delete[] data_; |
169 } | 169 } |
170 | 170 |
| 171 private: |
171 DISALLOW_COPY_AND_ASSIGN(UnpackedDesktopFrame); | 172 DISALLOW_COPY_AND_ASSIGN(UnpackedDesktopFrame); |
172 }; | 173 }; |
173 | 174 |
174 // TODO(sergeyu): Move this to a separate file where it can be reused. | 175 // TODO(sergeyu): Move this to a separate file where it can be reused. |
175 class FakeScreenCapturer : public webrtc::ScreenCapturer { | 176 class FakeScreenCapturer : public webrtc::ScreenCapturer { |
176 public: | 177 public: |
177 FakeScreenCapturer() | 178 FakeScreenCapturer() |
178 : callback_(NULL), | 179 : callback_(NULL), |
179 frame_index_(0), | 180 frame_index_(0), |
180 generate_inverted_frames_(false), | 181 generate_inverted_frames_(false), |
(...skipping 14 matching lines...) Expand all Loading... |
195 | 196 |
196 void Capture(const webrtc::DesktopRegion& region) override { | 197 void Capture(const webrtc::DesktopRegion& region) override { |
197 webrtc::DesktopSize size; | 198 webrtc::DesktopSize size; |
198 if (frame_index_ % 2 == 0) { | 199 if (frame_index_ % 2 == 0) { |
199 size = webrtc::DesktopSize(kTestFrameWidth1, kTestFrameHeight1); | 200 size = webrtc::DesktopSize(kTestFrameWidth1, kTestFrameHeight1); |
200 } else { | 201 } else { |
201 size = webrtc::DesktopSize(kTestFrameWidth2, kTestFrameHeight2); | 202 size = webrtc::DesktopSize(kTestFrameWidth2, kTestFrameHeight2); |
202 } | 203 } |
203 frame_index_++; | 204 frame_index_++; |
204 | 205 |
205 webrtc::DesktopFrame* frame = CreateBasicFrame(size);; | 206 webrtc::DesktopFrame* frame = CreateBasicFrame(size); |
206 | 207 |
207 if (generate_inverted_frames_) { | 208 if (generate_inverted_frames_) { |
208 frame = new InvertedDesktopFrame(frame); | 209 frame = new InvertedDesktopFrame(frame); |
209 } else if (generate_cropped_frames_) { | 210 } else if (generate_cropped_frames_) { |
210 frame = new UnpackedDesktopFrame(frame); | 211 frame = new UnpackedDesktopFrame(frame); |
211 } | 212 } |
212 callback_->OnCaptureCompleted(frame); | 213 callback_->OnCaptureCompleted(frame); |
213 } | 214 } |
214 | 215 |
215 bool GetScreenList(ScreenList* screens) override { return false; } | 216 bool GetScreenList(ScreenList* screens) override { return false; } |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 frame_size); | 524 frame_size); |
524 for (int i = 0; i < output_frame_->size().height(); ++i) { | 525 for (int i = 0; i < output_frame_->size().height(); ++i) { |
525 EXPECT_EQ(0, | 526 EXPECT_EQ(0, |
526 memcmp(inverted_frame->data() + i * inverted_frame->stride(), | 527 memcmp(inverted_frame->data() + i * inverted_frame->stride(), |
527 output_frame_->data() + i * output_frame_->stride(), | 528 output_frame_->data() + i * output_frame_->stride(), |
528 output_frame_->stride())); | 529 output_frame_->stride())); |
529 } | 530 } |
530 } | 531 } |
531 | 532 |
532 } // namespace content | 533 } // namespace content |
OLD | NEW |