| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_CAMERA_DRIVERS_CONTROLLER_GRAPH_UTILS_H_ |
| #define SRC_CAMERA_DRIVERS_CONTROLLER_GRAPH_UTILS_H_ |
| |
| #include <vector> |
| |
| #include "src/camera/drivers/controller/configs/internal_config.h" |
| #include "src/camera/drivers/controller/memory_allocation.h" |
| #include "src/camera/drivers/controller/stream_pipeline_info.h" |
| |
| namespace camera { |
| |
| // Gets the next node for the requested stream path |
| const InternalConfigNode* GetNextNodeInPipeline(const fuchsia::camera2::CameraStreamType& stream, |
| const InternalConfigNode& node); |
| |
| // NOTE: This API currently supports only single consumer node use cases. |
| // Gets the right buffercollection for the producer-consumer combination. |
| // |memory_allocator| - Memory allocator to allocate memory using sysmem. |
| // |producer| - Internal node for the producer. |
| // |info| - Info about the stream to be created & the client buffer collection. |
| // |buffer_tag| - Name for the VMOs. |
| fit::result<fuchsia::sysmem::BufferCollectionInfo_2, zx_status_t> GetBuffers( |
| const ControllerMemoryAllocator& memory_allocator, const InternalConfigNode& producer, |
| StreamCreationData* info, const std::string& buffer_tag); |
| |
| // Returns |true| if CameraStreamType |type| is present in the |
| // vector |streams|. |
| inline bool HasStreamType(const std::vector<fuchsia::camera2::CameraStreamType>& streams, |
| fuchsia::camera2::CameraStreamType type) { |
| return std::find(streams.begin(), streams.end(), type) != streams.end(); |
| } |
| |
| } // namespace camera |
| |
| #endif // SRC_CAMERA_DRIVERS_CONTROLLER_GRAPH_UTILS_H_ |