blob: f293baff08cfc01f36cce4b6bda9b3bbce69d4f3 [file] [log] [blame]
sergeyu@chromium.org15e32cc2013-04-29 20:10:57 +00001/*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/modules/desktop_capture/desktop_frame.h"
12
sergeyu@chromium.org2df89c02013-10-17 19:47:18 +000013#include <string.h>
14
sergeyu@chromium.org15e32cc2013-04-29 20:10:57 +000015namespace webrtc {
16
17DesktopFrame::DesktopFrame(DesktopSize size,
18 int stride,
19 uint8_t* data,
20 SharedMemory* shared_memory)
21 : size_(size),
22 stride_(stride),
23 data_(data),
24 shared_memory_(shared_memory),
25 capture_time_ms_(0) {
26}
27
28DesktopFrame::~DesktopFrame() {}
29
30BasicDesktopFrame::BasicDesktopFrame(DesktopSize size)
31 : DesktopFrame(size, kBytesPerPixel * size.width(),
32 new uint8_t[kBytesPerPixel * size.width() * size.height()],
33 NULL) {
34}
35
36BasicDesktopFrame::~BasicDesktopFrame() {
37 delete[] data_;
38}
39
sergeyu@chromium.org2df89c02013-10-17 19:47:18 +000040DesktopFrame* BasicDesktopFrame::CopyOf(const DesktopFrame& frame) {
41 DesktopFrame* result = new BasicDesktopFrame(frame.size());
42 for (int y = 0; y < frame.size().height(); ++y) {
43 memcpy(result->data() + y * result->stride(),
44 frame.data() + y * frame.stride(),
45 frame.size().width() * kBytesPerPixel);
46 }
47 result->set_dpi(frame.dpi());
48 result->set_capture_time_ms(frame.capture_time_ms());
49 *result->mutable_updated_region() = frame.updated_region();
50 return result;
51}
52
53
sergeyu@chromium.org15e32cc2013-04-29 20:10:57 +000054SharedMemoryDesktopFrame::SharedMemoryDesktopFrame(
55 DesktopSize size,
56 int stride,
57 SharedMemory* shared_memory)
58 : DesktopFrame(size, stride,
59 reinterpret_cast<uint8_t*>(shared_memory->data()),
60 shared_memory) {
61}
62
63SharedMemoryDesktopFrame::~SharedMemoryDesktopFrame() {
64 delete shared_memory_;
65}
66
67} // namespace webrtc