1 // Copyright 2013 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 "media/video/capture/video_capture_device.h" 6 7 #include "base/i18n/timezone.h" 8 #include "base/strings/string_util.h" 9 10 namespace media { 11 12 const std::string VideoCaptureDevice::Name::GetNameAndModel() const { 13 const std::string model_id = GetModel(); 14 if (model_id.empty()) 15 return device_name_; 16 const std::string suffix = " (" + model_id + ")"; 17 if (EndsWith(device_name_, suffix, true)) // |true| means case-sensitive. 18 return device_name_; 19 return device_name_ + suffix; 20 } 21 22 VideoCaptureDevice::Name::Name() {} 23 24 VideoCaptureDevice::Name::Name(const std::string& name, const std::string& id) 25 : device_name_(name), unique_id_(id) {} 26 27 #if defined(OS_WIN) 28 VideoCaptureDevice::Name::Name(const std::string& name, 29 const std::string& id, 30 const CaptureApiType api_type) 31 : device_name_(name), 32 unique_id_(id), 33 capture_api_class_(api_type), 34 capabilities_id_(id) {} 35 #endif 36 37 #if defined(OS_MACOSX) 38 VideoCaptureDevice::Name::Name(const std::string& name, 39 const std::string& id, 40 const CaptureApiType api_type) 41 : device_name_(name), 42 unique_id_(id), 43 capture_api_class_(api_type), 44 transport_type_(OTHER_TRANSPORT), 45 is_blacklisted_(false) {} 46 47 VideoCaptureDevice::Name::Name(const std::string& name, 48 const std::string& id, 49 const CaptureApiType api_type, 50 const TransportType transport_type) 51 : device_name_(name), 52 unique_id_(id), 53 capture_api_class_(api_type), 54 transport_type_(transport_type), 55 is_blacklisted_(false) {} 56 #endif 57 58 VideoCaptureDevice::Name::~Name() {} 59 60 VideoCaptureDevice::~VideoCaptureDevice() {} 61 62 int VideoCaptureDevice::GetPowerLineFrequencyForLocation() const { 63 std::string current_country = base::CountryCodeForCurrentTimezone(); 64 if (current_country.empty()) 65 return 0; 66 // Sorted out list of countries with 60Hz power line frequency, from 67 // http://en.wikipedia.org/wiki/Mains_electricity_by_country 68 const char* countries_using_60Hz[] = { 69 "AI", "AO", "AS", "AW", "AZ", "BM", "BR", "BS", "BZ", "CA", "CO", 70 "CR", "CU", "DO", "EC", "FM", "GT", "GU", "GY", "HN", "HT", "JP", 71 "KN", "KR", "KY", "MS", "MX", "NI", "PA", "PE", "PF", "PH", "PR", 72 "PW", "SA", "SR", "SV", "TT", "TW", "UM", "US", "VG", "VI", "VE"}; 73 const char** countries_using_60Hz_end = 74 countries_using_60Hz + arraysize(countries_using_60Hz); 75 if (std::find(countries_using_60Hz, countries_using_60Hz_end, 76 current_country) == countries_using_60Hz_end) { 77 return kPowerLine50Hz; 78 } 79 return kPowerLine60Hz; 80 } 81 82 } // namespace media 83