[libcamera-devel] Porting libCamera in to RDKC

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Jun 6 03:08:56 CEST 2020


Hi Vijay,

On Fri, Jun 05, 2020 at 07:13:06PM +0000, Dubey, Vijayanand wrote:
> Hi,
> 
> This is Vijay form RDK for Camera (RDKC) team in Comcast.

Nice to meet you, and thanks for your interest in libcamera.

> We are trying to understand how can we fit libCamera in our current
> architecture. In our current RDKC architecture as shown in the block diagram,
> 
> [cid]
> 
> camera  has process called xStreamer. It runs as a web server (producer )and
> provides H264 /PCM/G711/AAC/YUV data to client applications (e.g.;  live, cvr,
> video analytics etc.). Moreover it
> 
>   ● Controls the encoding parameter
>   ● control single and multi-stream encoding
>   ● Overlay on stream
> 
> Camera has separate processes  for Live, CVR and video analytics  which connect
> to xStreamer and send the request to configure the encoding  parameter and get
> the encoded or RAW AV data over socket.
> 
> Based on our initial investigation of libCamera  architecture I have couple of
> questions
> 
> It seems current architecture of  libCamera requires to have a single process
> with  all functionalities(Live/CVR/Analytics etc.) Is our understanding
> correct? If yes is their plan to support the RDKC use case in libCamera? In no
> how can we align RDKC architecture with libCamera?

Your understanding is correct. While libcamera allows access to
different cameras from the same process, it doesn't support multiple
processes sharing the same camera concurrently.

This is a feature we don't plan to add to libcamera at the moment, as we
consider it out of scope. libcamera is meant to be a low-level library
to control cameras, and especially computational cameras requiring
algorithms running on the main CPU. Sharing cameras between different
processes is a feature of a higher-level component in the stack. On
desktop Linux systems, pipewire will fulfil this (as well as offering
access control features), based on libcamera as the camera provider. I
believe embedded Linux systems would also benefit from pipewire usage.

I would assume there are other middlewares that allow sharing cameras
between multiple processes. It maye make sense to add libcamera support
to one of such existing middlewares, or to develop a new one specific to
RDKC. I haven't researched this topic in details, so I can't tell which
option would be best, but I'm available for further discussions on this
topic.

Which hardware platforms does RDKC officially support or plans to
support ?

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list