All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Theodore Kilgore <kilgota@banach.math.auburn.edu>,
	workshop-2011@linuxtv.org,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [Workshop-2011] Media Subsystem Workshop 2011
Date: Thu, 04 Aug 2011 13:39:28 +0200	[thread overview]
Message-ID: <4E3A84F0.5050208@redhat.com> (raw)
In-Reply-To: <4E39B150.40108@redhat.com>

Hi,

On 08/03/2011 10:36 PM, Mauro Carvalho Chehab wrote:
> Em 03-08-2011 16:53, Theodore Kilgore escreveu:

<snip snip>

>> Mauro,
>>
>> Not saying that you need to change the program for this session to deal
>> with this topic, but an old and vexing problem is dual-mode devices. It is
>> an issue which needs some kind of unified approach, and, in my opinion,
>> consensus about policy and methodology.
>>
>> As a very good example if this problem, several of the cameras that I have
>> supported as GSPCA devices in their webcam modality are also still cameras
>> and are supported, as still cameras, in Gphoto. This can cause a collision
>> between driver software in userspace which functions with libusb, and on
>> the other hand with a kernel driver which tries to grab the device.
>>
>> Recent attempts to deal with this problem involve the incorporation of
>> code in libusb which disables a kernel module that has already grabbed the
>> device, allowing the userspace driver to function. This has made life a
>> little bit easier for some people, but not for everybody. For, the device
>> needs to be re-plugged in order to re-activate the kernel support. But
>> some of the "user-friencly" desktop setups used by some distros will
>> automatically start up a dual-mode camera with a gphoto-based program,
>> thereby making it impossible for the camera to be used as a webcam unless
>> the user goes for a crash course in how to disable the "feature" which has
>> been so thoughtfully (thoughtlessly?) provided.
>>
>> As the problem is not confined to cameras but also affects some other
>> devices, such as DSL modems which have a partition on them and are thus
>> seen as Mass Storage devices, perhaps it is time to try to find a
>> systematic approach to problems like this.
>>
>> There are of course several possible approaches.
>>
>> 1. A kernel module should handle everything related to connecting up the
>> hardware. In that case, the existing userspace driver has to be modified
>> to use the kernel module instead of libusb. Those who support this option
>> would say that it gets everything under the control of the kernel, where
>> it belongs. OTOG, the possible result is to create a minor mess in
>> projects like Gphoto.
>>
>> 2. The kernel module should be abolished, and all of its functionality
>> moved to userspace. This would of course involve difficulties
>> approximately equivalent to item 1. An advantage, in the eyes of some,
>> would be to cut down on the
>> yet-another-driver-for-yet-another-piece-of-peculiar-hardware syndrome
>> which obviously contributes to an in principle unlimited increase in the
>> size of the kernel codebase. A disadvantage would be that it would create
>> some disruption in webcam support.
>>
>> 3. A further modification to libusb reactivates the kernel module
>> automatically, as soon as the userspace app which wanted to access the
>> device through a libusb-based driver library is closed. This seems
>> attractive, but it has certain deficiencies as well. One of them is that
>> it can not necessarily provide a smooth and informative user experience,
>> since circumstances can occur in which something appears to go wrong, but
>> the user gets no clear message saying what the problem is. In other words,
>> it is a patchwork solution which only slightly refines the current
>> patchwork solution in libusb, which is in itself only a slight improvement
>> on the original, unaddressed problem.
>>
>> 4. ???
>>
>> Several people are interested in this problem, but not much progress has
>> been made at this time. I think that the topic ought to be put somehow on
>> the front burner so that lots of people will try to think of the best way
>> to handle it. Many eyes, and all that.
>>
>> Not saying change your schedule, as I said. Have a nice conference. I wish
>> I could attend. But I do hope by this message to raise some general
>> concern about this problem.
>
> That's an interesting issue.
>
> A solution like (3) is a little bit out of scope, as it is a pure userspace
> (or a mixed userspace USB stack) solution.
>
> Technically speaking, letting the same device being handled by either an
> userspace or a kernelspace driver doesn't seem smart to me, due to:
> 	- Duplicated efforts to maintain both drivers;
> 	- It is hard to sync a kernel driver with an userspace driver,
> as you've pointed.
>
> So, we're between (1) or (2).
>
> Moving the solution entirely to userspace will have, additionally, the
> problem of having two applications trying to access the same hardware
> using two different userspace instances (for example, an incoming videoconf
> call while Gphoto is opened, assuming that such videoconf call would also
> have an userspace driver).
>
> IMO, the right solution is to work on a proper snapshot mode, in kernelspace,
> and moving the drivers that have already a kernelspace out of Gphoto.
>

I agree that solution 1) so all the driver bits in kernelspace is the right
solution. This is unrelated to snapshot mode though, snapshot mode is all
about taking live snapshots. Where as in this case we are downloading
pictures which have already been taken (perhaps days ago) from device memory.

