From patchwork Wed Nov 27 09:25:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cheng-Hao Yang X-Patchwork-Id: 22111 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 D32ADC3213 for ; Wed, 27 Nov 2024 09:26:42 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id A1008660BA; Wed, 27 Nov 2024 10:26:41 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="ex0O+oU3"; dkim-atps=neutral Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 207CA660AD for ; Wed, 27 Nov 2024 10:26:40 +0100 (CET) Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-7fc8f0598cdso254953a12.1 for ; Wed, 27 Nov 2024 01:26:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1732699597; x=1733304397; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7tXtCY8bgASiCUiJ2cEOeEozx6u4HTw4RujPC9EsCY0=; b=ex0O+oU3La8UBcyks1MZwwkvM47Sv6hHKmzZmEO4uZFn+8LLLul4D8rig2thK4HpYf gNq8gOKzGJWDglcZM8UzAww7hWtaQlCGkTCS1yz2Fb8kn2NPxRB7kGwPZPnJK/VazqWg 1zhV/ltFFuW5X2jUezU9toU/fYOS37ea2/q9Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732699597; x=1733304397; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7tXtCY8bgASiCUiJ2cEOeEozx6u4HTw4RujPC9EsCY0=; b=sUaQhoXaGrqcbEJIYpLBifbpmZEmHcnemxWfSljVsYUYXrKSxBHlH5O2gKcfKUfQBF /6djePTV6Ro3vpfPtJFzMkR43QBZ2E7FibAO3/pxDt8gYltwx692Z9xsary6zG39fUXa H+NsKSky/rkgghxzKMF285qFAHEGRSfsqxvUe801LuCCURkw1ByNdFqtq9e5ZtyT7QGO twXCvG7nyxpyLVYT62mi4wHuOm3B4b5E64TrbvzO95CIA6amc7Pw1U/rVMwm27ldHjKI 3vpsrYHzRl+LBXltmQCxw9LPxkt+zRTpavhP1IUVlB7hwppV5QNo1JFnoSqHSyycQtV3 u+gQ== X-Gm-Message-State: AOJu0YzevWtZlRBbdUWf+fFKGOMy7S46vjtWxy95kQaxmLT9Be5Xt9lw MhyqZ1ICVnEhziNIvyfRJJw5XEAkLR85aBEDQL7s1TBleSpu58KM/QpH6EmSb0G1MvVW7xfFdnQ = X-Gm-Gg: ASbGncuxP9yUSDM957B0dKf+1GQgw6f0WOlGexUvtKXAwmEpg7QwpJUyxA7JNQlovKi rSuK6CLghHqYsdYdr0zCH7a6RRyMSnW5GjmQE7ltQQSdR8QMZ7FXiizulUPrHlm9Ye++P2SCfQ/ jLQAzukHvPVxldhn0Q882NSHML9xvhKqvx9K0A6n1SKHQk7+fMpNswUvA3oo/mnkgnSmNDOvTxm Qm8jsFKBLp5mFwrm+Ew6V/Ue4dNSr0juUKHxTMVINa1H/JWvhwSaUQikuEfFlHxVoNn2+OZ+AMj JMdzqe+UfVx22k+78yoWpop1NNvZgVzs8wozmb7jAJRULx5S2FYV0Q== X-Google-Smtp-Source: AGHT+IF9kpEa6441GPfo8Alg6QZ7DSZVvmCpMmpvMBBl3AKRLzCehg+TVmdatnHXEPVQMW+x9EPUXQ== X-Received: by 2002:a05:6a20:a109:b0:1d8:a67e:d323 with SMTP id adf61e73a8af0-1e0d676e36bmr7925704637.22.1732699597508; Wed, 27 Nov 2024 01:26:37 -0800 (PST) Received: from chenghaoyang-low.c.googlers.com.com (27.247.221.35.bc.googleusercontent.com. [35.221.247.27]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7fbcbfc41f9sm8693027a12.8.2024.11.27.01.26.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Nov 2024 01:26:37 -0800 (PST) From: Harvey Yang To: libcamera-devel@lists.libcamera.org Cc: Harvey Yang Subject: [PATCH v2 0/8] Signal metadataAvailable and Android partial result Date: Wed, 27 Nov 2024 09:25:50 +0000 Message-ID: <20241127092632.3145984-1-chenghaoyang@chromium.org> X-Mailer: git-send-email 2.47.0.338.g60cca15819-goog 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" Hi folks, This series of patches adds a new signal metadataAvailable in libcamera::Camera, and supports partial result in Android adapter. Although Android allows a partial result to contain both buffers and metadata, we probably don't need such a feature. Splitting them into different partial results should fit both MediaTek's and Intel's requirements. This patch passed gitlab pipeline: https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1317276 There are still some discussion of the new signal in the previous patch, with Jacopo. I'll update the patch when we reach agreement. I understand that the last patch is a bit large, while I don't know how to split that furthermore. Let me know if there are some pieces that can be standalone patches. BR, Harvey Han-Lin Chen (2): libcamera: Camera: Add signals for completion of metadata as a partial result android: Add JpegExifMetadata to store tags setting into Exif Harvey Yang (7): android: Move StreamBuffer out of Camera3RequestDescriptor android: Set StreamBuffer::srcBuffer in CameraDevice::processCaptureRequest android: Migrate StreamBuffer::internalBuffer to Camera3RequestDescriptor android: Add CameraDevice::sendCaptureResult() android: Cleanup CAMERA3_MSG_ERROR_REQUEST android: Remove Camera3RequestDescriptor::streamsProcessMutex_ android: Support partial results include/libcamera/camera.h | 1 + include/libcamera/internal/pipeline_handler.h | 1 + include/libcamera/internal/request.h | 4 + include/libcamera/request.h | 1 + src/android/camera_capabilities.cpp | 11 +- src/android/camera_capabilities.h | 2 + src/android/camera_device.cpp | 926 ++++++++++++------ src/android/camera_device.h | 46 +- src/android/camera_request.cpp | 94 +- src/android/camera_request.h | 96 +- src/android/camera_stream.cpp | 20 +- src/android/camera_stream.h | 10 +- src/android/jpeg/encoder.h | 2 +- src/android/jpeg/encoder_jea.cpp | 2 +- src/android/jpeg/encoder_jea.h | 2 +- src/android/jpeg/encoder_libjpeg.cpp | 2 +- src/android/jpeg/encoder_libjpeg.h | 2 +- src/android/jpeg/post_processor_jpeg.cpp | 16 +- src/android/jpeg/post_processor_jpeg.h | 2 +- src/android/post_processor.h | 4 +- src/android/yuv/post_processor_yuv.cpp | 2 +- src/android/yuv/post_processor_yuv.h | 2 +- src/libcamera/camera.cpp | 6 + src/libcamera/pipeline_handler.cpp | 41 + src/libcamera/request.cpp | 21 + 25 files changed, 908 insertions(+), 408 deletions(-)