Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Sep 2008 10:14:50 +0100
From:      Tom Evans <tevans.uk@googlemail.com>
To:        Dieter <freebsd@sopwith.solgatos.com>
Cc:        freebsd-multimedia@freebsd.org
Subject:   Re: Which Userland Interface for USB Video Class Driver?
Message-ID:  <1222420490.2443.56.camel@localhost>
In-Reply-To: <200809251834.SAA00096@sopwith.solgatos.com>
References:  <200809251834.SAA00096@sopwith.solgatos.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--=-PCbY5EEzc3OKKbIc7SfP
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Thu, 2008-09-25 at 11:34 +0100, Dieter wrote:
> > <snip>
> > > As a driver writer, the AV encoding standard concerns me. For,
> > > the driver must be able to decode compressed frame into plain bitmap
> > > if the chip cannot decode frame on its own. Of course, the Chinese
> > > standard is so cheap that many hardware vendors are willing to integr=
ate
> > > decoder into chips, I believe.
> > >=3D20
> >=20
> > I'm not sure this is necessarily true anymore. From a European view
> > point, the vast majority of DVB-{S,T,C} cards on the market are 'budget=
'
> > cards; they simply demodulate an MPEG-2 Program Stream from the signal.
> > Certainly, under linux, neither of my DVB-T tuners (pci saa based, usb
> > dibcom), nor my DVB-S card (also pci saa based) can decode a single
> > frame of actual video data.
> >=20
> > Even when the actual video is not MPEG-2, like HD streams encoded in
> > MPEG-4 AVC, it is contained in an MPEG-2 PS. All the drivers do is to
> > setup and tune the device to the appropriate channel, and provide a
> > device to read the PS from. It is up to whatever userland program which
> > is using the device to decode the data, if that is even required. I
> > certainly wouldn't like a driver to decode high bitrate MPEG-4 AVC if
> > all I am trying to do is record a show to disk.
> >=20
> > As far as I can tell, ATSC tuners do precisely the same thing.
>=20
> I suspect you mean MPEG-2 TS (transport stream), not MPEG-2 PS
> (program stream)?
>=20
> Yes, ATSC is the same way, at least in the US.  The "tuner" provides
> a mpeg2 ts.  You can write this to disk and/or decode it and view it.
> You don't *want* the tuner to decode it, because the decoded video
> is gigantic and would quickly fill your disks.  And a PCI bus isn't
> fast enough for a single stream of uncompressed HD video.  The
> compressed version eats enough disk space as it is.

Meh, my linux devices spits out PS, not TS. At least, that's what
mplayer tells me they are.

>=20
> Decoding is a bit of a problem.  To decode HD in real time, you need a
> recent fast CPU (and PCIe), or a GPU that supports Xv and XvMC, or some
> hardware decoder.  As far as I know, *BSD has no support for hardware
> decoders.  There are Ethernet to TV bridges, but they seem to all have
> significant limitations (counterexamples welcome).  ATI may have released
> enough documentation to allow using some models of their GPUs for decodin=
g,
> but no one has written the code yet.  They have not released docs for the
> UVD/UVD2 on the R600/R700 yet, and might never release it.  Supposedly VI=
A
> Chrome GPUs have open source Xv and XvMC support, does this work on *BSD?
>=20

In the UK, HDTV is MPEG-4 AVC, so XvMC helps not a jot. With just Xv,
and a 2.4 GHz Core 2 Duo, this can be decoded in real time fairly
simply. ATSC HD is MPEG-2, or so I hear, so with XvMC you can run on
fairly mediocre hardware.

> The bktr/v4l2/whatever interface is needed for digitized analog video
> (NTSC/PAL/SECAM).  The US OTA analog-to-digital transition in 2009-02-17
> isn't as complete as some people think.  Many stations will not be
> converting then, and are not even scheduled to convert.  In addition,
> many people with cable or satellite will still have analog.  There are
> videotapes and other media that people will want to digitize.  And
> other countries are not tied to the US transition.  So *BSD will
> need support for analog video for many years.
>=20
> Some analog tuners include hardware compression (and perhaps decompressio=
n),
> other don't.  For the ones that don't, we need an interface for apps
> like mencoder, ffmpeg, xine, etc. so they can compress the video before
> writing it to disk.  Many of these apps already support bktr and/or
> v4l2.  So if device drivers support one of these, we get app support
> without additional work.  But some developers object to these interfaces
> because they'd prefer to keep as much of the code in userland as possible=
,
> and bktr and v4l2 require too much code in the kernel.  Jason reports tha=
t
> NetBSD has a "generic API", and then some sort of compatiblility layer
> that looks like v4l2.  I need to learn more about this, as it isn't
> obvious to me how this keeps code out of the kernel.
>=20
> One idea I had was to use the bktr interface, but change the system calls
> to library calls, e.g. ioctl becomes uioctl.  The developer writing a
> device driver can then divide the code between the kernel and the userlan=
d
> library as needed.  This would require editing the apps, but it would be =
a
> simple edit.

Possibly worth taking a look at the freebsd saa driver, which works out
of the box with mplayer and other v4l API consumers.

Cheers

Tom

--=-PCbY5EEzc3OKKbIc7SfP
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)

iEYEABECAAYFAkjcqAcACgkQlcRvFfyds/cg9QCeKhXKExOlksYhcD4V5zJRmv98
ZN8An2YhmcAx2zH0gfwXaeNbhBf4n/n7
=TG74
-----END PGP SIGNATURE-----

--=-PCbY5EEzc3OKKbIc7SfP--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1222420490.2443.56.camel>