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

Unified Diff: webrtc/modules/desktop_capture/desktop_frame.cc

Issue 1845113002: DirectX based screen capturer logic (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Recreate DXGIDuplicateOutput if AcquireNextFrame does not return a known error code. Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
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..51cf568aa0b6a35c3be1f3901df90532a2d8ea3b 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,23 @@ 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 =
+ 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) {
+ RTC_DCHECK(shared_memory);
+ 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 +111,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_;
}
« no previous file with comments | « webrtc/modules/desktop_capture/desktop_frame.h ('k') | webrtc/modules/desktop_capture/screen_capturer_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698