android: camera_device: Pass camera3 request to descriptor

The Camera3RequestDescriptor class can access the number of buffers
and the frame number from the camera3_capture_request_t instead of
having the caller passing them to the constructor.

This change allows to access other fields of the capture request, such
as the capture settings.

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2021-01-21 10:51:05 +01:00
parent 5e2596006b
commit dd1cd532ca
2 changed files with 8 additions and 8 deletions

View file

@ -295,16 +295,18 @@ MappedCamera3Buffer::MappedCamera3Buffer(const buffer_handle_t camera3buffer,
*/
CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor(
Camera *camera, unsigned int frameNumber, unsigned int numBuffers)
: frameNumber_(frameNumber), numBuffers_(numBuffers)
Camera *camera, const camera3_capture_request_t *camera3Request)
{
buffers_ = new camera3_stream_buffer_t[numBuffers];
frameNumber_ = camera3Request->frame_number;
numBuffers_ = camera3Request->num_output_buffers;
buffers_ = new camera3_stream_buffer_t[numBuffers_];
/*
* FrameBuffer instances created by wrapping a camera3 provided dmabuf
* are emplaced in this vector of unique_ptr<> for lifetime management.
*/
frameBuffers_.reserve(numBuffers);
frameBuffers_.reserve(numBuffers_);
/*
* Create the libcamera::Request unique_ptr<> to tie its lifetime
@ -1603,8 +1605,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
* at request complete time.
*/
Camera3RequestDescriptor *descriptor =
new Camera3RequestDescriptor(camera_.get(), camera3Request->frame_number,
camera3Request->num_output_buffers);
new Camera3RequestDescriptor(camera_.get(), camera3Request);
LOG(HAL, Debug) << "Queueing Request to libcamera with "
<< descriptor->numBuffers_ << " HAL streams";

View file

@ -75,8 +75,7 @@ private:
struct Camera3RequestDescriptor {
Camera3RequestDescriptor(libcamera::Camera *camera,
unsigned int frameNumber,
unsigned int numBuffers);
const camera3_capture_request_t *camera3Request);
~Camera3RequestDescriptor();
uint32_t frameNumber_;