android: camera_stream: Add CameraStream::Type

Define the CameraStream::Type enumeration and assign it to
each CameraStream instance at construction time.

The CameraStream type will be used to decide if memory needs to be
allocated on its behalf or if the stream is backed by memory externally
allocated by the Android framework.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2020-09-04 16:06:11 +02:00
parent 5cf64b26a2
commit 94c4d49ebe
3 changed files with 93 additions and 5 deletions

View file

@ -1216,12 +1216,14 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
config_->addConfiguration(streamConfiguration);
unsigned int index = config_->size() - 1;
streams_.emplace_back(format, size, index);
streams_.emplace_back(format, size, CameraStream::Type::Direct,
index);
stream->priv = static_cast<void *>(&streams_.back());
}
/* Now handle the MJPEG streams, adding a new stream if required. */
if (jpegStream) {
CameraStream::Type type;
int index = -1;
/* Search for a compatible stream in the non-JPEG ones. */
@ -1239,6 +1241,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
LOG(HAL, Info)
<< "Android JPEG stream mapped to libcamera stream " << i;
type = CameraStream::Type::Mapped;
index = i;
break;
}
@ -1263,6 +1266,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
LOG(HAL, Info) << "Adding " << streamConfiguration.toString()
<< " for MJPEG support";
type = CameraStream::Type::Internal;
config_->addConfiguration(streamConfiguration);
index = config_->size() - 1;
}
@ -1281,7 +1285,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
return ret;
}
streams_.emplace_back(formats::MJPEG, cfg.size, index, encoder);
streams_.emplace_back(formats::MJPEG, cfg.size, type, index, encoder);
jpegStream->priv = static_cast<void *>(&streams_.back());
}