From patchwork Wed Sep 1 08:03:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hirokazu Honda X-Patchwork-Id: 13591 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 31B87BD87D for ; Wed, 1 Sep 2021 08:03:14 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D833260253; Wed, 1 Sep 2021 10:03:13 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="HpzacafM"; dkim-atps=neutral Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5814360253 for ; Wed, 1 Sep 2021 10:03:12 +0200 (CEST) Received: by mail-pl1-x62d.google.com with SMTP id m4so1055624pll.0 for ; Wed, 01 Sep 2021 01:03:12 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=OxzUfuH3EjHKFdIqWNsivIS6aByxXvu9J9Tc0R1ndro=; b=HpzacafMYFwmPWGKztfmSn03myCz7hQrx5XrSqQVhhE4510/euHM0ultucq8v5S0tB jYLEQgr1QYp3EbL1DwK0mI6rjXhNpXF1bVI64kdWdEqvFp3wy1xfiZjuhtvwznthuKt/ QZprUOD4ur4MCVQilqELGAPqYW0x9J1/kb6LY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OxzUfuH3EjHKFdIqWNsivIS6aByxXvu9J9Tc0R1ndro=; b=QmV/Ri/UVq2p+UxzPNkqu+ZNnRpg4k/LIMAqv+3OnTF20SLIyezMU06Td7jGeX84z5 tjrFoY33ODBzeWVEjWxjezPGFDl+PgJ7ttrNFj5ciOv3RQ3rMZREVxhzlH1WT0HDtNJ2 bkahmobHFuNokCiwd55PQUqZPSjZdfWWE2psyrCor0sBTBaHnXIAz2xrFXWUP+hj+p8H WldjBbut2VWlPbvV7daR9HtdY97VHBfxlsZU/N2PyToPJsivyR7P2mjDducNjSxR/jYd 3+fA8/Bp1/ok3xkga1tapsxqSVdYyXkjK17RBFvYmiyiLOCnc380OS9i7MP+BuBZoKes tHqw== X-Gm-Message-State: AOAM5338cmnKjnFDZD8Vqfe1XjeXcqOjTGeO/RXipf6txLOKb/AulEme T5J5scAIDgAl5k6dz3XmKBV0rgOOpzTL+A== X-Google-Smtp-Source: ABdhPJy0Kp3XZdJQEujcvhn/wB4F3QbWL/gF/CeNucyey+hozSSXDJV8KYzyEt+oMCHL10Xwq9sErw== X-Received: by 2002:a17:90b:f97:: with SMTP id ft23mr10225012pjb.135.1630483390407; Wed, 01 Sep 2021 01:03:10 -0700 (PDT) Received: from hiroh2.tok.corp.google.com ([2401:fa00:8f:203:af31:7c67:f02a:bccc]) by smtp.gmail.com with ESMTPSA id n15sm20487092pff.149.2021.09.01.01.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Sep 2021 01:03:09 -0700 (PDT) From: Hirokazu Honda To: libcamera-devel@lists.libcamera.org Date: Wed, 1 Sep 2021 17:03:01 +0900 Message-Id: <20210901080302.68525-2-hiroh@chromium.org> X-Mailer: git-send-email 2.33.0.259.gc128427fd7-goog In-Reply-To: <20210901080302.68525-1-hiroh@chromium.org> References: <20210901080302.68525-1-hiroh@chromium.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v4 2/3] android: camera_stream: Support PostProcessorYuv in CameraStream 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" CameraStream creates PostProcessorYuv if the destination format is NV12. Signed-off-by: Hirokazu Honda Reviewed-by: Jacopo Mondi Reviewed-by: Laurent Pinchart --- src/android/camera_device.cpp | 4 ++-- src/android/camera_stream.cpp | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index fda77db4..324b997f 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -1144,12 +1144,12 @@ void CameraDevice::requestComplete(Request *request) resultMetadata = std::make_unique(0, 0); } - /* Handle any JPEG compression. */ + /* Handle post-processing. */ for (camera3_stream_buffer_t &buffer : descriptor.buffers_) { CameraStream *cameraStream = static_cast(buffer.stream->priv); - if (cameraStream->camera3Stream().format != HAL_PIXEL_FORMAT_BLOB) + if (cameraStream->type() == CameraStream::Type::Direct) continue; FrameBuffer *src = request->findBuffer(cameraStream->stream()); diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp index 3fce29c1..52ebf30a 100644 --- a/src/android/camera_stream.cpp +++ b/src/android/camera_stream.cpp @@ -9,13 +9,15 @@ #include +#include + +#include "jpeg/post_processor_jpeg.h" +#include "yuv/post_processor_yuv.h" + #include "camera_buffer.h" #include "camera_capabilities.h" #include "camera_device.h" #include "camera_metadata.h" -#include "jpeg/post_processor_jpeg.h" - -#include using namespace libcamera; @@ -67,8 +69,14 @@ int CameraStream::configure() cameraDevice_->capabilities()->toPixelFormat(camera3Stream_->format); StreamConfiguration output = configuration(); output.pixelFormat = outFormat; + output.size.width = camera3Stream_->width; + output.size.height = camera3Stream_->height; switch (outFormat) { + case formats::NV12: + postProcessor_ = std::make_unique(); + break; + case formats::MJPEG: postProcessor_ = std::make_unique(cameraDevice_); break;