From nobody Sat May 20 18:24:38 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 4QNsYy5F6Xz4CMXH; Sat, 20 May 2023 18:24:38 +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 4QNsYy4dgcz3nHl; Sat, 20 May 2023 18:24:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684607078; 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=bXlAFx1Whk1cvEh9nGJNDDSEOeQHMdAqed7oIuQml+M=; b=FD4rj1RwK6ILrWVpzrvzkvXbDuRZ1CVO0QWPT9VGZ0/cEm3burcEg1pmo37fB1+Vrpga7c AT+YUchB5E6DL0JnNHRQwW7QcwpTonAVE+yfEcR3jW9M00gPZaHBA1rK0f4994Z7bwuo7L wYKbINZKq76WuxlydZrzv9XJAQ8kFSx8WJ3V4/Q7TiAgCAARSvCRThU0Dst5RUxJzhQg8U KOq88VmIUXf2lKJU2dsfOzAbQQhyiJW2MOfxqJGjAkjgSUXreGr3Owvk52XtOE+TOAe8v8 nm83tpaQtAOczRUShNqUoKYtRGufngvI0ovwX5CHa56D7DHGDqFnqiynlvQ6Gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684607078; 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=bXlAFx1Whk1cvEh9nGJNDDSEOeQHMdAqed7oIuQml+M=; b=qGZovMx4n0aWnQ+FWmKrptHrwIGUb84hW6K6JdqpTrLf7Ag1ox4guHBCKwv8zjjSiRjptO bdqZwWDxa1LhK1vWCg2HHSELfScmHr+C0+0fdVR5nXSQhG4devikqAm/o3MU9skmUDuXIK SJRZjuiRfj4N1MsOmH+QXlOhPA01RE0nVtITq5VlPRZG1qf6N3XkJi3aMSDSRxVuQiSCtQ jNStnoFazdE+3V5sp6MA6cLw5tRlF6ZLf9/u8Wpe84YbSTLc/0mFdD7UuxTGRBkBxxh411 2E32zYoQpPLbPSf0BL8fK960CImTpJ7Ha6yiFFgfs44A/8NLxTLsgiMHjazlJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1684607078; a=rsa-sha256; cv=none; b=Oia7eQNCn7YOPprI+XBtwj/th/Oeyj1E9jS/4jdK2nyEA1GNpQ3TGUdAYunHAlfgXzVy8r nXj0nL5iqq9nXAzx3kOBhAVyhbHCnK/3A8BqlkR0tTg7gRBn4ycK57DCt0lwSS9Cny4smd QulkOmSPAB3NxR3QyhyJDq1/3dyEpuH7VaCC7WqK+GjFy0HBkZtqcUc3dlwqFME+/TMO51 i0WbW0S/Y6fZvjQ7VWzElHLwA2NsAMkneZwSneH2rghc7la7EJePRHvwRCjlJsPPEADQCK seRqwd6YjFLc3cZFJ/qhpChBQA8AevbZj14sBUDTQjUUk37NlqD5SIwuyqsXqw== 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 4QNsYy3hJ3zL3P; Sat, 20 May 2023 18:24:38 +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 34KIOcss092447; Sat, 20 May 2023 18:24:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 34KIOcfl092446; Sat, 20 May 2023 18:24:38 GMT (envelope-from git) Date: Sat, 20 May 2023 18:24:38 GMT Message-Id: <202305201824.34KIOcfl092446@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org From: Robert Nagy Subject: git: efcc1dce2e6b - 2023Q2 - 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/2023Q2 X-Git-Reftype: branch X-Git-Commit: efcc1dce2e6b708579bec796d5c62077be3b9406 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch 2023Q2 has been updated by rnagy: URL: https://cgit.FreeBSD.org/ports/commit/?id=efcc1dce2e6b708579bec796d5c62077be3b9406 commit efcc1dce2e6b708579bec796d5c62077be3b9406 Author: Robert Nagy AuthorDate: 2023-05-20 18:23:20 +0000 Commit: Robert Nagy CommitDate: 2023-05-20 18:24:32 +0000 www/iridium: unbreak build after a previous bad merge PR: 271483 Approved by: rene (mentor, implicit) (cherry picked from commit 4037de3aa736bc59bd3a9d7a4a8ca9f1c7bfb3cd) --- ..._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(); } }