mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 07:19:45 +03:00
android: camera_stream: Add sourceStream
Add a sourceStream field to the CameraStream class, meant to contain a reference to the direct stream which produces actual image data for streams of type CameraStream::Mapped. The sourceStream of mapped streams will be used in later patches to make sure for each Mapped stream at least one libcamera::Stream is queued to the libcamera::Camera. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
b4d4b78c82
commit
fec64fb75a
3 changed files with 23 additions and 4 deletions
|
@ -681,10 +681,23 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
|
|||
for (const auto &streamConfig : streamConfigs) {
|
||||
config->addConfiguration(streamConfig.config);
|
||||
|
||||
CameraStream *sourceStream = nullptr;
|
||||
for (auto &stream : streamConfig.streams) {
|
||||
streams_.emplace_back(this, config.get(), stream.type,
|
||||
stream.stream, config->size() - 1);
|
||||
stream.stream, sourceStream,
|
||||
config->size() - 1);
|
||||
stream.stream->priv = static_cast<void *>(&streams_.back());
|
||||
|
||||
/*
|
||||
* The streamConfig.streams vector contains as its first
|
||||
* element a Direct (or Internal) stream, and then an
|
||||
* optional set of Mapped streams derived from the
|
||||
* Direct stream. Cache the Direct stream pointer, to
|
||||
* be used when constructing the subsequent mapped
|
||||
* streams.
|
||||
*/
|
||||
if (stream.type == CameraStream::Type::Direct)
|
||||
sourceStream = &streams_.back();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,9 +52,11 @@ LOG_DECLARE_CATEGORY(HAL)
|
|||
|
||||
CameraStream::CameraStream(CameraDevice *const cameraDevice,
|
||||
CameraConfiguration *config, Type type,
|
||||
camera3_stream_t *camera3Stream, unsigned int index)
|
||||
camera3_stream_t *camera3Stream,
|
||||
CameraStream *const sourceStream, unsigned int index)
|
||||
: cameraDevice_(cameraDevice), config_(config), type_(type),
|
||||
camera3Stream_(camera3Stream), index_(index)
|
||||
camera3Stream_(camera3Stream), sourceStream_(sourceStream),
|
||||
index_(index)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -114,7 +114,9 @@ public:
|
|||
};
|
||||
CameraStream(CameraDevice *const cameraDevice,
|
||||
libcamera::CameraConfiguration *config, Type type,
|
||||
camera3_stream_t *camera3Stream, unsigned int index);
|
||||
camera3_stream_t *camera3Stream,
|
||||
CameraStream *const sourceStream,
|
||||
unsigned int index);
|
||||
CameraStream(CameraStream &&other);
|
||||
~CameraStream();
|
||||
|
||||
|
@ -122,6 +124,7 @@ public:
|
|||
camera3_stream_t *camera3Stream() const { return camera3Stream_; }
|
||||
const libcamera::StreamConfiguration &configuration() const;
|
||||
libcamera::Stream *stream() const;
|
||||
CameraStream *sourceStream() const { return sourceStream_; }
|
||||
|
||||
int configure();
|
||||
int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer);
|
||||
|
@ -167,6 +170,7 @@ private:
|
|||
const libcamera::CameraConfiguration *config_;
|
||||
const Type type_;
|
||||
camera3_stream_t *camera3Stream_;
|
||||
CameraStream *const sourceStream_;
|
||||
const unsigned int index_;
|
||||
|
||||
std::unique_ptr<PlatformFrameBufferAllocator> allocator_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue