XVideo, S-Video support and 2.4.19-pre4 interactions (was Re: Problems with saa7134-0.1.5 and kernel 2.4.19-pre4)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hi,

On 25 Mar 2002, Gerd Knorr wrote:

> Sounds like you are using Xvideo.  The X-Server reads this info only
> once at startup.  Try "-noxv" or "-c /dev/video<n>" to make xawtv talk
> to the device directly.
>

Bypassing Xvideo using "-noxv" works in 2.4.19-pre4. I'm curious though,
"v4lctl list" returns different info depending on whether it's called
directly or via Xvideo:

--- v4lctl -c /dev/video0 list -----
attribute  | type   | current | default | comment
-----------+--------+---------+---------+-------------------------------------
norm       | choice | (null)  | PAL     | PAL NTSC SECAM
input      | choice | Composi | Composi | Composite1 S-Video Television
audio mode | choice | stereo  | mono    | mono stereo lang1 lang2
bright     | int    |     128 |     128 | range is 0 => 255
contrast   | int    |      68 |      68 | range is 0 => 127
color      | int    |      64 |      64 | range is 0 => 127
hue        | int    |       0 |       0 | range is -128 => 127
volume     | int    |       0 |       0 | range is -15 => 15
mute       | bool   | on      | off     |
Invert     | bool   | off     | off     |
Interlace  | choice | auto    | auto    | auto on off
Mirror     | bool   | off     | off     |
y offset o | int    |       0 |       0 | range is 0 => 128
y offset e | int    |       0 |       0 | range is 0 => 128


---- v4lctl list (via Xvideo) ----
attribute  | type   | current | default | comment
-----------+--------+---------+---------+-------------------------------------
bright     | int    |       3 |       0 | range is -1000 => 1000
contrast   | int    |      70 |       0 | range is -1000 => 1000
color      | int    |       7 |       0 | range is -1000 => 1000
hue        | int    |       3 |       0 | range is -1000 => 1000
volume     | int    |       0 |       0 | range is -1000 => 1000
mute       | bool   | on      | off     |
norm       | choice | (null)  | pal     | pal ntsc secam
input      | choice | (null)  | composi | composite1 svideo television

-------

The ioctls in Xvideo seems static. Is this determined at compile time?
(note especially the "input" names, S-Video vs. svideo). Is this a
function of XFree86 or the video driver (in my case, NVdriver)?


> >  +	  if (dev->ctl_mute || dev->automute)
> >  +	    saa_andorb(SAA7134_ANALOG_IO_SELECT, 0x07, 0x00); /* LINE1 */
>
> I still think this is _wrong_.
>

Maybe in the earlier discussion where I posted this patch, it wasn't clear
that this is only needed for the FlyVideo 2000 cards due to the following:

1. It uses SAA7130 (which doesn't have internal mixer/muting capabilities)
2. All external audio paths are via LINE2 for the FlyVideo 2000/3000 cards
   with appropriate GPIO switching of the HEF4052BT analog mux. LINE1
   is not used (as far as I can tell), and the original FlyVideo 3000
   card amux definition needs to be re-examined (Gunther Meyer says he
   needs the LINE2+GPIO switch for Ext. Audio In as well).

Hence the conditional tests (ext_mute) around the use of LINE1-based
muting, and ext_mute should only be defined for FlyVideo 2000.

As for S-Video luma-control. I find that set_tvnorm() is only called
explicitly when selecting "TV Norm" in saa7134-0.1.5. Something needs to
be done in VIDIOC_S_INPUT to triggle the S-Video luma-control properly.
The following patch fixes the problem, but I think it's a little
'expensive' since set_tvnorm() is called every time we switch video
inputs. Note: it must be called after video_mux() as it depends on
dev->ctl_input being set first. The luma-control stuff should probably be
split out from set_tvnorm()?

-------------- saa7134-0.1.5-fv2k-svideo.diff ---------
diff -Naur saa7134-0.1.5/saa7134-video.c saa7134-0.1.5-fv2k/saa7134-video.c
--- saa7134-0.1.5/saa7134-video.c	Tue Mar 26 14:04:43 2002
+++ saa7134-0.1.5-fv2k/saa7134-video.c	Tue Mar 26 14:01:39 2002
@@ -1114,6 +1114,7 @@
 			return -EINVAL;
 		down(&dev->lock);
 		video_mux(dev,*i);
+		set_tvnorm(dev,dev->tvnorm);
 		up(&dev->lock);
 		return 0;
 	}

-------- cut here ----------



T.C.

----
Wan Tat Chee (Lecturer)
School of Computer Science, Univ. Science Malaysia,
11800 Minden, Penang, Malaysia.          Ofc Ph: +604 657-7888 x 3617
Internet: tcwan@xxxxxxxxx            Web: http://nrg.cs.usm.my/~tcwan
GPG Key : http://nrg.cs.usm.my/~tcwan/tcw_gpg.asc
F'print :  FB0F CED7 85A5 ECF9 DEF0  50E8 A550 A0D2 8638 B1EB






[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux