Chromium Code Reviews| Index: webrtc/modules/desktop_capture/desktop_frame.cc |
| diff --git a/webrtc/modules/desktop_capture/desktop_frame.cc b/webrtc/modules/desktop_capture/desktop_frame.cc |
| index 3278ed46dcb1d282969f74981d5fec84fd58140a..b912c17890547182cb0b39deec509d84c8ebe526 100644 |
| --- a/webrtc/modules/desktop_capture/desktop_frame.cc |
| +++ b/webrtc/modules/desktop_capture/desktop_frame.cc |
| @@ -10,19 +10,22 @@ |
| #include "webrtc/modules/desktop_capture/desktop_frame.h" |
| -#include <assert.h> |
| +#include <utility> |
| + |
| #include <string.h> |
| +#include "webrtc/base/checks.h" |
| + |
| namespace webrtc { |
| DesktopFrame::DesktopFrame(DesktopSize size, |
| int stride, |
| uint8_t* data, |
| SharedMemory* shared_memory) |
| - : size_(size), |
| - stride_(stride), |
| - data_(data), |
| + : data_(data), |
| shared_memory_(shared_memory), |
| + size_(size), |
| + stride_(stride), |
| capture_time_ms_(0) { |
| } |
| @@ -30,7 +33,7 @@ DesktopFrame::~DesktopFrame() {} |
| void DesktopFrame::CopyPixelsFrom(uint8_t* src_buffer, int src_stride, |
| const DesktopRect& dest_rect) { |
| - assert(DesktopRect::MakeSize(size()).ContainsRect(dest_rect)); |
| + RTC_CHECK(DesktopRect::MakeSize(size()).ContainsRect(dest_rect)); |
| uint8_t* dest = GetFrameDataAtPos(dest_rect.top_left()); |
| for (int y = 0; y < dest_rect.height(); ++y) { |
| @@ -43,7 +46,7 @@ void DesktopFrame::CopyPixelsFrom(uint8_t* src_buffer, int src_stride, |
| void DesktopFrame::CopyPixelsFrom(const DesktopFrame& src_frame, |
| const DesktopVector& src_pos, |
| const DesktopRect& dest_rect) { |
| - assert(DesktopRect::MakeSize(src_frame.size()).ContainsRect( |
| + RTC_CHECK(DesktopRect::MakeSize(src_frame.size()).ContainsRect( |
| DesktopRect::MakeOriginSize(src_pos, dest_rect.size()))); |
| CopyPixelsFrom(src_frame.GetFrameDataAtPos(src_pos), |
| @@ -81,16 +84,25 @@ DesktopFrame* BasicDesktopFrame::CopyOf(const DesktopFrame& frame) { |
| std::unique_ptr<DesktopFrame> SharedMemoryDesktopFrame::Create( |
| DesktopSize size, |
| SharedMemoryFactory* shared_memory_factory) { |
| - size_t buffer_size = |
| - size.width() * size.height() * DesktopFrame::kBytesPerPixel; |
| - std::unique_ptr<SharedMemory> shared_memory; |
| - shared_memory = shared_memory_factory->CreateSharedMemory(buffer_size); |
| + size_t buffer_size = size.height() * size.width() * kBytesPerPixel; |
| + std::unique_ptr<SharedMemory> shared_memory = rtc::ScopedToUnique( |
|
Sergey Ulanov
2016/05/13 19:38:10
Don't need ScopedToUnique() anymore
Hzj_jie
2016/05/16 18:17:28
Done.
|
| + shared_memory_factory->CreateSharedMemory(buffer_size)); |
| if (!shared_memory) |
| return nullptr; |
| + return Create(size, std::move(shared_memory)); |
| +} |
| + |
| +// static |
| +std::unique_ptr<DesktopFrame> SharedMemoryDesktopFrame::Create( |
| + DesktopSize size, |
| + std::unique_ptr<SharedMemory> shared_memory) { |
| + if (!shared_memory) |
|
Sergey Ulanov
2016/05/13 19:38:10
Don't need this - this function is not supposed to
Hzj_jie
2016/05/16 18:17:28
Done.
|
| + return nullptr; |
| + |
| + int stride = size.width() * kBytesPerPixel; |
| return std::unique_ptr<DesktopFrame>(new SharedMemoryDesktopFrame( |
| - size, size.width() * DesktopFrame::kBytesPerPixel, |
| - std::move(shared_memory))); |
| + size, stride, shared_memory.release())); |
| } |
| SharedMemoryDesktopFrame::SharedMemoryDesktopFrame(DesktopSize size, |
| @@ -101,15 +113,6 @@ SharedMemoryDesktopFrame::SharedMemoryDesktopFrame(DesktopSize size, |
| reinterpret_cast<uint8_t*>(shared_memory->data()), |
| shared_memory) {} |
| -SharedMemoryDesktopFrame::SharedMemoryDesktopFrame( |
| - DesktopSize size, |
| - int stride, |
| - std::unique_ptr<SharedMemory> shared_memory) |
| - : DesktopFrame(size, |
| - stride, |
| - reinterpret_cast<uint8_t*>(shared_memory->data()), |
| - shared_memory.release()) {} |
| - |
| SharedMemoryDesktopFrame::~SharedMemoryDesktopFrame() { |
| delete shared_memory_; |
| } |