diff options
author | Michal Klocek <michal.klocek@qt.io> | 2017-01-03 14:46:48 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-31 13:46:42 +0200 |
commit | 770c1f9e7428ef158533e17bb25c7dc000ea37a3 (patch) | |
tree | 544bf1435ef20133738890f2ff905e50187f40fd /chromium/media | |
parent | 76f155f81acc7a5d8cdb7722b06f52ddf1650d03 (diff) | |
download | qtwebengine-chromium-770c1f9e7428ef158533e17bb25c7dc000ea37a3.tar.gz |
Fix Linux kernel lacking V4L2_CID_POWER_LINE_FREQUENCY_AUTO
Fix compilation with older Linux kernel's (e.g. Red Hat 6.6).
The enum was introduced in Linux kernel version 3.2 (kernel commit
d26a6635b2421).
Task-number: QTBUG-48298
Task-number: QTBUG-57014
Change-Id: I05b86520fc162d55d043d70d1b92aea5f7a61bc5
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'chromium/media')
-rw-r--r-- | chromium/media/capture/video/linux/v4l2_capture_delegate.cc | 13 | ||||
-rw-r--r-- | chromium/media/capture/video/linux/video_capture_device_linux.cc | 5 |
2 files changed, 15 insertions, 3 deletions
diff --git a/chromium/media/capture/video/linux/v4l2_capture_delegate.cc b/chromium/media/capture/video/linux/v4l2_capture_delegate.cc index 118d9976ea5..be27a97586a 100644 --- a/chromium/media/capture/video/linux/v4l2_capture_delegate.cc +++ b/chromium/media/capture/video/linux/v4l2_capture_delegate.cc @@ -12,6 +12,10 @@ #include <sys/mman.h> #include <utility> +#if !defined(OS_OPENBSD) +#include <linux/version.h> +#endif + #include "base/bind.h" #include "base/files/file_enumerator.h" #include "base/posix/eintr_wrapper.h" @@ -468,9 +472,12 @@ void V4L2CaptureDelegate::AllocateAndStart( // Set anti-banding/anti-flicker to 50/60Hz. May fail due to not supported // operation (|errno| == EINVAL in this case) or plain failure. - if ((power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_50HZ) || - (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_60HZ) || - (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_AUTO)) { + if ((power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_50HZ) + || (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_60HZ) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0) + || (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_AUTO) +#endif + ) { struct v4l2_control control = {}; control.id = V4L2_CID_POWER_LINE_FREQUENCY; control.value = power_line_frequency_; diff --git a/chromium/media/capture/video/linux/video_capture_device_linux.cc b/chromium/media/capture/video/linux/video_capture_device_linux.cc index ff0402bfa12..4b3e8bcbae1 100644 --- a/chromium/media/capture/video/linux/video_capture_device_linux.cc +++ b/chromium/media/capture/video/linux/video_capture_device_linux.cc @@ -17,6 +17,7 @@ #include <sys/videoio.h> #else #include <linux/videodev2.h> +#include <linux/version.h> #endif namespace media { @@ -145,8 +146,12 @@ int VideoCaptureDeviceLinux::TranslatePowerLineFrequencyToV4L2( case media::PowerLineFrequency::FREQUENCY_60HZ: return V4L2_CID_POWER_LINE_FREQUENCY_60HZ; default: +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0) // If we have no idea of the frequency, at least try and set it to AUTO. return V4L2_CID_POWER_LINE_FREQUENCY_AUTO; +#else + return V4L2_CID_POWER_LINE_FREQUENCY_60HZ; +#endif } } |