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

View file

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

View file

@ -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<libcamera::Stream *, libcamera::Buffer *> &buffers);
void requestComplete(libcamera::Request *request);
private:
struct Camera3RequestDescriptor {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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