2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
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.
11 #ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_MEMORY_H_
12 #define WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_MEMORY_H_
16 #if defined(WEBRTC_WIN)
20 #include "webrtc/base/constructormagic.h"
21 #include "webrtc/typedefs.h"
25 // SharedMemory is a base class for shared memory. It stores all required
26 // parameters of the buffer, but doesn't have any logic to allocate or destroy
27 // the actual buffer. DesktopCapturer consumers that need to use shared memory
28 // for video frames must extend this class with creation and destruction logic
29 // specific for the target platform and then implement
30 // DesktopCapturer::Delegate::CreateSharedMemory() as appropriate.
33 #if defined(WEBRTC_WIN)
34 typedef HANDLE Handle;
35 static const Handle kInvalidHandle;
38 static const Handle kInvalidHandle;
41 void* data() const { return data_; }
42 size_t size() const { return size_; }
44 // Platform-specific handle of the buffer.
45 Handle handle() const { return handle_; }
47 // Integer identifier that can be used used by consumers of DesktopCapturer
48 // interface to identify shared memory buffers it created.
49 int id() const { return id_; }
51 virtual ~SharedMemory() {}
54 SharedMemory(void* data, size_t size, Handle handle, int id);
62 DISALLOW_COPY_AND_ASSIGN(SharedMemory);
67 #endif // WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_MEMORY_H_