git: 4037de3aa736 - main - www/iridium: unbreak build after a previous bad merge
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 20 May 2023 18:24:05 UTC
The branch main has been updated by rnagy:
URL: https://cgit.FreeBSD.org/ports/commit/?id=4037de3aa736bc59bd3a9d7a4a8ca9f1c7bfb3cd
commit 4037de3aa736bc59bd3a9d7a4a8ca9f1c7bfb3cd
Author: Robert Nagy <rnagy@FreeBSD.org>
AuthorDate: 2023-05-20 18:23:20 +0000
Commit: Robert Nagy <rnagy@FreeBSD.org>
CommitDate: 2023-05-20 18:23:20 +0000
www/iridium: unbreak build after a previous bad merge
PR: 271483
Approved by: rene (mentor, implicit)
---
..._capture_video_linux_v4l2__capture__delegate.cc | 288 +--------------------
1 file changed, 9 insertions(+), 279 deletions(-)
diff --git a/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
index e081a554f13d..f9dc32801d67 100644
--- a/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
+++ b/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -1,4 +1,4 @@
---- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2023-05-02 13:12:51 UTC
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2023-05-20 17:39:08 UTC
+++ media/capture/video/linux/v4l2_capture_delegate.cc
@@ -4,8 +4,10 @@
@@ -11,15 +11,7 @@
#include <poll.h>
#include <sys/fcntl.h>
#include <sys/ioctl.h>
-@@ -20,7 +22,6 @@
- #include "base/task/single_thread_task_runner.h"
- #include "base/trace_event/trace_event.h"
- #include "build/build_config.h"
--#include "media/base/bind_to_current_loop.h"
- #include "media/base/video_frame.h"
- #include "media/base/video_types.h"
- #include "media/capture/mojom/image_capture_types.h"
-@@ -29,10 +30,12 @@
+@@ -29,10 +31,12 @@
using media::mojom::MeteringMode;
@@ -32,105 +24,7 @@
// TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
// format is introduced to kernel.
-@@ -139,47 +142,6 @@ int GetControllingSpecialControl(int control_id) {
- return 0;
- }
-
--// Determines if |control_id| is special, i.e. controls another one's state.
--bool IsSpecialControl(int control_id) {
-- switch (control_id) {
-- case V4L2_CID_AUTO_WHITE_BALANCE:
-- case V4L2_CID_EXPOSURE_AUTO:
-- case V4L2_CID_EXPOSURE_AUTO_PRIORITY:
-- case V4L2_CID_FOCUS_AUTO:
-- return true;
-- }
-- return false;
--}
--
--// Determines if |control_id| should be skipped, https://crbug.com/697885.
--#if !defined(V4L2_CID_PAN_SPEED)
--#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 32)
--#endif
--#if !defined(V4L2_CID_TILT_SPEED)
--#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 33)
--#endif
--#if !defined(V4L2_CID_PANTILT_CMD)
--#define V4L2_CID_PANTILT_CMD (V4L2_CID_CAMERA_CLASS_BASE + 34)
--#endif
--bool IsBlockedControl(int control_id) {
-- switch (control_id) {
-- case V4L2_CID_PAN_RELATIVE:
-- case V4L2_CID_TILT_RELATIVE:
-- case V4L2_CID_PAN_RESET:
-- case V4L2_CID_TILT_RESET:
-- case V4L2_CID_PAN_ABSOLUTE:
-- case V4L2_CID_TILT_ABSOLUTE:
-- case V4L2_CID_ZOOM_ABSOLUTE:
-- case V4L2_CID_ZOOM_RELATIVE:
-- case V4L2_CID_ZOOM_CONTINUOUS:
-- case V4L2_CID_PAN_SPEED:
-- case V4L2_CID_TILT_SPEED:
-- case V4L2_CID_PANTILT_CMD:
-- return true;
-- }
-- return false;
--}
--
- bool IsNonEmptyRange(const mojom::RangePtr& range) {
- return range->min < range->max;
- }
-@@ -253,6 +215,49 @@ std::vector<uint32_t> V4L2CaptureDelegate::GetListOfUs
- return supported_formats;
- }
-
-+// Determines if |control_id| is special, i.e. controls another one's state.
-+// static
-+bool V4L2CaptureDelegate::IsSpecialControl(int control_id) {
-+ switch (control_id) {
-+ case V4L2_CID_AUTO_WHITE_BALANCE:
-+ case V4L2_CID_EXPOSURE_AUTO:
-+ case V4L2_CID_EXPOSURE_AUTO_PRIORITY:
-+ case V4L2_CID_FOCUS_AUTO:
-+ return true;
-+ }
-+ return false;
-+}
-+
-+// Determines if |control_id| should be skipped, https://crbug.com/697885.
-+#if !defined(V4L2_CID_PAN_SPEED)
-+#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 32)
-+#endif
-+#if !defined(V4L2_CID_TILT_SPEED)
-+#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 33)
-+#endif
-+#if !defined(V4L2_CID_PANTILT_CMD)
-+#define V4L2_CID_PANTILT_CMD (V4L2_CID_CAMERA_CLASS_BASE + 34)
-+#endif
-+// static
-+bool V4L2CaptureDelegate::IsBlockedControl(int control_id) {
-+ switch (control_id) {
-+ case V4L2_CID_PAN_RELATIVE:
-+ case V4L2_CID_TILT_RELATIVE:
-+ case V4L2_CID_PAN_RESET:
-+ case V4L2_CID_TILT_RESET:
-+ case V4L2_CID_PAN_ABSOLUTE:
-+ case V4L2_CID_TILT_ABSOLUTE:
-+ case V4L2_CID_ZOOM_ABSOLUTE:
-+ case V4L2_CID_ZOOM_RELATIVE:
-+ case V4L2_CID_ZOOM_CONTINUOUS:
-+ case V4L2_CID_PAN_SPEED:
-+ case V4L2_CID_TILT_SPEED:
-+ case V4L2_CID_PANTILT_CMD:
-+ return true;
-+ }
-+ return false;
-+}
-+
- V4L2CaptureDelegate::V4L2CaptureDelegate(
- V4L2CaptureDevice* v4l2,
- const VideoCaptureDeviceDescriptor& device_descriptor,
-@@ -728,7 +733,7 @@ base::WeakPtr<V4L2CaptureDelegate> V4L2CaptureDelegate
+@@ -728,7 +732,7 @@ base::WeakPtr<V4L2CaptureDelegate> V4L2CaptureDelegate
V4L2CaptureDelegate::~V4L2CaptureDelegate() = default;
@@ -139,7 +33,7 @@
int num_retries = 0;
for (; DoIoctl(request, argp) < 0 && num_retries < kMaxIOCtrlRetries;
++num_retries) {
-@@ -738,7 +743,7 @@ bool V4L2CaptureDelegate::RunIoctl(int request, void*
+@@ -738,7 +742,7 @@ bool V4L2CaptureDelegate::RunIoctl(int request, void*
return num_retries != kMaxIOCtrlRetries;
}
@@ -148,7 +42,7 @@
return HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), request, argp));
}
-@@ -778,6 +783,7 @@ bool V4L2CaptureDelegate::IsControllableControl(int co
+@@ -778,6 +782,7 @@ bool V4L2CaptureDelegate::IsControllableControl(int co
}
void V4L2CaptureDelegate::ReplaceControlEventSubscriptions() {
@@ -156,7 +50,7 @@
constexpr uint32_t kControlIds[] = {V4L2_CID_AUTO_EXPOSURE_BIAS,
V4L2_CID_AUTO_WHITE_BALANCE,
V4L2_CID_BRIGHTNESS,
-@@ -805,6 +811,7 @@ void V4L2CaptureDelegate::ReplaceControlEventSubscript
+@@ -805,6 +810,7 @@ void V4L2CaptureDelegate::ReplaceControlEventSubscript
<< ", {type = V4L2_EVENT_CTRL, id = " << control_id << "}";
}
}
@@ -164,171 +58,7 @@
}
mojom::RangePtr V4L2CaptureDelegate::RetrieveUserControlRange(int control_id) {
-@@ -829,100 +836,89 @@ mojom::RangePtr V4L2CaptureDelegate::RetrieveUserContr
- }
-
- void V4L2CaptureDelegate::ResetUserAndCameraControlsToDefault() {
-- // Set V4L2_CID_AUTO_WHITE_BALANCE to false first.
-- v4l2_control auto_white_balance = {};
-- auto_white_balance.id = V4L2_CID_AUTO_WHITE_BALANCE;
-- auto_white_balance.value = false;
-- if (!RunIoctl(VIDIOC_S_CTRL, &auto_white_balance))
-- return;
--
-- std::vector<struct v4l2_ext_control> special_camera_controls;
-- // Set V4L2_CID_EXPOSURE_AUTO to V4L2_EXPOSURE_MANUAL.
-- v4l2_ext_control auto_exposure = {};
-- auto_exposure.id = V4L2_CID_EXPOSURE_AUTO;
-- auto_exposure.value = V4L2_EXPOSURE_MANUAL;
-- special_camera_controls.push_back(auto_exposure);
-- // Set V4L2_CID_EXPOSURE_AUTO_PRIORITY to false.
-- v4l2_ext_control priority_auto_exposure = {};
-- priority_auto_exposure.id = V4L2_CID_EXPOSURE_AUTO_PRIORITY;
-- priority_auto_exposure.value = false;
-- special_camera_controls.push_back(priority_auto_exposure);
-- // Set V4L2_CID_FOCUS_AUTO to false.
-- v4l2_ext_control auto_focus = {};
-- auto_focus.id = V4L2_CID_FOCUS_AUTO;
-- auto_focus.value = false;
-- special_camera_controls.push_back(auto_focus);
--
- struct v4l2_ext_controls ext_controls = {};
-- ext_controls.ctrl_class = V4L2_CID_CAMERA_CLASS;
-- ext_controls.count = special_camera_controls.size();
-- ext_controls.controls = special_camera_controls.data();
-- if (DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls) < 0)
-- DPLOG(INFO) << "VIDIOC_S_EXT_CTRLS";
-+ ext_controls.which = V4L2_CTRL_WHICH_CUR_VAL;
-+ ext_controls.count = 0;
-+ const bool use_modern_s_ext_ctrls =
-+ DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls) == 0;
-
- for (const auto& control : kControls) {
- std::vector<struct v4l2_ext_control> camera_controls;
-+ std::vector<struct v4l2_ext_control> manual_special_camera_controls;
-+ std::vector<struct v4l2_ext_control> special_camera_controls;
-
- v4l2_queryctrl range = {};
-- range.id = control.control_base | V4L2_CTRL_FLAG_NEXT_CTRL;
-+ // Start right below the base so that the first next retrieved control ID
-+ // is always the first available control ID within the class even if that
-+ // control ID is equal to the base (V4L2_CID_BRIGHTNESS equals to
-+ // V4L2_CID_USER_BASE).
-+ range.id = (control.control_base - 1) | V4L2_CTRL_FLAG_NEXT_CTRL;
- while (0 == DoIoctl(VIDIOC_QUERYCTRL, &range)) {
- if (V4L2_CTRL_ID2CLASS(range.id) != V4L2_CTRL_ID2CLASS(control.class_id))
- break;
-+
-+ v4l2_ext_control ext_control = {};
-+ ext_control.id = range.id;
-+ ext_control.value = range.default_value;
-+
-+ // Prepare to query for the next control as `range` is an in-out
-+ // parameter.
- range.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
-
-- if (IsSpecialControl(range.id & ~V4L2_CTRL_FLAG_NEXT_CTRL))
-+ if (range.flags & (V4L2_CTRL_FLAG_DISABLED | V4L2_CTRL_FLAG_READ_ONLY)) {
-+ // Permanently disabled or permanently read-only.
- continue;
-- if (IsBlockedControl(range.id & ~V4L2_CTRL_FLAG_NEXT_CTRL))
-+ }
-+ if (IsBlockedControl(ext_control.id)) {
- continue;
-+ }
-
-- struct v4l2_ext_control ext_control = {};
-- ext_control.id = range.id & ~V4L2_CTRL_FLAG_NEXT_CTRL;
-- ext_control.value = range.default_value;
-- camera_controls.push_back(ext_control);
-+ if (IsSpecialControl(ext_control.id)) {
-+ special_camera_controls.push_back(ext_control);
-+ if (ext_control.id == V4L2_CID_EXPOSURE_AUTO) {
-+ ext_control.value = V4L2_EXPOSURE_MANUAL;
-+ } else {
-+ ext_control.value = false; // Not automatic but manual.
-+ }
-+ manual_special_camera_controls.push_back(ext_control);
-+ } else {
-+ camera_controls.push_back(ext_control);
-+ }
- }
-
- if (!camera_controls.empty()) {
-- struct v4l2_ext_controls ext_controls2 = {};
-- ext_controls2.ctrl_class = control.class_id;
-- ext_controls2.count = camera_controls.size();
-- ext_controls2.controls = camera_controls.data();
-- if (DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls2) < 0)
-+ // Set special controls to manual modes first.
-+ if (!manual_special_camera_controls.empty()) {
-+ ext_controls.which =
-+ use_modern_s_ext_ctrls ? V4L2_CTRL_WHICH_CUR_VAL : control.class_id;
-+ ext_controls.count = manual_special_camera_controls.size();
-+ ext_controls.controls = manual_special_camera_controls.data();
-+ if (DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls) < 0) {
-+ DPLOG(INFO) << "VIDIOC_S_EXT_CTRLS";
-+ }
-+ }
-+
-+ // Set non-special controls to the default values.
-+ ext_controls.which =
-+ use_modern_s_ext_ctrls ? V4L2_CTRL_WHICH_CUR_VAL : control.class_id;
-+ ext_controls.count = camera_controls.size();
-+ ext_controls.controls = camera_controls.data();
-+ if (DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls) < 0) {
- DPLOG(INFO) << "VIDIOC_S_EXT_CTRLS";
-+ }
- }
-- }
-
-- // Now set the special flags to the default values
-- v4l2_queryctrl range = {};
-- range.id = V4L2_CID_AUTO_WHITE_BALANCE;
-- DoIoctl(VIDIOC_QUERYCTRL, &range);
-- auto_white_balance.value = range.default_value;
-- DoIoctl(VIDIOC_S_CTRL, &auto_white_balance);
--
-- special_camera_controls.clear();
-- memset(&range, 0, sizeof(range));
-- range.id = V4L2_CID_EXPOSURE_AUTO;
-- DoIoctl(VIDIOC_QUERYCTRL, &range);
-- auto_exposure.value = range.default_value;
-- special_camera_controls.push_back(auto_exposure);
--
-- memset(&range, 0, sizeof(range));
-- range.id = V4L2_CID_EXPOSURE_AUTO_PRIORITY;
-- DoIoctl(VIDIOC_QUERYCTRL, &range);
-- priority_auto_exposure.value = range.default_value;
-- special_camera_controls.push_back(priority_auto_exposure);
--
-- memset(&range, 0, sizeof(range));
-- range.id = V4L2_CID_FOCUS_AUTO;
-- DoIoctl(VIDIOC_QUERYCTRL, &range);
-- auto_focus.value = range.default_value;
-- special_camera_controls.push_back(auto_focus);
--
-- memset(&ext_controls, 0, sizeof(ext_controls));
-- ext_controls.ctrl_class = V4L2_CID_CAMERA_CLASS;
-- ext_controls.count = special_camera_controls.size();
-- ext_controls.controls = special_camera_controls.data();
-- if (DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls) < 0)
-- DPLOG(INFO) << "VIDIOC_S_EXT_CTRLS";
-+ // Set special controls to the default values.
-+ if (!special_camera_controls.empty()) {
-+ ext_controls.which =
-+ use_modern_s_ext_ctrls ? V4L2_CTRL_WHICH_CUR_VAL : control.class_id;
-+ ext_controls.count = special_camera_controls.size();
-+ ext_controls.controls = special_camera_controls.data();
-+ if (DoIoctl(VIDIOC_S_EXT_CTRLS, &ext_controls) < 0) {
-+ DPLOG(INFO) << "VIDIOC_S_EXT_CTRLS";
-+ }
-+ }
-+ }
- }
-
- bool V4L2CaptureDelegate::MapAndQueueBuffer(int index) {
-@@ -985,7 +981,11 @@ void V4L2CaptureDelegate::DoCapture() {
+@@ -985,7 +991,11 @@ void V4L2CaptureDelegate::DoCapture() {
pollfd device_pfd = {};
device_pfd.fd = device_fd_.get();
@@ -340,7 +70,7 @@
const int result =
HANDLE_EINTR(v4l2_->poll(&device_pfd, 1, kCaptureTimeoutMs));
-@@ -1023,6 +1023,7 @@ void V4L2CaptureDelegate::DoCapture() {
+@@ -1023,6 +1033,7 @@ void V4L2CaptureDelegate::DoCapture() {
timeout_count_ = 0;
}
@@ -348,7 +78,7 @@
// Dequeue events if the driver has filled in some.
if (device_pfd.revents & POLLPRI) {
bool controls_changed = false;
-@@ -1057,6 +1058,7 @@ void V4L2CaptureDelegate::DoCapture() {
+@@ -1057,6 +1068,7 @@ void V4L2CaptureDelegate::DoCapture() {
client_->OnCaptureConfigurationChanged();
}
}