LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/modules/desktop_capture - desktop_frame.cc (source / functions) Hit Total Coverage
Test: output.info Lines: 0 56 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 15 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             : #include "webrtc/modules/desktop_capture/desktop_frame.h"
      12             : 
      13             : #include <utility>
      14             : 
      15             : #include <string.h>
      16             : 
      17             : #include "webrtc/base/checks.h"
      18             : 
      19             : namespace webrtc {
      20             : 
      21           0 : DesktopFrame::DesktopFrame(DesktopSize size,
      22             :                            int stride,
      23             :                            uint8_t* data,
      24           0 :                            SharedMemory* shared_memory)
      25             :     : data_(data),
      26             :       shared_memory_(shared_memory),
      27             :       size_(size),
      28             :       stride_(stride),
      29           0 :       capture_time_ms_(0) {
      30           0 : }
      31             : 
      32           0 : DesktopFrame::~DesktopFrame() {}
      33             : 
      34           0 : void DesktopFrame::CopyPixelsFrom(const uint8_t* src_buffer, int src_stride,
      35             :                                   const DesktopRect& dest_rect) {
      36           0 :   RTC_CHECK(DesktopRect::MakeSize(size()).ContainsRect(dest_rect));
      37             : 
      38           0 :   uint8_t* dest = GetFrameDataAtPos(dest_rect.top_left());
      39           0 :   for (int y = 0; y < dest_rect.height(); ++y) {
      40           0 :     memcpy(dest, src_buffer, DesktopFrame::kBytesPerPixel * dest_rect.width());
      41           0 :     src_buffer += src_stride;
      42           0 :     dest += stride();
      43             :   }
      44           0 : }
      45             : 
      46           0 : void DesktopFrame::CopyPixelsFrom(const DesktopFrame& src_frame,
      47             :                                   const DesktopVector& src_pos,
      48             :                                   const DesktopRect& dest_rect) {
      49           0 :   RTC_CHECK(DesktopRect::MakeSize(src_frame.size()).ContainsRect(
      50           0 :       DesktopRect::MakeOriginSize(src_pos, dest_rect.size())));
      51             : 
      52           0 :   CopyPixelsFrom(src_frame.GetFrameDataAtPos(src_pos),
      53           0 :                  src_frame.stride(), dest_rect);
      54           0 : }
      55             : 
      56           0 : uint8_t* DesktopFrame::GetFrameDataAtPos(const DesktopVector& pos) const {
      57           0 :   return data() + stride() * pos.y() + DesktopFrame::kBytesPerPixel * pos.x();
      58             : }
      59             : 
      60           0 : BasicDesktopFrame::BasicDesktopFrame(DesktopSize size)
      61           0 :     : DesktopFrame(size, kBytesPerPixel * size.width(),
      62           0 :                    new uint8_t[kBytesPerPixel * size.width() * size.height()],
      63           0 :                    NULL) {
      64           0 : }
      65             : 
      66           0 : BasicDesktopFrame::~BasicDesktopFrame() {
      67           0 :   delete[] data_;
      68           0 : }
      69             : 
      70           0 : DesktopFrame* BasicDesktopFrame::CopyOf(const DesktopFrame& frame) {
      71           0 :   DesktopFrame* result = new BasicDesktopFrame(frame.size());
      72           0 :   for (int y = 0; y < frame.size().height(); ++y) {
      73           0 :     memcpy(result->data() + y * result->stride(),
      74           0 :            frame.data() + y * frame.stride(),
      75           0 :            frame.size().width() * kBytesPerPixel);
      76             :   }
      77           0 :   result->set_dpi(frame.dpi());
      78           0 :   result->set_capture_time_ms(frame.capture_time_ms());
      79           0 :   *result->mutable_updated_region() = frame.updated_region();
      80           0 :   return result;
      81             : }
      82             : 
      83             : // static
      84           0 : std::unique_ptr<DesktopFrame> SharedMemoryDesktopFrame::Create(
      85             :     DesktopSize size,
      86             :     SharedMemoryFactory* shared_memory_factory) {
      87           0 :   size_t buffer_size = size.height() * size.width() * kBytesPerPixel;
      88             :   std::unique_ptr<SharedMemory> shared_memory =
      89           0 :       shared_memory_factory->CreateSharedMemory(buffer_size);
      90           0 :   if (!shared_memory)
      91           0 :     return nullptr;
      92             : 
      93           0 :   return Create(size, std::move(shared_memory));
      94             : }
      95             : 
      96             : // static
      97           0 : std::unique_ptr<DesktopFrame> SharedMemoryDesktopFrame::Create(
      98             :     DesktopSize size,
      99             :     std::unique_ptr<SharedMemory> shared_memory) {
     100           0 :   RTC_DCHECK(shared_memory);
     101           0 :   int stride = size.width() * kBytesPerPixel;
     102             :   return std::unique_ptr<DesktopFrame>(new SharedMemoryDesktopFrame(
     103           0 :       size, stride, shared_memory.release()));
     104             : }
     105             : 
     106           0 : SharedMemoryDesktopFrame::SharedMemoryDesktopFrame(DesktopSize size,
     107             :                                                    int stride,
     108           0 :                                                    SharedMemory* shared_memory)
     109             :     : DesktopFrame(size,
     110             :                    stride,
     111           0 :                    reinterpret_cast<uint8_t*>(shared_memory->data()),
     112           0 :                    shared_memory) {}
     113             : 
     114           0 : SharedMemoryDesktopFrame::~SharedMemoryDesktopFrame() {
     115           0 :   delete shared_memory_;
     116           0 : }
     117             : 
     118             : }  // namespace webrtc

Generated by: LCOV version 1.13