ProfilePolicyConnectorFactory: Refactoring from Profile to BrowserContext.
[chromium-blink-merge.git] / media / video / capture / video_capture_device.cc
blobdc62fc9ccd790e28b222f69685f66685f14bd4ea
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.
5 #include "media/video/capture/video_capture_device.h"
7 #include "base/i18n/timezone.h"
8 #include "base/strings/string_util.h"
10 namespace media {
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;
22 VideoCaptureDevice::Name::Name() {}
24 VideoCaptureDevice::Name::Name(const std::string& name, const std::string& id)
25 : device_name_(name), unique_id_(id) {}
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
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) {}
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
58 VideoCaptureDevice::Name::~Name() {}
60 #if defined(OS_WIN)
61 const char* VideoCaptureDevice::Name::GetCaptureApiTypeString() const {
62 switch(capture_api_type()) {
63 case MEDIA_FOUNDATION:
64 return "Media Foundation";
65 case DIRECT_SHOW:
66 return "Direct Show";
67 case DIRECT_SHOW_WDM_CROSSBAR:
68 return "Direct Show WDM Crossbar";
69 default:
70 NOTREACHED() << "Unknown Video Capture API type!";
71 return "Unknown API";
74 #elif defined(OS_MACOSX)
75 const char* VideoCaptureDevice::Name::GetCaptureApiTypeString() const {
76 switch(capture_api_type()) {
77 case AVFOUNDATION:
78 return "AV Foundation";
79 case QTKIT:
80 return "QTKit";
81 case DECKLINK:
82 return "DeckLink";
83 default:
84 NOTREACHED() << "Unknown Video Capture API type!";
85 return "Unknown API";
88 #endif
90 VideoCaptureDevice::~VideoCaptureDevice() {}
92 int VideoCaptureDevice::GetPowerLineFrequencyForLocation() const {
93 std::string current_country = base::CountryCodeForCurrentTimezone();
94 if (current_country.empty())
95 return 0;
96 // Sorted out list of countries with 60Hz power line frequency, from
97 // http://en.wikipedia.org/wiki/Mains_electricity_by_country
98 const char* countries_using_60Hz[] = {
99 "AI", "AO", "AS", "AW", "AZ", "BM", "BR", "BS", "BZ", "CA", "CO",
100 "CR", "CU", "DO", "EC", "FM", "GT", "GU", "GY", "HN", "HT", "JP",
101 "KN", "KR", "KY", "MS", "MX", "NI", "PA", "PE", "PF", "PH", "PR",
102 "PW", "SA", "SR", "SV", "TT", "TW", "UM", "US", "VG", "VI", "VE"};
103 const char** countries_using_60Hz_end =
104 countries_using_60Hz + arraysize(countries_using_60Hz);
105 if (std::find(countries_using_60Hz, countries_using_60Hz_end,
106 current_country) == countries_using_60Hz_end) {
107 return kPowerLine50Hz;
109 return kPowerLine60Hz;
112 bool VideoCaptureDevice::InitializeImageCapture(
113 const ImageCaptureFormat& image_format,
114 scoped_ptr<ImageClient> client) {
115 return false;
118 } // namespace media