class PipelineManager
Defined at line 50 of file ../../src/camera/drivers/controller/pipeline_manager.h
|PipelineManager|
This class provides a way to create the stream pipeline for a particular
stream configuration requested.
While doing so it would also create ISP stream protocol and client stream protocols
and setup the camera pipeline such that the streams are flowing properly as per the
requested stream configuration.
Each "ProcessNode" represents a logical or physical hardware unit. A graph begins at an "input"
i.e. the output of the ISP (there are two of these on Sherlock) and eventually connects to the
server end of a fuchsia::camera2::Stream channel. A node can have multiple downstream nodes but
only one upstream node. In other words, all nodes have a fan-in of 1, except the input node which
has a fan-in of 0 (it generates its own frames unsolicited).
The supported graph layouts are defined by the ProductConfig used by the caller. Individual
elements from it are passed in to methods on the PipelineManager. The connections themselves are
not explicit, but are determined by the "supported stream types" of a given node. These uniquely
define the required connectivity between nodes in the graph.
A "config node" is an element within the product config data structure, which statically defines
the supported connectivity to other config nodes. ProcessNodes are created using parameters from
a specific ConfigNode.
TODO(100525): Rationalize the different "node" names e.g. fnode, inode, pnode = frame graph,
internal config, and process, respectively.
Public Methods
void PipelineManager (async_dispatcher_t * dispatcher, fuchsia::sysmem2::AllocatorSyncPtr sysmem_allocator, const ddk::IspProtocolClient & isp, const ddk::GdcProtocolClient & gdc, const ddk::Ge2dProtocolClient & ge2d, LoadFirmwareCallback load_firmware)
Defined at line 34 of file ../../src/camera/drivers/controller/pipeline_manager.cc
void ~PipelineManager ()
Defined at line 47 of file ../../src/camera/drivers/controller/pipeline_manager.cc
void SetRoots (const std::vector<InternalConfigNode> & roots)
Sets the roots (inputs) of the pipeline. The pipeline must have no active streams.
Defined at line 52 of file ../../src/camera/drivers/controller/pipeline_manager.cc
void ConfigureStreamPipeline (StreamCreationData info, fidl::InterfaceRequest<fuchsia::camera2::Stream> request)
Attaches the provided stream request to the pipeline using the provided info structure,
creating intermediate nodes as necessary.
Defined at line 65 of file ../../src/camera/drivers/controller/pipeline_manager.cc
void SetStreamingEnabled (bool enabled)
Suppresses sending frames to all output clients.
Defined at line 121 of file ../../src/camera/drivers/controller/pipeline_manager.cc
void Shutdown (fit::closure callback)
Requests shutdown of the current pipeline. Callers must call this method and await the callback
before destroying the class or calling SetRoots or ConfigureStreamPipeline with a new
configuration index.
Defined at line 126 of file ../../src/camera/drivers/controller/pipeline_manager.cc