Home | History | Annotate | Download | only in host
      1 // Copyright (c) 2012 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/ipc_audio_capturer.h"
      6 
      7 #include "remoting/host/desktop_session_proxy.h"
      8 #include "remoting/proto/audio.pb.h"
      9 
     10 namespace remoting {
     11 
     12 IpcAudioCapturer::IpcAudioCapturer(
     13     scoped_refptr<DesktopSessionProxy> desktop_session_proxy)
     14     : desktop_session_proxy_(desktop_session_proxy),
     15       weak_factory_(this) {
     16 }
     17 
     18 IpcAudioCapturer::~IpcAudioCapturer() {
     19 }
     20 
     21 bool IpcAudioCapturer::Start(const PacketCapturedCallback& callback) {
     22   DCHECK(callback_.is_null());
     23   DCHECK(!callback.is_null());
     24 
     25   callback_ = callback;
     26   desktop_session_proxy_->SetAudioCapturer(weak_factory_.GetWeakPtr());
     27   return true;
     28 }
     29 
     30 void IpcAudioCapturer::Stop() {
     31   callback_.Reset();
     32   weak_factory_.InvalidateWeakPtrs();
     33 }
     34 
     35 bool IpcAudioCapturer::IsStarted() {
     36   return !callback_.is_null();
     37 }
     38 
     39 void IpcAudioCapturer::OnAudioPacket(scoped_ptr<AudioPacket> packet) {
     40   callback_.Run(packet.Pass());
     41 }
     42 
     43 }  // namespace remoting
     44