Home | History | Annotate | Download | only in capture
      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