libcamera: camera: Remove explicit stream to buffer map in requestCompleted signal

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 <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund 2019-10-21 20:01:19 +02:00
parent 40888cfdce
commit f7ddfd4517
9 changed files with 16 additions and 16 deletions

View file

@ -7,7 +7,6 @@
#ifndef __LIBCAMERA_CAMERA_H__ #ifndef __LIBCAMERA_CAMERA_H__
#define __LIBCAMERA_CAMERA_H__ #define __LIBCAMERA_CAMERA_H__
#include <map>
#include <memory> #include <memory>
#include <set> #include <set>
#include <stdint.h> #include <stdint.h>
@ -79,7 +78,7 @@ public:
const std::string &name() const; const std::string &name() const;
Signal<Request *, Buffer *> bufferCompleted; Signal<Request *, Buffer *> bufferCompleted;
Signal<Request *, const std::map<Stream *, Buffer *> &> requestCompleted; Signal<Request *> requestCompleted;
Signal<Camera *> disconnected; Signal<Camera *> disconnected;
int acquire(); int acquire();

View file

@ -769,9 +769,9 @@ error:
delete descriptor; delete descriptor;
} }
void CameraDevice::requestComplete(Request *request, void CameraDevice::requestComplete(Request *request)
const std::map<Stream *, Buffer *> &buffers)
{ {
const std::map<Stream *, Buffer *> &buffers = request->buffers();
Buffer *libcameraBuffer = buffers.begin()->second; Buffer *libcameraBuffer = buffers.begin()->second;
camera3_buffer_status status = CAMERA3_BUFFER_STATUS_OK; camera3_buffer_status status = CAMERA3_BUFFER_STATUS_OK;
std::unique_ptr<CameraMetadata> resultMetadata; std::unique_ptr<CameraMetadata> resultMetadata;

View file

@ -34,8 +34,7 @@ public:
const camera_metadata_t *constructDefaultRequestSettings(int type); const camera_metadata_t *constructDefaultRequestSettings(int type);
int configureStreams(camera3_stream_configuration_t *stream_list); int configureStreams(camera3_stream_configuration_t *stream_list);
void processCaptureRequest(camera3_capture_request_t *request); void processCaptureRequest(camera3_capture_request_t *request);
void requestComplete(libcamera::Request *request, void requestComplete(libcamera::Request *request);
const std::map<libcamera::Stream *, libcamera::Buffer *> &buffers);
private: private:
struct Camera3RequestDescriptor { struct Camera3RequestDescriptor {

View file

@ -133,11 +133,13 @@ int Capture::capture(EventLoop *loop)
return ret; return ret;
} }
void Capture::requestComplete(Request *request, const std::map<Stream *, Buffer *> &buffers) void Capture::requestComplete(Request *request)
{ {
if (request->status() == Request::RequestCancelled) if (request->status() == Request::RequestCancelled)
return; return;
const std::map<Stream *, Buffer *> &buffers = request->buffers();
std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now(); std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now();
double fps = std::chrono::duration_cast<std::chrono::milliseconds>(now - last_).count(); double fps = std::chrono::duration_cast<std::chrono::milliseconds>(now - last_).count();
fps = last_ != std::chrono::steady_clock::time_point() && fps fps = last_ != std::chrono::steady_clock::time_point() && fps

View file

@ -28,8 +28,7 @@ public:
private: private:
int capture(EventLoop *loop); int capture(EventLoop *loop);
void requestComplete(libcamera::Request *request, void requestComplete(libcamera::Request *request);
const std::map<libcamera::Stream *, libcamera::Buffer *> &buffers);
libcamera::Camera *camera_; libcamera::Camera *camera_;
libcamera::CameraConfiguration *config_; libcamera::CameraConfiguration *config_;

View file

@ -919,7 +919,7 @@ void Camera::requestComplete(Request *request)
stream->unmapBuffer(buffer); stream->unmapBuffer(buffer);
} }
requestCompleted.emit(request, request->buffers()); requestCompleted.emit(request);
delete request; delete request;
} }

View file

@ -248,12 +248,13 @@ void MainWindow::stopCapture()
setWindowTitle(title_); setWindowTitle(title_);
} }
void MainWindow::requestComplete(Request *request, void MainWindow::requestComplete(Request *request)
const std::map<Stream *, Buffer *> &buffers)
{ {
if (request->status() == Request::RequestCancelled) if (request->status() == Request::RequestCancelled)
return; return;
const std::map<Stream *, Buffer *> &buffers = request->buffers();
framesCaptured_++; framesCaptured_++;
Buffer *buffer = buffers.begin()->second; Buffer *buffer = buffers.begin()->second;

View file

@ -7,7 +7,6 @@
#ifndef __QCAM_MAIN_WINDOW_H__ #ifndef __QCAM_MAIN_WINDOW_H__
#define __QCAM_MAIN_WINDOW_H__ #define __QCAM_MAIN_WINDOW_H__
#include <map>
#include <memory> #include <memory>
#include <QElapsedTimer> #include <QElapsedTimer>
@ -49,8 +48,7 @@ private:
int startCapture(); int startCapture();
void stopCapture(); void stopCapture();
void requestComplete(Request *request, void requestComplete(Request *request);
const std::map<Stream *, Buffer *> &buffers);
int display(Buffer *buffer); int display(Buffer *buffer);
QString title_; QString title_;

View file

@ -27,11 +27,13 @@ protected:
completeBuffersCount_++; completeBuffersCount_++;
} }
void requestComplete(Request *request, const std::map<Stream *, Buffer *> &buffers) void requestComplete(Request *request)
{ {
if (request->status() != Request::RequestComplete) if (request->status() != Request::RequestComplete)
return; return;
const std::map<Stream *, Buffer *> &buffers = request->buffers();
completeRequestsCount_++; completeRequestsCount_++;
/* Create a new request. */ /* Create a new request. */