1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "media/video/capture/video_capture_device.h" 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/i18n/timezone.h" 8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/strings/string_util.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace media { 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 12558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochconst std::string VideoCaptureDevice::Name::GetNameAndModel() const { 13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::string model_id = GetModel(); 14d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (model_id.empty()) 15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return device_name_; 16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::string suffix = " (" + model_id + ")"; 17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (EndsWith(device_name_, suffix, true)) // |true| means case-sensitive. 18d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return device_name_; 19d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return device_name_ + suffix; 20558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 21558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 22116680a4aac90f2aa7413d9095a592090648e557Ben MurdochVideoCaptureDevice::Name::Name() {} 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben MurdochVideoCaptureDevice::Name::Name(const std::string& name, const std::string& id) 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : device_name_(name), unique_id_(id) {} 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(OS_WIN) 28116680a4aac90f2aa7413d9095a592090648e557Ben MurdochVideoCaptureDevice::Name::Name(const std::string& name, 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& id, 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const CaptureApiType api_type) 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : device_name_(name), 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unique_id_(id), 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci capture_api_class_(api_type), 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci capabilities_id_(id) {} 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(OS_MACOSX) 38116680a4aac90f2aa7413d9095a592090648e557Ben MurdochVideoCaptureDevice::Name::Name(const std::string& name, 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& id, 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const CaptureApiType api_type) 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : device_name_(name), 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch unique_id_(id), 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch capture_api_class_(api_type), 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) transport_type_(OTHER_TRANSPORT), 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) is_blacklisted_(false) {} 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben MurdochVideoCaptureDevice::Name::Name(const std::string& name, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& id, 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const CaptureApiType api_type, 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const TransportType transport_type) 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : device_name_(name), 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch unique_id_(id), 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch capture_api_class_(api_type), 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) transport_type_(transport_type), 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) is_blacklisted_(false) {} 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben MurdochVideoCaptureDevice::Name::~Name() {} 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)VideoCaptureDevice::~VideoCaptureDevice() {} 61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochint VideoCaptureDevice::GetPowerLineFrequencyForLocation() const { 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch std::string current_country = base::CountryCodeForCurrentTimezone(); 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (current_country.empty()) 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return 0; 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Sorted out list of countries with 60Hz power line frequency, from 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // http://en.wikipedia.org/wiki/Mains_electricity_by_country 68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const char* countries_using_60Hz[] = { 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "AI", "AO", "AS", "AW", "AZ", "BM", "BR", "BS", "BZ", "CA", "CO", 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "CR", "CU", "DO", "EC", "FM", "GT", "GU", "GY", "HN", "HT", "JP", 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "KN", "KR", "KY", "MS", "MX", "NI", "PA", "PE", "PF", "PH", "PR", 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "PW", "SA", "SR", "SV", "TT", "TW", "UM", "US", "VG", "VI", "VE"}; 73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const char** countries_using_60Hz_end = 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch countries_using_60Hz + arraysize(countries_using_60Hz); 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (std::find(countries_using_60Hz, countries_using_60Hz_end, 76c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch current_country) == countries_using_60Hz_end) { 77c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return kPowerLine50Hz; 78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 79c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return kPowerLine60Hz; 80c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 81c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace media 83