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_DESKTOP_FRAME_H_
12 #define WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_DESKTOP_FRAME_H_
14 #include "webrtc/modules/desktop_capture/desktop_frame.h"
15 #include "webrtc/system_wrappers/interface/scoped_refptr.h"
19 // SharedDesktopFrame is a DesktopFrame that may have multiple instances all
20 // sharing the same buffer.
21 class SharedDesktopFrame : public DesktopFrame {
23 virtual ~SharedDesktopFrame();
25 static SharedDesktopFrame* Wrap(DesktopFrame* desktop_frame);
27 // Returns the underlying instance of DesktopFrame.
28 DesktopFrame* GetUnderlyingFrame();
30 // Creates a clone of this object.
31 SharedDesktopFrame* Share();
33 // Checks if the frame is currently shared. If it returns false it's
34 // guaranteed that there are no clones of the object.
40 SharedDesktopFrame(scoped_refptr<Core> core);
42 scoped_refptr<Core> core_;
44 DISALLOW_COPY_AND_ASSIGN(SharedDesktopFrame);
49 #endif // WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_DESKTOP_FRAME_H_