// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "media/audio/audio_device_description.h" #include #include "base/bind.h" #include "base/notreached.h" #include "build/chromecast_buildflags.h" #include "media/base/localized_strings.h" namespace media { const char AudioDeviceDescription::kDefaultDeviceId[] = "default"; const char AudioDeviceDescription::kCommunicationsDeviceId[] = "communications"; const char AudioDeviceDescription::kLoopbackInputDeviceId[] = "loopback"; const char AudioDeviceDescription::kLoopbackWithMuteDeviceId[] = "loopbackWithMute"; // static bool AudioDeviceDescription::IsDefaultDevice(const std::string& device_id) { return device_id.empty() || device_id == AudioDeviceDescription::kDefaultDeviceId; } // static bool AudioDeviceDescription::IsCommunicationsDevice( const std::string& device_id) { return device_id == AudioDeviceDescription::kCommunicationsDeviceId; } // static bool AudioDeviceDescription::IsLoopbackDevice(const std::string& device_id) { return device_id.compare(kLoopbackInputDeviceId) == 0 || device_id.compare(kLoopbackWithMuteDeviceId) == 0; } // static bool AudioDeviceDescription::UseSessionIdToSelectDevice( const base::UnguessableToken& session_id, const std::string& device_id) { return !session_id.is_empty() && device_id.empty(); } // static std::string AudioDeviceDescription::GetDefaultDeviceName() { #if !defined(OS_IOS) return GetLocalizedStringUTF8(DEFAULT_AUDIO_DEVICE_NAME); #else NOTREACHED(); return ""; #endif } // static std::string AudioDeviceDescription::GetCommunicationsDeviceName() { #if defined(OS_WIN) return GetLocalizedStringUTF8(COMMUNICATIONS_AUDIO_DEVICE_NAME); #elif BUILDFLAG(IS_CHROMECAST) return ""; #else NOTREACHED(); return ""; #endif } // static std::string AudioDeviceDescription::GetDefaultDeviceName( const std::string& real_device_name) { if (real_device_name.empty()) return GetDefaultDeviceName(); // TODO(guidou): Put the names together in a localized manner. // http://crbug.com/788767 return GetDefaultDeviceName() + " - " + real_device_name; } // static std::string AudioDeviceDescription::GetCommunicationsDeviceName( const std::string& real_device_name) { if (real_device_name.empty()) return GetCommunicationsDeviceName(); // TODO(guidou): Put the names together in a localized manner. // http://crbug.com/788767 return GetCommunicationsDeviceName() + " - " + real_device_name; } // static void AudioDeviceDescription::LocalizeDeviceDescriptions( AudioDeviceDescriptions* device_descriptions) { for (auto& description : *device_descriptions) { if (media::AudioDeviceDescription::IsDefaultDevice(description.unique_id)) { description.device_name = media::AudioDeviceDescription::GetDefaultDeviceName( description.device_name); } else if (media::AudioDeviceDescription::IsCommunicationsDevice( description.unique_id)) { description.device_name = media::AudioDeviceDescription::GetCommunicationsDeviceName( description.device_name); } } } AudioDeviceDescription::AudioDeviceDescription(std::string device_name, std::string unique_id, std::string group_id) : device_name(std::move(device_name)), unique_id(std::move(unique_id)), group_id(std::move(group_id)) {} } // namespace media