mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 15:29:45 +03:00
android: camera_device: Maintain a vector of CameraStream
Introduce a vector storing a CameraStream to track and maintain state between an Android stream (camera3_stream_t) and a libcamera Stream. Only the index of the libcamera stream is stored, to facilitate identifying the correct index for both the StreamConfiguration and Stream vectors. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
eac0542c5e
commit
2f34f5ef06
2 changed files with 29 additions and 2 deletions
|
@ -952,6 +952,20 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear and remove any existing configuration from previous calls, and
|
||||
* ensure the required entries are available without further
|
||||
* re-allcoation.
|
||||
*/
|
||||
streams_.clear();
|
||||
streams_.reserve(stream_list->num_streams);
|
||||
|
||||
/*
|
||||
* Track actually created streams, as there may not be a 1:1 mapping of
|
||||
* camera3 streams to libcamera streams.
|
||||
*/
|
||||
unsigned int streamIndex = 0;
|
||||
|
||||
for (unsigned int i = 0; i < stream_list->num_streams; ++i) {
|
||||
camera3_stream_t *stream = stream_list->streams[i];
|
||||
|
||||
|
@ -974,6 +988,8 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
|
|||
streamConfiguration.pixelFormat = format;
|
||||
|
||||
config_->addConfiguration(streamConfiguration);
|
||||
|
||||
streams_[i].index = streamIndex++;
|
||||
}
|
||||
|
||||
switch (config_->validate()) {
|
||||
|
@ -991,10 +1007,11 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
|
|||
|
||||
for (unsigned int i = 0; i < stream_list->num_streams; ++i) {
|
||||
camera3_stream_t *stream = stream_list->streams[i];
|
||||
StreamConfiguration &streamConfiguration = config_->at(i);
|
||||
CameraStream *cameraStream = &streams_[i];
|
||||
StreamConfiguration &cfg = config_->at(cameraStream->index);
|
||||
|
||||
/* Use the bufferCount confirmed by the validation process. */
|
||||
stream->max_buffers = streamConfiguration.bufferCount;
|
||||
stream->max_buffers = cfg.bufferCount;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue