191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org/* 291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * Copyright 2004 The WebRTC Project Authors. All rights reserved. 391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * 491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * Use of this source code is governed by a BSD-style license 591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * in the file PATENTS. All contributing project authors may 891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org */ 1091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#ifndef WEBRTC_SOUND_SOUNDSYSTEMPROXY_H_ 1291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#define WEBRTC_SOUND_SOUNDSYSTEMPROXY_H_ 1391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#include "webrtc/sound/soundsysteminterface.h" 1591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#include "webrtc/base/basictypes.h" // for NULL 1691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.orgnamespace rtc { 1891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 1991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// A SoundSystemProxy is a sound system that defers to another one. 2091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// Init(), Terminate(), and GetName() are left as pure virtual, so a sub-class 2191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org// must define them. 2291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.orgclass SoundSystemProxy : public SoundSystemInterface { 2391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org public: 2491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org SoundSystemProxy() : wrapped_(NULL) {} 2591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 2691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org // Each of these methods simply defers to wrapped_ if non-NULL, else fails. 2791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 2891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org virtual bool EnumeratePlaybackDevices(SoundDeviceLocatorList *devices); 2991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org virtual bool EnumerateCaptureDevices(SoundDeviceLocatorList *devices); 3091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 3191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org virtual bool GetDefaultPlaybackDevice(SoundDeviceLocator **device); 3291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org virtual bool GetDefaultCaptureDevice(SoundDeviceLocator **device); 3391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 3491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org virtual SoundOutputStreamInterface *OpenPlaybackDevice( 3591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org const SoundDeviceLocator *device, 3691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org const OpenParams ¶ms); 3791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org virtual SoundInputStreamInterface *OpenCaptureDevice( 3891bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org const SoundDeviceLocator *device, 3991bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org const OpenParams ¶ms); 4091bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 4191bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org protected: 4291bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org SoundSystemInterface *wrapped_; 4391bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org}; 4491bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 4591bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org} // namespace rtc 4691bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org 4791bac0462eaaa118674708a9c2b7e8f467edcb75henrike@webrtc.org#endif // WEBRTC_SOUND_SOUNDSYSTEMPROXY_H_ 48