From patchwork Wed Apr 27 15:13:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hanlin Chen X-Patchwork-Id: 15735 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 DE666C0F2A for ; Wed, 27 Apr 2022 15:13:41 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 947D365644; Wed, 27 Apr 2022 17:13:41 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651072421; bh=x04Oy2lJa4zSDd9yix498gcfUyOpvGniu4Be8Qijcj0=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=tKmQpoDWoS96Ml9Asld1V+eMcvPGFSttGRbkiSERvNhd9LptNZdkzVg/hrOkrVrch 1BSX7EwbwbJFEg1IUz1bd7UAzAY30meXvhpCzmuspbY9i4b1wx24q2tKoxz7zAYyWN H6CBpu+S67s/FcWiH8XJ2QogMKUWx0O6rBbr5A49DvaMC/eocaeF7Typ0A3YkBxjBt +g8j0jAss4uC4NwSTt7CKLukUU3KnzBz5JMTFvMHNewScY9HtBbpTkUUZ7OAMOp/e9 6JjQ2R4jp7Mgag+cHBg7Sr1KWssCB5184qjKYGQWsFZ/mSZ2Z8cDHFLtz25Quln36d Hf0+149TYRWYw== Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 8B1156042F for ; Wed, 27 Apr 2022 17:13:39 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="hnw6TWW8"; dkim-atps=neutral Received: by mail-pl1-x630.google.com with SMTP id d15so1791090pll.10 for ; Wed, 27 Apr 2022 08:13:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=9VhyuVoXH34kHBRgKw31YttWLfoy5j7qpx42uBmZMH8=; b=hnw6TWW8ebnxjbAuBsNq9/rmZRqj4DEIZV3KjmsI3jHIDQaeTVWw7Qe9m5WH4ha669 0cXpehFxjJyPcNgHb5UGlYfXlkUPdIetvQkf6P70GrlTI5s/DhNNaT1fW31kMaAUx8y3 JnQ/AFM8zugZnMvI/FxX4xuGPMv4wAwb40NN0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=9VhyuVoXH34kHBRgKw31YttWLfoy5j7qpx42uBmZMH8=; b=PJ1dqgyqmGrUEqn5cjQ/hLK5R/coBEE2FmC6vls+1uhtFllxgRoM5UANa9lUb0bDYA z1wEg5+Q9zImM5kO1p1goqMrJjS603x4MT2RKIzZfMaMLSVQZD8oMSpwZE7J/BblSxxg 6P3fuhozU1eLspq4blnlgQ6ZrpYip6wDvf4CkM/PzJbTRskrvPdE0uP6mhigmG/SsmVQ tjKJSA2xFv0VNSEwfSnGrzCNad/eYr5YG0n1oePurvV838mGFB+kF64Gy3gcvws8WYRx KopRf1m6x4nEWqKh0HuolVPjbwUggKorCoE8DBcrdZuL+TWJF4NIr/ik+kgvOVRAhNFp XGVQ== X-Gm-Message-State: AOAM5318g4Z8RfZx7r/Ee9tRK38kLu2MEDrMvJDYtzWOlvoSaH5rrJpv 7DREKDeEI4+qVCrLsryg2G4iFGOTnkN6cA== X-Google-Smtp-Source: ABdhPJxUM3zZX9HCdRpzOILiyXsJKppC6igW4Uq1BFvs+VLUtSe9V30Itnv+6x9yWbUyMVEN7AT+Ww== X-Received: by 2002:a17:90b:3949:b0:1d9:8717:9129 with SMTP id oe9-20020a17090b394900b001d987179129mr15489317pjb.213.1651072417944; Wed, 27 Apr 2022 08:13:37 -0700 (PDT) Received: from localhost ([2401:fa00:1:17:47e:a9de:8ea1:3876]) by smtp.gmail.com with UTF8SMTPSA id w129-20020a628287000000b0050d4246fbedsm10974109pfd.187.2022.04.27.08.13.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 27 Apr 2022 08:13:37 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Wed, 27 Apr 2022 23:13:34 +0800 Message-Id: <20220427151334.609152-1-hanlinchen@chromium.org> X-Mailer: git-send-email 2.36.0.rc2.479.g8af0fa9b8e-goog MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3] android: camera_capabilities: Adjust minimum frame duration to match FPS 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: , X-Patchwork-Original-From: Han-Lin Chen via libcamera-devel From: Hanlin Chen Reply-To: Han-Lin Chen Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" CTS calculates FPS with a rounding formula: See Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration() fps = floor(1e9 / minFrameDuration + 0.05f) The android adapter reports it as the AE target FPS. The patch adjusts the reported minimum frame duration to match the reported FPS. Signed-off-by: Han-Lin Chen Reviewed-by: Jacopo Mondi Reviewed-by: Umang Jain --- src/android/camera_capabilities.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp index 55d651f3..ee17cdc7 100644 --- a/src/android/camera_capabilities.cpp +++ b/src/android/camera_capabilities.cpp @@ -687,6 +687,14 @@ int CameraCapabilities::initializeStreamConfigurations() minFrameDuration = minFrameDurationCap; } + /* + * Calculate FPS as CTS does and adjust the minimum + * frame duration accordingly: see + * Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration() + */ + minFrameDuration = + 1e9 / static_cast(floor(1e9 / minFrameDuration + 0.05f)); + streamConfigurations_.push_back({ res, androidFormat, minFrameDuration, maxFrameDuration, }); @@ -1287,12 +1295,10 @@ int CameraCapabilities::initializeStaticMetadata() * recording profile. Inspecting the Intel IPU3 HAL * implementation confirms this but no reference has been found * in the metadata documentation. - * - * Calculate FPS as CTS does: see - * Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration() */ - unsigned int fps = static_cast - (floor(1e9 / entry.minFrameDurationNsec + 0.05f)); + unsigned int fps = + static_cast(floor(1e9 / entry.minFrameDurationNsec)); + if (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30) continue;