diff options
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | media/base/video_capture_types.h | 1 | ||||
-rw-r--r-- | media/capture/video/linux/video_capture_device_linux.cc | 7 | ||||
-rw-r--r-- | media/capture/video/linux/video_capture_device_linux.h | 2 | ||||
-rw-r--r-- | media/capture/video/mac/video_capture_device_mac.mm | 17 | ||||
-rw-r--r-- | media/capture/video/video_capture_device.cc | 15 | ||||
-rw-r--r-- | media/capture/video/video_capture_device.h | 5 | ||||
-rw-r--r-- | media/capture/video/win/video_capture_device_win.cc | 15 |
8 files changed, 33 insertions, 30 deletions
@@ -550,6 +550,7 @@ Sungmann Cho <sungmann.cho@navercorp.com> Sunitha Srivatsa <srivats@amazon.com> Suyash Sengar <suyash.s@samsung.com> Sunil Ratnu <sunil.ratnu@samsung.com> +Suvanjan Mukherjee <suvanjanmukherjee@gmail.com> Swati Jaiswal <swa.jaiswal@samsung.com> Sylvain Zimmer <sylvinus@gmail.com> Szymon Piechowicz <szymonpiechowicz@o2.pl> diff --git a/media/base/video_capture_types.h b/media/base/video_capture_types.h index 4790ea5..d6ad5e3 100644 --- a/media/base/video_capture_types.h +++ b/media/base/video_capture_types.h @@ -62,6 +62,7 @@ enum class PowerLineFrequency { FREQUENCY_60HZ = 60, FREQUENCY_MAX = FREQUENCY_60HZ }; + // Assert that the int:frequency mapping is correct. static_assert(static_cast<int>(PowerLineFrequency::FREQUENCY_DEFAULT) == 0, "static_cast<int>(FREQUENCY_DEFAULT) must equal 0."); diff --git a/media/capture/video/linux/video_capture_device_linux.cc b/media/capture/video/linux/video_capture_device_linux.cc index 487199e..cbf2b49 100644 --- a/media/capture/video/linux/video_capture_device_linux.cc +++ b/media/capture/video/linux/video_capture_device_linux.cc @@ -132,11 +132,12 @@ void VideoCaptureDeviceLinux::SetRotation(int rotation) { } // static -int VideoCaptureDeviceLinux::TranslatePowerLineFrequencyToV4L2(int frequency) { +int VideoCaptureDeviceLinux::TranslatePowerLineFrequencyToV4L2( + PowerLineFrequency frequency) { switch (frequency) { - case static_cast<int>(media::PowerLineFrequency::FREQUENCY_50HZ): + case media::PowerLineFrequency::FREQUENCY_50HZ: return V4L2_CID_POWER_LINE_FREQUENCY_50HZ; - case static_cast<int>(media::PowerLineFrequency::FREQUENCY_60HZ): + case media::PowerLineFrequency::FREQUENCY_60HZ: return V4L2_CID_POWER_LINE_FREQUENCY_60HZ; default: // If we have no idea of the frequency, at least try and set it to AUTO. diff --git a/media/capture/video/linux/video_capture_device_linux.h b/media/capture/video/linux/video_capture_device_linux.h index 61e2cba..100d87f 100644 --- a/media/capture/video/linux/video_capture_device_linux.h +++ b/media/capture/video/linux/video_capture_device_linux.h @@ -41,7 +41,7 @@ class VideoCaptureDeviceLinux : public VideoCaptureDevice { void SetRotation(int rotation); private: - static int TranslatePowerLineFrequencyToV4L2(int frequency); + static int TranslatePowerLineFrequencyToV4L2(PowerLineFrequency frequency); // Internal delegate doing the actual capture setting, buffer allocation and // circulation with the V4L2 API. Created and deleted in the thread where diff --git a/media/capture/video/mac/video_capture_device_mac.mm b/media/capture/video/mac/video_capture_device_mac.mm index 8f71b68..5fc083e 100644 --- a/media/capture/video/mac/video_capture_device_mac.mm +++ b/media/capture/video/mac/video_capture_device_mac.mm @@ -189,7 +189,7 @@ static bool FindVideoControlInterfaceInDeviceInterface( // set the appropriate Power Line frequency for flicker removal. static void SetAntiFlickerInVideoControlInterface( IOCFPlugInInterface** plugin_interface, - const int frequency) { + const PowerLineFrequency frequency) { // Create, the control interface for the found plugin, and release // the intermediate plugin. IOUSBInterfaceInterface** control_interface = NULL; @@ -249,7 +249,8 @@ static void SetAntiFlickerInVideoControlInterface( command.wValue = (selector << 8); command.wLength = kPuPowerLineFrequencyControlCommandSize; command.wLenDone = 0; - int power_line_flag_value = (frequency == 50) ? k50Hz : k60Hz; + int power_line_flag_value = + (frequency == PowerLineFrequency::FREQUENCY_50HZ) ? k50Hz : k60Hz; command.pData = &power_line_flag_value; IOReturn ret = @@ -257,8 +258,8 @@ static void SetAntiFlickerInVideoControlInterface( DLOG_IF(ERROR, ret != kIOReturnSuccess) << "Anti-flicker control request" << " failed (0x" << std::hex << ret << "), unit id: " << real_unit_id; - DVLOG_IF(1, ret == kIOReturnSuccess) << "Anti-flicker set to " << frequency - << "Hz"; + DVLOG_IF(1, ret == kIOReturnSuccess) << "Anti-flicker set to " + << static_cast<int>(frequency) << "Hz"; (*control_interface)->USBInterfaceClose(control_interface); } @@ -270,11 +271,11 @@ static void SetAntiFlickerInVideoControlInterface( // are created. The latter is used to a send a power frequency setting command. static void SetAntiFlickerInUsbDevice(const int vendor_id, const int product_id, - const int frequency) { - if (frequency == 0) + const PowerLineFrequency frequency) { + if (frequency == PowerLineFrequency::FREQUENCY_DEFAULT) return; - DVLOG(1) << "Setting Power Line Frequency to " << frequency << " Hz, device " - << std::hex << vendor_id << "-" << product_id; + DVLOG(1) << "Setting Power Line Frequency to " << static_cast<int>(frequency) + << " Hz, device " << std::hex << vendor_id << "-" << product_id; // Compose a search dictionary with vendor and product ID. CFMutableDictionaryRef query_dictionary = diff --git a/media/capture/video/video_capture_device.cc b/media/capture/video/video_capture_device.cc index 01816c2..e7e2c91 100644 --- a/media/capture/video/video_capture_device.cc +++ b/media/capture/video/video_capture_device.cc @@ -145,10 +145,11 @@ VideoCaptureDevice::Client::Buffer::~Buffer() { VideoCaptureDevice::~VideoCaptureDevice() { } -int VideoCaptureDevice::GetPowerLineFrequencyForLocation() const { - std::string current_country = base::CountryCodeForCurrentTimezone(); +PowerLineFrequency VideoCaptureDevice::GetPowerLineFrequencyForLocation() + const { + const std::string current_country = base::CountryCodeForCurrentTimezone(); if (current_country.empty()) - return 0; + return PowerLineFrequency::FREQUENCY_DEFAULT; // Sorted out list of countries with 60Hz power line frequency, from // http://en.wikipedia.org/wiki/Mains_electricity_by_country const char* countries_using_60Hz[] = { @@ -160,17 +161,17 @@ int VideoCaptureDevice::GetPowerLineFrequencyForLocation() const { countries_using_60Hz + arraysize(countries_using_60Hz); if (std::find(countries_using_60Hz, countries_using_60Hz_end, current_country) == countries_using_60Hz_end) { - return static_cast<int>(media::PowerLineFrequency::FREQUENCY_50HZ); + return media::PowerLineFrequency::FREQUENCY_50HZ; } - return static_cast<int>(media::PowerLineFrequency::FREQUENCY_60HZ); + return media::PowerLineFrequency::FREQUENCY_60HZ; } -int VideoCaptureDevice::GetPowerLineFrequency( +PowerLineFrequency VideoCaptureDevice::GetPowerLineFrequency( const VideoCaptureParams& params) const { switch (params.power_line_frequency) { case media::PowerLineFrequency::FREQUENCY_50HZ: // fall through case media::PowerLineFrequency::FREQUENCY_60HZ: - return static_cast<int>(params.power_line_frequency); + return params.power_line_frequency; default: return GetPowerLineFrequencyForLocation(); } diff --git a/media/capture/video/video_capture_device.h b/media/capture/video/video_capture_device.h index 33601336..b66409b 100644 --- a/media/capture/video/video_capture_device.h +++ b/media/capture/video/video_capture_device.h @@ -283,12 +283,13 @@ class MEDIA_EXPORT VideoCaptureDevice { // Gets the power line frequency, either from the params if specified by the // user or from the current system time zone. - int GetPowerLineFrequency(const VideoCaptureParams& params) const; + PowerLineFrequency GetPowerLineFrequency( + const VideoCaptureParams& params) const; private: // Gets the power line frequency from the current system time zone if this is // defined, otherwise returns 0. - int GetPowerLineFrequencyForLocation() const; + PowerLineFrequency GetPowerLineFrequencyForLocation() const; }; } // namespace media diff --git a/media/capture/video/win/video_capture_device_win.cc b/media/capture/video/win/video_capture_device_win.cc index 055fc21..9960406 100644 --- a/media/capture/video/win/video_capture_device_win.cc +++ b/media/capture/video/win/video_capture_device_win.cc @@ -539,11 +539,9 @@ bool VideoCaptureDeviceWin::CreateCapabilityMap() { // Set the power line frequency removal in |capture_filter_| if available. void VideoCaptureDeviceWin::SetAntiFlickerInCaptureFilter( const VideoCaptureParams& params) { - const int power_line_frequency = GetPowerLineFrequency(params); - if (power_line_frequency != - static_cast<int>(media::PowerLineFrequency::FREQUENCY_50HZ) && - power_line_frequency != - static_cast<int>(media::PowerLineFrequency::FREQUENCY_60HZ)) { + const PowerLineFrequency power_line_frequency = GetPowerLineFrequency(params); + if (power_line_frequency != media::PowerLineFrequency::FREQUENCY_50HZ && + power_line_frequency != media::PowerLineFrequency::FREQUENCY_60HZ) { return; } ScopedComPtr<IKsPropertySet> ks_propset; @@ -559,10 +557,9 @@ void VideoCaptureDeviceWin::SetAntiFlickerInCaptureFilter( data.Property.Set = PROPSETID_VIDCAP_VIDEOPROCAMP; data.Property.Id = KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY; data.Property.Flags = KSPROPERTY_TYPE_SET; - data.Value = (power_line_frequency == - static_cast<int>(media::PowerLineFrequency::FREQUENCY_50HZ)) - ? 1 - : 2; + data.Value = + (power_line_frequency == media::PowerLineFrequency::FREQUENCY_50HZ) ? 1 + : 2; data.Flags = KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL; hr = ks_propset->Set(PROPSETID_VIDCAP_VIDEOPROCAMP, KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY, &data, |