What we need for this is a simple API (new v4l ioctl's I guess) for the
stillcam mode of these dual mode cameras (stillcam + webcam). So that the
webcam drivers can grow code to also allow access to the stored pictures,
which were taken in standalone (iow not connected to usb) stillcam mode.

This API does not need to be terribly complex. AFAIK all of the currently
supported dual cam cameras don't have filenames only picture numbers,
so the API could consist of a simple, get highest picture nr, is picture
X present (some slots may contain deleted pictures), get picture X,
delete picture X, delete all API.

If others are  willing to help flesh out an API for this, I can write
a proposal and submit it a few weeks before the Media Subsystem Workshop
starts.

Regards,

Hans

  parent reply	other threads:[~2011-08-04 11:37 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-03 17:21 Media Subsystem Workshop 2011 Mauro Carvalho Chehab
2011-08-03 17:45 ` Mauro Carvalho Chehab
2011-08-08  6:22   ` Hans Verkuil
2011-08-08 13:25     ` Mauro Carvalho Chehab
2011-08-08 15:25       ` Hans Verkuil
2011-08-11 17:49       ` Rémi Denis-Courmont
2011-08-11 19:00         ` Mauro Carvalho Chehab
2011-08-03 19:53 ` Theodore Kilgore
2011-08-03 20:36   ` Mauro Carvalho Chehab
2011-08-03 23:20     ` Theodore Kilgore
2011-08-04 12:34       ` Mauro Carvalho Chehab
2011-08-04 18:37         ` Theodore Kilgore
2011-08-04 19:11           ` Mauro Carvalho Chehab
2011-08-04 21:16             ` Theodore Kilgore
2011-08-04 21:58               ` Mauro Carvalho Chehab
2011-08-04 22:57                 ` Theodore Kilgore
2011-08-05  7:02         ` [Workshop-2011] " Hans de Goede
2011-08-05 17:13           ` Theodore Kilgore
2011-08-07 22:53           ` Adam Baker
2011-08-08  2:26             ` Theodore Kilgore
2011-08-08 13:45               ` Mauro Carvalho Chehab
2011-08-08 17:39                 ` Theodore Kilgore
2011-08-08 18:39                   ` Mauro Carvalho Chehab
2011-08-08 19:32                     ` Theodore Kilgore
2011-08-08 20:07                       ` Mauro Carvalho Chehab
2011-08-08 20:24                         ` Adam Baker
2011-08-08 20:43                           ` Theodore Kilgore
2011-08-09  7:30                   ` Hans de Goede
2011-08-09 17:10                     ` Theodore Kilgore
2011-08-09 20:30                       ` Hans de Goede
2011-08-10  0:34                         ` Theodore Kilgore
2011-08-10  7:02                           ` Hans de Goede
2011-08-08 20:33                 ` Adam Baker
2011-08-08 21:06                   ` Theodore Kilgore
2011-08-09  7:37                     ` Hans de Goede
2011-08-09 19:06                       ` Theodore Kilgore
2011-08-08  2:56             ` Theodore Kilgore
2011-08-08  7:53             ` Hans de Goede
2011-08-04 11:39     ` Hans de Goede [this message]
2011-08-04 12:40       ` Mauro Carvalho Chehab
2011-08-04 16:40         ` Jean-Francois Moine
2011-08-04 19:02           ` Guennadi Liakhovetski
2011-08-04 20:33             ` Mauro Carvalho Chehab
2011-08-04 21:38               ` Adam Baker
2011-08-04 21:49                 ` Mauro Carvalho Chehab
2011-08-04 22:30                 ` Theodore Kilgore
2011-08-04 19:05           ` Theodore Kilgore
2011-08-04 20:35             ` Adam Baker
2011-08-04 21:55               ` Theodore Kilgore
2011-08-04 23:04                 ` Adam Baker
2011-08-05  0:01                   ` Theodore Kilgore
2011-08-07 22:30                     ` Adam Baker
2011-08-07 23:19                       ` Alan Stern
2011-08-08  0:30                         ` Adam Baker
2011-08-08 14:38                           ` Alan Stern
2011-08-08  3:33                         ` Theodore Kilgore
2011-08-08 14:55                           ` Alan Stern
2011-08-08 18:14                             ` Theodore Kilgore
2011-08-08 19:22                               ` Alan Stern
2011-08-08 19:58                                 ` Theodore Kilgore
2011-08-08 20:33                                   ` Alan Stern
2011-08-04 18:55         ` Theodore Kilgore
2011-08-11 10:16 ` Sakari Ailus
2011-08-11 11:03   ` Mauro Carvalho Chehab

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=4E3A84F0.5050208@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=kilgota@banach.math.auburn.edu \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.com \
    --cc=workshop-2011@linuxtv.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.