[pvrusb2] Using sysfs to change the input setting and capturing the mpeg stream

Mike Isely isely at isely.net
Sun Aug 13 20:34:46 CDT 2006


On Mon, 31 Jul 2006, Aaron Newcomb wrote:

> Thanks, Mike.
>
> I think my problem was trying to use vi to edit the file instead of
> just doing ...
>
> echo "s-video" >cur_val

Yeah, editing the file is not always a good idea because the editor may 
try to move the "original" version to a backup name with link/unlink and 
then try to create a new file.  That of course isn't going to work in 
sysfs...


>
> Once I did that it worked fine. However, I get terrible static sound
> in mplayer when I do that. I also get it when I use cat to capture the
> video. I am not using audio at this point so it's not that big of a
> deal, but is there a way to get rid of that static? Also, does anyone
> have any tips on sharpening up the video? I am guessing my options are
> probably limited here because of the analog signal.

I presume you just don't have the audio connected when you are capturing 
your desktop graphics, right?  In that case I would expect the audio to be 
merely silence not noise.  Audio input with s-video (and composite - it's 
the same jack) should work just fine; I've done tests with that in the 
past and others here haven't reported problems.  So I'm puzzled by the 
static.  However, as suggested in another reply, you can just mute the 
audio in the usual way when you do the capture.

As for tweaking the video quality, there are some possibilities, but you 
need to build the (standalone) driver a little differently or use the 
driver as it is included inside V4L or in the 2.6.18 kernel.  Recently the 
control of the cx23416 mpeg2 encoder chip was reimplemented in a new v4l 
module, called cx2341x.  The idea is to put this common code in one place 
and then all drivers (blackbird, ivtv, pvrusb2) can just use the common 
code.  With this new module also comes some new controls that manipulate 
various types of digital filtering possible in the encoder chip.  So, 
basically you need to build the pvrusb2 driver such that it uses the new 
cx2341x module.  Once you do that, then a bunch of additional controls 
show up in V4L (via new control IDs) and in sysfs.  I've played with these 
controls a bit here, but I don't really know a lot how to use them.  All 
I've managed to do so far is make the picture worse :-)

To build the pvrusb2 driver in a way that it can use cx2341x means that 
you have to build it in an environment where the new cx2341x module is 
present.  You can do this using any of the following strategies:

1. Just use the pvrusb2 driver included in the current v4l-dvb mercurial 
snapshot.

2. Or, just use the pvrusb2 driver included in the 2.6.18-preX kernel.

3. Or, compile the stand-alone driver against 2.6.18-preX

4. Or, compile the stand-alone driver against a recent v4l-dvb mercurial 
snapshot.

Whether the pvrusb2 driver you use is from the kernel, from Mercurial, or 
(recent) standalone is not the issue - in all cases the needed logic to 
communicate with the cx2341x module is present.  They are all really the 
same driver (with some tweaks in each case).  The trick is to build the 
driver within an environment where the cx2341x module is in fact, present. 
That means you have to build it against a 2.6.18 (or later) kernel or you 
have to build it again a v4l-dvb repo.  But of course, with those two 
choices you don't have to even use the standalone driver since in both 
cases there's a pvrusb2 driver version already embedded.  Clear as mud?

   -Mike


-- 
                         |         Mike Isely          |     PGP fingerprint
      Spammers Die!!     |                             | 03 54 43 4D 75 E5 CC 92
                         |   isely @ pobox (dot) com   | 71 16 01 E2 B5 F5 C1 E8
                         |                             |


More information about the pvrusb2 mailing list