public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Jarkko Sakkinen <jarkko@kernel.org>,
	linux-media@vger.kernel.org, anisse@astier.eu,
	oleksandr@natalenko.name,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	Ricardo Ribalda <ribalda@chromium.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH] media: Virtual camera driver
Date: Tue, 3 Feb 2026 17:06:38 +0200	[thread overview]
Message-ID: <20260203150638.GA11369@killaraus> (raw)
In-Reply-To: <c6b719fdecbfc8a1c15a197b6ae51da56ed54f63@intel.com>

On Tue, Feb 03, 2026 at 11:50:23AM +0200, Jani Nikula wrote:
> On Sun, 01 Feb 2026, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote:
> > On Sun, Feb 01, 2026 at 09:04:00PM +0200, Jarkko Sakkinen wrote:
> >> On Sun, Feb 01, 2026 at 08:20:11PM +0200, Laurent Pinchart wrote:
> >> > On Sun, Feb 01, 2026 at 03:33:38PM +0200, Jarkko Sakkinen wrote:
> >> > > vcam is a DMA-BUF backed virtual camera driver capable of creating video
> >> > > capture devices to which data can be streamed through /dev/vcam after
> >> > > calling VCAM_IOC_CREATE. Frames are pushed with VCAM_IOC_QUEUE and recycled
> >> > > with VCAM_IOC_DEQUEUE.
> >> > > 
> >> > > Zero-copy semantics are supported for shared DMA-BUF between capture and
> >> > > output.
> >> > >
> >> > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> >> > > ---
> >> > > Early feedback e.g., is this completely in wrong direction? V4L2 world
> >> > > is relatively alien world, and thus I need a sanity check ;-)
> >> > 
> >> > We already have multiple virtual drivers, including vivid and vimc.
> >> > Could you please explain the rationale for yet another one, and why the
> >> > new features it provides (if any) can't be added to existing drivers ?
> >> 
> >> There is a notable user base for v4l2-loopback. It is the defacto choice
> >> for streaming phone cams.
> >
> > This will then likely face the same hurdles as v4l2-loopback, the main
> > one being that camera support should be upstreamed with proper drivers
> > instead of a closed-source userspace daemon.
> 
> My use case:
> 
> Input screen capture and webcam into OBS Studio, output the combined
> scene into virtual device, and input that virtual device into an
> application that is designed to work with video devices like that, and
> is not aware of anything fancier. For example, a web based meeting
> software. [1]
> 
> There's nothing proprietary or closed-source here. AFAICT using
> v4l2-loopback is currently the only method suggested or supported by OBS
> Studio, or the plethora of apps that only really understand the video
> devices.
> 
> I don't want to use that out-of-tree module from distro DKMS or
> whatever. Please enlighten me (and apparently a lot of other folks) if
> there's a better option that can be made to work out of the box. And it
> pretty much has to be as simple as 'apt install v4l2loopback-dkms'.

I'd say it should be as simple as 'apt install obs-studio' :-)

OBS has recently gained PipeWire support, but as a source, not a sink.
To cover your use case, we would need to extend OBS with PipeWire sink
support. The video stream that it would then provide to PipeWire would
be available in applications, including web browsers for video
conferencing.

Yes, this will require work on OBS, but the proposed virtual camera
driver does as well as the API on the sink side uses custom ioctls.
v4l2loopback support in OBS won't work out of the box with it. If OBS is
to be extended anyway, it should be done with PipeWire support as that's
where the ecosystem is moving.

PipeWire also includes pw-v4l2, a wrapper script with an LD_PRELOAD-able
library that emulates the V4L2 API. It helps with applications that
require a V4L2 capture device, until they gain native PipeWire support.

> [1] https://obsproject.com/kb/virtual-camera-guide

-- 
Regards,

Laurent Pinchart

      reply	other threads:[~2026-02-03 15:06 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-01 13:33 [RFC PATCH] media: Virtual camera driver Jarkko Sakkinen
2026-02-01 18:20 ` Laurent Pinchart
2026-02-01 19:04   ` Jarkko Sakkinen
2026-02-01 20:06     ` Laurent Pinchart
2026-02-01 20:14       ` Oleksandr Natalenko
2026-02-01 20:21         ` Mauro Carvalho Chehab
2026-02-01 20:26           ` Oleksandr Natalenko
2026-02-01 23:17             ` Mauro Carvalho Chehab
2026-02-01 23:17               ` Mauro Carvalho Chehab
2026-02-01 23:25               ` Oleksandr Natalenko
2026-02-02  1:02                 ` Mauro Carvalho Chehab
2026-02-02  7:16                   ` Oleksandr Natalenko
2026-02-02 11:41                     ` Laurent Pinchart
2026-02-02  9:05                   ` Jarkko Sakkinen
2026-02-02  9:19                     ` Jarkko Sakkinen
2026-02-02 11:43                       ` Laurent Pinchart
2026-02-02 11:36                   ` Gergo Koteles
2026-02-02 11:40                     ` Laurent Pinchart
2026-02-02 11:45                       ` Oleksandr Natalenko
2026-02-03  1:23                         ` Laurent Pinchart
2026-02-03 14:38                           ` Oleksandr Natalenko
2026-02-03 14:53                             ` Laurent Pinchart
2026-02-03 20:36                               ` Laurent Pinchart
2026-02-03 21:39                                 ` Oleksandr Natalenko
2026-02-03 21:49                                   ` Laurent Pinchart
2026-02-03 20:49                               ` Laurent Pinchart
2026-02-01 20:22         ` Laurent Pinchart
2026-02-01 20:27           ` Oleksandr Natalenko
2026-02-01 20:41             ` Laurent Pinchart
2026-02-01 20:35       ` Jarkko Sakkinen
2026-02-01 20:54         ` Jarkko Sakkinen
2026-02-01 21:09           ` Laurent Pinchart
2026-02-02  1:44             ` Jarkko Sakkinen
2026-02-01 21:01         ` Laurent Pinchart
2026-02-01 22:03           ` Jarkko Sakkinen
2026-02-03  9:50       ` Jani Nikula
2026-02-03 15:06         ` Laurent Pinchart [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260203150638.GA11369@killaraus \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=anisse@astier.eu \
    --cc=hverkuil@kernel.org \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=jani.nikula@linux.intel.com \
    --cc=jarkko@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=oleksandr@natalenko.name \
    --cc=ribalda@chromium.org \
    --cc=sakari.ailus@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox