Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / media / video / capture / video_capture_device.cc
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), unique_id_(id), capture_api_class_(api_type) {}
32 #endif
33
34 #if defined(OS_MACOSX)
35 VideoCaptureDevice::Name::Name(const std::string& name,
36                                const std::string& id,
37                                const CaptureApiType api_type)
38     : device_name_(name),
39       unique_id_(id),
40       capture_api_class_(api_type),
41       transport_type_(OTHER_TRANSPORT),
42       is_blacklisted_(false) {}
43
44 VideoCaptureDevice::Name::Name(const std::string& name,
45                                const std::string& id,
46                                const CaptureApiType api_type,
47                                const TransportType transport_type)
48     : device_name_(name),
49       unique_id_(id),
50       capture_api_class_(api_type),
51       transport_type_(transport_type),
52       is_blacklisted_(false) {}
53 #endif
54
55 VideoCaptureDevice::Name::~Name() {}
56
57 VideoCaptureDevice::~VideoCaptureDevice() {}
58
59 int VideoCaptureDevice::GetPowerLineFrequencyForLocation() const {
60   std::string current_country = base::CountryCodeForCurrentTimezone();
61   if (current_country.empty())
62     return 0;
63   // Sorted out list of countries with 60Hz power line frequency, from
64   // http://en.wikipedia.org/wiki/Mains_electricity_by_country
65   const char* countries_using_60Hz[] = {
66       "AI", "AO", "AS", "AW", "AZ", "BM", "BR", "BS", "BZ", "CA", "CO",
67       "CR", "CU", "DO", "EC", "FM", "GT", "GU", "GY", "HN", "HT", "JP",
68       "KN", "KR", "KY", "MS", "MX", "NI", "PA", "PE", "PF", "PH", "PR",
69       "PW", "SA", "SR", "SV", "TT", "TW", "UM", "US", "VG", "VI", "VE"};
70   const char** countries_using_60Hz_end =
71       countries_using_60Hz + arraysize(countries_using_60Hz);
72   if (std::find(countries_using_60Hz, countries_using_60Hz_end,
73                 current_country) == countries_using_60Hz_end) {
74     return kPowerLine50Hz;
75   }
76   return kPowerLine60Hz;
77 }
78
79 }  // namespace media