All of lore.kernel.org
 help / color / mirror / Atom feed
* video4linux user land API concern
@ 2005-11-09 10:26 Hubert Tonneau
  2005-11-09 12:31 ` Alan Cox
  0 siblings, 1 reply; 6+ messages in thread
From: Hubert Tonneau @ 2005-11-09 10:26 UTC (permalink / raw)
  To: linux-kernel

Any Video4Linux driver should support both native hardware color encoding
(for maximum performances) and rgb (for maximum flexibility).

Requiering user land tools to be prepared to match the webcam native color
encoding is poor kernel API design for several reasons:
. some software will say 'I will work only if your camera support the encoding
  I want' (surf the Internet and you will discover that it's already sadely true)
. small tools that make Unix flexibility get hard to write and test without
  relying on glue libraries, and glue libraries are evil
. if new color models appear in new cameras, the current design will require
  to map them anyway to some existing encodings not to break existing softwares,
  so the end result will be even more confusing because the driver supporting a
  non rgb encoding will not necessary mean that selecting the encoding is better
  from the performances point of view


^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: video4linux user land API concern
@ 2005-11-09 12:58 Hubert Tonneau
  2005-11-09 13:36 ` linux-os (Dick Johnson)
  2005-11-09 15:57 ` Alan Cox
  0 siblings, 2 replies; 6+ messages in thread
From: Hubert Tonneau @ 2005-11-09 12:58 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-kernel

Alan Cox wrote:
>
> Many of the encodings done by hardware are extremely complicated and
> tricky to unpack in kernel space. If a camera captures jpeg for example
> you don't want in kernel jpeg decoders, let alone mpeg decoders etc

So you fall back on the current main bad point about the Linux kernel design.

One quality of Linux, as opposed to some other proposed kernels, is that all
drivers are part of the kernel tarball, so you can expect to always get drivers
that are consistent with the kernel internal API.

On the other hand, over time, more and more kernel only related features
have been rejected to user land, for various reasons mostly related to
stability and security. I mean 'ifconfig', raid tools, etc.
Your agument about video decoding falls in the stability category.

Now, if you look for documentation about the interface between the kernel
and the user land tool that have has been written at the same time to provide
an overall services (let think about software raid) then you discover that
it's mosty inexisting, and that the interface in the middle is just an
unengeneered nightmare.
So, in facts you can't use the kernel function without adopting the user
land tool associated, but then you discover that very fiew eyes watched and
checked the user land part of the tool, and that it's quality is really really
poor (opens a file, but not check the error code, etc, etc)

The proper solution seems clear: it is to have an in kernel tarball
minimalistic glibc, in kernel tarball set of kernel related user land tools so
that all of them benefit from the magic Linus taste.
Building the kernel should build a new /kbin/ and /klib/ directory with all
kernel related user land tools and libraries.
Then distibutions should just set softlinks to these.

As a summary, the fact that you say you don't want to have the decoding
running at ring 0 does not mean that it should not be part of the kernel
tarball.


^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: video4linux user land API concern
@ 2005-11-09 16:41 Hubert Tonneau
  0 siblings, 0 replies; 6+ messages in thread
From: Hubert Tonneau @ 2005-11-09 16:41 UTC (permalink / raw)
  To: Alan Cox; +Cc: akpm, linux-kernel

Alan Cox wrote:
>
> And this is different to a "linux distribution" how ?

Think about two entry level utilities, I mean 'ls' and 'ifconfig'.

'ls' is clearly part of the Linux distribution because it should not care
the underlying kernel.

On the other hand 'ifconfig' has no meaning if the underlying is not Linux.

So, what I'm saying is that bringing all these utilities that have no meaning
if the underlying kernel is not Linux to /usr/src/linux/userland/
would help.

Most of us once falled on the problem you switch from 2.4 to 2.6 or the other
way round, and the system start not to work properly because the distribution
needs a different package for 2.4 and 2.6
(I've also discovered more subtil troubles such a 32 bits iptables will not
 be abble to configure a 64 bits Opteron kernel with 32 bits support,
 probably because the data structure at the interface of the kernel and iptable
 are long size dependent)

If all the kernel centric user land utilities are part of the kernel tree,
then:
1) when you change of kernel, you change of utilities set
2) it can be mandatory that these must not rely on external distribution files

As a result, you get a properly layered distribution, with:
. a kernel
. a mini SELF CONTAINED distibution with all kernel centric utilities and
  libraries
. the full distribution with true mostly kernel agnostic tools and applications

Such a design makes Linux
. more robust: fiewer computers are silently running with user land tools that
  don't match the kernel
. more flexible: packaging Linux for strange non Unix usage get's cheaper

The underlying reasoning is that even if most of the time the right
boundary between kernel and application is the kernel API, as you pointed
out, sometime it cannot (you don't want MPEG2 decoder in the kernel) so
the boundary should be between the kernel distribution and the overall
distribution, not between two parts (the kernel and the bloated distribution)
that we have no serious reason to assert that they will always match each
other.

Ok, this does not append if you assert that end users install new kernel
through their distribution packages, since the distribution packages will
(should) contain the dependencies to keep an overall consistent system.

So another question might be: do you prefer power users to compile and run
Linux kernel from the kernel.org plain source tarball, so send easy to use
feedback, or run only distribution packaged kernels.
In the first case, packing the low level kernel centric user land tools with
the kernel tarball makes power users life much easier, and improves feedback
since it helps to keep the system consistent.

Once upon a time, akpm stated that he has no way to reward people that mostly
provide feedback. That's ok since a mostly crash free kernel is a serious
reward.
Also helping them with a packaging troubles free kernel would be a serious
bonus, so I'm cc ing him this message.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-11-09 16:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-09 10:26 video4linux user land API concern Hubert Tonneau
2005-11-09 12:31 ` Alan Cox
  -- strict thread matches above, loose matches on Subject: below --
2005-11-09 12:58 Hubert Tonneau
2005-11-09 13:36 ` linux-os (Dick Johnson)
2005-11-09 15:57 ` Alan Cox
2005-11-09 16:41 Hubert Tonneau

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.