android: camera_stream: Pass StreamBuffer to process()

Now that we have a proper structure to model a stream buffer, pass it to
CameraStream::process() instead of the camera3_stream_buffer_t. This
will allow accessing other members of StreamBuffer in subsequent
commits.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2021-10-19 17:17:56 +05:30 committed by Umang Jain
parent 573fcb94d6
commit 640bf94d02
3 changed files with 11 additions and 10 deletions

View file

@ -1152,7 +1152,7 @@ void CameraDevice::requestComplete(Request *request)
continue; continue;
} }
int ret = cameraStream->process(*src, buffer.buffer, descriptor); int ret = cameraStream->process(*src, buffer, descriptor);
/* /*
* Return the FrameBuffer to the CameraStream now that we're * Return the FrameBuffer to the CameraStream now that we're

View file

@ -143,15 +143,15 @@ int CameraStream::waitFence(int fence)
} }
int CameraStream::process(const FrameBuffer &source, int CameraStream::process(const FrameBuffer &source,
camera3_stream_buffer_t &camera3Dest, Camera3RequestDescriptor::StreamBuffer &dest,
Camera3RequestDescriptor *request) Camera3RequestDescriptor *request)
{ {
/* Handle waiting on fences on the destination buffer. */ /* Handle waiting on fences on the destination buffer. */
int fence = camera3Dest.acquire_fence; int fence = dest.buffer.acquire_fence;
if (fence != -1) { if (fence != -1) {
int ret = waitFence(fence); int ret = waitFence(fence);
::close(fence); ::close(fence);
camera3Dest.acquire_fence = -1; dest.buffer.acquire_fence = -1;
if (ret < 0) { if (ret < 0) {
LOG(HAL, Error) << "Failed waiting for fence: " LOG(HAL, Error) << "Failed waiting for fence: "
<< fence << ": " << strerror(-ret); << fence << ": " << strerror(-ret);
@ -167,14 +167,14 @@ int CameraStream::process(const FrameBuffer &source,
* separate thread. * separate thread.
*/ */
const StreamConfiguration &output = configuration(); const StreamConfiguration &output = configuration();
CameraBuffer dest(*camera3Dest.buffer, output.pixelFormat, output.size, CameraBuffer destBuffer(*dest.buffer.buffer, output.pixelFormat,
PROT_READ | PROT_WRITE); output.size, PROT_READ | PROT_WRITE);
if (!dest.isValid()) { if (!destBuffer.isValid()) {
LOG(HAL, Error) << "Failed to create destination buffer"; LOG(HAL, Error) << "Failed to create destination buffer";
return -EINVAL; return -EINVAL;
} }
return postProcessor_->process(source, &dest, request); return postProcessor_->process(source, &destBuffer, request);
} }
FrameBuffer *CameraStream::getBuffer() FrameBuffer *CameraStream::getBuffer()

View file

@ -19,7 +19,8 @@
#include <libcamera/geometry.h> #include <libcamera/geometry.h>
#include <libcamera/pixel_format.h> #include <libcamera/pixel_format.h>
class Camera3RequestDescriptor; #include "camera_request.h"
class CameraDevice; class CameraDevice;
class PostProcessor; class PostProcessor;
@ -119,7 +120,7 @@ public:
int configure(); int configure();
int process(const libcamera::FrameBuffer &source, int process(const libcamera::FrameBuffer &source,
camera3_stream_buffer_t &camera3Buffer, Camera3RequestDescriptor::StreamBuffer &dest,
Camera3RequestDescriptor *request); Camera3RequestDescriptor *request);
libcamera::FrameBuffer *getBuffer(); libcamera::FrameBuffer *getBuffer();
void putBuffer(libcamera::FrameBuffer *buffer); void putBuffer(libcamera::FrameBuffer *buffer);