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) {
|
for (const auto &streamConfig : streamConfigs) {
|
||||||
config->addConfiguration(streamConfig.config);
|
config->addConfiguration(streamConfig.config);
|
||||||
|
|
||||||
|
CameraStream *sourceStream = nullptr;
|
||||||
for (auto &stream : streamConfig.streams) {
|
for (auto &stream : streamConfig.streams) {
|
||||||
streams_.emplace_back(this, config.get(), stream.type,
|
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());
|
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,
|
CameraStream::CameraStream(CameraDevice *const cameraDevice,
|
||||||
CameraConfiguration *config, Type type,
|
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),
|
: 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,
|
CameraStream(CameraDevice *const cameraDevice,
|
||||||
libcamera::CameraConfiguration *config, Type type,
|
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(CameraStream &&other);
|
||||||
~CameraStream();
|
~CameraStream();
|
||||||
|
|
||||||
|
@ -122,6 +124,7 @@ public:
|
||||||
camera3_stream_t *camera3Stream() const { return camera3Stream_; }
|
camera3_stream_t *camera3Stream() const { return camera3Stream_; }
|
||||||
const libcamera::StreamConfiguration &configuration() const;
|
const libcamera::StreamConfiguration &configuration() const;
|
||||||
libcamera::Stream *stream() const;
|
libcamera::Stream *stream() const;
|
||||||
|
CameraStream *sourceStream() const { return sourceStream_; }
|
||||||
|
|
||||||
int configure();
|
int configure();
|
||||||
int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer);
|
int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer);
|
||||||
|
@ -167,6 +170,7 @@ private:
|
||||||
const libcamera::CameraConfiguration *config_;
|
const libcamera::CameraConfiguration *config_;
|
||||||
const Type type_;
|
const Type type_;
|
||||||
camera3_stream_t *camera3Stream_;
|
camera3_stream_t *camera3Stream_;
|
||||||
|
CameraStream *const sourceStream_;
|
||||||
const unsigned int index_;
|
const unsigned int index_;
|
||||||
|
|
||||||
std::unique_ptr<PlatformFrameBufferAllocator> allocator_;
|
std::unique_ptr<PlatformFrameBufferAllocator> allocator_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue