[pvrusb2] pvrusb2-mci-20070114 radio support - stereo?

Pantelis pakt223 at freemail.gr
Sat Jan 27 04:57:16 CST 2007

Sorry, the button got pressed by mistake, resending ...

Στις Σάββατο 27 Ιανουάριος 2007 12:37, ο/η Pantelis έγραψε:
> Στις Σάββατο 27 Ιανουάριος 2007 08:21, ο/η Mike Isely έγραψε:
> > On Fri, 26 Jan 2007, Rick Macdonald wrote:
> > > Mike Isely wrote:
> > > >> In light of this, what is the next step?
I think I can now reproduce your problem without any doubt and even with a
single earpiece.

The trick is to use mplayer's "pan" audio filter to subtract one channel
from the other. The good thing about this method is that it is largely
independent of audio equipment, what the radio is actually playing and even
ones hearing ability (i.e., you don 't need to have a super ear to evaluate
the result).

The procedure:
1) Use a configuration (windows or the 2.6.15 kernel that you know works)
and tune to a station that broadcasts stereo. To see if stereo is autodetected 
in linux you should
cat /sys/class/pvrusb2/sn-*/ctl_audio_modes_present/cur_val
it should say: Stereo

In windows, the "stereo" red sign will light up. Find some stereo and some
mono stations.

2) From linux, tune to one of the stereo stations and record a stream like 

cat /dev/radio0 > test.mpg

Now, play the stream with mplayer like this:

mplayer -vo null -ao alsa test.mpg

now, play it like this:
mplayer -vo null -ao alsa -af pan=2:1:1:-1:-1 test.mpg

notice the added -af pan ...  This subtracts the right channel from the left.
If the source is mono then the two channels will be (nearly) identical and
the result should be (near) silence. You can try that with a mono station
to get a good feel of how it should sound.

If the source is really stereo and the difference between the channels
is one of phase (they do that to create a sense of "depth") then you
should hear the same sound with an audibly lower volume. If the
phase is exactly opposite then you should hear the volume double,
but I doubt this is likely.

If one of the channels is actually muted (also unlikely, since the result
goes through a stereo encoder) then the difference will equal the original.
In that case you can selectively mute the left/right channel to see
which is muted.

To mute the left one:  pan=2:0:0:1:1
To mute the right one: pan=2:1:1:0:0

With this new trick in your bag, It would be now very useful if you can
identify exactly what is your issue (mono or muted channel) and which
is the last kernel version that works.

That will help greatly to identify which change introduced this regression.

I know this is not exactly great news, but at least there is one more
person that can reproduce your issue and you now have a systematic
methodology to test without waiting for an appropriate song etc.

Please test the kernels 2.6.15 - 2.6.18 and tell me which is the last
one that works and then others may jump in to help as well to pinpoint
the exact commit.

> > > If we've narrowed it down to those modules, does it now make sense that
> > > the PVR-150 works but not the PVR-USB2?
> >
> > Well one possible explanation is that there's something different that
> > ivtv is doing to its modules that pvrusb2 is not doing.  Another
> > explanation is that the PVR-150 hardware is different - there could be a
> > different tuner module there, it might be using a cx25840 instead of the
> > msp3400+saa7115 combo on your PVR-USB2 device.

PVR-150 is a cx25840 device AFAIK. This could explain the difference if 
msp3400 (the one you have) has anything to do with the problem.

hope that helps,

P.S., using that trick, I verified that the audio streams snooped from the 
windows driver are indeed stereo while in my kernel the streams from the
same stereo stations are mono (as in the two channels are identical).

More information about the pvrusb2 mailing list