Hi all,

It's time for an update on the progress so far and what is going to 
happen in the near future with ivtv.

As people may have noticed, the 2.6.17-rc1 kernel was released this 
week. I managed to get a truckload of patches in (see the excerpt from 
the kernel changelog below) preparing for ivtv inclusion into 
(hopefully) the 2.6.18 kernel. The most important change is redesigning 
the way the low-level parts of the video4linux subsystem set the 
input/output routing of the various i2c-devices. E.g. if the user 
selects input from the TV tuner, what does that mean for the i2c 
devices: which input pin is connected to which output pin. Sometimes 
that is very simple with just a few choices, sometimes (msp3400!) it 
can be a very complicated thing to do with many possible combinations.

In the past it was very inflexible (basically hardwired into the code) 
leading to hacks like the MSP_SET_MATRIX ioctl. This has now been 
removed and the ivtv driver in svn trunk now sets the correct routing 
directly.

Since this change was very low-level it touched quite a few drivers and 
was a fairly difficult and time consuming job. I also have become the 
de-facto maintainer of the msp3400 driver, which has been much 
improved. There is still room for more improvements, but one step at a 
time.

Also the wm8739, upd64083 and upd64031a i2c drivers that were merged 
from the Japanese 'paken' fork of ivtv are now moved into the kernel. 
The remaining saa717x driver is not good enough to be merged too. I 
don't have the time to work on this which is a shame since I have the 
datasheet for this component.

As a result of this work the v4l subsystem is now ready for the ivtv 
merge. The main job still to be done is to decide what to do with the 
ivtv-specific API. There are quite a few ivtv ioctls and controls that 
need to be integrated into v4l2. This involves first of all finding out 
what the purpose is of each ivtv-specific interface and how that can be 
turned into a generic V4L2 API. I expect that it will be quite a 
difficult process to figure this out. It may also mean that some 
functionality will be dropped if no one is using it and it is of 
marginal importance. The current API evolved and was never designed 
from scratch, so that is something to take into account.

Once the new API is decided it will be added to ivtv (and this will 
include the older ivtv series from 0.4 onwards!) and the driver is 
merged into video4linux and be ready for the next kernel.

The old ivtv-specific API will be REMOVED once the new API is in place. 
Any applications (MythTV!) that still use the old API will no longer 
work with the ivtv drivers. I will ensure that the older ivtv drivers 
from 0.4 onwards will be changed to support the new API too so after 
changing your app to the new API it will all continue to work again 
provided the latest driver for your particular kernel is used.

The big advantage is of course that other future PVR cards should 
continue to work with your application since everyone is using the same 
standard API.

