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 IpcAudioCapturer(scoped_refptr<DesktopSessionProxy> desktop_session_proxy)12IpcAudioCapturer::IpcAudioCapturer( 13 scoped_refptr<DesktopSessionProxy> desktop_session_proxy) 14 : desktop_session_proxy_(desktop_session_proxy), 15 weak_factory_(this) { 16 } 17 ~IpcAudioCapturer()18IpcAudioCapturer::~IpcAudioCapturer() { 19 } 20 Start(const PacketCapturedCallback & callback)21bool 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 Stop()30void IpcAudioCapturer::Stop() { 31 callback_.Reset(); 32 weak_factory_.InvalidateWeakPtrs(); 33 } 34 IsStarted()35bool IpcAudioCapturer::IsStarted() { 36 return !callback_.is_null(); 37 } 38 OnAudioPacket(scoped_ptr<AudioPacket> packet)39void IpcAudioCapturer::OnAudioPacket(scoped_ptr<AudioPacket> packet) { 40 callback_.Run(packet.Pass()); 41 } 42 43 } // namespace remoting 44