Each node has the input and output port to share media between node
The session manager is to configure nodes, ports and linking nodes
SPA: It will link to the driver to control the driver parameter and send and receive media.
SPA plugins: libcamera, ALSA, v4l2, JACK and etc...
WebRTC Live Streaming- Can View from Web Application
RMS live streaming with RTSP protocol – Can View live streaming in VLC
CVR with KVS SDK – Can view/record data in AWS KVS service
Session manager will control these app nodes and ports and it will link nodes along with ports for communication
Used libcamera SPA to fetch data from the v4l2 driver
Overview of PipeWire.
SPA Plugin Creation (pipewire/spa/plugins ).
Implemented each SPA plugins with a group of factories.
Each factory should have the below details * Version ( SPA_VERSION_HANDLE_FACTORY ) * Factory Name ( SPA_NAME_API_* - eg.SPA_NAME_API_LIBCAMERA_ENUM_UDEV) * SPA dictionary information ( struct spa_dict ) * Get size callback - impl_get_size() - Each factory has its own impl structure for to maintain some specific details. - With this callback, we can get the size of this factory impl structure * Initialization callback – impl_init() - This will initialize this factory-specific activity * Enum interface info callback - impl_enum_interface_info()
Each SPA plugin's factories are associated with the spa_handle_factory_enum() function.
libcamera SPA plugin’s factories(libcamera.c)
libcamera API sequence.
PipeWire API sequence in RDK-C:
Image Added
libcamera Usecase:
Image Added
libcamera Roadmap:
Configuration and control algorithms using libcamera.