From patchwork Fri Aug 23 14:29:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harvey Yang X-Patchwork-Id: 21004 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 1EA53C32C2 for ; Fri, 23 Aug 2024 14:32:20 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id BBBBB633D2; Fri, 23 Aug 2024 16:32:16 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="Q2yI6sH+"; dkim-atps=neutral Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A7637633CE for ; Fri, 23 Aug 2024 16:32:10 +0200 (CEST) Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3719f0758c6so1109977f8f.1 for ; Fri, 23 Aug 2024 07:32:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1724423529; x=1725028329; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=djAA4idgeV6EJbCGqlIZlZ4tuy/a4YT0To9eKJrnat8=; b=Q2yI6sH+JumOVUQYF3Y2p/nKzMQ7urCFUGVzz20VXtBx6NI5KpRVx0TfIcjWVBHXkY KkOLFE/Pi3OouoayJxM7p1bMzw++uxSVsH6jy/AfbWq0WJZLs6DELQXsNEUI1nd4EgjH JTXJUnuuCYv4yO64Uul2sdfPztweV17fP7gfo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724423529; x=1725028329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=djAA4idgeV6EJbCGqlIZlZ4tuy/a4YT0To9eKJrnat8=; b=vJhy4BCClHyGhyIGkBafPVCcfYWdpI4FYRqeZzN3QpEaSxAO4OmJ9LoaqcK3mWvn/f aqcAxgpKRN4qx6VONkcrtC8OHpoQxrERc6QYmlrV4T9vSnI098342O1ciAN6u3Rumykv px2vmBIBGRu8n7Ku4VW65sn/lOGWAMbaWia3Cr1jJ4yKB62BX9wK3Ua87QXKQSI8PEZc e4ySU61CHp6gqcntKNecpTYEQ6CLyNJOn0qLaQ3/sPq7DlNQeENg0iRNmlfD38Gtrmwl oZ14ZYGo9zDYjg0fD+QP6m04uOfFMhLxFZd00NDLKd1pAUkHOAGE2cmdXHBEm8xcEFL0 Q5Uw== X-Gm-Message-State: AOJu0Yzvh2aO4BkoIvSRd/XN8CWZXygwj8wQf81Cb4ypDP/MojiWvbuA imrGvAA/aoDpoOEg+Yx0Pkdg9Wx+5UwsQGomlDhNkF1FYjPXV4t5g2DxHoLe9vzTtMqWEMujE0h u7A== X-Google-Smtp-Source: AGHT+IH0Kzux6SAppsLHkh3CJnaHaYA7HESc7qSDz3T+wXFEbEAgCM12k/Fdse6g4uvpG/n/cb7u3w== X-Received: by 2002:a5d:56d0:0:b0:367:909b:8281 with SMTP id ffacd0b85a97d-373118e9e82mr1519388f8f.59.1724423529293; Fri, 23 Aug 2024 07:32:09 -0700 (PDT) Received: from chenghaoyang-germany.c.googlers.com.com (161.126.77.34.bc.googleusercontent.com. [34.77.126.161]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-373081ffb66sm4300627f8f.84.2024.08.23.07.32.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Aug 2024 07:32:09 -0700 (PDT) From: Harvey Yang X-Google-Original-From: Harvey Yang To: libcamera-devel@lists.libcamera.org Cc: Yudhistira Erlandinata , becker hsieh , Harvey Yang Subject: [PATCH v2 2/3] libcamera: Add face detection controls Date: Fri, 23 Aug 2024 14:29:09 +0000 Message-ID: <20240823143205.2668765-3-chenghaoyang@google.com> X-Mailer: git-send-email 2.46.0.295.g3b9ea8a38a-goog In-Reply-To: <20240823143205.2668765-1-chenghaoyang@google.com> References: <20240823143205.2668765-1-chenghaoyang@google.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Yudhistira Erlandinata Add FaceDetectMode, FaceDetectFaceRectangles, FaceDetectFaceScores, and FaceDetectFaceLandmark. Also add ControlTypePoint for supporting FaceDetectFaceLandmark. BUG=b:308713855 TEST=emerge-geralt libcamera-mtkisp7 Signed-off-by: Yudhistira Erlandinata Co-developed-by: becker hsieh Co-developed-by: Harvey Yang --- include/libcamera/controls.h | 6 +++++ src/libcamera/control_ids_core.yaml | 42 +++++++++++++++++++++++++++++ src/libcamera/controls.cpp | 6 +++++ 3 files changed, 54 insertions(+) diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h index 7c2bb2872..bf1b8609c 100644 --- a/include/libcamera/controls.h +++ b/include/libcamera/controls.h @@ -34,6 +34,7 @@ enum ControlType { ControlTypeString, ControlTypeRectangle, ControlTypeSize, + ControlTypePoint, }; namespace details { @@ -87,6 +88,11 @@ struct control_type { static constexpr ControlType value = ControlTypeSize; }; +template<> +struct control_type { + static constexpr ControlType value = ControlTypePoint; +}; + template struct control_type> : public control_type> { }; diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml index 6381970b4..5ff46c71e 100644 --- a/src/libcamera/control_ids_core.yaml +++ b/src/libcamera/control_ids_core.yaml @@ -860,6 +860,48 @@ controls: No further state changes or lens movements will occur until the AfPauseResume control is sent. + - FaceDetectMode: + type: uint8_t + description: | + Reporting mode of face detection. + + enum: + - name: FaceDetectModeOff + value: 0 + description: | + Pipeline should not report face detection result. + - name: FaceDetectModeSimple + value: 1 + description: | + Pipeline should at least report faces boundary rectangles and + confidence score for each of them. + + - FaceDetectFaceRectangles: + type: Rectangle + description: | + Boundary rectangle of the detected faces. + + size: [n] + + - FaceDetectFaceScores: + type: uint8_t + description: | + Confidence score of each of the detected faces by face detector. + The range of score is [0, 100], but usually those with low confidence + scores will not be included. + Currently identical to ANDROID_STATISTICS_FACE_SCORES. + + size: [n] + + - FaceDetectFaceLandmark: + type: Point + description: | + Array of human face landmark coordinates in format: + [..., left_eye_i, right_eye_i, mouth_i, left_eye_i+1, ...], + with i = index of face. + + size: [n] + - HdrMode: type: int32_t description: | diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp index 11d35321c..ce73ae9d7 100644 --- a/src/libcamera/controls.cpp +++ b/src/libcamera/controls.cpp @@ -61,6 +61,7 @@ static constexpr size_t ControlValueSize[] = { [ControlTypeString] = sizeof(char), [ControlTypeRectangle] = sizeof(Rectangle), [ControlTypeSize] = sizeof(Size), + [ControlTypePoint] = sizeof(Point), }; } /* namespace */ @@ -255,6 +256,11 @@ std::string ControlValue::toString() const str += value->toString(); break; } + case ControlTypePoint: { + const Point *value = reinterpret_cast(data); + str += value->toString(); + break; + } case ControlTypeNone: case ControlTypeString: break;