Home | History | Annotate | Download | only in host
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "remoting/host/shaped_desktop_capturer.h"
      6 
      7 #include "base/logging.h"
      8 #include "remoting/host/desktop_shape_tracker.h"
      9 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
     10 
     11 namespace remoting {
     12 
     13 ShapedDesktopCapturer::ShapedDesktopCapturer(
     14     scoped_ptr<webrtc::DesktopCapturer> desktop_capturer,
     15     scoped_ptr<DesktopShapeTracker> shape_tracker)
     16     : desktop_capturer_(desktop_capturer.Pass()),
     17       shape_tracker_(shape_tracker.Pass()),
     18       callback_(NULL) {
     19 }
     20 
     21 ShapedDesktopCapturer::~ShapedDesktopCapturer() {}
     22 
     23 void ShapedDesktopCapturer::Start(webrtc::DesktopCapturer::Callback* callback) {
     24   callback_ = callback;
     25   desktop_capturer_->Start(this);
     26 }
     27 
     28 void ShapedDesktopCapturer::Capture(const webrtc::DesktopRegion& region) {
     29   desktop_capturer_->Capture(region);
     30 }
     31 
     32 webrtc::SharedMemory* ShapedDesktopCapturer::CreateSharedMemory(size_t size) {
     33   return callback_->CreateSharedMemory(size);
     34 }
     35 
     36 void ShapedDesktopCapturer::OnCaptureCompleted(webrtc::DesktopFrame* frame) {
     37   shape_tracker_->RefreshDesktopShape();
     38   frame->set_shape(new webrtc::DesktopRegion(shape_tracker_->desktop_shape()));
     39   callback_->OnCaptureCompleted(frame);
     40 }
     41 
     42 }  // namespace remoting
     43