android: Camera3RequestDescriptor: Provide a constructor for StreamBuffer
Provide a constructor for StreamBuffer and use that while populating Camera3RequestDescriptor::buffers_ vector. Also provide the default move-constructor (required as StreamBuffer is stored in a vector in Camera3RequestDescriptor) and destructor for the StreamBuffer struct. Also declare a default move assignment operator and disable the copy constructor and move operator explicitly with LIBCAMERA_DISABLE_COPY(). While at it, initialize pointers members in the StreamBuffer struct to nullptr, with StreamBuffer::status set to Status::Success by default. Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
701266653c
commit
1b30992b62
2 changed files with 30 additions and 6 deletions
|
@ -37,9 +37,7 @@ Camera3RequestDescriptor::Camera3RequestDescriptor(
|
||||||
CameraStream *stream =
|
CameraStream *stream =
|
||||||
static_cast<CameraStream *>(buffer.stream->priv);
|
static_cast<CameraStream *>(buffer.stream->priv);
|
||||||
|
|
||||||
buffers_.push_back({ stream, buffer.buffer, nullptr,
|
buffers_.emplace_back(stream, buffer, this);
|
||||||
buffer.acquire_fence, Status::Success,
|
|
||||||
nullptr, nullptr, nullptr, this });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clone the controls associated with the camera3 request. */
|
/* Clone the controls associated with the camera3 request. */
|
||||||
|
@ -54,3 +52,18 @@ Camera3RequestDescriptor::Camera3RequestDescriptor(
|
||||||
}
|
}
|
||||||
|
|
||||||
Camera3RequestDescriptor::~Camera3RequestDescriptor() = default;
|
Camera3RequestDescriptor::~Camera3RequestDescriptor() = default;
|
||||||
|
|
||||||
|
Camera3RequestDescriptor::StreamBuffer::StreamBuffer(
|
||||||
|
CameraStream *cameraStream, const camera3_stream_buffer_t &buffer,
|
||||||
|
Camera3RequestDescriptor *requestDescriptor)
|
||||||
|
: stream(cameraStream), camera3Buffer(buffer.buffer),
|
||||||
|
fence(buffer.acquire_fence), request(requestDescriptor)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Camera3RequestDescriptor::StreamBuffer::~StreamBuffer() = default;
|
||||||
|
|
||||||
|
Camera3RequestDescriptor::StreamBuffer::StreamBuffer(StreamBuffer &&) = default;
|
||||||
|
|
||||||
|
Camera3RequestDescriptor::StreamBuffer &
|
||||||
|
Camera3RequestDescriptor::StreamBuffer::operator=(Camera3RequestDescriptor::StreamBuffer &&) = default;
|
||||||
|
|
|
@ -34,15 +34,26 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StreamBuffer {
|
struct StreamBuffer {
|
||||||
|
StreamBuffer(CameraStream *stream,
|
||||||
|
const camera3_stream_buffer_t &buffer,
|
||||||
|
Camera3RequestDescriptor *request);
|
||||||
|
~StreamBuffer();
|
||||||
|
|
||||||
|
StreamBuffer(StreamBuffer &&);
|
||||||
|
StreamBuffer &operator=(StreamBuffer &&);
|
||||||
|
|
||||||
CameraStream *stream;
|
CameraStream *stream;
|
||||||
buffer_handle_t *camera3Buffer;
|
buffer_handle_t *camera3Buffer;
|
||||||
std::unique_ptr<libcamera::FrameBuffer> frameBuffer;
|
std::unique_ptr<libcamera::FrameBuffer> frameBuffer;
|
||||||
int fence;
|
int fence;
|
||||||
Status status;
|
Status status = Status::Success;
|
||||||
libcamera::FrameBuffer *internalBuffer;
|
libcamera::FrameBuffer *internalBuffer = nullptr;
|
||||||
const libcamera::FrameBuffer *srcBuffer;
|
const libcamera::FrameBuffer *srcBuffer = nullptr;
|
||||||
std::unique_ptr<CameraBuffer> dstBuffer;
|
std::unique_ptr<CameraBuffer> dstBuffer;
|
||||||
Camera3RequestDescriptor *request;
|
Camera3RequestDescriptor *request;
|
||||||
|
|
||||||
|
private:
|
||||||
|
LIBCAMERA_DISABLE_COPY(StreamBuffer)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Keeps track of streams requiring post-processing. */
|
/* Keeps track of streams requiring post-processing. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue