From patchwork Wed Nov 20 01:55:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 2335 Return-Path: Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 14FC26138B for ; Wed, 20 Nov 2019 02:55:31 +0100 (CET) X-Halon-ID: d440ac38-0b38-11ea-a00b-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p54ac5865.dip0.t-ipconnect.de [84.172.88.101]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id d440ac38-0b38-11ea-a00b-005056917a89; Wed, 20 Nov 2019 02:55:30 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Nov 2019 02:55:00 +0100 Message-Id: <20191120015506.362440-5-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191120015506.362440-1-niklas.soderlund@ragnatech.se> References: <20191120015506.362440-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 04/10] libcamera: camera: Remove explicit stream to buffer map in requestCompleted signal 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-List-Received-Date: Wed, 20 Nov 2019 01:55:31 -0000 The stream to buffer map in the requestCompleted signal is taken directly from the request which is part of the same signal. Remove the map as it can be fetched directly from the request. Signed-off-by: Niklas Söderlund Reviewed-by: Jacopo Mondi Reviewed-by: Kieran Bingham Reviewed-by: Laurent Pinchart --- include/libcamera/camera.h | 3 +-- src/android/camera_device.cpp | 4 ++-- src/android/camera_device.h | 3 +-- src/cam/capture.cpp | 4 +++- src/cam/capture.h | 3 +-- src/libcamera/camera.cpp | 2 +- src/qcam/main_window.cpp | 5 +++-- src/qcam/main_window.h | 4 +--- test/camera/capture.cpp | 4 +++- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index 21fac550f4121fdc..ef6a37bb142c83a6 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -7,7 +7,6 @@ #ifndef __LIBCAMERA_CAMERA_H__ #define __LIBCAMERA_CAMERA_H__ -#include #include #include #include @@ -79,7 +78,7 @@ public: const std::string &name() const; Signal bufferCompleted; - Signal &> requestCompleted; + Signal requestCompleted; Signal disconnected; int acquire(); diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 897f545864a94c6d..065e0292e186c2ad 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -769,9 +769,9 @@ error: delete descriptor; } -void CameraDevice::requestComplete(Request *request, - const std::map &buffers) +void CameraDevice::requestComplete(Request *request) { + const std::map &buffers = request->buffers(); Buffer *libcameraBuffer = buffers.begin()->second; camera3_buffer_status status = CAMERA3_BUFFER_STATUS_OK; std::unique_ptr resultMetadata; diff --git a/src/android/camera_device.h b/src/android/camera_device.h index 2105b5b9a1e7f50e..caa617dcbfe19408 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -34,8 +34,7 @@ public: const camera_metadata_t *constructDefaultRequestSettings(int type); int configureStreams(camera3_stream_configuration_t *stream_list); void processCaptureRequest(camera3_capture_request_t *request); - void requestComplete(libcamera::Request *request, - const std::map &buffers); + void requestComplete(libcamera::Request *request); private: struct Camera3RequestDescriptor { diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp index 0d7854d674e0a78d..27332df1d55a5c2d 100644 --- a/src/cam/capture.cpp +++ b/src/cam/capture.cpp @@ -133,11 +133,13 @@ int Capture::capture(EventLoop *loop) return ret; } -void Capture::requestComplete(Request *request, const std::map &buffers) +void Capture::requestComplete(Request *request) { if (request->status() == Request::RequestCancelled) return; + const std::map &buffers = request->buffers(); + std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now(); double fps = std::chrono::duration_cast(now - last_).count(); fps = last_ != std::chrono::steady_clock::time_point() && fps diff --git a/src/cam/capture.h b/src/cam/capture.h index ee0dc421111197c1..4d396afb8c771a74 100644 --- a/src/cam/capture.h +++ b/src/cam/capture.h @@ -28,8 +28,7 @@ public: private: int capture(EventLoop *loop); - void requestComplete(libcamera::Request *request, - const std::map &buffers); + void requestComplete(libcamera::Request *request); libcamera::Camera *camera_; libcamera::CameraConfiguration *config_; diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp index 76c737cb93813115..e810fb725d81350d 100644 --- a/src/libcamera/camera.cpp +++ b/src/libcamera/camera.cpp @@ -919,7 +919,7 @@ void Camera::requestComplete(Request *request) stream->unmapBuffer(buffer); } - requestCompleted.emit(request, request->buffers()); + requestCompleted.emit(request); delete request; } diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp index 3d56309227235fec..cca7365ae75687f9 100644 --- a/src/qcam/main_window.cpp +++ b/src/qcam/main_window.cpp @@ -248,12 +248,13 @@ void MainWindow::stopCapture() setWindowTitle(title_); } -void MainWindow::requestComplete(Request *request, - const std::map &buffers) +void MainWindow::requestComplete(Request *request) { if (request->status() == Request::RequestCancelled) return; + const std::map &buffers = request->buffers(); + framesCaptured_++; Buffer *buffer = buffers.begin()->second; diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h index 30dd8743104d75e0..0786e915ec512255 100644 --- a/src/qcam/main_window.h +++ b/src/qcam/main_window.h @@ -7,7 +7,6 @@ #ifndef __QCAM_MAIN_WINDOW_H__ #define __QCAM_MAIN_WINDOW_H__ -#include #include #include @@ -49,8 +48,7 @@ private: int startCapture(); void stopCapture(); - void requestComplete(Request *request, - const std::map &buffers); + void requestComplete(Request *request); int display(Buffer *buffer); QString title_; diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp index 791ccad15f7042f9..83f974749affd3cd 100644 --- a/test/camera/capture.cpp +++ b/test/camera/capture.cpp @@ -27,11 +27,13 @@ protected: completeBuffersCount_++; } - void requestComplete(Request *request, const std::map &buffers) + void requestComplete(Request *request) { if (request->status() != Request::RequestComplete) return; + const std::map &buffers = request->buffers(); + completeRequestsCount_++; /* Create a new request. */