1 /* 2 * Copyright 2004 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 #ifndef WEBRTC_SOUND_SOUNDDEVICELOCATOR_H_ 12 #define WEBRTC_SOUND_SOUNDDEVICELOCATOR_H_ 13 14 #include <string> 15 16 #include "webrtc/base/constructormagic.h" 17 18 namespace rtc { 19 20 // A simple container for holding the name of a device and any additional id 21 // information needed to locate and open it. Implementations of 22 // SoundSystemInterface must subclass this to add any id information that they 23 // need. 24 class SoundDeviceLocator { 25 public: 26 virtual ~SoundDeviceLocator() {} 27 28 // Human-readable name for the device. 29 const std::string &name() const { return name_; } 30 31 // Name sound system uses to locate this device. 32 const std::string &device_name() const { return device_name_; } 33 34 // Makes a duplicate of this locator. 35 virtual SoundDeviceLocator *Copy() const = 0; 36 37 protected: 38 SoundDeviceLocator(const std::string &name, 39 const std::string &device_name) 40 : name_(name), device_name_(device_name) {} 41 42 explicit SoundDeviceLocator(const SoundDeviceLocator &that) 43 : name_(that.name_), device_name_(that.device_name_) {} 44 45 std::string name_; 46 std::string device_name_; 47 48 private: 49 DISALLOW_ASSIGN(SoundDeviceLocator); 50 }; 51 52 } // namespace rtc 53 54 #endif // WEBRTC_SOUND_SOUNDDEVICELOCATOR_H_ 55