From nobody Sat May 20 18:24:05 2023 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QNsYL1R1cz4CMp9; Sat, 20 May 2023 18:24:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QNsYL19wBz3myJ; Sat, 20 May 2023 18:24:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684607046; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n7dnoPzK+ZXWLfwguacoM9Ol9eyP0pZ/fCPvN8PScVY=; b=ZgqMrcapyERNBVeL+f2xA7IH6b6EbQrbHwQS18ul+XP/rkX64SQZGZ2MiWJwYN5OXHBBUu SUt0h+goW3Y6cjWEvV7Eu7U6O8vP93ypoj/DuASUGBqCt+oclR9Cti+1DOJueFFKdgbTG+ OMHVZIA5QY6f1KAoMkM8b+NMyzmJHIjclNNFMTp2GPzxGxAsmKa/TtrIgLxbGf+wBbllqB uY35OwRVIQ6RXPVMt9v+AhxjsczLStib+vUvwvJouEAi0nx/vkjOJ7asbPL5NLL2LBV/+2 gCl9VAWtQkH8q890JhsoNOm56vNuKxhS92bV3BSvnVkgjetH3QuUFLRJrdpYmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684607046; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n7dnoPzK+ZXWLfwguacoM9Ol9eyP0pZ/fCPvN8PScVY=; b=hz7PEE3Y2D5vVJnXQBARvK/2sHIu1eaT/NmzO5/Fme7YCP3cFaSG+/qqHZANveyQDWutHH 3BZIhoZXfK2M+T6e3VjJxcOjDtySguEw/Q1+P6gwtFkdGm3DoRZC/Ilyc7dfpdDlpxwWCq u2IB1/5CVbE/sLjlgPB3F/KXtr/Hem7pYFvyvSoTKDSLIju7mCis49efRVYXJXukuhrOLu 7VZW4zC6aUkiLvYbgL0/fskbUBErfF1R7XodWYZQFEQAFO4rn8HVqNntsMJ6V2z1uxRIKX e+vFiH7m2iTYmHheMAIgzgHnxw45eK0XlJ51inpSnLfF1yIzBMzGeP0srMv82w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1684607046; a=rsa-sha256; cv=none; b=qa8xsZXXgaxvM/re4vSi6xfFSbxzfrZyY+Pj7mgX99sM777iRhrqxtZ4hgfKZNsQYOPO6j nIvgwsSKZC82mf4SUTW8m85IwmRfFHJZmGw0IKwkfjztrzDQp7N1qme5LOSiIpnjDLXFiT nBH2e6gfD3WMua+3FX10/3is4Z0oFxVF6+b4iGDoQEYMSN9NMKFK4y5LJzo0eBcKRrFWge MHm0L8M7riO7U3E5Za7yqoUl1/8f8gPpP+LVvyVJDOyaCQROw+Vvhd5G2WTpV8h673bmEp GnbDXJtGLL3GBSvsOobiW+NGh7nZ87aUMm9LlbOLcGi2N87tRjvSTx7RVJ7vDg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QNsYL0DMKzKgg; Sat, 20 May 2023 18:24:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 34KIO5Ap092255; Sat, 20 May 2023 18:24:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 34KIO5Pj092254; Sat, 20 May 2023 18:24:05 GMT (envelope-from git) Date: Sat, 20 May 2023 18:24:05 GMT Message-Id: <202305201824.34KIO5Pj092254@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Robert Nagy Subject: git: 4037de3aa736 - main - www/iridium: unbreak build after a previous bad merge List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rnagy X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4037de3aa736bc59bd3a9d7a4a8ca9f1c7bfb3cd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rnagy: URL: https://cgit.FreeBSD.org/ports/commit/?id=4037de3aa736bc59bd3a9d7a4a8ca9f1c7bfb3cd commit 4037de3aa736bc59bd3a9d7a4a8ca9f1c7bfb3cd Author: Robert Nagy AuthorDate: 2023-05-20 18:23:20 +0000 Commit: Robert Nagy 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 #include #include -@@ -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 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 +@@ -728,7 +732,7 @@ base::WeakPtr 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 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 camera_controls; -+ std::vector manual_special_camera_controls; -+ std::vector 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(); } }