Also be aware that the kernel support for the V4L1 API will be dropped 
completely this summer (2.6.18? 2.6.19? Don't know yet). This has been 
announced by the V4L developers before, but I just checked and MythTV 
still uses quite a lot of v4l1 calls. 

OK, what else. Bug fixes. This is really a problem for me since the 
kernel merge takes so much time. So I will not be able to give it the 
attention it needs. Instead I'll concentrate on the more important ones 
and hope other people can try to look into the other problems.

At this moment I have the following list of known issues that I want to 
look at myself:

- Add support for closed captioning sliced VBI for the cx25840. 
Christopher Neufeld made some very nice patches to add this support. I 
want to test these asap and if I find no problems I'll add them to ivtv 
and the kernel.

- Firmware load timeouts. For some reason these have become much more 
frequent lately. I want to find out why and also try to implement an 
automatic reload mechanism. ivtvctl -H often gets the driver working 
again so doing that automatically shouldn't be too difficult.

- DMA errors: after a DMA error the MPEG output can become corrupted. I 
was working with someone to try and find the cause but my kernel work 
prevented me from continuing this. I want to pick this up again as it 
is really annoying.

The following issues I know about but I doubt I'll have the time for it:

- Tinny audio: it looks like the new cx25840 firmware is the solution, 
but it is not entirely clear to me if this is indeed the fix. Luckily 
several people are looking at this so it seems that I can leave this 
issue to them.

- PVR500 possible interference with the radio tuner: someone else should 
look into this. Datasheets for the FM tuner are freely available so 
that might be a help.

- Better Hauppauge remote support: it seems it is broken in the latest 
v4l-dvb repository. I'd appreciate it if someone can track down the 
exact problem. I know how to tell the various Hauppauge remotes apart, 
so that may help to fix this issue correctly. This is a kernel problem, 
not an ivtv one. So you need to hack the v4l-dvb sources.

There are also the usual bunch of smaller problems. All I can say is: 
sorry, no time. I'd really appreciate it if someone would be willing to 
look into those issues. Basically just look at the open tickets in Trac 
to see what's still pending.

Hmm, I think that's it really. Oh, yes. Expect a ivtv-0.7 branch soon. 
That branch will be for the 2.6.17 kernel, the trunk will be ivtv-0.8 
and may never be released if I can get the driver into the 2.6.18 
kernel.

Best regards,

        Hans Verkuil



2.6.17-rc1 ChangeLog excerpt:

Hans Verkuil:
      V4L/DVB (3402): Fix handling of VIDIOC_G_TUNER audmode in msp3400
      V4L/DVB (3403): Add probe check for the tda9840.
      V4L/DVB (3427): audmode and rxsubchans fixes (VIDIOC_G/S_TUNER)
      V4L/DVB (3430): Add new internal VIDIOC_INT commands
      V4L/DVB (3300): Add standard for South Korean NTSC-M using A2 
audio.
      V4L/DVB (3324): Fix Samsung tuner frequency ranges
      V4L/DVB (3354): Fix maximum for the saturation and contrast 
controls.
      V4L/DVB (3551): Fix saturation bug. Fix NTSC->PAL standard change. 
Detect NTSC-KR standard.
      V4L/DVB (3577): Cleanup audio input handling
      V4L/DVB (3578): Make scart definitions easier to handle
      V4L/DVB (3579): Move msp_modus to msp3400-kthreads, add JP and KR 
std detection
      V4L/DVB (3580): Last round of msp3400 cleanups before adding 
routing commands
      V4L/DVB (3581): Add new media/msp3400.h header containing the 
routing macros
      V4L/DVB (3582): Implement correct msp3400 input/output routing
      V4L/DVB (3584): Implement V4L2_TUNER_MODE_LANG1_LANG2 audio mode
      V4L/DVB (3587): Always wake thread after routing change.
      V4L/DVB (3588): Remove VIDIOC_G/S_AUDOUT from msp3400
      V4L/DVB (3598): Add bit algorithm adapter for the Conexant CX2341X 
boards.
      V4L/DVB (3599): Implement new routing commands for wm8775 and 
cs53l32a.
      V4L/DVB (3605): Add support for I2C_HW_B_CX2341X board adapter
      V4L/DVB (3606): Minor layout changes to make it consistent
      V4L/DVB (3607): Implement routing command for saa7115.c
      V4L/DVB (3608): Implement new routing commands in saa7127.c
      V4L/DVB (3609): Remove VIDIOC_S_AUDIO from tvaudio: no longer 
used.
      V4L/DVB (3610): Added the new routing commands to cx25840.
      V4L/DVB (3661): Add wm8739 stereo audio ADC i2c driver
      V4L/DVB (3662): Don't set msp3400c-non-existent register
      V4L/DVB (3663): Fix msp3400c wait time and better audio mode 
fallbacks
      V4L/DVB (3665): Add new NEC uPD64031A and uPD64083 i2c drivers
      V4L/DVB (3666): Remove trailing newlines
      V4L/DVB (3692): Keep experimental SLICED_VBI defines under an #if 
0
      V4L/DVB (3693): Fix msp3400c and bttv stereo/mono/bilingual 
detection/handling
      V4L/DVB (3696): Previous change for cx2341X boards broke the 
remote support
      V4L/DVB (3697): More msp3400 and bttv fixes
      V4L/DVB (3700): Remove obsolete commands from tvp5150.c
      V4L/DVB (3702): Make msp3400 routing defines more consistent

_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to