[pvrusb2] driver status / update

Hans Verkuil hverkuil at xs4all.nl
Mon Jan 12 01:33:04 CST 2009


On Monday 12 January 2009 05:00:42 Mike Isely wrote:
> Well I've spent a chunk of time on the driver today, and I'm not
> nearly as far along as I'd wanted.  But I'd thought I'd offer a
> summary here since I know several people are waiting around to hear
> about it.
>
> It's been quite a while since I had released a snapshot, and as such,
> there's been some divergence between the standalone driver and the
> v4l-dvb (and kernel) versions.  I had to pull that back together, and
> I hit a few issues along the way.  Nothing really earth-shattering,
> but it took time to sort out.  Note: the current latest standalone
> snapshot probably won't compile in 2.6.28 - until this afternoon I
> hadn't even tried 2.6.28 yet.  I already have fixes for this, but
> read on...
>
> I looked at the bus_info question, and I've been convinced.  I've
> made a change now that puts the driver serial number into the
> bus_info V4L capability field.  Actually, what I did was to push the
> logic that generated the sysfs-interface string for this into the
> driver core, then exported that back out to the interfaces.  So now
> the sysfs interface (as the "abcdef" in "/sys/class/pvrusb2/abcdef")
> and the V4L interface (via the bus_info capability field) exactly
> match each other.
>
> I haven't dug out the cx25840 problem yet.  I think this is a line of
> investigation that once chased, is going to reveal other issues.  I
> am working on this however.
>
> The raw video support looks very interesting.  To do this right, I
> have to advertise a different "format" in V4L.  Not a surprise; I
> knew this all along and I've had hooks in the driver since the
> beginning to make this feasible.  I should also now do the work to
> support the other I/O methods in V4L (mmap and async).  Those methods
> weren't really useful for mpeg, but for raw uncompressed output they
> make more sense.  Again, the foundation is already there to support
> the other methods; I just need to finish it.  Also, I *might* have to
> support isochronous USB transfers for this.  Well I'm not sure, but
> for data like this uncompressed video where the timing is not
> actually in the stream itself (I assume) you need a transfer method
> that is less sensitive to jitter / latency.  USB bulk transfers don't
> really satify either constraint. Also, I have reason to suspect that
> the video format being sent by the device probably does not match
> what V4L expects.  So the driver is going to have to swizzle the
> pixel data.  No more direct pass-through to the app...

Hi Mike,

I'm pretty sure the format is HM12 (see the 
linux/Documentation/video4linux/cx2341x/README.hm12 file). Note that 
drivers should just pass the data on to the application. Any format 
conversions should take place in libv4l (the conversion library from 
Hans de Goede).

>
> Another even more interesting issue is the audio side of this.  In
> raw mode, there's no means to encapsulate the audio inside the same
> stream as the video - after all V4L was originally a video spec not
> an audio one.  We've been able to ignore this with mpeg since the
> mpeg format allows for embedded audio and the hardware encoder does
> all the heavy lifting here.  But not with raw mode.  In this case
> another means must be found, and I am thinking that what needs to
> happen is that the pvrusb2 driver will have to export an ALSA
> interface now.  So now the driver will actually have to parse the
> stream and send the video to the video app, and (hopefully) PCM audio
> to the ALSA interface.  This change will in fact make the device walk
> and talk pretty much exactly like an old-school V4L device with
> "external" audio - tvtime should then work. Let's hope.  (Might have
> an issue here maintaining audio/video sync, due to split buffers in
> the two paths, but I'm not going to sweat that yet.)

It would be interesting to see if this new alsa module can be written in 
such a way that ivtv and cx18 can use it as well. Currently these 
drivers create a videoX device that outputs the PCM data. A proper alsa 
driver has been on the TODO list for ages but I never got around to it.

Regards,

	Hans

> One other interesting thing about raw support: radio mode.  Right now
> when in radio mode, you get the audio stream as MP3 data inside a
> normal mpeg container, complete with its own useless blank video
> channel as well.  And by "blank" I mean blank as in
> wasting-bandwidth-blank.  If the pvrusb2 driver can act like an ALSA
> device and if we can get the audio in raw mode as PCM data, then,
> well now we can run the radio such that it looks like a normal V4L
> radio device...
>
> Now, with all that said, it should be obvious that full raw mode
> support isn't going to happen immediately.  This is still going to
> take a little while.  But I'm not stuck on this, and I'll let you all
> know how it's going.  I do plan an incremental approach, i.e. the
> audio fun will probably show up after the video is working.
>
> For the immediate future however I need to figure out what is going
> on with the cx25840 module.  Only after dealing with that will I
> seriously look at raw mode.
>
> I can release another snapshot now with the bus_info change.  But
> it's not that big of a change, and with the cx25840 breakage, the
> value of that snapshot will be somewhat less than it should be. 
> (Running such a standalone driver against any kernel at least up to
> 2.6.27 should still be OK, but after that the cx25840 issue is
> probably going to nail everyone except those whose [older] devices
> use the saa7115 instead - then again maybe it's broken too - I need
> to test further.)
>
>   -Mike



-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG


More information about the pvrusb2 mailing list