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