LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/modules/desktop_capture - shared_memory.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 2 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       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             : #ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_MEMORY_H_
      12             : #define WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_MEMORY_H_
      13             : 
      14             : #include <stddef.h>
      15             : 
      16             : #if defined(WEBRTC_WIN)
      17             : #include <windows.h>
      18             : #endif
      19             : 
      20             : #include <memory>
      21             : 
      22             : #include "webrtc/base/constructormagic.h"
      23             : #include "webrtc/typedefs.h"
      24             : 
      25             : namespace webrtc {
      26             : 
      27             : // SharedMemory is a base class for shared memory. It stores all required
      28             : // parameters of the buffer, but doesn't have any logic to allocate or destroy
      29             : // the actual buffer. DesktopCapturer consumers that need to use shared memory
      30             : // for video frames must extend this class with creation and destruction logic
      31             : // specific for the target platform and then call
      32             : // DesktopCapturer::SetSharedMemoryFactory().
      33             : class SharedMemory {
      34             :  public:
      35             : #if defined(WEBRTC_WIN)
      36             :   typedef HANDLE Handle;
      37             :   static const Handle kInvalidHandle;
      38             : #else
      39             :   typedef int Handle;
      40             :   static const Handle kInvalidHandle;
      41             : #endif
      42             : 
      43           0 :   void* data() const { return data_; }
      44             :   size_t size() const { return size_; }
      45             : 
      46             :   // Platform-specific handle of the buffer.
      47             :   Handle handle() const { return handle_; }
      48             : 
      49             :   // Integer identifier that can be used used by consumers of DesktopCapturer
      50             :   // interface to identify shared memory buffers it created.
      51             :   int id() const { return id_; }
      52             : 
      53           0 :   virtual ~SharedMemory() {}
      54             : 
      55             :  protected:
      56             :   SharedMemory(void* data, size_t size, Handle handle, int id);
      57             : 
      58             :   void* const data_;
      59             :   const size_t size_;
      60             :   const Handle handle_;
      61             :   const int id_;
      62             : 
      63             :  private:
      64             :   RTC_DISALLOW_COPY_AND_ASSIGN(SharedMemory);
      65             : };
      66             : 
      67             : // Interface used to create SharedMemory instances.
      68             : class SharedMemoryFactory {
      69             :  public:
      70             :   SharedMemoryFactory() {}
      71             :   virtual ~SharedMemoryFactory() {}
      72             : 
      73             :   virtual std::unique_ptr<SharedMemory> CreateSharedMemory(size_t size) = 0;
      74             : 
      75             :  private:
      76             :   RTC_DISALLOW_COPY_AND_ASSIGN(SharedMemoryFactory);
      77             : };
      78             : 
      79             : }  // namespace webrtc
      80             : 
      81             : #endif  // WEBRTC_MODULES_DESKTOP_CAPTURE_SHARED_MEMORY_H_
      82             : 

Generated by: LCOV version 1.13