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( CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor(
Camera *camera, unsigned int frameNumber, unsigned int numBuffers) Camera *camera, const camera3_capture_request_t *camera3Request)
: frameNumber_(frameNumber), numBuffers_(numBuffers)
{ {
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 * FrameBuffer instances created by wrapping a camera3 provided dmabuf
* are emplaced in this vector of unique_ptr<> for lifetime management. * 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 * 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. * at request complete time.
*/ */
Camera3RequestDescriptor *descriptor = Camera3RequestDescriptor *descriptor =
new Camera3RequestDescriptor(camera_.get(), camera3Request->frame_number, new Camera3RequestDescriptor(camera_.get(), camera3Request);
camera3Request->num_output_buffers);
LOG(HAL, Debug) << "Queueing Request to libcamera with " LOG(HAL, Debug) << "Queueing Request to libcamera with "
<< descriptor->numBuffers_ << " HAL streams"; << descriptor->numBuffers_ << " HAL streams";

View file

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